ISPN-4651 LevelDB crashes JVM when stop() is called concurrently with write()

https://issues.jboss.org/browse/ISPN-4651
I guess this mirrors the semaphore.acquire(Integer.MAX_VALUE) in the stop() method. Wouldn't it make sense then to initialize the semaphore in the init() method with new Semaphore(Integer.MAX_VALUE) ?
@danberindei suggestion to use a reentrant lock is probably even better