What steps will reproduce the problem?
The way we maintain the active transaction counter is wrong. The class
PrimaryIndexOperationTracker which is responsible of maintaining number of
active transactions counter has a method called exclusiveJobCommitted() which
*reset* the counter to zero. This method is called whenever there is a job
level commit. The resetting of the counter to zero is wrong because it discards
all other active transactions who are still using this dataset.
If you print logging messages in that class to monitor the counter, and run
concurrent write queries against the same dataset, you will see the value of
the counter will be negative in many times before suddenly jumping to a
positive value, which should never happen.
Original issue reported on code.google.com by salsuba...@gmail.com on 27 Jul 2013 at 9:47
Original issue reported on code.google.com by
salsuba...@gmail.com
on 27 Jul 2013 at 9:47