Add a feature to Transaction.acquireWriteLock( PropertyContainer entity ) to include a timeout.
That way a client can be sure that threads will throw an exception rather than waiting indefinitely.
+1 I think it's a good feature
In HA this is actually needed: if a slave attempts to grab a write lock it will make an attempt on the master. The network connection might actually time out waiting for the lock, leading to BlockingReadTimeoutException, which is totally unhelpful. If the client within the same transaction tries again, it will get weird exceptions as long as the initial call is still hanging from the acquireWriteLock on master. Big +1 from me.
I'm sitting here looking at my first HA cluster delivering me screenfuls full of BlockingReadTimeoutException errors. +1 from me too... is there any workaround for this at the moment?
@darrellberry AFAIK the only way around it, so to speak, is to increase the timeout. The setting is ha.lock_read_timeout, which defaults to 20 seconds. To increase it to e.g. 30 seconds add "ha.lock_read_timeout=30s" to neo4j.properties
This is still a problem in HA in 1.9.5.