summaryrefslogtreecommitdiffstats
path: root/mak
diff options
context:
space:
mode:
authorjim.wunderlich <jim.wunderlich>2005-07-19 19:05:35 +0000
committerjim.wunderlich <jim.wunderlich>2005-07-19 19:05:35 +0000
commite169f2cdca6f2f237ba134e47c8a17fd898ea977 (patch)
treec2b354102bc3ddf30163181e2283e157b0881b47 /mak
parent74653a805ebbefaf1f8d2d624a7e2471b809a5fb (diff)
downloadtog-pegasus-e169f2cdca6f2f237ba134e47c8a17fd898ea977.zip
tog-pegasus-e169f2cdca6f2f237ba134e47c8a17fd898ea977.tar.gz
tog-pegasus-e169f2cdca6f2f237ba134e47c8a17fd898ea977.tar.xz
BUG#: 3072
TITLE: cimserver crashs after many indications delivered DESCRIPTION: added conditional compiled logic to stall indication generation by sleeping the provider if the queue is too large until it it is smaller. Log messages are issued to record the event. See description in mak/config.mak
Diffstat (limited to 'mak')
-rw-r--r--mak/config.mak37
1 files changed, 37 insertions, 0 deletions
diff --git a/mak/config.mak b/mak/config.mak
index ab09cd8..ea7bce9 100644
--- a/mak/config.mak
+++ b/mak/config.mak
@@ -301,6 +301,43 @@ else
DEFINES += -DMAX_THREADS_PER_SVC_QUEUE=0
endif
+##############################################################################
+##
+## PEGASUS_INDICATIONS_Q_THRESHOLD
+##
+## Controls if indications providers are stalled if the indications
+## service queue is too large.
+##
+## defaults to 0 (zero)
+##
+## It can be set to any positive value.
+##
+## If set to zero (0) providers are never stalled. This implies that the
+## indications service queue may become as large as neccesary to hold all
+## the indicaitons generated.
+##
+## If set to any value then providers are stalled by forcing them to sleep
+## when they try to deliver an indication and the indications service queue
+## exceeds this value. They are resumed when the queue count falls 10 percent
+## below this value.
+##
+## Stall and resume log entries are made to inform the administrator
+## the condition has occured.
+##
+## WARNING: This also affects the Out of Process Providers (OOP Providers)
+## The OOP Providers use two one way pipes for communication.
+## By stalling the Provider this prevents the pipe from being read
+## which will cause the pipe to fill up and the remote side will block.
+## OOP Prividers mix indications and operations on these two pipes.
+## This means the operations will also be blocked as a side effect of
+## the indications being stalled.
+##
+##
+
+ifdef PEGASUS_INDICATIONS_Q_THRESHOLD
+ DEFINES += -DPEGASUS_INDICATIONS_Q_THRESHOLD=$(PEGASUS_INDICATIONS_Q_THRESHOLD)
+endif
+
# Setup the conditional compile for client displays.
#