summaryrefslogtreecommitdiffstats
path: root/doc/design.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/design.tex')
-rw-r--r--doc/design.tex6
1 files changed, 4 insertions, 2 deletions
diff --git a/doc/design.tex b/doc/design.tex
index 7c0641b8..c03e1fab 100644
--- a/doc/design.tex
+++ b/doc/design.tex
@@ -769,8 +769,6 @@ The full list of the queue store driver interface is:
\paragraph{qDel} Delete the object at queue head. Delete pointer is advanced.
-\paragraph{qIsAtDelPos} Check if the pointer provided is at the queues current delete position. Returns true, if so, false, otherwise.
-
Disk queue store drivers may support additional internal functions. However, they should not be exposed to the rest of the queue subsystem.
\begin{figure}
@@ -783,6 +781,10 @@ Disk queue store drivers may support additional internal functions. However, the
Figure \ref{fig_queue_msg_state} shows a logical message state diagram during queue processing. There is no actual state variable, but rather the processing flow demands these state. Note that the state transition from ``dequeued'' to ``queued'' only happens after a fatal failure and a successful system recovery. So this is a rather exceptional case.
+Another subtle issue is that we now need two different queue size counters: one for seeing when the queue is physically full and one for detecting when there are no more messages to be dequeued.
+
+As a simplification, support for ungetting objects can be removed (as objects never leave the queue), what also means that cancel-processing is probably less complex.
+
\paragraph{Sequential Disk Queue Store Driver}
The enequeue, deqeueue and delete pointers must be implemented via three stream objects. Most importantly, the dequeue stream must be configured not to delete files when it closes them. A side-effect of this implementation is that data is actually read twice, once to actually obtain it and a second time to delete it. This could only be avoided by an overall redesign on how the disk queue works.