Unreportable error

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Unreportable error

NorbertHartl
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


Reply | Threaded
Open this post in threaded view
|

Re: Unreportable error

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.

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
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Unreportable error

Johan Brichau-2
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
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Unreportable error

NorbertHartl

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
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Unreportable error

NorbertHartl
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
>>
>>
>>