TeaEngineering / libchronicle

Shared-memory interprocess communication from C using OpenHFT's chronicle-queue protocol
Apache License 2.0
14 stars 10 forks source link

Comments on TODO "current iteration requires a Java Chronicle-Queues appender" #5

Closed david-bouyssie closed 1 year ago

david-bouyssie commented 5 years ago

In the spice code I found the following TODO: current iteration requires a Java Chronicle-Queues appender to be writing to the same queue on a periodic timer to roll over the log files correctly and maintain the index structures.

Could you please provide more details on that?

shuckc commented 5 years ago

That comment is no longer completely accurate. Libchronicle can roll over the queue files itself, and does so at the correct times. It does not yet read or write index structures in metadata sections other than the header, it just skips them if it encounters them or another writer writes them. It therefore does a linear scan for recovery from a nonzero sequence number.

I know the high level details of indexing (index, index2index etc, sequence number and pointers to data offsets as pairs of 8bytes) but it would be a couple of days with a hex editor and debugger to implement and verify it all works correctly.

I pulled all of this together for a proof of concept low latency IPC path for a client. It works but we’ve not hardened it for production.

On Fri, 3 May 2019 at 22:31, david-bouyssie notifications@github.com wrote:

In the spice code I found the following TODO:

current iteration requires a Java Chronicle-Queues appender to be writing to the same queue on a periodic timer to roll over the log files correctly and maintain the index structures.

Could you please provide more details on that?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/TeaEngineering/libchronicle/issues/5, or mute the thread https://github.com/notifications/unsubscribe-auth/AAJCDPXUSYWZSW6L2V3TSWTPTSVL5ANCNFSM4HKXEAOA .

shuckc commented 1 year ago

Log file rollover and creation of a queue from scratch is now implemented, closing.