Since qpid began, what is now called legacystore has been the default linux store for qpid builds. This is a per-queue circular disk buffer store. This store has some management difficulties, the most egregious of which is managing the size of the disk buffer. It is easy for users to undersize the buffer, and when it gets full, the store refuses to write further records until more space has been freed up. It is also easy for users to oversize all their queues so as to not run into this problem, and thus wastefully consume disk resources and massively increase the time necessary for recovery.

Approximately a year ago work started on a new store called linearstore. This store is forked from legacystore, but the disk buffers are no longer fixed circular. Instead they are open-ended linear buffers, which take their files from a common Empty File Pool. As new files are needed, they are taken from the EFP and placed on the leading edge of the journal, while empty files are returned to the EFP from the trailing end of the journal. If the EFP itself is emptied of files, the store will automatically create new ones. This removes the need for the user to guess at their worst-case scenarios to size a circular buffer.

The linearstore also adds the ability to store the journals for particular queues on different disk partitions. This allows some queues to use high performance media (such as solid state drives) where necessary, while other queues can use regular disks.

It is my belief that the linearstore has now progressed to the point where it can now replace legacystore as the default store. Currently, both stores are represented in the cmake build. However, linearstore defaults to OFF while legacystore defaults to ON. The reason for this is that both stores cannot be present at the same time or the broker will attempt to load them both. Only one store at a time can be loaded in the broker, and having both results in undefined behavior. I propose to leave legacystore in place for the time being, but default the build to OFF, while linearstore will have its default set to ON.

If you have any comments or concerns, please make them known. Otherwise I'll start a vote on this in a few days.

Kim

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to