Hi Peter,
First, I have been working on my "hobby" project for some years now (started with Queue 2 and now I am at 3), Moving from version 2 to version 3 was relatively easy, but I am not sure how easy would be to move to version 4 now that I have considerable code written for version 3.
Second, the project I am working on is sort of a prototype and I am doing it in my spare time, that's why it takes so long. I just noticed the issue when I tried to stress test the system. It is a distributed system with many components (8 right now) running on two machines, one with 12 processors and the other one with 4. Therefore I need the remote tailer feature (1) which may no longer be supported or may be available only in the "enterprise" version.
The component that has the issue is indeed multi threaded. There are only 7 threads, not one per message, as I can see from the existing chronicle files - see (2) below: the thread id is the number in between dashes, and the second number is the max value for 'last data index' at the time the disk filled up.
My recollection of the details of version 3, backed by my code below (3), is that the Vanilla chronicle could be used to write concurrently to a chronicle from multiple threads, whereas an indexed chronicle could be used only when writing from a single thread. If that is not the case, I will need to change my code to deal with this restriction, which is probably the best option.
Any other suggestion?
Thanks,
Vladimir
(1)
_chronicle = ChronicleQueueBuilder.remoteTailer().connectAddress(host, port).readSpinCount(1).build();
_source = ChronicleQueueBuilder.source(_chronicle).bindAddress(Utils._localhost, port).build();
(2)
data-1112-399
data-1548-0
data-3640-467
data-4640-1188
data-5096-375
data-5324-0
data-6380-0
(3)
if (concurrentWrites) {
_chronicle = ChronicleQueueBuilder.vanilla(fileName).build();
else {
_chronicle = ChronicleQueueBuilder.indexed(fileName).build();