ObjectLog utilization

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

ObjectLog utilization

NorbertHartl
Hi,

at the moment I'm doing some web api stuff with seaside and gemstone. I have only a request handler and no component or the like. I like to to have the same behaviour that WAGsWalkback is doing. Is there a utility that does continuation creation and storing with having the need for a WAComponent?
thanks,

Norbert
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale

----- "Norbert Hartl" <[hidden email]> wrote:

| Hi,
|
| at the moment I'm doing some web api stuff with seaside and gemstone.
| I have only a request handler and no component or the like. I like to
| to have the same behaviour that WAGsWalkback is doing. Is there a
| utility that does continuation creation and storing with having the
| need for a WAComponent?
| thanks,
|
| Norbert

Norbert,

If you look at the startMaintenance script, you'll see that DebugLogEntry are used to snap off a continuation without doing any using interaction:

  [...]
    on: Error, Halt, BreakpointNotification
    do: [:ex |
          System inTransaction
                ifTrue: [
          DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'.
          System commitTransaction.
          System beginTransaction ]
        ifFalse: [
          System beginTransaction.
          DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'.
          System commitTransaction].
      ex isResumable ifTrue: [ex resume]]

Dale
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl
I have integrated the code into my handler but it does not work. I have basically

[
        self processRequest: aRequest]
        on: Error, Halt, BreakpointNotification
        do: [:ex| |r|
                System inTransaction
               ifTrue: [
         DebuggerLogEntry createContinuationLabeled: 'http continuation'.
         System commitTransaction.
         System beginTransaction ]
       ifFalse: [
         System beginTransaction.
         DebuggerLogEntry createContinuationLabeled: 'http continuation'.
         System commitTransaction].
      ex isResumable ifTrue: [ex resume] ifFalse: [
                r := WAResponse new
                                contentType: 'text/plain';
                                status: 500.
                ex printOn: r stream.
          ^ r
        ]]

But now I get

<h2>Internal Server Error:<br>InterpreterError 2407: The object <Semaphore(1123229185)> may not be committed, instances of its class are non-persistent.</h2>

What's going wrong here?

Norbert


On 18.02.2010, at 20:23, Dale Henrichs wrote:

>
> ----- "Norbert Hartl" <[hidden email]> wrote:
>
> | Hi,
> |
> | at the moment I'm doing some web api stuff with seaside and gemstone.
> | I have only a request handler and no component or the like. I like to
> | to have the same behaviour that WAGsWalkback is doing. Is there a
> | utility that does continuation creation and storing with having the
> | need for a WAComponent?
> | thanks,
> |
> | Norbert
>
> Norbert,
>
> If you look at the startMaintenance script, you'll see that DebugLogEntry are used to snap off a continuation without doing any using interaction:
>
>  [...]
>    on: Error, Halt, BreakpointNotification
>    do: [:ex |
>          System inTransaction
>                ifTrue: [
>          DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'.
>          System commitTransaction.
>          System beginTransaction ]
>        ifFalse: [
>          System beginTransaction.
>          DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'.
>          System commitTransaction].
>      ex isResumable ifTrue: [ex resume]]
>
> Dale

Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Juan-2
Hi

Semaphore is not persistent object,may by you do nil this instances
before serialize can work, may be lazzy initialization.
 same issue occurs to me.
best regards.
MDC

On Mon, Feb 22, 2010 at 9:37 AM, Norbert Hartl <[hidden email]> wrote:

> I have integrated the code into my handler but it does not work. I have basically
>
> [
>        self processRequest: aRequest]
>        on: Error, Halt, BreakpointNotification
>        do: [:ex| |r|
>                System inTransaction
>               ifTrue: [
>         DebuggerLogEntry createContinuationLabeled: 'http continuation'.
>         System commitTransaction.
>         System beginTransaction ]
>       ifFalse: [
>         System beginTransaction.
>         DebuggerLogEntry createContinuationLabeled: 'http continuation'.
>         System commitTransaction].
>         ex isResumable ifTrue: [ex resume] ifFalse: [
>                r := WAResponse new
>                                contentType: 'text/plain';
>                                status: 500.
>                ex printOn: r stream.
>                ^ r
>        ]]
>
> But now I get
>
> <h2>Internal Server Error:<br>InterpreterError 2407: The object <Semaphore(1123229185)> may not be committed, instances of its class are non-persistent.</h2>
>
> What's going wrong here?
>
> Norbert
>
>
> On 18.02.2010, at 20:23, Dale Henrichs wrote:
>
>>
>> ----- "Norbert Hartl" <[hidden email]> wrote:
>>
>> | Hi,
>> |
>> | at the moment I'm doing some web api stuff with seaside and gemstone.
>> | I have only a request handler and no component or the like. I like to
>> | to have the same behaviour that WAGsWalkback is doing. Is there a
>> | utility that does continuation creation and storing with having the
>> | need for a WAComponent?
>> | thanks,
>> |
>> | Norbert
>>
>> Norbert,
>>
>> If you look at the startMaintenance script, you'll see that DebugLogEntry are used to snap off a continuation without doing any using interaction:
>>
>>  [...]
>>    on: Error, Halt, BreakpointNotification
>>    do: [:ex |
>>          System inTransaction
>>                ifTrue: [
>>          DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'.
>>          System commitTransaction.
>>          System beginTransaction ]
>>        ifFalse: [
>>          System beginTransaction.
>>          DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'.
>>          System commitTransaction].
>>      ex isResumable ifTrue: [ex resume]]
>>
>> Dale
>
>
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale
In reply to this post by NorbertHartl
Yes, Semaphores have been a total pain ... the few times that I've had errors in the startMaintenance script I haven't had a problem with persisting the continuation. It appears that I have been very luck when it comes to Semaphores (unfortunately)...

If you are using Semaphores explicitly you should try to use TransientSemaphore instead.

I haven't completely characterized the conditions under which semaphores get attached to the persistent root and it is very difficult to debug the error, because we don't get enough information about where the Semaphore is attached.

The number one solution would seem be to allow semaphores to  be persisted, but that would definitely have it's own problems...

Unless you are explicitly forking processes during processRequest: I would think this would work ... try comparing the code you are using to the code path in the debug component when deployment mode is true - in that case, a continuation is snapped off and stashed in the object log ...

Dale
----- "Norbert Hartl" <[hidden email]> wrote:

| I have integrated the code into my handler but it does not work. I
| have basically
|
| [
| self processRequest: aRequest]
| on: Error, Halt, BreakpointNotification
| do: [:ex| |r|
| System inTransaction
|                ifTrue: [
|          DebuggerLogEntry createContinuationLabeled: 'http
| continuation'.
|          System commitTransaction.
|          System beginTransaction ]
|        ifFalse: [
|          System beginTransaction.
|          DebuggerLogEntry createContinuationLabeled: 'http
| continuation'.
|          System commitTransaction].
|       ex isResumable ifTrue: [ex resume] ifFalse: [
| r := WAResponse new
| contentType: 'text/plain';
| status: 500.
| ex printOn: r stream.
| ^ r
| ]]
|
| But now I get
|
| <h2>Internal Server Error:<br>InterpreterError 2407: The object
| <Semaphore(1123229185)> may not be committed, instances of its class
| are non-persistent.</h2>
|
| What's going wrong here?
|
| Norbert
|
|
| On 18.02.2010, at 20:23, Dale Henrichs wrote:
|
| >
| > ----- "Norbert Hartl" <[hidden email]> wrote:
| >
| > | Hi,
| > |
| > | at the moment I'm doing some web api stuff with seaside and
| gemstone.
| > | I have only a request handler and no component or the like. I like
| to
| > | to have the same behaviour that WAGsWalkback is doing. Is there a
| > | utility that does continuation creation and storing with having
| the
| > | need for a WAComponent?
| > | thanks,
| > |
| > | Norbert
| >
| > Norbert,
| >
| > If you look at the startMaintenance script, you'll see that
| DebugLogEntry are used to snap off a continuation without doing any
| using interaction:
| >
| >  [...]
| >    on: Error, Halt, BreakpointNotification
| >    do: [:ex |
| >          System inTransaction
| >                ifTrue: [
| >          DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
| >          System commitTransaction.
| >          System beginTransaction ]
| >        ifFalse: [
| >          System beginTransaction.
| >          DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
| >          System commitTransaction].
| >      ex isResumable ifTrue: [ex resume]]
| >
| > Dale
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl

On 22.02.2010, at 20:32, Dale Henrichs wrote:

> Yes, Semaphores have been a total pain ... the few times that I've had errors in the startMaintenance script I haven't had a problem with persisting the continuation. It appears that I have been very luck when it comes to Semaphores (unfortunately)...
>
> If you are using Semaphores explicitly you should try to use TransientSemaphore instead.
>

I saw that there is something like a TransientSemaphore. It is just that I don't do anything special. My handler class is a subclass of WAEntryPoint and does request object treatment, data retrieval, generation of xml. so it es even less than what would happen if I would use a WAComponent. I don't have problems with the errors that occurr in components. That is very strange to me. The only suspect I've found ist the mutex around handleRequest: but this is always there. And there is less chance to escape the mutex block with my own handling of the error cases.

> I haven't completely characterized the conditions under which semaphores get attached to the persistent root and it is very difficult to debug the error, because we don't get enough information about where the Semaphore is attached.
>

Hmm, I don't know much about Semaphores in smalltalk. But I always thought that a Semaphore is standalone/explicit lock that has no need to be attached anywhere. But maybe I should learn about the smalltalk way of doing it. As far as I can see I don't do any writes while in the process. So reads are simultanous on semaphores as long as nobody writes to it, right? And without having to wait for something to happen I cannot image why the semaphore gets attached to the persistent root. Being an entry point I don't even have a session or similar object.... Ok to make it short I'm completely clueless :)

> The number one solution would seem be to allow semaphores to  be persisted, but that would definitely have it's own problems...
>
> Unless you are explicitly forking processes during processRequest: I would think this would work ... try comparing the code you are using to the code path in the debug component when deployment mode is true - in that case, a continuation is snapped off and stashed in the object log ...

That one I don't grok :) Can you elaborate on this, please. And again, there is no such thing as a deployment mode in a request handler (well, AFAIK) :)

thanks,

Norbert

>
> Dale
> ----- "Norbert Hartl" <[hidden email]> wrote:
>
> | I have integrated the code into my handler but it does not work. I
> | have basically
> |
> | [
> | self processRequest: aRequest]
> | on: Error, Halt, BreakpointNotification
> | do: [:ex| |r|
> | System inTransaction
> |                ifTrue: [
> |          DebuggerLogEntry createContinuationLabeled: 'http
> | continuation'.
> |          System commitTransaction.
> |          System beginTransaction ]
> |        ifFalse: [
> |          System beginTransaction.
> |          DebuggerLogEntry createContinuationLabeled: 'http
> | continuation'.
> |          System commitTransaction].
> |       ex isResumable ifTrue: [ex resume] ifFalse: [
> | r := WAResponse new
> | contentType: 'text/plain';
> | status: 500.
> | ex printOn: r stream.
> | ^ r
> | ]]
> |
> | But now I get
> |
> | <h2>Internal Server Error:<br>InterpreterError 2407: The object
> | <Semaphore(1123229185)> may not be committed, instances of its class
> | are non-persistent.</h2>
> |
> | What's going wrong here?
> |
> | Norbert
> |
> |
> | On 18.02.2010, at 20:23, Dale Henrichs wrote:
> |
> | >
> | > ----- "Norbert Hartl" <[hidden email]> wrote:
> | >
> | > | Hi,
> | > |
> | > | at the moment I'm doing some web api stuff with seaside and
> | gemstone.
> | > | I have only a request handler and no component or the like. I like
> | to
> | > | to have the same behaviour that WAGsWalkback is doing. Is there a
> | > | utility that does continuation creation and storing with having
> | the
> | > | need for a WAComponent?
> | > | thanks,
> | > |
> | > | Norbert
> | >
> | > Norbert,
> | >
> | > If you look at the startMaintenance script, you'll see that
> | DebugLogEntry are used to snap off a continuation without doing any
> | using interaction:
> | >
> | >  [...]
> | >    on: Error, Halt, BreakpointNotification
> | >    do: [:ex |
> | >          System inTransaction
> | >                ifTrue: [
> | >          DebuggerLogEntry createContinuationLabeled: 'MTCE
> | continuation'.
> | >          System commitTransaction.
> | >          System beginTransaction ]
> | >        ifFalse: [
> | >          System beginTransaction.
> | >          DebuggerLogEntry createContinuationLabeled: 'MTCE
> | continuation'.
> | >          System commitTransaction].
> | >      ex isResumable ifTrue: [ex resume]]
> | >
> | > Dale

Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale
In reply to this post by NorbertHartl
Norbert,

Are you working in SEaside 3.0 or Seaside 2.8...

Dale
----- "Norbert Hartl" <[hidden email]> wrote:

| Hi,
|
| at the moment I'm doing some web api stuff with seaside and gemstone.
| I have only a request handler and no component or the like. I like to
| to have the same behaviour that WAGsWalkback is doing. Is there a
| utility that does continuation creation and storing with having the
| need for a WAComponent?
| thanks,
|
| Norbert
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl
I'm working on my .231 image with seaside 2.8.

Norbert

On 22.02.2010, at 22:04, Dale Henrichs wrote:

> Norbert,
>
> Are you working in SEaside 3.0 or Seaside 2.8...
>
> Dale
> ----- "Norbert Hartl" <[hidden email]> wrote:
>
> | Hi,
> |
> | at the moment I'm doing some web api stuff with seaside and gemstone.
> | I have only a request handler and no component or the like. I like to
> | to have the same behaviour that WAGsWalkback is doing. Is there a
> | utility that does continuation creation and storing with having the
> | need for a WAComponent?
> | thanks,
> |
> | Norbert

Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale
In reply to this post by NorbertHartl
Norbert,

Okay. I assume that you are still using a WASession to do your work and that means that WAProcessMonitor>>critical:for:ifError: is on the stack.

If it is, then we should be able to arrange to build an errorHandler that doesn't use a component and stashes the continuation into the object log. If isn't on the stack, then I'd be interested to know which WAProcessMonitor method is on the stack ... WAProcessMonitor>>critical:for:ifError: was built to avoid some of the issues with persistent Semaphores.

Assuming that all we need is an errorHandler, you are going to create a new subclass of WAErrorHandler and in the handleError: method put the DebuggerLogEntry:

  DebuggerLogEntry createContinuationLabeled: 'http continuation'.

and arrange to return a response of some kind ... when the response is returned, the commit will be performed.

If WAProcessMonitor>>critical:for:ifError: isn't on the stack, I'm curious where you are hooking into the request handling...

Dale

----- "Norbert Hartl" <[hidden email]> wrote:

| I'm working on my .231 image with seaside 2.8.
|
| Norbert
|
| On 22.02.2010, at 22:04, Dale Henrichs wrote:
|
| > Norbert,
| >
| > Are you working in SEaside 3.0 or Seaside 2.8...
| >
| > Dale
| > ----- "Norbert Hartl" <[hidden email]> wrote:
| >
| > | Hi,
| > |
| > | at the moment I'm doing some web api stuff with seaside and
| gemstone.
| > | I have only a request handler and no component or the like. I like
| to
| > | to have the same behaviour that WAGsWalkback is doing. Is there a
| > | utility that does continuation creation and storing with having
| the
| > | need for a WAComponent?
| > | thanks,
| > |
| > | Norbert
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl
Dale,

as far as I can see there is no utilization of WASession if a WARequestHandler is being used. Without WAApplication there doesn't seem to be any session used. I entered some break points into the places where it should pass by if there would be a session usage. None of these is triggered. Now I saw that even the mutex used around handleRequest: is a TransientMutex.

However I built a class

WAEntryPoint subclass: 'HRTestHandler'
        instVarNames: #()
        classVars: #()
        classInstVars: #()
        poolDictionaries: #[]
        inDictionary: ''
        category: 'MyHandler-HTTP'

HRTestHandler>>handleRequest: aRequest
        [ nil foobar ]
                on: Error, Halt, BreakpointNotification
                do: [:ex |
                        System inTransaction
                                ifTrue: [
        DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'.
          System commitTransaction.
          System beginTransaction ]
        ifFalse: [
          System beginTransaction.
          DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'.
          System commitTransaction].
      ex isResumable ifTrue: [ex resume]].
        ^ WAResponse new status: 500.

HRTestHanlder class>>description
        ^'objectlog test'

If I attach this via seaside config to a path. Then invoking the url gives me now

topaz 1> topaz 1> Hyper Server started on port 9009
--transcript--'Seaside default dispatcher enabled on path /seaside/'
-----------------------------------------------------
GemStone: Error         Nonfatal
The object aProcessorScheduler may not be committed, instances of
its class are non-persistent.
Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1 Context : 539307521
Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a ProcessorScheduler
  readyQueue      [539261697 sz:1 cls: 92929 SortedCollection] a SortedCollection
  activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
  lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
  delayQueue      [539260673 sz:2 cls: 92929 SortedCollection] a SortedCollection
  lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
  readDict        [539278081 sz:14 cls: 90881 IdentityKeyValueDictionary] an IdentityKeyValueDictionary
  writeDict       [539259649 sz:14 cls: 90881 IdentityKeyValueDictionary] an IdentityKeyValueDictionary
  suspendedDict   [539259137 sz:14 cls: 90881 IdentityKeyValueDictionary] an IdentityKeyValueDictionary
  waitingSet      [539258625 sz:5 cls: 73985 IdentitySet] an IdentitySet
  lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
  errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil


Now executing the following command saved from "iferr 1":
   where
==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod 11802113]
2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
3 ExceptionA >> _defaultAction @1 line 3   [GsMethod 11804673]
4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
6 HTTPConnection >> handleInternalServerException: @12 line 13   [GsMethod 243599873]
7 ComplexBlock in HTTPConnection >> internalErrorHandler @6 line 6   [GsMethod 243599617]
8 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5   [GsMethod 10057985]
10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod 2377473]
11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod 2377473]
12 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod 10057985]
13 ExceptionHandler >> caughtException @3 line 4   [GsMethod 10057473]
14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19   [GsMethod 10054401]
15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9   [GsMethod 10055169]
16 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
17 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
18 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
19 ExceptionHandler >> caughtException @4 line 5   [GsMethod 10057473]
20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19   [GsMethod 10054401]
21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9   [GsMethod 10055169]
22 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
23 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
24 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
25 ExceptionHandler >> caughtException @4 line 5   [GsMethod 10057473]
26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19   [GsMethod 10054401]
27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9   [GsMethod 10055169]
28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
29 System class >> __commit: @1 line 8   [GsMethod 2732545]
30 System class >> _localCommit: @8 line 30   [GsMethod 2732801]
31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3   [GsMethod 7711233]
32 System class >> _commit: @6 line 16   [GsMethod 2733313]
33 System class >> commitTransaction @2 line 28   [GsMethod 2720513]
34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8   [GsMethod 536737537]
35 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5   [GsMethod 10057985]
37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod 2377473]
38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod 2377473]
39 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod 10057985]
40 ExceptionHandler >> caughtException @3 line 4   [GsMethod 10057473]
41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19   [GsMethod 10054401]
42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9   [GsMethod 10055169]
43 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
44 System class >> signal:args:signalDictionary: @5 line 13   [GsMethod 2749697]
45 Object >> doesNotUnderstand: @6 line 14   [GsMethod 1925889]
46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod 1939201]
47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2   [GsMethod 536737537]
48 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod 10055169]
49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod 2378497]
51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod 536737537]
52 WADispatcher >> handleRequest: @7 line 5   [GsMethod 66289921]
53 ComplexBlock in SeasideHTTPService >> answerToCheckingLock: @23 line 12   [GsMethod 468698625]
54 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod 10055169]
55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod 2378497]
57 ComplexVCBlock in SeasideHTTPService >> answerToCheckingLock: @29 line 13   [GsMethod 468698625]
58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod 2377473]
59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod 2377473]
60 TransientRecursionLock >> critical: @15 line 8   [GsMethod 19814657]
61 SeasideHTTPService >> answerToCheckingLock: @60 line 6   [GsMethod 468698625]
62 SeasideHTTPService >> process: @3 line 6   [GsMethod 233903105]
63 ComplexBlock in SeasideHTTPService >> start @4 line 5   [GsMethod 233923073]
64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod 233382913]
65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
66 ComplexBlock in HTTPConnection >> produceResponseFor: @8 line 9   [GsMethod 243599105]
67 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod 10055169]
68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod 12016897]
69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod 2378497]
70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6   [GsMethod 26609665]
71 HTTPConnection >> produceResponseFor: @13 line 11   [GsMethod 243599105]
72 HTTPConnection >> getAndDispatchMessages @9 line 14   [GsMethod 243597825]
73 ComplexBlock in OSkSocketInboundConnection >> interact @3 line 6   [GsMethod 243589377]
74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod 2377473]
75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod 2377473]
76 OSkSocketInboundConnection >> interact @7 line 7   [GsMethod 243589377]
77 OSkSocketListenerService >> handleInboundConnectionOn: @8 line 10   [GsMethod 243799809]
78 ComplexBlock in OSkSocketListenerService >> acceptInboundConnections @12 line 15   [GsMethod 243801601]
79 GsProcess >> _startPart2 @13 line 17   [GsMethod 2493441]
80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
  [GsProcess 539307521]
topaz 1> [268 sz:0 cls: 68097 Boolean] true
topaz 1>
[Info]: Logging out at 02/23/10 00:18:45 CET


Hope this helps anything

Norbert


On 22.02.2010, at 23:15, Dale Henrichs wrote:

> Norbert,
>
> Okay. I assume that you are still using a WASession to do your work and that means that WAProcessMonitor>>critical:for:ifError: is on the stack.
>
> If it is, then we should be able to arrange to build an errorHandler that doesn't use a component and stashes the continuation into the object log. If isn't on the stack, then I'd be interested to know which WAProcessMonitor method is on the stack ... WAProcessMonitor>>critical:for:ifError: was built to avoid some of the issues with persistent Semaphores.
>
> Assuming that all we need is an errorHandler, you are going to create a new subclass of WAErrorHandler and in the handleError: method put the DebuggerLogEntry:
>
>  DebuggerLogEntry createContinuationLabeled: 'http continuation'.
>
> and arrange to return a response of some kind ... when the response is returned, the commit will be performed.
>
> If WAProcessMonitor>>critical:for:ifError: isn't on the stack, I'm curious where you are hooking into the request handling...
>
> Dale
>
> ----- "Norbert Hartl" <[hidden email]> wrote:
>
> | I'm working on my .231 image with seaside 2.8.
> |
> | Norbert
> |
> | On 22.02.2010, at 22:04, Dale Henrichs wrote:
> |
> | > Norbert,
> | >
> | > Are you working in SEaside 3.0 or Seaside 2.8...
> | >
> | > Dale
> | > ----- "Norbert Hartl" <[hidden email]> wrote:
> | >
> | > | Hi,
> | > |
> | > | at the moment I'm doing some web api stuff with seaside and
> | gemstone.
> | > | I have only a request handler and no component or the like. I like
> | to
> | > | to have the same behaviour that WAGsWalkback is doing. Is there a
> | > | utility that does continuation creation and storing with having
> | the
> | > | need for a WAComponent?
> | > | thanks,
> | > |
> | > | Norbert

Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale
Not that this will work for sure, but we should be doing any transactions during a Seaside request ... (I was brain dead before, sorry) ... you should just have the:

  DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'

statement in the handler ... let's give that a try and see what's next...

Dale

----- "Norbert Hartl" <[hidden email]> wrote:

| Dale,
|
| as far as I can see there is no utilization of WASession if a
| WARequestHandler is being used. Without WAApplication there doesn't
| seem to be any session used. I entered some break points into the
| places where it should pass by if there would be a session usage. None
| of these is triggered. Now I saw that even the mutex used around
| handleRequest: is a TransientMutex.
|
| However I built a class
|
| WAEntryPoint subclass: 'HRTestHandler'
| instVarNames: #()
| classVars: #()
| classInstVars: #()
| poolDictionaries: #[]
| inDictionary: ''
| category: 'MyHandler-HTTP'
|
| HRTestHandler>>handleRequest: aRequest
| [ nil foobar ]
| on: Error, Halt, BreakpointNotification
| do: [:ex |
| System inTransaction
| ifTrue: [
|         DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
|           System commitTransaction.
|           System beginTransaction ]
|         ifFalse: [
|           System beginTransaction.
|           DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
|           System commitTransaction].
|       ex isResumable ifTrue: [ex resume]].
| ^ WAResponse new status: 500.
|
| HRTestHanlder class>>description
| ^'objectlog test'
|
| If I attach this via seaside config to a path. Then invoking the url
| gives me now
|
| topaz 1> topaz 1> Hyper Server started on port 9009
| --transcript--'Seaside default dispatcher enabled on path /seaside/'
| -----------------------------------------------------
| GemStone: Error         Nonfatal
| The object aProcessorScheduler may not be committed, instances of
| its class are non-persistent.
| Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1 Context :
| 539307521
| Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a
| ProcessorScheduler
|   readyQueue      [539261697 sz:1 cls: 92929 SortedCollection] a
| SortedCollection
|   activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
|   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
|   delayQueue      [539260673 sz:2 cls: 92929 SortedCollection] a
| SortedCollection
|   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
|   readDict        [539278081 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   writeDict       [539259649 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   suspendedDict   [539259137 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   waitingSet      [539258625 sz:5 cls: 73985 IdentitySet] an
| IdentitySet
|   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
|   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil
|
|
| Now executing the following command saved from "iferr 1":
|    where
| ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod 11802113]
| 2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
| 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod 11804673]
| 4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
| 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
| 6 HTTPConnection >> handleInternalServerException: @12 line 13  
| [GsMethod 243599873]
| 7 ComplexBlock in HTTPConnection >> internalErrorHandler @6 line 6  
| [GsMethod 243599617]
| 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  
| [GsMethod 10057985]
| 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 12 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| 10057985]
| 13 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| 10057473]
| 14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 16 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 17 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
| 18 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| 19 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| 10057473]
| 20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 22 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 23 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
| 24 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| 25 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| 10057473]
| 26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
| 29 System class >> __commit: @1 line 8   [GsMethod 2732545]
| 30 System class >> _localCommit: @8 line 30   [GsMethod 2732801]
| 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3   [GsMethod
| 7711233]
| 32 System class >> _commit: @6 line 16   [GsMethod 2733313]
| 33 System class >> commitTransaction @2 line 28   [GsMethod 2720513]
| 34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8  
| [GsMethod 536737537]
| 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  
| [GsMethod 10057985]
| 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 39 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| 10057985]
| 40 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| 10057473]
| 41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 43 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 44 System class >> signal:args:signalDictionary: @5 line 13  
| [GsMethod 2749697]
| 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod 1925889]
| 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod 1939201]
| 47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2  
| [GsMethod 536737537]
| 48 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod 536737537]
| 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod 66289921]
| 53 ComplexBlock in SeasideHTTPService >> answerToCheckingLock: @23
| line 12   [GsMethod 468698625]
| 54 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 57 ComplexVCBlock in SeasideHTTPService >> answerToCheckingLock: @29
| line 13   [GsMethod 468698625]
| 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 60 TransientRecursionLock >> critical: @15 line 8   [GsMethod
| 19814657]
| 61 SeasideHTTPService >> answerToCheckingLock: @60 line 6   [GsMethod
| 468698625]
| 62 SeasideHTTPService >> process: @3 line 6   [GsMethod 233903105]
| 63 ComplexBlock in SeasideHTTPService >> start @4 line 5   [GsMethod
| 233923073]
| 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod 233382913]
| 65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
| 66 ComplexBlock in HTTPConnection >> produceResponseFor: @8 line 9  
| [GsMethod 243599105]
| 67 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod 12016897]
| 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6   [GsMethod
| 26609665]
| 71 HTTPConnection >> produceResponseFor: @13 line 11   [GsMethod
| 243599105]
| 72 HTTPConnection >> getAndDispatchMessages @9 line 14   [GsMethod
| 243597825]
| 73 ComplexBlock in OSkSocketInboundConnection >> interact @3 line 6  
| [GsMethod 243589377]
| 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 76 OSkSocketInboundConnection >> interact @7 line 7   [GsMethod
| 243589377]
| 77 OSkSocketListenerService >> handleInboundConnectionOn: @8 line 10  
| [GsMethod 243799809]
| 78 ComplexBlock in OSkSocketListenerService >>
| acceptInboundConnections @12 line 15   [GsMethod 243801601]
| 79 GsProcess >> _startPart2 @13 line 17   [GsMethod 2493441]
| 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
|   [GsProcess 539307521]
| topaz 1> [268 sz:0 cls: 68097 Boolean] true
| topaz 1>
| [Info]: Logging out at 02/23/10 00:18:45 CET
|
|
| Hope this helps anything
|
| Norbert
|
|
| On 22.02.2010, at 23:15, Dale Henrichs wrote:
|
| > Norbert,
| >
| > Okay. I assume that you are still using a WASession to do your work
| and that means that WAProcessMonitor>>critical:for:ifError: is on the
| stack.
| >
| > If it is, then we should be able to arrange to build an errorHandler
| that doesn't use a component and stashes the continuation into the
| object log. If isn't on the stack, then I'd be interested to know
| which WAProcessMonitor method is on the stack ...
| WAProcessMonitor>>critical:for:ifError: was built to avoid some of the
| issues with persistent Semaphores.
| >
| > Assuming that all we need is an errorHandler, you are going to
| create a new subclass of WAErrorHandler and in the handleError: method
| put the DebuggerLogEntry:
| >
| >  DebuggerLogEntry createContinuationLabeled: 'http continuation'.
| >
| > and arrange to return a response of some kind ... when the response
| is returned, the commit will be performed.
| >
| > If WAProcessMonitor>>critical:for:ifError: isn't on the stack, I'm
| curious where you are hooking into the request handling...
| >
| > Dale
| >
| > ----- "Norbert Hartl" <[hidden email]> wrote:
| >
| > | I'm working on my .231 image with seaside 2.8.
| > |
| > | Norbert
| > |
| > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
| > |
| > | > Norbert,
| > | >
| > | > Are you working in SEaside 3.0 or Seaside 2.8...
| > | >
| > | > Dale
| > | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | >
| > | > | Hi,
| > | > |
| > | > | at the moment I'm doing some web api stuff with seaside and
| > | gemstone.
| > | > | I have only a request handler and no component or the like. I
| like
| > | to
| > | > | to have the same behaviour that WAGsWalkback is doing. Is
| there a
| > | > | utility that does continuation creation and storing with
| having
| > | the
| > | > | need for a WAComponent?
| > | > | thanks,
| > | > |
| > | > | Norbert
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale
In reply to this post by NorbertHartl

----- "Norbert Hartl" <[hidden email]> wrote:

| Hi,
|
| at the moment I'm doing some web api stuff with seaside and gemstone.
| I have only a request handler and no component or the like. I like to
| to have the same behaviour that WAGsWalkback is doing. Is there a
| utility that does continuation creation and storing with having the
| need for a WAComponent?
| thanks,
|
| Norbert

Norbert,

If you take a look at RSRSS2 in the class RRRssHandler, I've got an example of an ObjectLog-based error handler used in a "headless" Seaside app. I've just tested it and I was getting object log entries as expected (tested with 1.0-beta.8), but I don't think Seaside/RSRSS2 has been changed significantly ...

I've done my tests with FastCGI...

Dale
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl
In reply to this post by Dale

On 23.02.2010, at 00:52, Dale Henrichs wrote:

Not that this will work for sure, but we should be doing any transactions during a Seaside request ... (I was brain dead before, sorry) ... you should just have the:

 DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'

statement in the handler ... let's give that a try and see what's next...


Dale,

that doesn't help anything. I tried with only that statement. I changed to TestHandler to resemble the behaviour in RRRSHandler. It is just the same. Then I configured my system in order to use the FastCGI instead. No change! I get 

Internal Server Error:
InterpreterError 2407: The object
may not be committed, instances of its class are non-persistent.

Then I configured RSS in a way that it works and I can access the feed. After it was working I introduced an error inside the PRDemo component. I get the same error. So it does not work for RSS either. 

I'll check the online image if it is the same there. If it doesn't work, too, I'll take a fresh extent and test it there.

Norbert

----- "Norbert Hartl" <[hidden email]> wrote:

| Dale,
|
| as far as I can see there is no utilization of WASession if a
| WARequestHandler is being used. Without WAApplication there doesn't
| seem to be any session used. I entered some break points into the
| places where it should pass by if there would be a session usage. None
| of these is triggered. Now I saw that even the mutex used around
| handleRequest: is a TransientMutex.
|
| However I built a class
|
| WAEntryPoint subclass: 'HRTestHandler'
| instVarNames: #()
| classVars: #()
| classInstVars: #()
| poolDictionaries: #[]
| inDictionary: ''
| category: 'MyHandler-HTTP'
|
| HRTestHandler>>handleRequest: aRequest
| [ nil foobar ]
| on: Error, Halt, BreakpointNotification
| do: [:ex |
| System inTransaction
| ifTrue: [
|          DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
|           System commitTransaction.
|           System beginTransaction ]
|         ifFalse: [
|           System beginTransaction.
|           DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
|           System commitTransaction].
|       ex isResumable ifTrue: [ex resume]].
| ^ WAResponse new status: 500.
|
| HRTestHanlder class>>description
| ^'objectlog test'
|
| If I attach this via seaside config to a path. Then invoking the url
| gives me now
|
| topaz 1> topaz 1> Hyper Server started on port 9009
| --transcript--'Seaside default dispatcher enabled on path /seaside/'
| -----------------------------------------------------
| GemStone: Error         Nonfatal
| The object aProcessorScheduler may not be committed, instances of
| its class are non-persistent.
| Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1 Context :
| 539307521
| Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a
| ProcessorScheduler
|   readyQueue      [539261697 sz:1 cls: 92929 SortedCollection] a
| SortedCollection
|   activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
|   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
|   delayQueue      [539260673 sz:2 cls: 92929 SortedCollection] a
| SortedCollection
|   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
|   readDict        [539278081 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   writeDict       [539259649 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   suspendedDict   [539259137 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   waitingSet      [539258625 sz:5 cls: 73985 IdentitySet] an
| IdentitySet
|   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
|   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil
|
|
| Now executing the following command saved from "iferr 1":
|    where
| ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod 11802113]
| 2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
| 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod 11804673]
| 4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
| 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
| 6 HTTPConnection >> handleInternalServerException: @12 line 13  
| [GsMethod 243599873]
| 7 ComplexBlock in HTTPConnection >> internalErrorHandler @6 line 6  
| [GsMethod 243599617]
| 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  
| [GsMethod 10057985]
| 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 12 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| 10057985]
| 13 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| 10057473]
| 14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 16 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 17 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
| 18 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| 19 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| 10057473]
| 20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 22 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 23 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
| 24 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| 25 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| 10057473]
| 26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
| 29 System class >> __commit: @1 line 8   [GsMethod 2732545]
| 30 System class >> _localCommit: @8 line 30   [GsMethod 2732801]
| 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3   [GsMethod
| 7711233]
| 32 System class >> _commit: @6 line 16   [GsMethod 2733313]
| 33 System class >> commitTransaction @2 line 28   [GsMethod 2720513]
| 34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8  
| [GsMethod 536737537]
| 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  
| [GsMethod 10057985]
| 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 39 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| 10057985]
| 40 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| 10057473]
| 41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 43 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 44 System class >> signal:args:signalDictionary: @5 line 13  
| [GsMethod 2749697]
| 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod 1925889]
| 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod 1939201]
| 47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2  
| [GsMethod 536737537]
| 48 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod 536737537]
| 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod 66289921]
| 53 ComplexBlock in SeasideHTTPService >> answerToCheckingLock: @23
| line 12   [GsMethod 468698625]
| 54 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 57 ComplexVCBlock in SeasideHTTPService >> answerToCheckingLock: @29
| line 13   [GsMethod 468698625]
| 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 60 TransientRecursionLock >> critical: @15 line 8   [GsMethod
| 19814657]
| 61 SeasideHTTPService >> answerToCheckingLock: @60 line 6   [GsMethod
| 468698625]
| 62 SeasideHTTPService >> process: @3 line 6   [GsMethod 233903105]
| 63 ComplexBlock in SeasideHTTPService >> start @4 line 5   [GsMethod
| 233923073]
| 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod 233382913]
| 65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
| 66 ComplexBlock in HTTPConnection >> produceResponseFor: @8 line 9  
| [GsMethod 243599105]
| 67 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod 12016897]
| 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6   [GsMethod
| 26609665]
| 71 HTTPConnection >> produceResponseFor: @13 line 11   [GsMethod
| 243599105]
| 72 HTTPConnection >> getAndDispatchMessages @9 line 14   [GsMethod
| 243597825]
| 73 ComplexBlock in OSkSocketInboundConnection >> interact @3 line 6  
| [GsMethod 243589377]
| 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 76 OSkSocketInboundConnection >> interact @7 line 7   [GsMethod
| 243589377]
| 77 OSkSocketListenerService >> handleInboundConnectionOn: @8 line 10  
| [GsMethod 243799809]
| 78 ComplexBlock in OSkSocketListenerService >>
| acceptInboundConnections @12 line 15   [GsMethod 243801601]
| 79 GsProcess >> _startPart2 @13 line 17   [GsMethod 2493441]
| 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
|   [GsProcess 539307521]
| topaz 1> [268 sz:0 cls: 68097 Boolean] true
| topaz 1>
| [Info]: Logging out at 02/23/10 00:18:45 CET
|
|
| Hope this helps anything
|
| Norbert
|
|
| On 22.02.2010, at 23:15, Dale Henrichs wrote:
|
| > Norbert,
| >
| > Okay. I assume that you are still using a WASession to do your work
| and that means that WAProcessMonitor>>critical:for:ifError: is on the
| stack.
| >
| > If it is, then we should be able to arrange to build an errorHandler
| that doesn't use a component and stashes the continuation into the
| object log. If isn't on the stack, then I'd be interested to know
| which WAProcessMonitor method is on the stack ...
| WAProcessMonitor>>critical:for:ifError: was built to avoid some of the
| issues with persistent Semaphores.
| >
| > Assuming that all we need is an errorHandler, you are going to
| create a new subclass of WAErrorHandler and in the handleError: method
| put the DebuggerLogEntry:
| >
| >  DebuggerLogEntry createContinuationLabeled: 'http continuation'.
| >
| > and arrange to return a response of some kind ... when the response
| is returned, the commit will be performed.
| >
| > If WAProcessMonitor>>critical:for:ifError: isn't on the stack, I'm
| curious where you are hooking into the request handling...
| >
| > Dale
| >
| > ----- "Norbert Hartl" <[hidden email]> wrote:
| >
| > | I'm working on my .231 image with seaside 2.8.
| > |
| > | Norbert
| > |
| > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
| > |
| > | > Norbert,
| > | >
| > | > Are you working in SEaside 3.0 or Seaside 2.8...
| > | >
| > | > Dale
| > | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | >
| > | > | Hi,
| > | > |
| > | > | at the moment I'm doing some web api stuff with seaside and
| > | gemstone.
| > | > | I have only a request handler and no component or the like. I
| like
| > | to
| > | > | to have the same behaviour that WAGsWalkback is doing. Is
| there a
| > | > | utility that does continuation creation and storing with
| having
| > | the
| > | > | need for a WAComponent?
| > | > | thanks,
| > | > |
| > | > | Norbert

Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl
I tested it on my online image and the behaviour is the same. Well, this is not too amazing because I always did the same updates and such on both sides. I have a gemstone 2.4 image on my harddisk. I'll give that a shot.

Norbert

On 23.02.2010, at 09:35, Norbert Hartl wrote:


On 23.02.2010, at 00:52, Dale Henrichs wrote:

Not that this will work for sure, but we should be doing any transactions during a Seaside request ... (I was brain dead before, sorry) ... you should just have the:

 DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'

statement in the handler ... let's give that a try and see what's next...


Dale,

that doesn't help anything. I tried with only that statement. I changed to TestHandler to resemble the behaviour in RRRSHandler. It is just the same. Then I configured my system in order to use the FastCGI instead. No change! I get 

Internal Server Error:
InterpreterError 2407: The object
may not be committed, instances of its class are non-persistent.

Then I configured RSS in a way that it works and I can access the feed. After it was working I introduced an error inside the PRDemo component. I get the same error. So it does not work for RSS either. 

I'll check the online image if it is the same there. If it doesn't work, too, I'll take a fresh extent and test it there.

Norbert

----- "Norbert Hartl" <[hidden email]> wrote:

| Dale,
|
| as far as I can see there is no utilization of WASession if a
| WARequestHandler is being used. Without WAApplication there doesn't
| seem to be any session used. I entered some break points into the
| places where it should pass by if there would be a session usage. None
| of these is triggered. Now I saw that even the mutex used around
| handleRequest: is a TransientMutex.
|
| However I built a class
|
| WAEntryPoint subclass: 'HRTestHandler'
| instVarNames: #()
| classVars: #()
| classInstVars: #()
| poolDictionaries: #[]
| inDictionary: ''
| category: 'MyHandler-HTTP'
|
| HRTestHandler>>handleRequest: aRequest
| [ nil foobar ]
| on: Error, Halt, BreakpointNotification
| do: [:ex |
| System inTransaction
| ifTrue: [
|          DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
|           System commitTransaction.
|           System beginTransaction ]
|         ifFalse: [
|           System beginTransaction.
|           DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
|           System commitTransaction].
|       ex isResumable ifTrue: [ex resume]].
| ^ WAResponse new status: 500.
|
| HRTestHanlder class>>description
| ^'objectlog test'
|
| If I attach this via seaside config to a path. Then invoking the url
| gives me now
|
| topaz 1> topaz 1> Hyper Server started on port 9009
| --transcript--'Seaside default dispatcher enabled on path /seaside/'
| -----------------------------------------------------
| GemStone: Error         Nonfatal
| The object aProcessorScheduler may not be committed, instances of
| its class are non-persistent.
| Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1 Context :
| 539307521
| Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a
| ProcessorScheduler
|   readyQueue      [539261697 sz:1 cls: 92929 SortedCollection] a
| SortedCollection
|   activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
|   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
|   delayQueue      [539260673 sz:2 cls: 92929 SortedCollection] a
| SortedCollection
|   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
|   readDict        [539278081 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   writeDict       [539259649 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   suspendedDict   [539259137 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   waitingSet      [539258625 sz:5 cls: 73985 IdentitySet] an
| IdentitySet
|   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
|   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil
|
|
| Now executing the following command saved from "iferr 1":
|    where
| ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod 11802113]
| 2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
| 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod 11804673]
| 4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
| 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
| 6 HTTPConnection >> handleInternalServerException: @12 line 13  
| [GsMethod 243599873]
| 7 ComplexBlock in HTTPConnection >> internalErrorHandler @6 line 6  
| [GsMethod 243599617]
| 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  
| [GsMethod 10057985]
| 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 12 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| 10057985]
| 13 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| 10057473]
| 14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 16 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 17 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
| 18 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| 19 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| 10057473]
| 20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 22 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 23 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
| 24 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| 25 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| 10057473]
| 26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
| 29 System class >> __commit: @1 line 8   [GsMethod 2732545]
| 30 System class >> _localCommit: @8 line 30   [GsMethod 2732801]
| 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3   [GsMethod
| 7711233]
| 32 System class >> _commit: @6 line 16   [GsMethod 2733313]
| 33 System class >> commitTransaction @2 line 28   [GsMethod 2720513]
| 34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8  
| [GsMethod 536737537]
| 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  
| [GsMethod 10057985]
| 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 39 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| 10057985]
| 40 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| 10057473]
| 41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 43 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 44 System class >> signal:args:signalDictionary: @5 line 13  
| [GsMethod 2749697]
| 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod 1925889]
| 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod 1939201]
| 47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2  
| [GsMethod 536737537]
| 48 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod 536737537]
| 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod 66289921]
| 53 ComplexBlock in SeasideHTTPService >> answerToCheckingLock: @23
| line 12   [GsMethod 468698625]
| 54 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 57 ComplexVCBlock in SeasideHTTPService >> answerToCheckingLock: @29
| line 13   [GsMethod 468698625]
| 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 60 TransientRecursionLock >> critical: @15 line 8   [GsMethod
| 19814657]
| 61 SeasideHTTPService >> answerToCheckingLock: @60 line 6   [GsMethod
| 468698625]
| 62 SeasideHTTPService >> process: @3 line 6   [GsMethod 233903105]
| 63 ComplexBlock in SeasideHTTPService >> start @4 line 5   [GsMethod
| 233923073]
| 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod 233382913]
| 65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
| 66 ComplexBlock in HTTPConnection >> produceResponseFor: @8 line 9  
| [GsMethod 243599105]
| 67 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod 12016897]
| 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6   [GsMethod
| 26609665]
| 71 HTTPConnection >> produceResponseFor: @13 line 11   [GsMethod
| 243599105]
| 72 HTTPConnection >> getAndDispatchMessages @9 line 14   [GsMethod
| 243597825]
| 73 ComplexBlock in OSkSocketInboundConnection >> interact @3 line 6  
| [GsMethod 243589377]
| 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 76 OSkSocketInboundConnection >> interact @7 line 7   [GsMethod
| 243589377]
| 77 OSkSocketListenerService >> handleInboundConnectionOn: @8 line 10  
| [GsMethod 243799809]
| 78 ComplexBlock in OSkSocketListenerService >>
| acceptInboundConnections @12 line 15   [GsMethod 243801601]
| 79 GsProcess >> _startPart2 @13 line 17   [GsMethod 2493441]
| 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
|   [GsProcess 539307521]
| topaz 1> [268 sz:0 cls: 68097 Boolean] true
| topaz 1>
| [Info]: Logging out at 02/23/10 00:18:45 CET
|
|
| Hope this helps anything
|
| Norbert
|
|
| On 22.02.2010, at 23:15, Dale Henrichs wrote:
|
| > Norbert,
| >
| > Okay. I assume that you are still using a WASession to do your work
| and that means that WAProcessMonitor>>critical:for:ifError: is on the
| stack.
| >
| > If it is, then we should be able to arrange to build an errorHandler
| that doesn't use a component and stashes the continuation into the
| object log. If isn't on the stack, then I'd be interested to know
| which WAProcessMonitor method is on the stack ...
| WAProcessMonitor>>critical:for:ifError: was built to avoid some of the
| issues with persistent Semaphores.
| >
| > Assuming that all we need is an errorHandler, you are going to
| create a new subclass of WAErrorHandler and in the handleError: method
| put the DebuggerLogEntry:
| >
| >  DebuggerLogEntry createContinuationLabeled: 'http continuation'.
| >
| > and arrange to return a response of some kind ... when the response
| is returned, the commit will be performed.
| >
| > If WAProcessMonitor>>critical:for:ifError: isn't on the stack, I'm
| curious where you are hooking into the request handling...
| >
| > Dale
| >
| > ----- "Norbert Hartl" <[hidden email]> wrote:
| >
| > | I'm working on my .231 image with seaside 2.8.
| > |
| > | Norbert
| > |
| > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
| > |
| > | > Norbert,
| > | >
| > | > Are you working in SEaside 3.0 or Seaside 2.8...
| > | >
| > | > Dale
| > | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | >
| > | > | Hi,
| > | > |
| > | > | at the moment I'm doing some web api stuff with seaside and
| > | gemstone.
| > | > | I have only a request handler and no component or the like. I
| like
| > | to
| > | > | to have the same behaviour that WAGsWalkback is doing. Is
| there a
| > | > | utility that does continuation creation and storing with
| having
| > | the
| > | > | need for a WAComponent?
| > | > | thanks,
| > | > |
| > | > | Norbert


Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl
Ok,

now I've shutdown the stone, copied a fresh extent0.seaside.dbf and started that. It is GLASS.230-dkh.176 (from a 2.3 install). I started FastCGI and added the HRTestHandler class. I get exactly the same error

Internal Server Error:
InterpreterError 2407: The object may not be committed, instances of its class are non-persistent.

And you said that the error handling in RRRSShandler was working for you? Strange.

Norbert

On 23.02.2010, at 09:43, Norbert Hartl wrote:

I tested it on my online image and the behaviour is the same. Well, this is not too amazing because I always did the same updates and such on both sides. I have a gemstone 2.4 image on my harddisk. I'll give that a shot.

Norbert

On 23.02.2010, at 09:35, Norbert Hartl wrote:


On 23.02.2010, at 00:52, Dale Henrichs wrote:

Not that this will work for sure, but we should be doing any transactions during a Seaside request ... (I was brain dead before, sorry) ... you should just have the:

 DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'

statement in the handler ... let's give that a try and see what's next...


Dale,

that doesn't help anything. I tried with only that statement. I changed to TestHandler to resemble the behaviour in RRRSHandler. It is just the same. Then I configured my system in order to use the FastCGI instead. No change! I get 

Internal Server Error:
InterpreterError 2407: The object
may not be committed, instances of its class are non-persistent.

Then I configured RSS in a way that it works and I can access the feed. After it was working I introduced an error inside the PRDemo component. I get the same error. So it does not work for RSS either. 

I'll check the online image if it is the same there. If it doesn't work, too, I'll take a fresh extent and test it there.

Norbert

----- "Norbert Hartl" <[hidden email]> wrote:

| Dale,
|
| as far as I can see there is no utilization of WASession if a
| WARequestHandler is being used. Without WAApplication there doesn't
| seem to be any session used. I entered some break points into the
| places where it should pass by if there would be a session usage. None
| of these is triggered. Now I saw that even the mutex used around
| handleRequest: is a TransientMutex.
|
| However I built a class
|
| WAEntryPoint subclass: 'HRTestHandler'
| instVarNames: #()
| classVars: #()
| classInstVars: #()
| poolDictionaries: #[]
| inDictionary: ''
| category: 'MyHandler-HTTP'
|
| HRTestHandler>>handleRequest: aRequest
| [ nil foobar ]
| on: Error, Halt, BreakpointNotification
| do: [:ex |
| System inTransaction
| ifTrue: [
|          DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
|           System commitTransaction.
|           System beginTransaction ]
|         ifFalse: [
|           System beginTransaction.
|           DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'.
|           System commitTransaction].
|       ex isResumable ifTrue: [ex resume]].
| ^ WAResponse new status: 500.
|
| HRTestHanlder class>>description
| ^'objectlog test'
|
| If I attach this via seaside config to a path. Then invoking the url
| gives me now
|
| topaz 1> topaz 1> Hyper Server started on port 9009
| --transcript--'Seaside default dispatcher enabled on path /seaside/'
| -----------------------------------------------------
| GemStone: Error         Nonfatal
| The object aProcessorScheduler may not be committed, instances of
| its class are non-persistent.
| Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1 Context :
| 539307521
| Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a
| ProcessorScheduler
|   readyQueue      [539261697 sz:1 cls: 92929 SortedCollection] a
| SortedCollection
|   activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
|   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
|   delayQueue      [539260673 sz:2 cls: 92929 SortedCollection] a
| SortedCollection
|   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
|   readDict        [539278081 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   writeDict       [539259649 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   suspendedDict   [539259137 sz:14 cls: 90881
| IdentityKeyValueDictionary] an IdentityKeyValueDictionary
|   waitingSet      [539258625 sz:5 cls: 73985 IdentitySet] an
| IdentitySet
|   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
|   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil
|
|
| Now executing the following command saved from "iferr 1":
|    where
| ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod 11802113]
| 2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
| 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod 11804673]
| 4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
| 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
| 6 HTTPConnection >> handleInternalServerException: @12 line 13  
| [GsMethod 243599873]
| 7 ComplexBlock in HTTPConnection >> internalErrorHandler @6 line 6  
| [GsMethod 243599617]
| 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  
| [GsMethod 10057985]
| 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 12 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| 10057985]
| 13 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| 10057473]
| 14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 16 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 17 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
| 18 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| 19 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| 10057473]
| 20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 22 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 23 Exception >> resignal:number:args: @5 line 11   [GsMethod 2461953]
| 24 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| 25 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| 10057473]
| 26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
| 29 System class >> __commit: @1 line 8   [GsMethod 2732545]
| 30 System class >> _localCommit: @8 line 30   [GsMethod 2732801]
| 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3   [GsMethod
| 7711233]
| 32 System class >> _commit: @6 line 16   [GsMethod 2733313]
| 33 System class >> commitTransaction @2 line 28   [GsMethod 2720513]
| 34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8  
| [GsMethod 536737537]
| 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  
| [GsMethod 10057985]
| 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 39 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| 10057985]
| 40 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| 10057473]
| 41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| [GsMethod 10054401]
| 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  
| [GsMethod 10055169]
| 43 Exception >> _signal:number:args: @2 line 7   [GsMethod 2458369]
| 44 System class >> signal:args:signalDictionary: @5 line 13  
| [GsMethod 2749697]
| 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod 1925889]
| 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod 1939201]
| 47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2  
| [GsMethod 536737537]
| 48 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod 536737537]
| 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod 66289921]
| 53 ComplexBlock in SeasideHTTPService >> answerToCheckingLock: @23
| line 12   [GsMethod 468698625]
| 54 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 57 ComplexVCBlock in SeasideHTTPService >> answerToCheckingLock: @29
| line 13   [GsMethod 468698625]
| 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 60 TransientRecursionLock >> critical: @15 line 8   [GsMethod
| 19814657]
| 61 SeasideHTTPService >> answerToCheckingLock: @60 line 6   [GsMethod
| 468698625]
| 62 SeasideHTTPService >> process: @3 line 6   [GsMethod 233903105]
| 63 ComplexBlock in SeasideHTTPService >> start @4 line 5   [GsMethod
| 233923073]
| 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod 233382913]
| 65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
| 66 ComplexBlock in HTTPConnection >> produceResponseFor: @8 line 9  
| [GsMethod 243599105]
| 67 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| 10055169]
| 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod 12016897]
| 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8   [GsMethod
| 2378497]
| 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6   [GsMethod
| 26609665]
| 71 HTTPConnection >> produceResponseFor: @13 line 11   [GsMethod
| 243599105]
| 72 HTTPConnection >> getAndDispatchMessages @9 line 14   [GsMethod
| 243597825]
| 73 ComplexBlock in OSkSocketInboundConnection >> interact @3 line 6  
| [GsMethod 243589377]
| 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11   [GsMethod
| 2377473]
| 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11   [GsMethod
| 2377473]
| 76 OSkSocketInboundConnection >> interact @7 line 7   [GsMethod
| 243589377]
| 77 OSkSocketListenerService >> handleInboundConnectionOn: @8 line 10  
| [GsMethod 243799809]
| 78 ComplexBlock in OSkSocketListenerService >>
| acceptInboundConnections @12 line 15   [GsMethod 243801601]
| 79 GsProcess >> _startPart2 @13 line 17   [GsMethod 2493441]
| 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
|   [GsProcess 539307521]
| topaz 1> [268 sz:0 cls: 68097 Boolean] true
| topaz 1>
| [Info]: Logging out at 02/23/10 00:18:45 CET
|
|
| Hope this helps anything
|
| Norbert
|
|
| On 22.02.2010, at 23:15, Dale Henrichs wrote:
|
| > Norbert,
| >
| > Okay. I assume that you are still using a WASession to do your work
| and that means that WAProcessMonitor>>critical:for:ifError: is on the
| stack.
| >
| > If it is, then we should be able to arrange to build an errorHandler
| that doesn't use a component and stashes the continuation into the
| object log. If isn't on the stack, then I'd be interested to know
| which WAProcessMonitor method is on the stack ...
| WAProcessMonitor>>critical:for:ifError: was built to avoid some of the
| issues with persistent Semaphores.
| >
| > Assuming that all we need is an errorHandler, you are going to
| create a new subclass of WAErrorHandler and in the handleError: method
| put the DebuggerLogEntry:
| >
| >  DebuggerLogEntry createContinuationLabeled: 'http continuation'.
| >
| > and arrange to return a response of some kind ... when the response
| is returned, the commit will be performed.
| >
| > If WAProcessMonitor>>critical:for:ifError: isn't on the stack, I'm
| curious where you are hooking into the request handling...
| >
| > Dale
| >
| > ----- "Norbert Hartl" <[hidden email]> wrote:
| >
| > | I'm working on my .231 image with seaside 2.8.
| > |
| > | Norbert
| > |
| > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
| > |
| > | > Norbert,
| > | >
| > | > Are you working in SEaside 3.0 or Seaside 2.8...
| > | >
| > | > Dale
| > | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | >
| > | > | Hi,
| > | > |
| > | > | at the moment I'm doing some web api stuff with seaside and
| > | gemstone.
| > | > | I have only a request handler and no component or the like. I
| like
| > | to
| > | > | to have the same behaviour that WAGsWalkback is doing. Is
| there a
| > | > | utility that does continuation creation and storing with
| having
| > | the
| > | > | need for a WAComponent?
| > | > | thanks,
| > | > |
| > | > | Norbert



Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale
Norbert,

Have you tried testing the RSRSS2 error handler. I have a feeling that your controller/handler might be structured differently than the RSRSS2 controller/handler.

If the RSRSS2 fails then we need to look elsewhere. If it succeeds than the secret lies in the controller/handler code.

Dale

----- "Norbert Hartl" <[hidden email]> wrote:

| Ok,
|
| now I've shutdown the stone, copied a fresh extent0.seaside.dbf and
| started that. It is GLASS.230-dkh.176 (from a 2.3 install). I started
| FastCGI and added the HRTestHandler class. I get exactly the same
| error
|
| Internal Server Error:
| InterpreterError 2407: The object may not be committed, instances of
| its class are non-persistent.
|
| And you said that the error handling in RRRSShandler was working for
| you? Strange.
|
| Norbert
|
| On 23.02.2010, at 09:43, Norbert Hartl wrote:
|
| > I tested it on my online image and the behaviour is the same. Well,
| this is not too amazing because I always did the same updates and such
| on both sides. I have a gemstone 2.4 image on my harddisk. I'll give
| that a shot.
| >
| > Norbert
| >
| > On 23.02.2010, at 09:35, Norbert Hartl wrote:
| >
| >>
| >> On 23.02.2010, at 00:52, Dale Henrichs wrote:
| >>
| >>> Not that this will work for sure, but we should be doing any
| transactions during a Seaside request ... (I was brain dead before,
| sorry) ... you should just have the:
| >>>
| >>>  DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'
| >>>
| >>> statement in the handler ... let's give that a try and see what's
| next...
| >>>
| >>>
| >> Dale,
| >>
| >> that doesn't help anything. I tried with only that statement. I
| changed to TestHandler to resemble the behaviour in RRRSHandler. It is
| just the same. Then I configured my system in order to use the FastCGI
| instead. No change! I get
| >> Internal Server Error:
| >> InterpreterError 2407: The object may not be committed, instances
| of its class are non-persistent.
| >>
| >> Then I configured RSS in a way that it works and I can access the
| feed. After it was working I introduced an error inside the PRDemo
| component. I get the same error. So it does not work for RSS either.
| >>
| >> I'll check the online image if it is the same there. If it doesn't
| work, too, I'll take a fresh extent and test it there.
| >>
| >> Norbert
| >>
| >>> ----- "Norbert Hartl" <[hidden email]> wrote:
| >>>
| >>> | Dale,
| >>> |
| >>> | as far as I can see there is no utilization of WASession if a
| >>> | WARequestHandler is being used. Without WAApplication there
| doesn't
| >>> | seem to be any session used. I entered some break points into
| the
| >>> | places where it should pass by if there would be a session
| usage. None
| >>> | of these is triggered. Now I saw that even the mutex used
| around
| >>> | handleRequest: is a TransientMutex.
| >>> |
| >>> | However I built a class
| >>> |
| >>> | WAEntryPoint subclass: 'HRTestHandler'
| >>> | instVarNames: #()
| >>> | classVars: #()
| >>> | classInstVars: #()
| >>> | poolDictionaries: #[]
| >>> | inDictionary: ''
| >>> | category: 'MyHandler-HTTP'
| >>> |
| >>> | HRTestHandler>>handleRequest: aRequest
| >>> | [ nil foobar ]
| >>> | on: Error, Halt, BreakpointNotification
| >>> | do: [:ex |
| >>> | System inTransaction
| >>> | ifTrue: [
| >>> |         DebuggerLogEntry createContinuationLabeled: 'MTCE
| >>> | continuation'.
| >>> |           System commitTransaction.
| >>> |           System beginTransaction ]
| >>> |         ifFalse: [
| >>> |           System beginTransaction.
| >>> |           DebuggerLogEntry createContinuationLabeled: 'MTCE
| >>> | continuation'.
| >>> |           System commitTransaction].
| >>> |       ex isResumable ifTrue: [ex resume]].
| >>> | ^ WAResponse new status: 500.
| >>> |
| >>> | HRTestHanlder class>>description
| >>> | ^'objectlog test'
| >>> |
| >>> | If I attach this via seaside config to a path. Then invoking the
| url
| >>> | gives me now
| >>> |
| >>> | topaz 1> topaz 1> Hyper Server started on port 9009
| >>> | --transcript--'Seaside default dispatcher enabled on path
| /seaside/'
| >>> | -----------------------------------------------------
| >>> | GemStone: Error         Nonfatal
| >>> | The object aProcessorScheduler may not be committed, instances
| of
| >>> | its class are non-persistent.
| >>> | Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1
| Context :
| >>> | 539307521
| >>> | Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a
| >>> | ProcessorScheduler
| >>> |   readyQueue      [539261697 sz:1 cls: 92929 SortedCollection]
| a
| >>> | SortedCollection
| >>> |   activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
| >>> |   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
| >>> |   delayQueue      [539260673 sz:2 cls: 92929 SortedCollection]
| a
| >>> | SortedCollection
| >>> |   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
| >>> |   readDict        [539278081 sz:14 cls: 90881
| >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
| >>> |   writeDict       [539259649 sz:14 cls: 90881
| >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
| >>> |   suspendedDict   [539259137 sz:14 cls: 90881
| >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
| >>> |   waitingSet      [539258625 sz:5 cls: 73985 IdentitySet] an
| >>> | IdentitySet
| >>> |   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
| >>> |   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil
| >>> |
| >>> |
| >>> | Now executing the following command saved from "iferr 1":
| >>> |    where
| >>> | ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod
| 11802113]
| >>> | 2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
| >>> | 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod 11804673]
| >>> | 4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
| >>> | 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
| >>> | 6 HTTPConnection >> handleInternalServerException: @12 line 13
|
| >>> | [GsMethod 243599873]
| >>> | 7 ComplexBlock in HTTPConnection >> internalErrorHandler @6 line
| 6  
| >>> | [GsMethod 243599617]
| >>> | 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| >>> | 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line
| 5  
| >>> | [GsMethod 10057985]
| >>> | 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
| [GsMethod
| >>> | 2377473]
| >>> | 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
| [GsMethod
| >>> | 2377473]
| >>> | 12 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| >>> | 10057985]
| >>> | 13 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| >>> | 10057473]
| >>> | 14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| >>> | [GsMethod 10054401]
| >>> | 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9
|
| >>> | [GsMethod 10055169]
| >>> | 16 Exception >> _signal:number:args: @2 line 7   [GsMethod
| 2458369]
| >>> | 17 Exception >> resignal:number:args: @5 line 11   [GsMethod
| 2461953]
| >>> | 18 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| >>> | 19 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| >>> | 10057473]
| >>> | 20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| >>> | [GsMethod 10054401]
| >>> | 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9
|
| >>> | [GsMethod 10055169]
| >>> | 22 Exception >> _signal:number:args: @2 line 7   [GsMethod
| 2458369]
| >>> | 23 Exception >> resignal:number:args: @5 line 11   [GsMethod
| 2461953]
| >>> | 24 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
| >>> | 25 ExceptionHandler >> caughtException @4 line 5   [GsMethod
| >>> | 10057473]
| >>> | 26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| >>> | [GsMethod 10054401]
| >>> | 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9
|
| >>> | [GsMethod 10055169]
| >>> | 28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
| >>> | 29 System class >> __commit: @1 line 8   [GsMethod 2732545]
| >>> | 30 System class >> _localCommit: @8 line 30   [GsMethod
| 2732801]
| >>> | 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3  
| [GsMethod
| >>> | 7711233]
| >>> | 32 System class >> _commit: @6 line 16   [GsMethod 2733313]
| >>> | 33 System class >> commitTransaction @2 line 28   [GsMethod
| 2720513]
| >>> | 34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8  
| >>> | [GsMethod 536737537]
| >>> | 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
| >>> | 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line
| 5  
| >>> | [GsMethod 10057985]
| >>> | 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
| [GsMethod
| >>> | 2377473]
| >>> | 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
| [GsMethod
| >>> | 2377473]
| >>> | 39 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
| >>> | 10057985]
| >>> | 40 ExceptionHandler >> caughtException @3 line 4   [GsMethod
| >>> | 10057473]
| >>> | 41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
| >>> | [GsMethod 10054401]
| >>> | 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9
|
| >>> | [GsMethod 10055169]
| >>> | 43 Exception >> _signal:number:args: @2 line 7   [GsMethod
| 2458369]
| >>> | 44 System class >> signal:args:signalDictionary: @5 line 13  
| >>> | [GsMethod 2749697]
| >>> | 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod 1925889]
| >>> | 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod 1939201]
| >>> | 47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2  
| >>> | [GsMethod 536737537]
| >>> | 48 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| >>> | 10055169]
| >>> | 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| >>> | 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8  
| [GsMethod
| >>> | 2378497]
| >>> | 51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod
| 536737537]
| >>> | 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod
| 66289921]
| >>> | 53 ComplexBlock in SeasideHTTPService >> answerToCheckingLock:
| @23
| >>> | line 12   [GsMethod 468698625]
| >>> | 54 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| >>> | 10055169]
| >>> | 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
| >>> | 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  
| [GsMethod
| >>> | 2378497]
| >>> | 57 ComplexVCBlock in SeasideHTTPService >> answerToCheckingLock:
| @29
| >>> | line 13   [GsMethod 468698625]
| >>> | 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
| [GsMethod
| >>> | 2377473]
| >>> | 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11  
| [GsMethod
| >>> | 2377473]
| >>> | 60 TransientRecursionLock >> critical: @15 line 8   [GsMethod
| >>> | 19814657]
| >>> | 61 SeasideHTTPService >> answerToCheckingLock: @60 line 6  
| [GsMethod
| >>> | 468698625]
| >>> | 62 SeasideHTTPService >> process: @3 line 6   [GsMethod
| 233903105]
| >>> | 63 ComplexBlock in SeasideHTTPService >> start @4 line 5  
| [GsMethod
| >>> | 233923073]
| >>> | 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod
| 233382913]
| >>> | 65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
| >>> | 66 ComplexBlock in HTTPConnection >> produceResponseFor: @8 line
| 9  
| >>> | [GsMethod 243599105]
| >>> | 67 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
| >>> | 10055169]
| >>> | 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod
| 12016897]
| >>> | 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  
| [GsMethod
| >>> | 2378497]
| >>> | 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6  
| [GsMethod
| >>> | 26609665]
| >>> | 71 HTTPConnection >> produceResponseFor: @13 line 11  
| [GsMethod
| >>> | 243599105]
| >>> | 72 HTTPConnection >> getAndDispatchMessages @9 line 14  
| [GsMethod
| >>> | 243597825]
| >>> | 73 ComplexBlock in OSkSocketInboundConnection >> interact @3
| line 6  
| >>> | [GsMethod 243589377]
| >>> | 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
| [GsMethod
| >>> | 2377473]
| >>> | 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
| [GsMethod
| >>> | 2377473]
| >>> | 76 OSkSocketInboundConnection >> interact @7 line 7   [GsMethod
| >>> | 243589377]
| >>> | 77 OSkSocketListenerService >> handleInboundConnectionOn: @8
| line 10  
| >>> | [GsMethod 243799809]
| >>> | 78 ComplexBlock in OSkSocketListenerService >>
| >>> | acceptInboundConnections @12 line 15   [GsMethod 243801601]
| >>> | 79 GsProcess >> _startPart2 @13 line 17   [GsMethod 2493441]
| >>> | 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
| >>> |   [GsProcess 539307521]
| >>> | topaz 1> [268 sz:0 cls: 68097 Boolean] true
| >>> | topaz 1>
| >>> | [Info]: Logging out at 02/23/10 00:18:45 CET
| >>> |
| >>> |
| >>> | Hope this helps anything
| >>> |
| >>> | Norbert
| >>> |
| >>> |
| >>> | On 22.02.2010, at 23:15, Dale Henrichs wrote:
| >>> |
| >>> | > Norbert,
| >>> | >
| >>> | > Okay. I assume that you are still using a WASession to do your
| work
| >>> | and that means that WAProcessMonitor>>critical:for:ifError: is
| on the
| >>> | stack.
| >>> | >
| >>> | > If it is, then we should be able to arrange to build an
| errorHandler
| >>> | that doesn't use a component and stashes the continuation into
| the
| >>> | object log. If isn't on the stack, then I'd be interested to
| know
| >>> | which WAProcessMonitor method is on the stack ...
| >>> | WAProcessMonitor>>critical:for:ifError: was built to avoid some
| of the
| >>> | issues with persistent Semaphores.
| >>> | >
| >>> | > Assuming that all we need is an errorHandler, you are going
| to
| >>> | create a new subclass of WAErrorHandler and in the handleError:
| method
| >>> | put the DebuggerLogEntry:
| >>> | >
| >>> | >  DebuggerLogEntry createContinuationLabeled: 'http
| continuation'.
| >>> | >
| >>> | > and arrange to return a response of some kind ... when the
| response
| >>> | is returned, the commit will be performed.
| >>> | >
| >>> | > If WAProcessMonitor>>critical:for:ifError: isn't on the stack,
| I'm
| >>> | curious where you are hooking into the request handling...
| >>> | >
| >>> | > Dale
| >>> | >
| >>> | > ----- "Norbert Hartl" <[hidden email]> wrote:
| >>> | >
| >>> | > | I'm working on my .231 image with seaside 2.8.
| >>> | > |
| >>> | > | Norbert
| >>> | > |
| >>> | > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
| >>> | > |
| >>> | > | > Norbert,
| >>> | > | >
| >>> | > | > Are you working in SEaside 3.0 or Seaside 2.8...
| >>> | > | >
| >>> | > | > Dale
| >>> | > | > ----- "Norbert Hartl" <[hidden email]> wrote:
| >>> | > | >
| >>> | > | > | Hi,
| >>> | > | > |
| >>> | > | > | at the moment I'm doing some web api stuff with seaside
| and
| >>> | > | gemstone.
| >>> | > | > | I have only a request handler and no component or the
| like. I
| >>> | like
| >>> | > | to
| >>> | > | > | to have the same behaviour that WAGsWalkback is doing.
| Is
| >>> | there a
| >>> | > | > | utility that does continuation creation and storing
| with
| >>> | having
| >>> | > | the
| >>> | > | > | need for a WAComponent?
| >>> | > | > | thanks,
| >>> | > | > |
| >>> | > | > | Norbert
| >>
| >
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl
Dale,

yes I wrote this already. I tested it and if even an errors ocurrs I get the same error. So the RSRSS2 handler is not working for me either.

Norbert

On 23.02.2010, at 18:32, Dale Henrichs wrote:

> Norbert,
>
> Have you tried testing the RSRSS2 error handler. I have a feeling that your controller/handler might be structured differently than the RSRSS2 controller/handler.
>
> If the RSRSS2 fails then we need to look elsewhere. If it succeeds than the secret lies in the controller/handler code.
>
> Dale
>
> ----- "Norbert Hartl" <[hidden email]> wrote:
>
> | Ok,
> |
> | now I've shutdown the stone, copied a fresh extent0.seaside.dbf and
> | started that. It is GLASS.230-dkh.176 (from a 2.3 install). I started
> | FastCGI and added the HRTestHandler class. I get exactly the same
> | error
> |
> | Internal Server Error:
> | InterpreterError 2407: The object may not be committed, instances of
> | its class are non-persistent.
> |
> | And you said that the error handling in RRRSShandler was working for
> | you? Strange.
> |
> | Norbert
> |
> | On 23.02.2010, at 09:43, Norbert Hartl wrote:
> |
> | > I tested it on my online image and the behaviour is the same. Well,
> | this is not too amazing because I always did the same updates and such
> | on both sides. I have a gemstone 2.4 image on my harddisk. I'll give
> | that a shot.
> | >
> | > Norbert
> | >
> | > On 23.02.2010, at 09:35, Norbert Hartl wrote:
> | >
> | >>
> | >> On 23.02.2010, at 00:52, Dale Henrichs wrote:
> | >>
> | >>> Not that this will work for sure, but we should be doing any
> | transactions during a Seaside request ... (I was brain dead before,
> | sorry) ... you should just have the:
> | >>>
> | >>>  DebuggerLogEntry createContinuationLabeled: 'MTCE continuation'
> | >>>
> | >>> statement in the handler ... let's give that a try and see what's
> | next...
> | >>>
> | >>>
> | >> Dale,
> | >>
> | >> that doesn't help anything. I tried with only that statement. I
> | changed to TestHandler to resemble the behaviour in RRRSHandler. It is
> | just the same. Then I configured my system in order to use the FastCGI
> | instead. No change! I get
> | >> Internal Server Error:
> | >> InterpreterError 2407: The object may not be committed, instances
> | of its class are non-persistent.
> | >>
> | >> Then I configured RSS in a way that it works and I can access the
> | feed. After it was working I introduced an error inside the PRDemo
> | component. I get the same error. So it does not work for RSS either.
> | >>
> | >> I'll check the online image if it is the same there. If it doesn't
> | work, too, I'll take a fresh extent and test it there.
> | >>
> | >> Norbert
> | >>
> | >>> ----- "Norbert Hartl" <[hidden email]> wrote:
> | >>>
> | >>> | Dale,
> | >>> |
> | >>> | as far as I can see there is no utilization of WASession if a
> | >>> | WARequestHandler is being used. Without WAApplication there
> | doesn't
> | >>> | seem to be any session used. I entered some break points into
> | the
> | >>> | places where it should pass by if there would be a session
> | usage. None
> | >>> | of these is triggered. Now I saw that even the mutex used
> | around
> | >>> | handleRequest: is a TransientMutex.
> | >>> |
> | >>> | However I built a class
> | >>> |
> | >>> | WAEntryPoint subclass: 'HRTestHandler'
> | >>> | instVarNames: #()
> | >>> | classVars: #()
> | >>> | classInstVars: #()
> | >>> | poolDictionaries: #[]
> | >>> | inDictionary: ''
> | >>> | category: 'MyHandler-HTTP'
> | >>> |
> | >>> | HRTestHandler>>handleRequest: aRequest
> | >>> | [ nil foobar ]
> | >>> | on: Error, Halt, BreakpointNotification
> | >>> | do: [:ex |
> | >>> | System inTransaction
> | >>> | ifTrue: [
> | >>> |         DebuggerLogEntry createContinuationLabeled: 'MTCE
> | >>> | continuation'.
> | >>> |           System commitTransaction.
> | >>> |           System beginTransaction ]
> | >>> |         ifFalse: [
> | >>> |           System beginTransaction.
> | >>> |           DebuggerLogEntry createContinuationLabeled: 'MTCE
> | >>> | continuation'.
> | >>> |           System commitTransaction].
> | >>> |       ex isResumable ifTrue: [ex resume]].
> | >>> | ^ WAResponse new status: 500.
> | >>> |
> | >>> | HRTestHanlder class>>description
> | >>> | ^'objectlog test'
> | >>> |
> | >>> | If I attach this via seaside config to a path. Then invoking the
> | url
> | >>> | gives me now
> | >>> |
> | >>> | topaz 1> topaz 1> Hyper Server started on port 9009
> | >>> | --transcript--'Seaside default dispatcher enabled on path
> | /seaside/'
> | >>> | -----------------------------------------------------
> | >>> | GemStone: Error         Nonfatal
> | >>> | The object aProcessorScheduler may not be committed, instances
> | of
> | >>> | its class are non-persistent.
> | >>> | Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1
> | Context :
> | >>> | 539307521
> | >>> | Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a
> | >>> | ProcessorScheduler
> | >>> |   readyQueue      [539261697 sz:1 cls: 92929 SortedCollection]
> | a
> | >>> | SortedCollection
> | >>> |   activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
> | >>> |   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
> | >>> |   delayQueue      [539260673 sz:2 cls: 92929 SortedCollection]
> | a
> | >>> | SortedCollection
> | >>> |   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
> | >>> |   readDict        [539278081 sz:14 cls: 90881
> | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
> | >>> |   writeDict       [539259649 sz:14 cls: 90881
> | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
> | >>> |   suspendedDict   [539259137 sz:14 cls: 90881
> | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
> | >>> |   waitingSet      [539258625 sz:5 cls: 73985 IdentitySet] an
> | >>> | IdentitySet
> | >>> |   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
> | >>> |   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil
> | >>> |
> | >>> |
> | >>> | Now executing the following command saved from "iferr 1":
> | >>> |    where
> | >>> | ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod
> | 11802113]
> | >>> | 2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
> | >>> | 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod 11804673]
> | >>> | 4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
> | >>> | 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
> | >>> | 6 HTTPConnection >> handleInternalServerException: @12 line 13
> |
> | >>> | [GsMethod 243599873]
> | >>> | 7 ComplexBlock in HTTPConnection >> internalErrorHandler @6 line
> | 6  
> | >>> | [GsMethod 243599617]
> | >>> | 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
> | >>> | 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line
> | 5  
> | >>> | [GsMethod 10057985]
> | >>> | 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
> | [GsMethod
> | >>> | 2377473]
> | >>> | 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
> | [GsMethod
> | >>> | 2377473]
> | >>> | 12 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
> | >>> | 10057985]
> | >>> | 13 ExceptionHandler >> caughtException @3 line 4   [GsMethod
> | >>> | 10057473]
> | >>> | 14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
> | >>> | [GsMethod 10054401]
> | >>> | 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9
> |
> | >>> | [GsMethod 10055169]
> | >>> | 16 Exception >> _signal:number:args: @2 line 7   [GsMethod
> | 2458369]
> | >>> | 17 Exception >> resignal:number:args: @5 line 11   [GsMethod
> | 2461953]
> | >>> | 18 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
> | >>> | 19 ExceptionHandler >> caughtException @4 line 5   [GsMethod
> | >>> | 10057473]
> | >>> | 20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
> | >>> | [GsMethod 10054401]
> | >>> | 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9
> |
> | >>> | [GsMethod 10055169]
> | >>> | 22 Exception >> _signal:number:args: @2 line 7   [GsMethod
> | 2458369]
> | >>> | 23 Exception >> resignal:number:args: @5 line 11   [GsMethod
> | 2461953]
> | >>> | 24 ExceptionA >> doResignal @13 line 12   [GsMethod 11804161]
> | >>> | 25 ExceptionHandler >> caughtException @4 line 5   [GsMethod
> | >>> | 10057473]
> | >>> | 26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
> | >>> | [GsMethod 10054401]
> | >>> | 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9
> |
> | >>> | [GsMethod 10055169]
> | >>> | 28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
> | >>> | 29 System class >> __commit: @1 line 8   [GsMethod 2732545]
> | >>> | 30 System class >> _localCommit: @8 line 30   [GsMethod
> | 2732801]
> | >>> | 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3  
> | [GsMethod
> | >>> | 7711233]
> | >>> | 32 System class >> _commit: @6 line 16   [GsMethod 2733313]
> | >>> | 33 System class >> commitTransaction @2 line 28   [GsMethod
> | 2720513]
> | >>> | 34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8  
> | >>> | [GsMethod 536737537]
> | >>> | 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod 11808257]
> | >>> | 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line
> | 5  
> | >>> | [GsMethod 10057985]
> | >>> | 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
> | [GsMethod
> | >>> | 2377473]
> | >>> | 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
> | [GsMethod
> | >>> | 2377473]
> | >>> | 39 ExceptionHandler >> valueHandlerBlock @10 line 6   [GsMethod
> | >>> | 10057985]
> | >>> | 40 ExceptionHandler >> caughtException @3 line 4   [GsMethod
> | >>> | 10057473]
> | >>> | 41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19  
> | >>> | [GsMethod 10054401]
> | >>> | 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9
> |
> | >>> | [GsMethod 10055169]
> | >>> | 43 Exception >> _signal:number:args: @2 line 7   [GsMethod
> | 2458369]
> | >>> | 44 System class >> signal:args:signalDictionary: @5 line 13  
> | >>> | [GsMethod 2749697]
> | >>> | 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod 1925889]
> | >>> | 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod 1939201]
> | >>> | 47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2  
> | >>> | [GsMethod 536737537]
> | >>> | 48 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
> | >>> | 10055169]
> | >>> | 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
> | >>> | 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8  
> | [GsMethod
> | >>> | 2378497]
> | >>> | 51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod
> | 536737537]
> | >>> | 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod
> | 66289921]
> | >>> | 53 ComplexBlock in SeasideHTTPService >> answerToCheckingLock:
> | @23
> | >>> | line 12   [GsMethod 468698625]
> | >>> | 54 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
> | >>> | 10055169]
> | >>> | 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod 10850561]
> | >>> | 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  
> | [GsMethod
> | >>> | 2378497]
> | >>> | 57 ComplexVCBlock in SeasideHTTPService >> answerToCheckingLock:
> | @29
> | >>> | line 13   [GsMethod 468698625]
> | >>> | 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
> | [GsMethod
> | >>> | 2377473]
> | >>> | 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11  
> | [GsMethod
> | >>> | 2377473]
> | >>> | 60 TransientRecursionLock >> critical: @15 line 8   [GsMethod
> | >>> | 19814657]
> | >>> | 61 SeasideHTTPService >> answerToCheckingLock: @60 line 6  
> | [GsMethod
> | >>> | 468698625]
> | >>> | 62 SeasideHTTPService >> process: @3 line 6   [GsMethod
> | 233903105]
> | >>> | 63 ComplexBlock in SeasideHTTPService >> start @4 line 5  
> | [GsMethod
> | >>> | 233923073]
> | >>> | 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod
> | 233382913]
> | >>> | 65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
> | >>> | 66 ComplexBlock in HTTPConnection >> produceResponseFor: @8 line
> | 9  
> | >>> | [GsMethod 243599105]
> | >>> | 67 ExceptionHandler >> try:on:in:do: @13 line 13   [GsMethod
> | >>> | 10055169]
> | >>> | 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod
> | 12016897]
> | >>> | 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  
> | [GsMethod
> | >>> | 2378497]
> | >>> | 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6  
> | [GsMethod
> | >>> | 26609665]
> | >>> | 71 HTTPConnection >> produceResponseFor: @13 line 11  
> | [GsMethod
> | >>> | 243599105]
> | >>> | 72 HTTPConnection >> getAndDispatchMessages @9 line 14  
> | [GsMethod
> | >>> | 243597825]
> | >>> | 73 ComplexBlock in OSkSocketInboundConnection >> interact @3
> | line 6  
> | >>> | [GsMethod 243589377]
> | >>> | 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
> | [GsMethod
> | >>> | 2377473]
> | >>> | 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
> | [GsMethod
> | >>> | 2377473]
> | >>> | 76 OSkSocketInboundConnection >> interact @7 line 7   [GsMethod
> | >>> | 243589377]
> | >>> | 77 OSkSocketListenerService >> handleInboundConnectionOn: @8
> | line 10  
> | >>> | [GsMethod 243799809]
> | >>> | 78 ComplexBlock in OSkSocketListenerService >>
> | >>> | acceptInboundConnections @12 line 15   [GsMethod 243801601]
> | >>> | 79 GsProcess >> _startPart2 @13 line 17   [GsMethod 2493441]
> | >>> | 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
> | >>> |   [GsProcess 539307521]
> | >>> | topaz 1> [268 sz:0 cls: 68097 Boolean] true
> | >>> | topaz 1>
> | >>> | [Info]: Logging out at 02/23/10 00:18:45 CET
> | >>> |
> | >>> |
> | >>> | Hope this helps anything
> | >>> |
> | >>> | Norbert
> | >>> |
> | >>> |
> | >>> | On 22.02.2010, at 23:15, Dale Henrichs wrote:
> | >>> |
> | >>> | > Norbert,
> | >>> | >
> | >>> | > Okay. I assume that you are still using a WASession to do your
> | work
> | >>> | and that means that WAProcessMonitor>>critical:for:ifError: is
> | on the
> | >>> | stack.
> | >>> | >
> | >>> | > If it is, then we should be able to arrange to build an
> | errorHandler
> | >>> | that doesn't use a component and stashes the continuation into
> | the
> | >>> | object log. If isn't on the stack, then I'd be interested to
> | know
> | >>> | which WAProcessMonitor method is on the stack ...
> | >>> | WAProcessMonitor>>critical:for:ifError: was built to avoid some
> | of the
> | >>> | issues with persistent Semaphores.
> | >>> | >
> | >>> | > Assuming that all we need is an errorHandler, you are going
> | to
> | >>> | create a new subclass of WAErrorHandler and in the handleError:
> | method
> | >>> | put the DebuggerLogEntry:
> | >>> | >
> | >>> | >  DebuggerLogEntry createContinuationLabeled: 'http
> | continuation'.
> | >>> | >
> | >>> | > and arrange to return a response of some kind ... when the
> | response
> | >>> | is returned, the commit will be performed.
> | >>> | >
> | >>> | > If WAProcessMonitor>>critical:for:ifError: isn't on the stack,
> | I'm
> | >>> | curious where you are hooking into the request handling...
> | >>> | >
> | >>> | > Dale
> | >>> | >
> | >>> | > ----- "Norbert Hartl" <[hidden email]> wrote:
> | >>> | >
> | >>> | > | I'm working on my .231 image with seaside 2.8.
> | >>> | > |
> | >>> | > | Norbert
> | >>> | > |
> | >>> | > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
> | >>> | > |
> | >>> | > | > Norbert,
> | >>> | > | >
> | >>> | > | > Are you working in SEaside 3.0 or Seaside 2.8...
> | >>> | > | >
> | >>> | > | > Dale
> | >>> | > | > ----- "Norbert Hartl" <[hidden email]> wrote:
> | >>> | > | >
> | >>> | > | > | Hi,
> | >>> | > | > |
> | >>> | > | > | at the moment I'm doing some web api stuff with seaside
> | and
> | >>> | > | gemstone.
> | >>> | > | > | I have only a request handler and no component or the
> | like. I
> | >>> | like
> | >>> | > | to
> | >>> | > | > | to have the same behaviour that WAGsWalkback is doing.
> | Is
> | >>> | there a
> | >>> | > | > | utility that does continuation creation and storing
> | with
> | >>> | having
> | >>> | > | the
> | >>> | > | > | need for a WAComponent?
> | >>> | > | > | thanks,
> | >>> | > | > |
> | >>> | > | > | Norbert
> | >>
> | >

Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale
Okay,

Try updating to these versions of FastCGI. They appear to have the secret sauce to allow you to commit successfully:

  FastCGI-dkh.28
  FastCGISeaside-jgf.49

Dale

----- "Norbert Hartl" <[hidden email]> wrote:

| Dale,
|
| yes I wrote this already. I tested it and if even an errors ocurrs I
| get the same error. So the RSRSS2 handler is not working for me
| either.
|
| Norbert
|
| On 23.02.2010, at 18:32, Dale Henrichs wrote:
|
| > Norbert,
| >
| > Have you tried testing the RSRSS2 error handler. I have a feeling
| that your controller/handler might be structured differently than the
| RSRSS2 controller/handler.
| >
| > If the RSRSS2 fails then we need to look elsewhere. If it succeeds
| than the secret lies in the controller/handler code.
| >
| > Dale
| >
| > ----- "Norbert Hartl" <[hidden email]> wrote:
| >
| > | Ok,
| > |
| > | now I've shutdown the stone, copied a fresh extent0.seaside.dbf
| and
| > | started that. It is GLASS.230-dkh.176 (from a 2.3 install). I
| started
| > | FastCGI and added the HRTestHandler class. I get exactly the same
| > | error
| > |
| > | Internal Server Error:
| > | InterpreterError 2407: The object may not be committed, instances
| of
| > | its class are non-persistent.
| > |
| > | And you said that the error handling in RRRSShandler was working
| for
| > | you? Strange.
| > |
| > | Norbert
| > |
| > | On 23.02.2010, at 09:43, Norbert Hartl wrote:
| > |
| > | > I tested it on my online image and the behaviour is the same.
| Well,
| > | this is not too amazing because I always did the same updates and
| such
| > | on both sides. I have a gemstone 2.4 image on my harddisk. I'll
| give
| > | that a shot.
| > | >
| > | > Norbert
| > | >
| > | > On 23.02.2010, at 09:35, Norbert Hartl wrote:
| > | >
| > | >>
| > | >> On 23.02.2010, at 00:52, Dale Henrichs wrote:
| > | >>
| > | >>> Not that this will work for sure, but we should be doing any
| > | transactions during a Seaside request ... (I was brain dead
| before,
| > | sorry) ... you should just have the:
| > | >>>
| > | >>>  DebuggerLogEntry createContinuationLabeled: 'MTCE
| continuation'
| > | >>>
| > | >>> statement in the handler ... let's give that a try and see
| what's
| > | next...
| > | >>>
| > | >>>
| > | >> Dale,
| > | >>
| > | >> that doesn't help anything. I tried with only that statement.
| I
| > | changed to TestHandler to resemble the behaviour in RRRSHandler.
| It is
| > | just the same. Then I configured my system in order to use the
| FastCGI
| > | instead. No change! I get
| > | >> Internal Server Error:
| > | >> InterpreterError 2407: The object may not be committed,
| instances
| > | of its class are non-persistent.
| > | >>
| > | >> Then I configured RSS in a way that it works and I can access
| the
| > | feed. After it was working I introduced an error inside the
| PRDemo
| > | component. I get the same error. So it does not work for RSS
| either.
| > | >>
| > | >> I'll check the online image if it is the same there. If it
| doesn't
| > | work, too, I'll take a fresh extent and test it there.
| > | >>
| > | >> Norbert
| > | >>
| > | >>> ----- "Norbert Hartl" <[hidden email]> wrote:
| > | >>>
| > | >>> | Dale,
| > | >>> |
| > | >>> | as far as I can see there is no utilization of WASession if
| a
| > | >>> | WARequestHandler is being used. Without WAApplication there
| > | doesn't
| > | >>> | seem to be any session used. I entered some break points
| into
| > | the
| > | >>> | places where it should pass by if there would be a session
| > | usage. None
| > | >>> | of these is triggered. Now I saw that even the mutex used
| > | around
| > | >>> | handleRequest: is a TransientMutex.
| > | >>> |
| > | >>> | However I built a class
| > | >>> |
| > | >>> | WAEntryPoint subclass: 'HRTestHandler'
| > | >>> | instVarNames: #()
| > | >>> | classVars: #()
| > | >>> | classInstVars: #()
| > | >>> | poolDictionaries: #[]
| > | >>> | inDictionary: ''
| > | >>> | category: 'MyHandler-HTTP'
| > | >>> |
| > | >>> | HRTestHandler>>handleRequest: aRequest
| > | >>> | [ nil foobar ]
| > | >>> | on: Error, Halt, BreakpointNotification
| > | >>> | do: [:ex |
| > | >>> | System inTransaction
| > | >>> | ifTrue: [
| > | >>> |         DebuggerLogEntry createContinuationLabeled:
| 'MTCE
| > | >>> | continuation'.
| > | >>> |           System commitTransaction.
| > | >>> |           System beginTransaction ]
| > | >>> |         ifFalse: [
| > | >>> |           System beginTransaction.
| > | >>> |           DebuggerLogEntry createContinuationLabeled:
| 'MTCE
| > | >>> | continuation'.
| > | >>> |           System commitTransaction].
| > | >>> |       ex isResumable ifTrue: [ex resume]].
| > | >>> | ^ WAResponse new status: 500.
| > | >>> |
| > | >>> | HRTestHanlder class>>description
| > | >>> | ^'objectlog test'
| > | >>> |
| > | >>> | If I attach this via seaside config to a path. Then invoking
| the
| > | url
| > | >>> | gives me now
| > | >>> |
| > | >>> | topaz 1> topaz 1> Hyper Server started on port 9009
| > | >>> | --transcript--'Seaside default dispatcher enabled on path
| > | /seaside/'
| > | >>> | -----------------------------------------------------
| > | >>> | GemStone: Error         Nonfatal
| > | >>> | The object aProcessorScheduler may not be committed,
| instances
| > | of
| > | >>> | its class are non-persistent.
| > | >>> | Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1
| > | Context :
| > | >>> | 539307521
| > | >>> | Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a
| > | >>> | ProcessorScheduler
| > | >>> |   readyQueue      [539261697 sz:1 cls: 92929
| SortedCollection]
| > | a
| > | >>> | SortedCollection
| > | >>> |   activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
| > | >>> |   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
| > | >>> |   delayQueue      [539260673 sz:2 cls: 92929
| SortedCollection]
| > | a
| > | >>> | SortedCollection
| > | >>> |   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
| > | >>> |   readDict        [539278081 sz:14 cls: 90881
| > | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
| > | >>> |   writeDict       [539259649 sz:14 cls: 90881
| > | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
| > | >>> |   suspendedDict   [539259137 sz:14 cls: 90881
| > | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
| > | >>> |   waitingSet      [539258625 sz:5 cls: 73985 IdentitySet]
| an
| > | >>> | IdentitySet
| > | >>> |   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
| > | >>> |   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil
| > | >>> |
| > | >>> |
| > | >>> | Now executing the following command saved from "iferr 1":
| > | >>> |    where
| > | >>> | ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod
| > | 11802113]
| > | >>> | 2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
| > | >>> | 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod
| 11804673]
| > | >>> | 4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
| > | >>> | 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
| > | >>> | 6 HTTPConnection >> handleInternalServerException: @12 line
| 13
| > |
| > | >>> | [GsMethod 243599873]
| > | >>> | 7 ComplexBlock in HTTPConnection >> internalErrorHandler @6
| line
| > | 6  
| > | >>> | [GsMethod 243599617]
| > | >>> | 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod
| 11808257]
| > | >>> | 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6
| line
| > | 5  
| > | >>> | [GsMethod 10057985]
| > | >>> | 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
| > | [GsMethod
| > | >>> | 2377473]
| > | >>> | 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
| > | [GsMethod
| > | >>> | 2377473]
| > | >>> | 12 ExceptionHandler >> valueHandlerBlock @10 line 6  
| [GsMethod
| > | >>> | 10057985]
| > | >>> | 13 ExceptionHandler >> caughtException @3 line 4  
| [GsMethod
| > | >>> | 10057473]
| > | >>> | 14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19
|  
| > | >>> | [GsMethod 10054401]
| > | >>> | 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line
| 9
| > |
| > | >>> | [GsMethod 10055169]
| > | >>> | 16 Exception >> _signal:number:args: @2 line 7   [GsMethod
| > | 2458369]
| > | >>> | 17 Exception >> resignal:number:args: @5 line 11  
| [GsMethod
| > | 2461953]
| > | >>> | 18 ExceptionA >> doResignal @13 line 12   [GsMethod
| 11804161]
| > | >>> | 19 ExceptionHandler >> caughtException @4 line 5  
| [GsMethod
| > | >>> | 10057473]
| > | >>> | 20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19
|  
| > | >>> | [GsMethod 10054401]
| > | >>> | 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line
| 9
| > |
| > | >>> | [GsMethod 10055169]
| > | >>> | 22 Exception >> _signal:number:args: @2 line 7   [GsMethod
| > | 2458369]
| > | >>> | 23 Exception >> resignal:number:args: @5 line 11  
| [GsMethod
| > | 2461953]
| > | >>> | 24 ExceptionA >> doResignal @13 line 12   [GsMethod
| 11804161]
| > | >>> | 25 ExceptionHandler >> caughtException @4 line 5  
| [GsMethod
| > | >>> | 10057473]
| > | >>> | 26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19
|  
| > | >>> | [GsMethod 10054401]
| > | >>> | 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line
| 9
| > |
| > | >>> | [GsMethod 10055169]
| > | >>> | 28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
| > | >>> | 29 System class >> __commit: @1 line 8   [GsMethod 2732545]
| > | >>> | 30 System class >> _localCommit: @8 line 30   [GsMethod
| > | 2732801]
| > | >>> | 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3  
| > | [GsMethod
| > | >>> | 7711233]
| > | >>> | 32 System class >> _commit: @6 line 16   [GsMethod 2733313]
| > | >>> | 33 System class >> commitTransaction @2 line 28   [GsMethod
| > | 2720513]
| > | >>> | 34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8
|
| > | >>> | [GsMethod 536737537]
| > | >>> | 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod
| 11808257]
| > | >>> | 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6
| line
| > | 5  
| > | >>> | [GsMethod 10057985]
| > | >>> | 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
| > | [GsMethod
| > | >>> | 2377473]
| > | >>> | 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
| > | [GsMethod
| > | >>> | 2377473]
| > | >>> | 39 ExceptionHandler >> valueHandlerBlock @10 line 6  
| [GsMethod
| > | >>> | 10057985]
| > | >>> | 40 ExceptionHandler >> caughtException @3 line 4  
| [GsMethod
| > | >>> | 10057473]
| > | >>> | 41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19
|  
| > | >>> | [GsMethod 10054401]
| > | >>> | 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line
| 9
| > |
| > | >>> | [GsMethod 10055169]
| > | >>> | 43 Exception >> _signal:number:args: @2 line 7   [GsMethod
| > | 2458369]
| > | >>> | 44 System class >> signal:args:signalDictionary: @5 line 13
|
| > | >>> | [GsMethod 2749697]
| > | >>> | 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod
| 1925889]
| > | >>> | 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod
| 1939201]
| > | >>> | 47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2
|
| > | >>> | [GsMethod 536737537]
| > | >>> | 48 ExceptionHandler >> try:on:in:do: @13 line 13  
| [GsMethod
| > | >>> | 10055169]
| > | >>> | 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod
| 10850561]
| > | >>> | 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8  
| > | [GsMethod
| > | >>> | 2378497]
| > | >>> | 51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod
| > | 536737537]
| > | >>> | 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod
| > | 66289921]
| > | >>> | 53 ComplexBlock in SeasideHTTPService >>
| answerToCheckingLock:
| > | @23
| > | >>> | line 12   [GsMethod 468698625]
| > | >>> | 54 ExceptionHandler >> try:on:in:do: @13 line 13  
| [GsMethod
| > | >>> | 10055169]
| > | >>> | 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod
| 10850561]
| > | >>> | 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  
| > | [GsMethod
| > | >>> | 2378497]
| > | >>> | 57 ComplexVCBlock in SeasideHTTPService >>
| answerToCheckingLock:
| > | @29
| > | >>> | line 13   [GsMethod 468698625]
| > | >>> | 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
| > | [GsMethod
| > | >>> | 2377473]
| > | >>> | 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11
|
| > | [GsMethod
| > | >>> | 2377473]
| > | >>> | 60 TransientRecursionLock >> critical: @15 line 8  
| [GsMethod
| > | >>> | 19814657]
| > | >>> | 61 SeasideHTTPService >> answerToCheckingLock: @60 line 6  
| > | [GsMethod
| > | >>> | 468698625]
| > | >>> | 62 SeasideHTTPService >> process: @3 line 6   [GsMethod
| > | 233903105]
| > | >>> | 63 ComplexBlock in SeasideHTTPService >> start @4 line 5  
| > | [GsMethod
| > | >>> | 233923073]
| > | >>> | 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod
| > | 233382913]
| > | >>> | 65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
| > | >>> | 66 ComplexBlock in HTTPConnection >> produceResponseFor: @8
| line
| > | 9  
| > | >>> | [GsMethod 243599105]
| > | >>> | 67 ExceptionHandler >> try:on:in:do: @13 line 13  
| [GsMethod
| > | >>> | 10055169]
| > | >>> | 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod
| > | 12016897]
| > | >>> | 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  
| > | [GsMethod
| > | >>> | 2378497]
| > | >>> | 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6
|
| > | [GsMethod
| > | >>> | 26609665]
| > | >>> | 71 HTTPConnection >> produceResponseFor: @13 line 11  
| > | [GsMethod
| > | >>> | 243599105]
| > | >>> | 72 HTTPConnection >> getAndDispatchMessages @9 line 14  
| > | [GsMethod
| > | >>> | 243597825]
| > | >>> | 73 ComplexBlock in OSkSocketInboundConnection >> interact
| @3
| > | line 6  
| > | >>> | [GsMethod 243589377]
| > | >>> | 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
| > | [GsMethod
| > | >>> | 2377473]
| > | >>> | 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
| > | [GsMethod
| > | >>> | 2377473]
| > | >>> | 76 OSkSocketInboundConnection >> interact @7 line 7  
| [GsMethod
| > | >>> | 243589377]
| > | >>> | 77 OSkSocketListenerService >> handleInboundConnectionOn:
| @8
| > | line 10  
| > | >>> | [GsMethod 243799809]
| > | >>> | 78 ComplexBlock in OSkSocketListenerService >>
| > | >>> | acceptInboundConnections @12 line 15   [GsMethod 243801601]
| > | >>> | 79 GsProcess >> _startPart2 @13 line 17   [GsMethod
| 2493441]
| > | >>> | 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
| > | >>> |   [GsProcess 539307521]
| > | >>> | topaz 1> [268 sz:0 cls: 68097 Boolean] true
| > | >>> | topaz 1>
| > | >>> | [Info]: Logging out at 02/23/10 00:18:45 CET
| > | >>> |
| > | >>> |
| > | >>> | Hope this helps anything
| > | >>> |
| > | >>> | Norbert
| > | >>> |
| > | >>> |
| > | >>> | On 22.02.2010, at 23:15, Dale Henrichs wrote:
| > | >>> |
| > | >>> | > Norbert,
| > | >>> | >
| > | >>> | > Okay. I assume that you are still using a WASession to do
| your
| > | work
| > | >>> | and that means that WAProcessMonitor>>critical:for:ifError:
| is
| > | on the
| > | >>> | stack.
| > | >>> | >
| > | >>> | > If it is, then we should be able to arrange to build an
| > | errorHandler
| > | >>> | that doesn't use a component and stashes the continuation
| into
| > | the
| > | >>> | object log. If isn't on the stack, then I'd be interested
| to
| > | know
| > | >>> | which WAProcessMonitor method is on the stack ...
| > | >>> | WAProcessMonitor>>critical:for:ifError: was built to avoid
| some
| > | of the
| > | >>> | issues with persistent Semaphores.
| > | >>> | >
| > | >>> | > Assuming that all we need is an errorHandler, you are
| going
| > | to
| > | >>> | create a new subclass of WAErrorHandler and in the
| handleError:
| > | method
| > | >>> | put the DebuggerLogEntry:
| > | >>> | >
| > | >>> | >  DebuggerLogEntry createContinuationLabeled: 'http
| > | continuation'.
| > | >>> | >
| > | >>> | > and arrange to return a response of some kind ... when
| the
| > | response
| > | >>> | is returned, the commit will be performed.
| > | >>> | >
| > | >>> | > If WAProcessMonitor>>critical:for:ifError: isn't on the
| stack,
| > | I'm
| > | >>> | curious where you are hooking into the request handling...
| > | >>> | >
| > | >>> | > Dale
| > | >>> | >
| > | >>> | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | >>> | >
| > | >>> | > | I'm working on my .231 image with seaside 2.8.
| > | >>> | > |
| > | >>> | > | Norbert
| > | >>> | > |
| > | >>> | > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
| > | >>> | > |
| > | >>> | > | > Norbert,
| > | >>> | > | >
| > | >>> | > | > Are you working in SEaside 3.0 or Seaside 2.8...
| > | >>> | > | >
| > | >>> | > | > Dale
| > | >>> | > | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | >>> | > | >
| > | >>> | > | > | Hi,
| > | >>> | > | > |
| > | >>> | > | > | at the moment I'm doing some web api stuff with
| seaside
| > | and
| > | >>> | > | gemstone.
| > | >>> | > | > | I have only a request handler and no component or
| the
| > | like. I
| > | >>> | like
| > | >>> | > | to
| > | >>> | > | > | to have the same behaviour that WAGsWalkback is
| doing.
| > | Is
| > | >>> | there a
| > | >>> | > | > | utility that does continuation creation and storing
| > | with
| > | >>> | having
| > | >>> | > | the
| > | >>> | > | > | need for a WAComponent?
| > | >>> | > | > | thanks,
| > | >>> | > | > |
| > | >>> | > | > | Norbert
| > | >>
| > | >
Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

NorbertHartl
Now it is working.

thanks very much,

Norbert

On 23.02.2010, at 21:39, Dale Henrichs wrote:

> Okay,
>
> Try updating to these versions of FastCGI. They appear to have the secret sauce to allow you to commit successfully:
>
>  FastCGI-dkh.28
>  FastCGISeaside-jgf.49
>
> Dale
>
> ----- "Norbert Hartl" <[hidden email]> wrote:
>
> | Dale,
> |
> | yes I wrote this already. I tested it and if even an errors ocurrs I
> | get the same error. So the RSRSS2 handler is not working for me
> | either.
> |
> | Norbert
> |
> | On 23.02.2010, at 18:32, Dale Henrichs wrote:
> |
> | > Norbert,
> | >
> | > Have you tried testing the RSRSS2 error handler. I have a feeling
> | that your controller/handler might be structured differently than the
> | RSRSS2 controller/handler.
> | >
> | > If the RSRSS2 fails then we need to look elsewhere. If it succeeds
> | than the secret lies in the controller/handler code.
> | >
> | > Dale
> | >
> | > ----- "Norbert Hartl" <[hidden email]> wrote:
> | >
> | > | Ok,
> | > |
> | > | now I've shutdown the stone, copied a fresh extent0.seaside.dbf
> | and
> | > | started that. It is GLASS.230-dkh.176 (from a 2.3 install). I
> | started
> | > | FastCGI and added the HRTestHandler class. I get exactly the same
> | > | error
> | > |
> | > | Internal Server Error:
> | > | InterpreterError 2407: The object may not be committed, instances
> | of
> | > | its class are non-persistent.
> | > |
> | > | And you said that the error handling in RRRSShandler was working
> | for
> | > | you? Strange.
> | > |
> | > | Norbert
> | > |
> | > | On 23.02.2010, at 09:43, Norbert Hartl wrote:
> | > |
> | > | > I tested it on my online image and the behaviour is the same.
> | Well,
> | > | this is not too amazing because I always did the same updates and
> | such
> | > | on both sides. I have a gemstone 2.4 image on my harddisk. I'll
> | give
> | > | that a shot.
> | > | >
> | > | > Norbert
> | > | >
> | > | > On 23.02.2010, at 09:35, Norbert Hartl wrote:
> | > | >
> | > | >>
> | > | >> On 23.02.2010, at 00:52, Dale Henrichs wrote:
> | > | >>
> | > | >>> Not that this will work for sure, but we should be doing any
> | > | transactions during a Seaside request ... (I was brain dead
> | before,
> | > | sorry) ... you should just have the:
> | > | >>>
> | > | >>>  DebuggerLogEntry createContinuationLabeled: 'MTCE
> | continuation'
> | > | >>>
> | > | >>> statement in the handler ... let's give that a try and see
> | what's
> | > | next...
> | > | >>>
> | > | >>>
> | > | >> Dale,
> | > | >>
> | > | >> that doesn't help anything. I tried with only that statement.
> | I
> | > | changed to TestHandler to resemble the behaviour in RRRSHandler.
> | It is
> | > | just the same. Then I configured my system in order to use the
> | FastCGI
> | > | instead. No change! I get
> | > | >> Internal Server Error:
> | > | >> InterpreterError 2407: The object may not be committed,
> | instances
> | > | of its class are non-persistent.
> | > | >>
> | > | >> Then I configured RSS in a way that it works and I can access
> | the
> | > | feed. After it was working I introduced an error inside the
> | PRDemo
> | > | component. I get the same error. So it does not work for RSS
> | either.
> | > | >>
> | > | >> I'll check the online image if it is the same there. If it
> | doesn't
> | > | work, too, I'll take a fresh extent and test it there.
> | > | >>
> | > | >> Norbert
> | > | >>
> | > | >>> ----- "Norbert Hartl" <[hidden email]> wrote:
> | > | >>>
> | > | >>> | Dale,
> | > | >>> |
> | > | >>> | as far as I can see there is no utilization of WASession if
> | a
> | > | >>> | WARequestHandler is being used. Without WAApplication there
> | > | doesn't
> | > | >>> | seem to be any session used. I entered some break points
> | into
> | > | the
> | > | >>> | places where it should pass by if there would be a session
> | > | usage. None
> | > | >>> | of these is triggered. Now I saw that even the mutex used
> | > | around
> | > | >>> | handleRequest: is a TransientMutex.
> | > | >>> |
> | > | >>> | However I built a class
> | > | >>> |
> | > | >>> | WAEntryPoint subclass: 'HRTestHandler'
> | > | >>> | instVarNames: #()
> | > | >>> | classVars: #()
> | > | >>> | classInstVars: #()
> | > | >>> | poolDictionaries: #[]
> | > | >>> | inDictionary: ''
> | > | >>> | category: 'MyHandler-HTTP'
> | > | >>> |
> | > | >>> | HRTestHandler>>handleRequest: aRequest
> | > | >>> | [ nil foobar ]
> | > | >>> | on: Error, Halt, BreakpointNotification
> | > | >>> | do: [:ex |
> | > | >>> | System inTransaction
> | > | >>> | ifTrue: [
> | > | >>> |         DebuggerLogEntry createContinuationLabeled:
> | 'MTCE
> | > | >>> | continuation'.
> | > | >>> |           System commitTransaction.
> | > | >>> |           System beginTransaction ]
> | > | >>> |         ifFalse: [
> | > | >>> |           System beginTransaction.
> | > | >>> |           DebuggerLogEntry createContinuationLabeled:
> | 'MTCE
> | > | >>> | continuation'.
> | > | >>> |           System commitTransaction].
> | > | >>> |       ex isResumable ifTrue: [ex resume]].
> | > | >>> | ^ WAResponse new status: 500.
> | > | >>> |
> | > | >>> | HRTestHanlder class>>description
> | > | >>> | ^'objectlog test'
> | > | >>> |
> | > | >>> | If I attach this via seaside config to a path. Then invoking
> | the
> | > | url
> | > | >>> | gives me now
> | > | >>> |
> | > | >>> | topaz 1> topaz 1> Hyper Server started on port 9009
> | > | >>> | --transcript--'Seaside default dispatcher enabled on path
> | > | /seaside/'
> | > | >>> | -----------------------------------------------------
> | > | >>> | GemStone: Error         Nonfatal
> | > | >>> | The object aProcessorScheduler may not be committed,
> | instances
> | > | of
> | > | >>> | its class are non-persistent.
> | > | >>> | Error Category: 231169 [GemStone] Number: 2407 Arg Count: 1
> | > | Context :
> | > | >>> | 539307521
> | > | >>> | Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler] a
> | > | >>> | ProcessorScheduler
> | > | >>> |   readyQueue      [539261697 sz:1 cls: 92929
> | SortedCollection]
> | > | a
> | > | >>> | SortedCollection
> | > | >>> |   activeProcess   [20 sz:0 cls: 76289 UndefinedObject] nil
> | > | >>> |   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject] nil
> | > | >>> |   delayQueue      [539260673 sz:2 cls: 92929
> | SortedCollection]
> | > | a
> | > | >>> | SortedCollection
> | > | >>> |   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject] nil
> | > | >>> |   readDict        [539278081 sz:14 cls: 90881
> | > | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
> | > | >>> |   writeDict       [539259649 sz:14 cls: 90881
> | > | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
> | > | >>> |   suspendedDict   [539259137 sz:14 cls: 90881
> | > | >>> | IdentityKeyValueDictionary] an IdentityKeyValueDictionary
> | > | >>> |   waitingSet      [539258625 sz:5 cls: 73985 IdentitySet]
> | an
> | > | >>> | IdentitySet
> | > | >>> |   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
> | > | >>> |   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject] nil
> | > | >>> |
> | > | >>> |
> | > | >>> | Now executing the following command saved from "iferr 1":
> | > | >>> |    where
> | > | >>> | ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod
> | > | 11802113]
> | > | >>> | 2 Error >> defaultAction @2 line 7   [GsMethod 11621121]
> | > | >>> | 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod
> | 11804673]
> | > | >>> | 4 ExceptionHandler >> outer @5 line 5   [GsMethod 10053889]
> | > | >>> | 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
> | > | >>> | 6 HTTPConnection >> handleInternalServerException: @12 line
> | 13
> | > |
> | > | >>> | [GsMethod 243599873]
> | > | >>> | 7 ComplexBlock in HTTPConnection >> internalErrorHandler @6
> | line
> | > | 6  
> | > | >>> | [GsMethod 243599617]
> | > | >>> | 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod
> | 11808257]
> | > | >>> | 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6
> | line
> | > | 5  
> | > | >>> | [GsMethod 10057985]
> | > | >>> | 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
> | > | [GsMethod
> | > | >>> | 2377473]
> | > | >>> | 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
> | > | [GsMethod
> | > | >>> | 2377473]
> | > | >>> | 12 ExceptionHandler >> valueHandlerBlock @10 line 6  
> | [GsMethod
> | > | >>> | 10057985]
> | > | >>> | 13 ExceptionHandler >> caughtException @3 line 4  
> | [GsMethod
> | > | >>> | 10057473]
> | > | >>> | 14 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19
> |  
> | > | >>> | [GsMethod 10054401]
> | > | >>> | 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line
> | 9
> | > |
> | > | >>> | [GsMethod 10055169]
> | > | >>> | 16 Exception >> _signal:number:args: @2 line 7   [GsMethod
> | > | 2458369]
> | > | >>> | 17 Exception >> resignal:number:args: @5 line 11  
> | [GsMethod
> | > | 2461953]
> | > | >>> | 18 ExceptionA >> doResignal @13 line 12   [GsMethod
> | 11804161]
> | > | >>> | 19 ExceptionHandler >> caughtException @4 line 5  
> | [GsMethod
> | > | >>> | 10057473]
> | > | >>> | 20 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19
> |  
> | > | >>> | [GsMethod 10054401]
> | > | >>> | 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line
> | 9
> | > |
> | > | >>> | [GsMethod 10055169]
> | > | >>> | 22 Exception >> _signal:number:args: @2 line 7   [GsMethod
> | > | 2458369]
> | > | >>> | 23 Exception >> resignal:number:args: @5 line 11  
> | [GsMethod
> | > | 2461953]
> | > | >>> | 24 ExceptionA >> doResignal @13 line 12   [GsMethod
> | 11804161]
> | > | >>> | 25 ExceptionHandler >> caughtException @4 line 5  
> | [GsMethod
> | > | >>> | 10057473]
> | > | >>> | 26 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19
> |  
> | > | >>> | [GsMethod 10054401]
> | > | >>> | 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line
> | 9
> | > |
> | > | >>> | [GsMethod 10055169]
> | > | >>> | 28 Object >> _gsReturnTos @1 line 1   [GsMethod 1894401]
> | > | >>> | 29 System class >> __commit: @1 line 8   [GsMethod 2732545]
> | > | >>> | 30 System class >> _localCommit: @8 line 30   [GsMethod
> | > | 2732801]
> | > | >>> | 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3  
> | > | [GsMethod
> | > | >>> | 7711233]
> | > | >>> | 32 System class >> _commit: @6 line 16   [GsMethod 2733313]
> | > | >>> | 33 System class >> commitTransaction @2 line 28   [GsMethod
> | > | 2720513]
> | > | >>> | 34 SimpleBlock in HRTestHandler >> handleRequest: @9 line 8
> |
> | > | >>> | [GsMethod 536737537]
> | > | >>> | 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod
> | 11808257]
> | > | >>> | 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6
> | line
> | > | 5  
> | > | >>> | [GsMethod 10057985]
> | > | >>> | 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
> | > | [GsMethod
> | > | >>> | 2377473]
> | > | >>> | 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
> | > | [GsMethod
> | > | >>> | 2377473]
> | > | >>> | 39 ExceptionHandler >> valueHandlerBlock @10 line 6  
> | [GsMethod
> | > | >>> | 10057985]
> | > | >>> | 40 ExceptionHandler >> caughtException @3 line 4  
> | [GsMethod
> | > | >>> | 10057473]
> | > | >>> | 41 ExceptionHandler >> caughtEx:number:cat:args: @16 line 19
> |  
> | > | >>> | [GsMethod 10054401]
> | > | >>> | 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line
> | 9
> | > |
> | > | >>> | [GsMethod 10055169]
> | > | >>> | 43 Exception >> _signal:number:args: @2 line 7   [GsMethod
> | > | 2458369]
> | > | >>> | 44 System class >> signal:args:signalDictionary: @5 line 13
> |
> | > | >>> | [GsMethod 2749697]
> | > | >>> | 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod
> | 1925889]
> | > | >>> | 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod
> | 1939201]
> | > | >>> | 47 SimpleBlock in HRTestHandler >> handleRequest: @2 line 2
> |
> | > | >>> | [GsMethod 536737537]
> | > | >>> | 48 ExceptionHandler >> try:on:in:do: @13 line 13  
> | [GsMethod
> | > | >>> | 10055169]
> | > | >>> | 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod
> | 10850561]
> | > | >>> | 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8  
> | > | [GsMethod
> | > | >>> | 2378497]
> | > | >>> | 51 HRTestHandler >> handleRequest: @17 line 3   [GsMethod
> | > | 536737537]
> | > | >>> | 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod
> | > | 66289921]
> | > | >>> | 53 ComplexBlock in SeasideHTTPService >>
> | answerToCheckingLock:
> | > | @23
> | > | >>> | line 12   [GsMethod 468698625]
> | > | >>> | 54 ExceptionHandler >> try:on:in:do: @13 line 13  
> | [GsMethod
> | > | >>> | 10055169]
> | > | >>> | 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod
> | 10850561]
> | > | >>> | 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  
> | > | [GsMethod
> | > | >>> | 2378497]
> | > | >>> | 57 ComplexVCBlock in SeasideHTTPService >>
> | answerToCheckingLock:
> | > | @29
> | > | >>> | line 13   [GsMethod 468698625]
> | > | >>> | 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
> | > | [GsMethod
> | > | >>> | 2377473]
> | > | >>> | 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11
> |
> | > | [GsMethod
> | > | >>> | 2377473]
> | > | >>> | 60 TransientRecursionLock >> critical: @15 line 8  
> | [GsMethod
> | > | >>> | 19814657]
> | > | >>> | 61 SeasideHTTPService >> answerToCheckingLock: @60 line 6  
> | > | [GsMethod
> | > | >>> | 468698625]
> | > | >>> | 62 SeasideHTTPService >> process: @3 line 6   [GsMethod
> | > | 233903105]
> | > | >>> | 63 ComplexBlock in SeasideHTTPService >> start @4 line 5  
> | > | [GsMethod
> | > | >>> | 233923073]
> | > | >>> | 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod
> | > | 233382913]
> | > | >>> | 65 HTTPServer >> answerTo: @6 line 7   [GsMethod 243810049]
> | > | >>> | 66 ComplexBlock in HTTPConnection >> produceResponseFor: @8
> | line
> | > | 9  
> | > | >>> | [GsMethod 243599105]
> | > | >>> | 67 ExceptionHandler >> try:on:in:do: @13 line 13  
> | [GsMethod
> | > | >>> | 10055169]
> | > | >>> | 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod
> | > | 12016897]
> | > | >>> | 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  
> | > | [GsMethod
> | > | >>> | 2378497]
> | > | >>> | 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line 6
> |
> | > | [GsMethod
> | > | >>> | 26609665]
> | > | >>> | 71 HTTPConnection >> produceResponseFor: @13 line 11  
> | > | [GsMethod
> | > | >>> | 243599105]
> | > | >>> | 72 HTTPConnection >> getAndDispatchMessages @9 line 14  
> | > | [GsMethod
> | > | >>> | 243597825]
> | > | >>> | 73 ComplexBlock in OSkSocketInboundConnection >> interact
> | @3
> | > | line 6  
> | > | >>> | [GsMethod 243589377]
> | > | >>> | 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  
> | > | [GsMethod
> | > | >>> | 2377473]
> | > | >>> | 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  
> | > | [GsMethod
> | > | >>> | 2377473]
> | > | >>> | 76 OSkSocketInboundConnection >> interact @7 line 7  
> | [GsMethod
> | > | >>> | 243589377]
> | > | >>> | 77 OSkSocketListenerService >> handleInboundConnectionOn:
> | @8
> | > | line 10  
> | > | >>> | [GsMethod 243799809]
> | > | >>> | 78 ComplexBlock in OSkSocketListenerService >>
> | > | >>> | acceptInboundConnections @12 line 15   [GsMethod 243801601]
> | > | >>> | 79 GsProcess >> _startPart2 @13 line 17   [GsMethod
> | 2493441]
> | > | >>> | 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
> | > | >>> |   [GsProcess 539307521]
> | > | >>> | topaz 1> [268 sz:0 cls: 68097 Boolean] true
> | > | >>> | topaz 1>
> | > | >>> | [Info]: Logging out at 02/23/10 00:18:45 CET
> | > | >>> |
> | > | >>> |
> | > | >>> | Hope this helps anything
> | > | >>> |
> | > | >>> | Norbert
> | > | >>> |
> | > | >>> |
> | > | >>> | On 22.02.2010, at 23:15, Dale Henrichs wrote:
> | > | >>> |
> | > | >>> | > Norbert,
> | > | >>> | >
> | > | >>> | > Okay. I assume that you are still using a WASession to do
> | your
> | > | work
> | > | >>> | and that means that WAProcessMonitor>>critical:for:ifError:
> | is
> | > | on the
> | > | >>> | stack.
> | > | >>> | >
> | > | >>> | > If it is, then we should be able to arrange to build an
> | > | errorHandler
> | > | >>> | that doesn't use a component and stashes the continuation
> | into
> | > | the
> | > | >>> | object log. If isn't on the stack, then I'd be interested
> | to
> | > | know
> | > | >>> | which WAProcessMonitor method is on the stack ...
> | > | >>> | WAProcessMonitor>>critical:for:ifError: was built to avoid
> | some
> | > | of the
> | > | >>> | issues with persistent Semaphores.
> | > | >>> | >
> | > | >>> | > Assuming that all we need is an errorHandler, you are
> | going
> | > | to
> | > | >>> | create a new subclass of WAErrorHandler and in the
> | handleError:
> | > | method
> | > | >>> | put the DebuggerLogEntry:
> | > | >>> | >
> | > | >>> | >  DebuggerLogEntry createContinuationLabeled: 'http
> | > | continuation'.
> | > | >>> | >
> | > | >>> | > and arrange to return a response of some kind ... when
> | the
> | > | response
> | > | >>> | is returned, the commit will be performed.
> | > | >>> | >
> | > | >>> | > If WAProcessMonitor>>critical:for:ifError: isn't on the
> | stack,
> | > | I'm
> | > | >>> | curious where you are hooking into the request handling...
> | > | >>> | >
> | > | >>> | > Dale
> | > | >>> | >
> | > | >>> | > ----- "Norbert Hartl" <[hidden email]> wrote:
> | > | >>> | >
> | > | >>> | > | I'm working on my .231 image with seaside 2.8.
> | > | >>> | > |
> | > | >>> | > | Norbert
> | > | >>> | > |
> | > | >>> | > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
> | > | >>> | > |
> | > | >>> | > | > Norbert,
> | > | >>> | > | >
> | > | >>> | > | > Are you working in SEaside 3.0 or Seaside 2.8...
> | > | >>> | > | >
> | > | >>> | > | > Dale
> | > | >>> | > | > ----- "Norbert Hartl" <[hidden email]> wrote:
> | > | >>> | > | >
> | > | >>> | > | > | Hi,
> | > | >>> | > | > |
> | > | >>> | > | > | at the moment I'm doing some web api stuff with
> | seaside
> | > | and
> | > | >>> | > | gemstone.
> | > | >>> | > | > | I have only a request handler and no component or
> | the
> | > | like. I
> | > | >>> | like
> | > | >>> | > | to
> | > | >>> | > | > | to have the same behaviour that WAGsWalkback is
> | doing.
> | > | Is
> | > | >>> | there a
> | > | >>> | > | > | utility that does continuation creation and storing
> | > | with
> | > | >>> | having
> | > | >>> | > | the
> | > | >>> | > | > | need for a WAComponent?
> | > | >>> | > | > | thanks,
> | > | >>> | > | > |
> | > | >>> | > | > | Norbert
> | > | >>
> | > | >

Reply | Threaded
Open this post in threaded view
|

Re: ObjectLog utilization

Dale
Norbert,

If my brain had been working on all cylinders the last couple fo days, we could of gotten there sooner:)

I appreciate your patience,

Dale

----- "Norbert Hartl" <[hidden email]> wrote:

| Now it is working.
|
| thanks very much,
|
| Norbert
|
| On 23.02.2010, at 21:39, Dale Henrichs wrote:
|
| > Okay,
| >
| > Try updating to these versions of FastCGI. They appear to have the
| secret sauce to allow you to commit successfully:
| >
| >  FastCGI-dkh.28
| >  FastCGISeaside-jgf.49
| >
| > Dale
| >
| > ----- "Norbert Hartl" <[hidden email]> wrote:
| >
| > | Dale,
| > |
| > | yes I wrote this already. I tested it and if even an errors ocurrs
| I
| > | get the same error. So the RSRSS2 handler is not working for me
| > | either.
| > |
| > | Norbert
| > |
| > | On 23.02.2010, at 18:32, Dale Henrichs wrote:
| > |
| > | > Norbert,
| > | >
| > | > Have you tried testing the RSRSS2 error handler. I have a
| feeling
| > | that your controller/handler might be structured differently than
| the
| > | RSRSS2 controller/handler.
| > | >
| > | > If the RSRSS2 fails then we need to look elsewhere. If it
| succeeds
| > | than the secret lies in the controller/handler code.
| > | >
| > | > Dale
| > | >
| > | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | >
| > | > | Ok,
| > | > |
| > | > | now I've shutdown the stone, copied a fresh
| extent0.seaside.dbf
| > | and
| > | > | started that. It is GLASS.230-dkh.176 (from a 2.3 install). I
| > | started
| > | > | FastCGI and added the HRTestHandler class. I get exactly the
| same
| > | > | error
| > | > |
| > | > | Internal Server Error:
| > | > | InterpreterError 2407: The object may not be committed,
| instances
| > | of
| > | > | its class are non-persistent.
| > | > |
| > | > | And you said that the error handling in RRRSShandler was
| working
| > | for
| > | > | you? Strange.
| > | > |
| > | > | Norbert
| > | > |
| > | > | On 23.02.2010, at 09:43, Norbert Hartl wrote:
| > | > |
| > | > | > I tested it on my online image and the behaviour is the
| same.
| > | Well,
| > | > | this is not too amazing because I always did the same updates
| and
| > | such
| > | > | on both sides. I have a gemstone 2.4 image on my harddisk.
| I'll
| > | give
| > | > | that a shot.
| > | > | >
| > | > | > Norbert
| > | > | >
| > | > | > On 23.02.2010, at 09:35, Norbert Hartl wrote:
| > | > | >
| > | > | >>
| > | > | >> On 23.02.2010, at 00:52, Dale Henrichs wrote:
| > | > | >>
| > | > | >>> Not that this will work for sure, but we should be doing
| any
| > | > | transactions during a Seaside request ... (I was brain dead
| > | before,
| > | > | sorry) ... you should just have the:
| > | > | >>>
| > | > | >>>  DebuggerLogEntry createContinuationLabeled: 'MTCE
| > | continuation'
| > | > | >>>
| > | > | >>> statement in the handler ... let's give that a try and
| see
| > | what's
| > | > | next...
| > | > | >>>
| > | > | >>>
| > | > | >> Dale,
| > | > | >>
| > | > | >> that doesn't help anything. I tried with only that
| statement.
| > | I
| > | > | changed to TestHandler to resemble the behaviour in
| RRRSHandler.
| > | It is
| > | > | just the same. Then I configured my system in order to use
| the
| > | FastCGI
| > | > | instead. No change! I get
| > | > | >> Internal Server Error:
| > | > | >> InterpreterError 2407: The object may not be committed,
| > | instances
| > | > | of its class are non-persistent.
| > | > | >>
| > | > | >> Then I configured RSS in a way that it works and I can
| access
| > | the
| > | > | feed. After it was working I introduced an error inside the
| > | PRDemo
| > | > | component. I get the same error. So it does not work for RSS
| > | either.
| > | > | >>
| > | > | >> I'll check the online image if it is the same there. If it
| > | doesn't
| > | > | work, too, I'll take a fresh extent and test it there.
| > | > | >>
| > | > | >> Norbert
| > | > | >>
| > | > | >>> ----- "Norbert Hartl" <[hidden email]> wrote:
| > | > | >>>
| > | > | >>> | Dale,
| > | > | >>> |
| > | > | >>> | as far as I can see there is no utilization of WASession
| if
| > | a
| > | > | >>> | WARequestHandler is being used. Without WAApplication
| there
| > | > | doesn't
| > | > | >>> | seem to be any session used. I entered some break
| points
| > | into
| > | > | the
| > | > | >>> | places where it should pass by if there would be a
| session
| > | > | usage. None
| > | > | >>> | of these is triggered. Now I saw that even the mutex
| used
| > | > | around
| > | > | >>> | handleRequest: is a TransientMutex.
| > | > | >>> |
| > | > | >>> | However I built a class
| > | > | >>> |
| > | > | >>> | WAEntryPoint subclass: 'HRTestHandler'
| > | > | >>> | instVarNames: #()
| > | > | >>> | classVars: #()
| > | > | >>> | classInstVars: #()
| > | > | >>> | poolDictionaries: #[]
| > | > | >>> | inDictionary: ''
| > | > | >>> | category: 'MyHandler-HTTP'
| > | > | >>> |
| > | > | >>> | HRTestHandler>>handleRequest: aRequest
| > | > | >>> | [ nil foobar ]
| > | > | >>> | on: Error, Halt, BreakpointNotification
| > | > | >>> | do: [:ex |
| > | > | >>> | System inTransaction
| > | > | >>> | ifTrue: [
| > | > | >>> |         DebuggerLogEntry createContinuationLabeled:
| > | 'MTCE
| > | > | >>> | continuation'.
| > | > | >>> |           System commitTransaction.
| > | > | >>> |           System beginTransaction ]
| > | > | >>> |         ifFalse: [
| > | > | >>> |           System beginTransaction.
| > | > | >>> |           DebuggerLogEntry
| createContinuationLabeled:
| > | 'MTCE
| > | > | >>> | continuation'.
| > | > | >>> |           System commitTransaction].
| > | > | >>> |       ex isResumable ifTrue: [ex resume]].
| > | > | >>> | ^ WAResponse new status: 500.
| > | > | >>> |
| > | > | >>> | HRTestHanlder class>>description
| > | > | >>> | ^'objectlog test'
| > | > | >>> |
| > | > | >>> | If I attach this via seaside config to a path. Then
| invoking
| > | the
| > | > | url
| > | > | >>> | gives me now
| > | > | >>> |
| > | > | >>> | topaz 1> topaz 1> Hyper Server started on port 9009
| > | > | >>> | --transcript--'Seaside default dispatcher enabled on
| path
| > | > | /seaside/'
| > | > | >>> | -----------------------------------------------------
| > | > | >>> | GemStone: Error         Nonfatal
| > | > | >>> | The object aProcessorScheduler may not be committed,
| > | instances
| > | > | of
| > | > | >>> | its class are non-persistent.
| > | > | >>> | Error Category: 231169 [GemStone] Number: 2407 Arg
| Count: 1
| > | > | Context :
| > | > | >>> | 539307521
| > | > | >>> | Arg 1: [539271169 sz:11 cls: 116481 ProcessorScheduler]
| a
| > | > | >>> | ProcessorScheduler
| > | > | >>> |   readyQueue      [539261697 sz:1 cls: 92929
| > | SortedCollection]
| > | > | a
| > | > | >>> | SortedCollection
| > | > | >>> |   activeProcess   [20 sz:0 cls: 76289 UndefinedObject]
| nil
| > | > | >>> |   lastGciProcess  [20 sz:0 cls: 76289 UndefinedObject]
| nil
| > | > | >>> |   delayQueue      [539260673 sz:2 cls: 92929
| > | SortedCollection]
| > | > | a
| > | > | >>> | SortedCollection
| > | > | >>> |   lastTimeMs      [20 sz:0 cls: 76289 UndefinedObject]
| nil
| > | > | >>> |   readDict        [539278081 sz:14 cls: 90881
| > | > | >>> | IdentityKeyValueDictionary] an
| IdentityKeyValueDictionary
| > | > | >>> |   writeDict       [539259649 sz:14 cls: 90881
| > | > | >>> | IdentityKeyValueDictionary] an
| IdentityKeyValueDictionary
| > | > | >>> |   suspendedDict   [539259137 sz:14 cls: 90881
| > | > | >>> | IdentityKeyValueDictionary] an
| IdentityKeyValueDictionary
| > | > | >>> |   waitingSet      [539258625 sz:5 cls: 73985
| IdentitySet]
| > | an
| > | > | >>> | IdentitySet
| > | > | >>> |   lastGroup       [10 sz:0 cls: 74241 SmallInteger] 1
| > | > | >>> |   errorEventQueue [20 sz:0 cls: 76289 UndefinedObject]
| nil
| > | > | >>> |
| > | > | >>> |
| > | > | >>> | Now executing the following command saved from "iferr
| 1":
| > | > | >>> |    where
| > | > | >>> | ==> 1 ExceptionA >> defaultAction @6 line 7   [GsMethod
| > | > | 11802113]
| > | > | >>> | 2 Error >> defaultAction @2 line 7   [GsMethod
| 11621121]
| > | > | >>> | 3 ExceptionA >> _defaultAction @1 line 3   [GsMethod
| > | 11804673]
| > | > | >>> | 4 ExceptionHandler >> outer @5 line 5   [GsMethod
| 10053889]
| > | > | >>> | 5 ExceptionA >> pass @1 line 11   [GsMethod 11801857]
| > | > | >>> | 6 HTTPConnection >> handleInternalServerException: @12
| line
| > | 13
| > | > |
| > | > | >>> | [GsMethod 243599873]
| > | > | >>> | 7 ComplexBlock in HTTPConnection >> internalErrorHandler
| @6
| > | line
| > | > | 6  
| > | > | >>> | [GsMethod 243599617]
| > | > | >>> | 8 ExceptionA >> valueHandler: @7 line 8   [GsMethod
| > | 11808257]
| > | > | >>> | 9 ComplexBlock in ExceptionHandler >> valueHandlerBlock
| @6
| > | line
| > | > | 5  
| > | > | >>> | [GsMethod 10057985]
| > | > | >>> | 10 ComplexBlock in ExecutableBlock >> ensure: @4 line 11
|  
| > | > | [GsMethod
| > | > | >>> | 2377473]
| > | > | >>> | 11 ComplexBlock in ExecutableBlock >> ensure: @6 line 11
|  
| > | > | [GsMethod
| > | > | >>> | 2377473]
| > | > | >>> | 12 ExceptionHandler >> valueHandlerBlock @10 line 6  
| > | [GsMethod
| > | > | >>> | 10057985]
| > | > | >>> | 13 ExceptionHandler >> caughtException @3 line 4  
| > | [GsMethod
| > | > | >>> | 10057473]
| > | > | >>> | 14 ExceptionHandler >> caughtEx:number:cat:args: @16
| line 19
| > |  
| > | > | >>> | [GsMethod 10054401]
| > | > | >>> | 15 ComplexBlock in ExceptionHandler >> try:on:in:do: @9
| line
| > | 9
| > | > |
| > | > | >>> | [GsMethod 10055169]
| > | > | >>> | 16 Exception >> _signal:number:args: @2 line 7  
| [GsMethod
| > | > | 2458369]
| > | > | >>> | 17 Exception >> resignal:number:args: @5 line 11  
| > | [GsMethod
| > | > | 2461953]
| > | > | >>> | 18 ExceptionA >> doResignal @13 line 12   [GsMethod
| > | 11804161]
| > | > | >>> | 19 ExceptionHandler >> caughtException @4 line 5  
| > | [GsMethod
| > | > | >>> | 10057473]
| > | > | >>> | 20 ExceptionHandler >> caughtEx:number:cat:args: @16
| line 19
| > |  
| > | > | >>> | [GsMethod 10054401]
| > | > | >>> | 21 ComplexBlock in ExceptionHandler >> try:on:in:do: @9
| line
| > | 9
| > | > |
| > | > | >>> | [GsMethod 10055169]
| > | > | >>> | 22 Exception >> _signal:number:args: @2 line 7  
| [GsMethod
| > | > | 2458369]
| > | > | >>> | 23 Exception >> resignal:number:args: @5 line 11  
| > | [GsMethod
| > | > | 2461953]
| > | > | >>> | 24 ExceptionA >> doResignal @13 line 12   [GsMethod
| > | 11804161]
| > | > | >>> | 25 ExceptionHandler >> caughtException @4 line 5  
| > | [GsMethod
| > | > | >>> | 10057473]
| > | > | >>> | 26 ExceptionHandler >> caughtEx:number:cat:args: @16
| line 19
| > |  
| > | > | >>> | [GsMethod 10054401]
| > | > | >>> | 27 ComplexBlock in ExceptionHandler >> try:on:in:do: @9
| line
| > | 9
| > | > |
| > | > | >>> | [GsMethod 10055169]
| > | > | >>> | 28 Object >> _gsReturnTos @1 line 1   [GsMethod
| 1894401]
| > | > | >>> | 29 System class >> __commit: @1 line 8   [GsMethod
| 2732545]
| > | > | >>> | 30 System class >> _localCommit: @8 line 30   [GsMethod
| > | > | 2732801]
| > | > | >>> | 31 TransactionBoundaryDefaultPolicy >> commit: @2 line 3
|  
| > | > | [GsMethod
| > | > | >>> | 7711233]
| > | > | >>> | 32 System class >> _commit: @6 line 16   [GsMethod
| 2733313]
| > | > | >>> | 33 System class >> commitTransaction @2 line 28  
| [GsMethod
| > | > | 2720513]
| > | > | >>> | 34 SimpleBlock in HRTestHandler >> handleRequest: @9
| line 8
| > |
| > | > | >>> | [GsMethod 536737537]
| > | > | >>> | 35 ExceptionA >> valueHandler: @7 line 8   [GsMethod
| > | 11808257]
| > | > | >>> | 36 ComplexBlock in ExceptionHandler >> valueHandlerBlock
| @6
| > | line
| > | > | 5  
| > | > | >>> | [GsMethod 10057985]
| > | > | >>> | 37 ComplexBlock in ExecutableBlock >> ensure: @4 line 11
|  
| > | > | [GsMethod
| > | > | >>> | 2377473]
| > | > | >>> | 38 ComplexBlock in ExecutableBlock >> ensure: @6 line 11
|  
| > | > | [GsMethod
| > | > | >>> | 2377473]
| > | > | >>> | 39 ExceptionHandler >> valueHandlerBlock @10 line 6  
| > | [GsMethod
| > | > | >>> | 10057985]
| > | > | >>> | 40 ExceptionHandler >> caughtException @3 line 4  
| > | [GsMethod
| > | > | >>> | 10057473]
| > | > | >>> | 41 ExceptionHandler >> caughtEx:number:cat:args: @16
| line 19
| > |  
| > | > | >>> | [GsMethod 10054401]
| > | > | >>> | 42 ComplexBlock in ExceptionHandler >> try:on:in:do: @9
| line
| > | 9
| > | > |
| > | > | >>> | [GsMethod 10055169]
| > | > | >>> | 43 Exception >> _signal:number:args: @2 line 7  
| [GsMethod
| > | > | 2458369]
| > | > | >>> | 44 System class >> signal:args:signalDictionary: @5 line
| 13
| > |
| > | > | >>> | [GsMethod 2749697]
| > | > | >>> | 45 Object >> doesNotUnderstand: @6 line 14   [GsMethod
| > | 1925889]
| > | > | >>> | 46 Object >> _doesNotUnderstand: @1 line 6   [GsMethod
| > | 1939201]
| > | > | >>> | 47 SimpleBlock in HRTestHandler >> handleRequest: @2
| line 2
| > |
| > | > | >>> | [GsMethod 536737537]
| > | > | >>> | 48 ExceptionHandler >> try:on:in:do: @13 line 13  
| > | [GsMethod
| > | > | >>> | 10055169]
| > | > | >>> | 49 ExceptionSet >> try:on:do: @2 line 4   [GsMethod
| > | 10850561]
| > | > | >>> | 50 SimpleBlock in ExecutableBlock >> on:do: @2 line 8  
| > | > | [GsMethod
| > | > | >>> | 2378497]
| > | > | >>> | 51 HRTestHandler >> handleRequest: @17 line 3  
| [GsMethod
| > | > | 536737537]
| > | > | >>> | 52 WADispatcher >> handleRequest: @7 line 5   [GsMethod
| > | > | 66289921]
| > | > | >>> | 53 ComplexBlock in SeasideHTTPService >>
| > | answerToCheckingLock:
| > | > | @23
| > | > | >>> | line 12   [GsMethod 468698625]
| > | > | >>> | 54 ExceptionHandler >> try:on:in:do: @13 line 13  
| > | [GsMethod
| > | > | >>> | 10055169]
| > | > | >>> | 55 ExceptionSet >> try:on:do: @2 line 4   [GsMethod
| > | 10850561]
| > | > | >>> | 56 ComplexBlock in ExecutableBlock >> on:do: @2 line 8
|
| > | > | [GsMethod
| > | > | >>> | 2378497]
| > | > | >>> | 57 ComplexVCBlock in SeasideHTTPService >>
| > | answerToCheckingLock:
| > | > | @29
| > | > | >>> | line 13   [GsMethod 468698625]
| > | > | >>> | 58 ComplexBlock in ExecutableBlock >> ensure: @4 line 11
|  
| > | > | [GsMethod
| > | > | >>> | 2377473]
| > | > | >>> | 59 ComplexVCBlock in ExecutableBlock >> ensure: @6 line
| 11
| > |
| > | > | [GsMethod
| > | > | >>> | 2377473]
| > | > | >>> | 60 TransientRecursionLock >> critical: @15 line 8  
| > | [GsMethod
| > | > | >>> | 19814657]
| > | > | >>> | 61 SeasideHTTPService >> answerToCheckingLock: @60 line
| 6  
| > | > | [GsMethod
| > | > | >>> | 468698625]
| > | > | >>> | 62 SeasideHTTPService >> process: @3 line 6   [GsMethod
| > | > | 233903105]
| > | > | >>> | 63 ComplexBlock in SeasideHTTPService >> start @4 line 5
|  
| > | > | [GsMethod
| > | > | >>> | 233923073]
| > | > | >>> | 64 HTTPRequest >> respondUsing: @1 line 5   [GsMethod
| > | > | 233382913]
| > | > | >>> | 65 HTTPServer >> answerTo: @6 line 7   [GsMethod
| 243810049]
| > | > | >>> | 66 ComplexBlock in HTTPConnection >> produceResponseFor:
| @8
| > | line
| > | > | 9  
| > | > | >>> | [GsMethod 243599105]
| > | > | >>> | 67 ExceptionHandler >> try:on:in:do: @13 line 13  
| > | [GsMethod
| > | > | >>> | 10055169]
| > | > | >>> | 68 ExceptionA class >> try:on:do: @2 line 4   [GsMethod
| > | > | 12016897]
| > | > | >>> | 69 ComplexBlock in ExecutableBlock >> on:do: @2 line 8
|
| > | > | [GsMethod
| > | > | >>> | 2378497]
| > | > | >>> | 70 SpExceptionContext class >> for:onAnyErrorDo: @2 line
| 6
| > |
| > | > | [GsMethod
| > | > | >>> | 26609665]
| > | > | >>> | 71 HTTPConnection >> produceResponseFor: @13 line 11  
| > | > | [GsMethod
| > | > | >>> | 243599105]
| > | > | >>> | 72 HTTPConnection >> getAndDispatchMessages @9 line 14
|
| > | > | [GsMethod
| > | > | >>> | 243597825]
| > | > | >>> | 73 ComplexBlock in OSkSocketInboundConnection >>
| interact
| > | @3
| > | > | line 6  
| > | > | >>> | [GsMethod 243589377]
| > | > | >>> | 74 ComplexBlock in ExecutableBlock >> ensure: @4 line 11
|  
| > | > | [GsMethod
| > | > | >>> | 2377473]
| > | > | >>> | 75 ComplexBlock in ExecutableBlock >> ensure: @6 line 11
|  
| > | > | [GsMethod
| > | > | >>> | 2377473]
| > | > | >>> | 76 OSkSocketInboundConnection >> interact @7 line 7  
| > | [GsMethod
| > | > | >>> | 243589377]
| > | > | >>> | 77 OSkSocketListenerService >>
| handleInboundConnectionOn:
| > | @8
| > | > | line 10  
| > | > | >>> | [GsMethod 243799809]
| > | > | >>> | 78 ComplexBlock in OSkSocketListenerService >>
| > | > | >>> | acceptInboundConnections @12 line 15   [GsMethod
| 243801601]
| > | > | >>> | 79 GsProcess >> _startPart2 @13 line 17   [GsMethod
| > | 2493441]
| > | > | >>> | 80 GsProcess >> _start @1 line 9   [GsMethod 2480385]
| > | > | >>> |   [GsProcess 539307521]
| > | > | >>> | topaz 1> [268 sz:0 cls: 68097 Boolean] true
| > | > | >>> | topaz 1>
| > | > | >>> | [Info]: Logging out at 02/23/10 00:18:45 CET
| > | > | >>> |
| > | > | >>> |
| > | > | >>> | Hope this helps anything
| > | > | >>> |
| > | > | >>> | Norbert
| > | > | >>> |
| > | > | >>> |
| > | > | >>> | On 22.02.2010, at 23:15, Dale Henrichs wrote:
| > | > | >>> |
| > | > | >>> | > Norbert,
| > | > | >>> | >
| > | > | >>> | > Okay. I assume that you are still using a WASession to
| do
| > | your
| > | > | work
| > | > | >>> | and that means that
| WAProcessMonitor>>critical:for:ifError:
| > | is
| > | > | on the
| > | > | >>> | stack.
| > | > | >>> | >
| > | > | >>> | > If it is, then we should be able to arrange to build
| an
| > | > | errorHandler
| > | > | >>> | that doesn't use a component and stashes the
| continuation
| > | into
| > | > | the
| > | > | >>> | object log. If isn't on the stack, then I'd be
| interested
| > | to
| > | > | know
| > | > | >>> | which WAProcessMonitor method is on the stack ...
| > | > | >>> | WAProcessMonitor>>critical:for:ifError: was built to
| avoid
| > | some
| > | > | of the
| > | > | >>> | issues with persistent Semaphores.
| > | > | >>> | >
| > | > | >>> | > Assuming that all we need is an errorHandler, you are
| > | going
| > | > | to
| > | > | >>> | create a new subclass of WAErrorHandler and in the
| > | handleError:
| > | > | method
| > | > | >>> | put the DebuggerLogEntry:
| > | > | >>> | >
| > | > | >>> | >  DebuggerLogEntry createContinuationLabeled: 'http
| > | > | continuation'.
| > | > | >>> | >
| > | > | >>> | > and arrange to return a response of some kind ...
| when
| > | the
| > | > | response
| > | > | >>> | is returned, the commit will be performed.
| > | > | >>> | >
| > | > | >>> | > If WAProcessMonitor>>critical:for:ifError: isn't on
| the
| > | stack,
| > | > | I'm
| > | > | >>> | curious where you are hooking into the request
| handling...
| > | > | >>> | >
| > | > | >>> | > Dale
| > | > | >>> | >
| > | > | >>> | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | > | >>> | >
| > | > | >>> | > | I'm working on my .231 image with seaside 2.8.
| > | > | >>> | > |
| > | > | >>> | > | Norbert
| > | > | >>> | > |
| > | > | >>> | > | On 22.02.2010, at 22:04, Dale Henrichs wrote:
| > | > | >>> | > |
| > | > | >>> | > | > Norbert,
| > | > | >>> | > | >
| > | > | >>> | > | > Are you working in SEaside 3.0 or Seaside 2.8...
| > | > | >>> | > | >
| > | > | >>> | > | > Dale
| > | > | >>> | > | > ----- "Norbert Hartl" <[hidden email]> wrote:
| > | > | >>> | > | >
| > | > | >>> | > | > | Hi,
| > | > | >>> | > | > |
| > | > | >>> | > | > | at the moment I'm doing some web api stuff with
| > | seaside
| > | > | and
| > | > | >>> | > | gemstone.
| > | > | >>> | > | > | I have only a request handler and no component
| or
| > | the
| > | > | like. I
| > | > | >>> | like
| > | > | >>> | > | to
| > | > | >>> | > | > | to have the same behaviour that WAGsWalkback is
| > | doing.
| > | > | Is
| > | > | >>> | there a
| > | > | >>> | > | > | utility that does continuation creation and
| storing
| > | > | with
| > | > | >>> | having
| > | > | >>> | > | the
| > | > | >>> | > | > | need for a WAComponent?
| > | > | >>> | > | > | thanks,
| > | > | >>> | > | > |
| > | > | >>> | > | > | Norbert
| > | > | >>
| > | > | >
12