summaryrefslogtreecommitdiffstats
path: root/doc/design.tex
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2009-05-18 17:28:34 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2009-05-18 17:28:34 +0200
commit93f873277bfe5ebb309ff5e92f5dc7244ebd9f1a (patch)
tree0a1431d8ce318552e83cce38273015c5206155a3 /doc/design.tex
parentb81311ac70e4de0bd5c0b0286413ff1b527ef906 (diff)
downloadrsyslog-93f873277bfe5ebb309ff5e92f5dc7244ebd9f1a.tar.gz
rsyslog-93f873277bfe5ebb309ff5e92f5dc7244ebd9f1a.tar.xz
rsyslog-93f873277bfe5ebb309ff5e92f5dc7244ebd9f1a.zip
t-delete list implemented, queue store drivers updated...
... on the way to the ultra-reliable queue modes (redesign doc). This version does not really work, but is a good commit point. Next comes queue size calculation. DA mode does not yet work.
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.