I get errors in the log like this
----------- Unreportable ERROR Encountered: 2011-05-26T05:44:55.25591492652893-07:00InterpreterError 2089: An index range was specified for a sequenceable collection with the starting index <1> greater than the ending index <0>.----------- I think the cause of this error is my monit [1] process the sends an empty fcgi packet to test if the gem is alive. I thought I might catch the error if I start a fcgi handler from inside gemtools but it does not pop up. So unreportable is meant literally? :) Any change to debug this with setting had breakpoints somewhere in the fcgi handler? [1] http://mmonit.com/monit/ You might interested how to monitor the fcgi handlers or you like to reproduce the problem. Here is a sample monit file from my installation: <CUT> check process wiki-own-6200 with pidfile /var/tmp/wiki-own-6200.pid start = "/opt/application/bin/start-gem wiki-own 6200" as uid gemstone stop = "/opt/application/bin/stop-gem wiki-own 6200" # Empty FastCGI request if failed port 6200 # Send FastCGI packet: version 1 (0x01), cmd FCGI_GET_VALUES (0x09) # padding 8 bytes (0x08), followed by 8xNULLs padding send "\0x01\0x09\0x00\0x00\0x00\0x00\0x08\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00" # Expect FastCGI packet: version 1 (0x01), resp FCGI_GET_VALUES_RESULT (0x0A) expect "\0x01\0x0A" timeout 5 seconds then restart </CUT> The start-gem script is this: <CUT> #!/bin/bash if [ "$2" == "" ]; then echo "usage. $0 [stone name] [port]" exit 1 fi echo $$ > /var/tmp/$1-$2.pid source /opt/application/$1/env export GEMSTONE_USER=DataCurator export GEMSTONE_PASSWORD=swordfish export GEMSTONE_NAME=$1 export TEMPORARY_OBJECT_MEMORY=50000 export LOGFILE=/opt/application/log/$1-$2.log exec /opt/application/bin/gs-start-gem $1 $2 </CUT> and gs-start-gem is a modified seaside30 start script that has the following lines exchanged: ... exec $GEMSTONE/bin/topaz -l -T$TEMPORARY_OBJECT_MEMORY >> $LOGFILE 2>&1 << EOF set user $GEMSTONE_USER pass $GEMSTONE_PASSWORD gems $GEMSTONE_NAME display oops iferror where ... thanks, Norbert |
Norbert,
I haven't spent a lot of time improving the debuggability that high up the stack and as I look at it I imagine that there could be some improvement. Whenever I have a problem in that area (they don't happen that often) I run the fastcgi server directly from gemtools and set a breakpoint in FSGsSocketServer>>notifyUnreportableError: (and/or other likely spots...see WABasicDevelopment class>>breakpointLocations for my standard list) and go from there. Dale ----- Original Message ----- > I get errors in the log like this > > ----------- Unreportable ERROR Encountered: > 2011-05-26T05:44:55.25591492652893-07:00InterpreterError 2089: An > index range was specified for a sequenceable collection with the > starting index <1> greater than the ending index <0>.----------- > > I think the cause of this error is my monit [1] process the sends an > empty fcgi packet to test if the gem is alive. I thought I might > catch the error if I start a fcgi handler from inside gemtools but > it does not pop up. So unreportable is meant literally? :) Any > change to debug this with setting had breakpoints somewhere in the > fcgi handler? > > [1] http://mmonit.com/monit/ > > You might interested how to monitor the fcgi handlers or you like to > reproduce the problem. Here is a sample monit file from my > installation: > > <CUT> > check process wiki-own-6200 with pidfile /var/tmp/wiki-own-6200.pid > start = "/opt/application/bin/start-gem wiki-own 6200" as uid > gemstone > stop = "/opt/application/bin/stop-gem wiki-own 6200" > # Empty FastCGI request > if failed port 6200 > # Send FastCGI packet: version 1 (0x01), cmd FCGI_GET_VALUES > (0x09) > # padding 8 bytes (0x08), followed by 8xNULLs padding > send > "\0x01\0x09\0x00\0x00\0x00\0x00\0x08\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00" > # Expect FastCGI packet: version 1 (0x01), resp > FCGI_GET_VALUES_RESULT (0x0A) > expect "\0x01\0x0A" > timeout 5 seconds > then restart > </CUT> > > The start-gem script is this: > > <CUT> > #!/bin/bash > > if [ "$2" == "" ]; > then > echo "usage. $0 [stone name] [port]" > exit 1 > fi > > echo $$ > /var/tmp/$1-$2.pid > > source /opt/application/$1/env > export GEMSTONE_USER=DataCurator > export GEMSTONE_PASSWORD=swordfish > export GEMSTONE_NAME=$1 > export TEMPORARY_OBJECT_MEMORY=50000 > export LOGFILE=/opt/application/log/$1-$2.log > exec /opt/application/bin/gs-start-gem $1 $2 > </CUT> > > and gs-start-gem is a modified seaside30 start script that has the > following lines exchanged: > > ... > exec $GEMSTONE/bin/topaz -l -T$TEMPORARY_OBJECT_MEMORY >> $LOGFILE > 2>&1 << EOF > > set user $GEMSTONE_USER pass $GEMSTONE_PASSWORD gems $GEMSTONE_NAME > > display oops > iferror where > ... > > thanks, > > Norbert > > > |
In reply to this post by NorbertHartl
Hi Norbert,
Is there a specific reason you are sending a packet to the fcgi process? We are also using monit but I only use the check that assures that the gem is running based on its pid. On 26 May 2011, at 15:37, Norbert Hartl wrote: > I get errors in the log like this > > ----------- Unreportable ERROR Encountered: 2011-05-26T05:44:55.25591492652893-07:00InterpreterError 2089: An index range was specified for a sequenceable collection with the starting index <1> greater than the ending index <0>.----------- > > I think the cause of this error is my monit [1] process the sends an empty fcgi packet to test if the gem is alive. I thought I might catch the error if I start a fcgi handler from inside gemtools but it does not pop up. So unreportable is meant literally? :) Any change to debug this with setting had breakpoints somewhere in the fcgi handler? > > [1] http://mmonit.com/monit/ > > You might interested how to monitor the fcgi handlers or you like to reproduce the problem. Here is a sample monit file from my installation: > > <CUT> > check process wiki-own-6200 with pidfile /var/tmp/wiki-own-6200.pid > start = "/opt/application/bin/start-gem wiki-own 6200" as uid gemstone > stop = "/opt/application/bin/stop-gem wiki-own 6200" > # Empty FastCGI request > if failed port 6200 > # Send FastCGI packet: version 1 (0x01), cmd FCGI_GET_VALUES (0x09) > # padding 8 bytes (0x08), followed by 8xNULLs padding > send "\0x01\0x09\0x00\0x00\0x00\0x00\0x08\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00" > # Expect FastCGI packet: version 1 (0x01), resp FCGI_GET_VALUES_RESULT (0x0A) > expect "\0x01\0x0A" > timeout 5 seconds > then restart > </CUT> > > The start-gem script is this: > > <CUT> > #!/bin/bash > > if [ "$2" == "" ]; > then > echo "usage. $0 [stone name] [port]" > exit 1 > fi > > echo $$ > /var/tmp/$1-$2.pid > > source /opt/application/$1/env > export GEMSTONE_USER=DataCurator > export GEMSTONE_PASSWORD=swordfish > export GEMSTONE_NAME=$1 > export TEMPORARY_OBJECT_MEMORY=50000 > export LOGFILE=/opt/application/log/$1-$2.log > exec /opt/application/bin/gs-start-gem $1 $2 > </CUT> > > and gs-start-gem is a modified seaside30 start script that has the following lines exchanged: > > ... > exec $GEMSTONE/bin/topaz -l -T$TEMPORARY_OBJECT_MEMORY >> $LOGFILE 2>&1 << EOF > > set user $GEMSTONE_USER pass $GEMSTONE_PASSWORD gems $GEMSTONE_NAME > > display oops > iferror where > ... > > thanks, > > Norbert > > |
Am 26.05.2011 um 18:28 schrieb Johan Brichau: > Hi Norbert, > > Is there a specific reason you are sending a packet to the fcgi process? > > We are also using monit but I only use the check that assures that the gem is running based on its pid. > A couple of months ago I had the problem that the fcgi process was present but stale. Somehow the listening socket was closed but the process was lingering around preventing a restart of the gem. Sending a fcgi packet determines exactly that case and restarts the process if necessary. Norbert > > On 26 May 2011, at 15:37, Norbert Hartl wrote: > >> I get errors in the log like this >> >> ----------- Unreportable ERROR Encountered: 2011-05-26T05:44:55.25591492652893-07:00InterpreterError 2089: An index range was specified for a sequenceable collection with the starting index <1> greater than the ending index <0>.----------- >> >> I think the cause of this error is my monit [1] process the sends an empty fcgi packet to test if the gem is alive. I thought I might catch the error if I start a fcgi handler from inside gemtools but it does not pop up. So unreportable is meant literally? :) Any change to debug this with setting had breakpoints somewhere in the fcgi handler? >> >> [1] http://mmonit.com/monit/ >> >> You might interested how to monitor the fcgi handlers or you like to reproduce the problem. Here is a sample monit file from my installation: >> >> <CUT> >> check process wiki-own-6200 with pidfile /var/tmp/wiki-own-6200.pid >> start = "/opt/application/bin/start-gem wiki-own 6200" as uid gemstone >> stop = "/opt/application/bin/stop-gem wiki-own 6200" >> # Empty FastCGI request >> if failed port 6200 >> # Send FastCGI packet: version 1 (0x01), cmd FCGI_GET_VALUES (0x09) >> # padding 8 bytes (0x08), followed by 8xNULLs padding >> send "\0x01\0x09\0x00\0x00\0x00\0x00\0x08\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00" >> # Expect FastCGI packet: version 1 (0x01), resp FCGI_GET_VALUES_RESULT (0x0A) >> expect "\0x01\0x0A" >> timeout 5 seconds >> then restart >> </CUT> >> >> The start-gem script is this: >> >> <CUT> >> #!/bin/bash >> >> if [ "$2" == "" ]; >> then >> echo "usage. $0 [stone name] [port]" >> exit 1 >> fi >> >> echo $$ > /var/tmp/$1-$2.pid >> >> source /opt/application/$1/env >> export GEMSTONE_USER=DataCurator >> export GEMSTONE_PASSWORD=swordfish >> export GEMSTONE_NAME=$1 >> export TEMPORARY_OBJECT_MEMORY=50000 >> export LOGFILE=/opt/application/log/$1-$2.log >> exec /opt/application/bin/gs-start-gem $1 $2 >> </CUT> >> >> and gs-start-gem is a modified seaside30 start script that has the following lines exchanged: >> >> ... >> exec $GEMSTONE/bin/topaz -l -T$TEMPORARY_OBJECT_MEMORY >> $LOGFILE 2>&1 << EOF >> >> set user $GEMSTONE_USER pass $GEMSTONE_PASSWORD gems $GEMSTONE_NAME >> >> display oops >> iferror where >> ... >> >> thanks, >> >> Norbert >> >> > |
In reply to this post by Dale Henrichs
Am 26.05.2011 um 18:11 schrieb Dale Henrichs: > Norbert, > > I haven't spent a lot of time improving the debuggability that high up the stack and as I look at it I imagine that there could be some improvement. > > Whenever I have a problem in that area (they don't happen that often) I run the fastcgi server directly from gemtools and set a breakpoint in FSGsSocketServer>>notifyUnreportableError: (and/or other likely spots...see WABasicDevelopment class>>breakpointLocations for my standard list) and go from there. > FSGsSocketServer>>notifyUnreportableError: I was expecting that kind of help. It should be enough to find the problem and fix it. Thanks! Norbert > > ----- Original Message ----- >> I get errors in the log like this >> >> ----------- Unreportable ERROR Encountered: >> 2011-05-26T05:44:55.25591492652893-07:00InterpreterError 2089: An >> index range was specified for a sequenceable collection with the >> starting index <1> greater than the ending index <0>.----------- >> >> I think the cause of this error is my monit [1] process the sends an >> empty fcgi packet to test if the gem is alive. I thought I might >> catch the error if I start a fcgi handler from inside gemtools but >> it does not pop up. So unreportable is meant literally? :) Any >> change to debug this with setting had breakpoints somewhere in the >> fcgi handler? >> >> [1] http://mmonit.com/monit/ >> >> You might interested how to monitor the fcgi handlers or you like to >> reproduce the problem. Here is a sample monit file from my >> installation: >> >> <CUT> >> check process wiki-own-6200 with pidfile /var/tmp/wiki-own-6200.pid >> start = "/opt/application/bin/start-gem wiki-own 6200" as uid >> gemstone >> stop = "/opt/application/bin/stop-gem wiki-own 6200" >> # Empty FastCGI request >> if failed port 6200 >> # Send FastCGI packet: version 1 (0x01), cmd FCGI_GET_VALUES >> (0x09) >> # padding 8 bytes (0x08), followed by 8xNULLs padding >> send >> "\0x01\0x09\0x00\0x00\0x00\0x00\0x08\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00" >> # Expect FastCGI packet: version 1 (0x01), resp >> FCGI_GET_VALUES_RESULT (0x0A) >> expect "\0x01\0x0A" >> timeout 5 seconds >> then restart >> </CUT> >> >> The start-gem script is this: >> >> <CUT> >> #!/bin/bash >> >> if [ "$2" == "" ]; >> then >> echo "usage. $0 [stone name] [port]" >> exit 1 >> fi >> >> echo $$ > /var/tmp/$1-$2.pid >> >> source /opt/application/$1/env >> export GEMSTONE_USER=DataCurator >> export GEMSTONE_PASSWORD=swordfish >> export GEMSTONE_NAME=$1 >> export TEMPORARY_OBJECT_MEMORY=50000 >> export LOGFILE=/opt/application/log/$1-$2.log >> exec /opt/application/bin/gs-start-gem $1 $2 >> </CUT> >> >> and gs-start-gem is a modified seaside30 start script that has the >> following lines exchanged: >> >> ... >> exec $GEMSTONE/bin/topaz -l -T$TEMPORARY_OBJECT_MEMORY >> $LOGFILE >> 2>&1 << EOF >> >> set user $GEMSTONE_USER pass $GEMSTONE_PASSWORD gems $GEMSTONE_NAME >> >> display oops >> iferror where >> ... >> >> thanks, >> >> Norbert >> >> >> |
Free forum by Nabble | Edit this page |