From d8ac53481577198a1a622c5786676c63aa273ad5 Mon Sep 17 00:00:00 2001 From: Mikael Johansson Date: Mon, 11 May 2015 16:45:45 +0200 Subject: [PATCH] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4a11bc6..8e2501b 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,8 @@ Here's how MappedBus solves the synchronization problem between multiple writers * When a writer has finished writing a record it will set the commit field (using volatile) and the reader will only start reading a record once it has seen that the commit field has been set. +* A writer might crash after it has updated the limit field but before it has updated the commit field. To avoid this problem there's another field next to the commit field called the rollback field. The reader has a timeout for how long it will wait for the commit field to be set. When that time is reached the reader will set the rollback field and continue with the next record. The rollback field has precedence over the commit field, when the rollback field is set the record is always ignored by the readers. + The solution seems to work well on Linux x86 with Oracle's JVM (1.8) but it probably won't work on all platforms. The project contains a test (called CrunchTest) to check whether it works on the platform used. ### Questions