54 Implementation status and open issues

This chapter preserves the status notes formerly maintained on the cxLss implementation index. The open items are possible future work rather than descriptions of the current implementation or commitments, and some may have been superseded by later work.

Open issues and proposals

  • Investigate the deadlock issue discussed in Deadlock bug, February 2022, including whether the lazy flusher can avoid locking the segment writer to update the flush position.
  • Clip redundant RPM nodes from the tree and consider an alternative serialisation for sparse RPM nodes.
  • Scale the txLss test for high-core-count machines and reduce its output verbosity.
  • Use a platform-independent 32-bit type for MSSN rather than int.
  • Complete support for asynchronous serial-element loading and MVCC.
  • Validate and refine RPM-node eviction.
  • Develop a more advanced policy for choosing when to clean segments.
  • Allow Linux permissions to be passed to LinuxFileRAS::Open().
  • Replace an assertion in VisitLogRecordsInBuffer() with an appropriate run-time check.
  • Clarify assumptions about file-sector and page sizes.
  • Provide a function that validates an entire LSS.
  • Expand diagnostics, including store statistics, segment utilisation, packet listings and RPM browsing.

Recorded completed work

  • Dedicated threads were replaced by IoContextPool.
  • LazyWriter and LazyCheckPointer use AsyncSignaledTask.
  • LazyFlusher uses AsyncPeriodicTimer.
  • LazyCleaner uses AsyncRepeatedTask.
  • An LSS can be supplied with an IoContextPool, or use the default pool provided by cxThread.