Information about “Notification queue exceeded its maximum size” log message and how to avoid it in Silver Fabric versions 5.8.1 and below

Information about “Notification queue exceeded its maximum size” log message and how to avoid it in Silver Fabric versions 5.8.1 and below

book

Article ID: KB0081567

calendar_today

Updated On:

Products Versions
TIBCO Silver Fabric 5.5.x, 5.6.x, 5.7.x, 5.8.x

Description

Silver Fabric broker comes with a Notification queue whose maximum size is set to 100. This is a hard-coded value and cannot be changed in Silver Fabric Versions 5.8.1 and below. When this queue exceeds its maximum size, below log message will be printed in broker logs:-
 
SEVERE: [BrokerFileUpdateServer] while notifying proxy of file update java.io.IOException: Notification queue exceeded its maximum size

 
The message above is seen when multiple threads try to enqueue notifications (example of such notifications can be, large number of resources being updated, too many events sent to engines for the broker to handle all at once, etc) at the same time resulting in the queue growing larger than the maximum size. In most cases, this should recover by itself that is, it will persist for some time with the notification events retrying until they are able to get a chance to complete.
 
In ideal cases, this particular SEVERE message should not have any serious effect on the product's behavior or performance.

Issue/Introduction

Information about “Notification queue exceeded its maximum size” log message and how to avoid it in Silver Fabric versions 5.8.1 and below

Resolution

To avoid these exceptions in the broker logs, notifications can be blocked when the queue size exceeds its limit by adding system property "com.livecluster.connection.socket.SocketSender.blockIfBacklogged=true".

How to add this property in server.bat file:-

if %ERRORLEVEL% == 0 (
set CATALINA_OPTS=-Xrs -Dds.logToSystem=true -Dcom.livecluster.connection.socket.SocketSender.blockIfBacklogged=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Xmx%MAX_HEAP% -XX:MaxDirectMemorySize=256m -Duser.region=US -Duser.language=en -Dfile.encoding=UTF8 %FABRIC_OPTS% %FABRIC_TOMCAT_OPTS%
)else (
set CATALINA_OPTS=-Xrs -Dds.logToSystem=true -Dcom.livecluster.connection.socket.SocketSender.blockIfBacklogged=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:PermSize=128m -XX:MaxPermSize=512m -Xmx%MAX_HEAP% -XX:MaxDirectMemorySize=256m -Duser.region=US -Duser.language=en -Dfile.encoding=UTF8 %FABRIC_OPTS% %FABRIC_TOMCAT_OPTS%
)

How to add this property in service.bat file:-

set SERVICE_JVM_OPTS=-Xrs -Xmx%MAX_HEAP%;-Dds.logToSystem=true; -Dcom.livecluster.connection.socket.SocketSender.blockIfBacklogged=true ;-XX:+UseConcMarkSweepGC;-XX:+CMSClassUnloadingEnabled;-XX:PermSize=128m;-XX:MaxPermSize=512m;-Duser.region=US;-Duser.language=en;-Dfile.encoding=UTF8;%FABRIC_OPTS%;-Djava.io.tmpdir=%CATALINA_TMPDIR%

How to add this property in server.sh file:-

if [ "$?" = "0" ]; then
     CATALINA_OPTS="-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Xmx$MAX_HEAP -XX:MaxDirectMemorySize=256m -Duser.region=US -Duser.language=en -Dcom.livecluster.connection.socket.SocketSender.blockIfBacklogged=true -Dfile.encoding=UTF8 $LOG_TO_SYSTEM $FABRIC_OPTS $FABRIC_TOMCAT_OPTS"
else
    CATALINA_OPTS="-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:PermSize=128m -XX:MaxPermSize=512m -Xmx$MAX_HEAP -XX:MaxDirectMemorySize=256m -Duser.region=US -Duser.language=en -Dcom.livecluster.connection.socket.SocketSender.blockIfBacklogged=true -Dfile.encoding=UTF8 $LOG_TO_SYSTEM $FABRIC_OPTS $FABRIC_TOMCAT_OPTS"
fi