curator-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jens Rantil <>
Subject InterProcessSemaphoreMutex not cleaning up old znodes
Date Sun, 13 Sep 2015 16:41:04 GMT
Hi again,

I have a distributed application which has InterProcessSemaphoreMutexes which
occasionally are taken per user. To do this, the mutex path is appended
with a user's unique ID (example: /mylock/{userid}). All is fine and dandy
and this generally works. However, I've noticed that the paths given to the
InterProcessSemaphoreMutexes aren't cleaned up after I'm done with the

This means, my Zookeeper ensemble has every single one of my previous
mutexes held in memory. When I list my znodes I see:

Given that I generally only take ~20 locks at a time it feels unnecessary
to keep all these in memory. We have had to increase initLimit in Zookeeper
configuration, most certainly due to all of these znodes.

Two questions:

   - Is there a reason for keeping these znodes hanging around?
   - Given that I need to use mutexes, what are the best practise for
   taking locks per user like this? Hash the user IDs and bucket them into a
   limitted number of mutexes (enough to avoid contention)? Have a separate
   cleaning thread that cleans up old znodes? How are you guys handling this?


Jens Rantil
Backend engineer
Tink AB

Phone: +46 708 84 18 32

Facebook <!/> Linkedin
 Twitter <>

View raw message