1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

Ticket #482 (closed enhancement: fixed)

Opened 15 months ago

Last modified 15 months ago

RWStore reset() should be thread-safe for concurrent readers

Reported by: thompsonbry Owned by: martyncutcher
Priority: major Milestone:
Component: RWStore Version: BIGDATA_RELEASE_1_1_0
Keywords: Cc: thompsonbry

Description

While doing root cause analysis on [1] we identified some ways in which a Journal level abort() was not thread-safe for concurrent readers. This ticket exists to fix this problem.

[1] https://sourceforge.net/apps/trac/bigdata/ticket/481

Change History

Changed 15 months ago by martyncutcher

  • status changed from new to closed
  • resolution set to fixed

committed r6034.

The RWStore reset() method has been rewritten NOT to reload from the currently active rootblock. This not only causes problems with concurrent readers but would result in a complex recovery path when isolated transactions are active.

Instead the re-write reverts the allocators to their committed state with regard to unisolated actions while protecting isolated state.

new unit tests have been written to check both logical state maintenance and also to stress test concurrent readers with an unisolated reset.

Note: See TracTickets for help on using tickets.