Fixed race condition found on member initialization access to shared maps which could be modified by threads upon entry and exit.
The entry condition should not have caused errors because of the assumption that no transactions were previously started prior to all threads initializing. However, the thread termination could have caused crashes.
Now a light_auto_lock object is initialized in the member initialization which prevents both thread entry/exit and transaction construction from occurring at the same time. This blocks the race condition of simultaneous, shared access to the maps.
In addition, added the new code to the contention manager which now makes a single virtual call listing a committing transaction's conflicts with all other transactions. Previously, it would make a virtual call per transactional conflict. If the conflicts were high, the call overhead could cause performance degradation since a committing transaction is a critical serialization point.
addition of throw and nothrow new operators
(No files)
Note:
See TracChangeset
for help on using the changeset viewer.