fix: one lock per node