[Glass] Debugging a multiple process system ... ?
Dale Henrichs via Glass
glass at lists.gemtalksystems.com
Thu Mar 15 07:18:19 PDT 2018
Marten,
If you supply some stacks for the strange errors it is possible that we
could diagnose and fix the issue ...
Dale
On 03/15/2018 01:09 AM, Marten Feldtmann wrote:
>
> Hey,
>
> I actually removed the code from our production code ... I got strange
> errors with external references and this broke my application
>
> Marten
>
>> Mariano Martinez Peck <marianopeck at gmail.com> hat am 23. Januar 2018
>> um 13:30 geschrieben:
>>
>>
>> On Tue, Jan 23, 2018 at 5:33 AM, Marten Feldtmann via Glass
>> <glass at lists.gemtalksystems.com
>> <mailto:glass at lists.gemtalksystems.com>> wrote:
>>
>> Thank you to all answers ...
>>
>>
>>
>> No problem. Just let us know if it worked ;)
>>
>>
>>
>>
>>> Dale Henrichs via Glass < glass at lists.gemtalksystems.com
>>> <mailto:glass at lists.gemtalksystems.com>> hat am 23. Januar 2018
>>> um 00:07 geschrieben:
>>>
>>> https://github.com/SeasideSt/Seaside/blob/master/repository/Seaside-GemStone-Environment.package/GRGemStonePlatform.extension/instance/canDebugInteractively.st
>>> <https://github.com/SeasideSt/Seaside/blob/master/repository/Seaside-GemStone-Environment.package/GRGemStonePlatform.extension/instance/canDebugInteractively.st>
>>>
>>>
>>> On 01/22/2018 12:54 PM, Marten Feldtmann via Glass wrote:
>>>>
>>>> Do you have the implementation of #canDebugInteractively ?
>>>>
>>>> Marten
>>>>
>>>>
>>>>> Mariano Martinez Peck <marianopeck at gmail.com>
>>>>> <mailto:marianopeck at gmail.com> hat am 22. Januar 2018 um 19:30
>>>>> geschrieben:
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Jan 22, 2018 at 3:14 PM, Marten Feldtmann via Glass <
>>>>> glass at lists.gemtalksystems.com
>>>>> <mailto:glass at lists.gemtalksystems.com> > wrote:
>>>>>
>>>>> Hmm,
>>>>>
>>>>> honestly I simply do not understand how this works :-(((((
>>>>>
>>>>> If I have an exception within my REST API calls I normally
>>>>> have to abort the transaction, so that nothing has changed
>>>>> ... therefore how can I save a continuation into the
>>>>> database ??
>>>>>
>>>>> Its a shame I know, but I simply do not get it ...
>>>>>
>>>>>
>>>>> It's not a shame. I think the word "continuation" has been
>>>>> confusing since several years already. And I think its
>>>>> confusing because of its association with Seaside and the back
>>>>> button etc.
>>>>> Let's talk about what it is for GemStone (well, at least what
>>>>> I understand from it):
>>>>>
>>>>> When an exception is signaled, and you read to an exception
>>>>> handler, from the exception you can get the signaler context,
>>>>> right? That means that somehow you have access the the stack
>>>>> that triggered that error (stack of method context
>>>>> instances). As far as I understand, the # callCC does
>>>>> something *like* a deep copy of the stack. Its not a full 100%
>>>>> deep copy as you might end up copying the whole extent. I
>>>>> guess there is a treshold somewhere.
>>>>>
>>>>> Once the continuation has been created (imageine you now have
>>>>> a kind of a deep copy of the stack), then you are able to
>>>>> persist it as any other persistent object. The object log is
>>>>> just one persistent object that makes it easy to store this
>>>>> but it could be anywhere.
>>>>>
>>>>> Then, you can simply open a debugger on a persisted continuation.
>>>>>
>>>>> So... I imagine you can do something like this:
>>>>>
>>>>>
>>>>>
>>>>> [
>>>>>
>>>>> " Your rest code here"
>>>>> ]
>>>>> on: Error do: [ :ex |
>>>>>
>>>>> System abortTransaction.
>>>>> Sytem beginTransaction.
>>>>> FaSmalltalkPlatform current saveExceptionContinuation: ex.
>>>>> System commitTransaction.
>>>>> ]
>>>>>
>>>>>
>>>>>
>>>>> Hope this is clearer...if not let me know. And maybe GemStone
>>>>> people may have something to correct from what I said.
>>>>>
>>>>>
>>>>> Best,
>>>>>
>>>>>
>>>>>
>>>>>> Mariano Martinez Peck via Glass <
>>>>>> glass at lists.gemtalksystems.com
>>>>>> <mailto:glass at lists.gemtalksystems.com> > hat am 22.
>>>>>> Januar 2018 um 13:05 geschrieben:
>>>>>>
>>>>>>
>>>>>> On Sun, Jan 21, 2018 at 1:35 PM, Dale Henrichs via Glass
>>>>>> < glass at lists.gemtalksystems.com
>>>>>> <mailto:glass at lists.gemtalksystems.com> > wrote:
>>>>>>
>>>>>> Marten,
>>>>>>
>>>>>> Did you know that you should be able to open a
>>>>>> debugger on a continuation - it is possible with tODE
>>>>>> and GemTools. I think that most folks find this a
>>>>>> reasonable solution.
>>>>>>
>>>>>>
>>>>>> That's what I do. I do it at Seaside error handler as
>>>>>> well as in some other error handlers (like background jobs).
>>>>>>
>>>>>> What I do is basically:
>>>>>>
>>>>>> -----
>>>>>>
>>>>>> [ self codeThatCouldTriggerErrorAndIW
>>>>>> antToSaveAContinuationForLater Debugging ]
>>>>>> on: Error do: [ :ex |
>>>>>>
>>>>>> FaSmalltalkPlatform current saveExceptionContinuation:
>>>>>> exception.
>>>>>> ]
>>>>>>
>>>>>> ----
>>>>>>
>>>>>> FaGemStonePlatform class >> saveExceptionContinuation:
>>>>>> anException
>>>>>> | continuation action |
>>>>>> GRPlatform current canDebugInteractively
>>>>>> ifTrue: [ anException pass ].
>>>>>> GRPlatform current
>>>>>> logError: anException description
>>>>>> title: 'Continuation saved to object log'.
>>>>>> action := [ :cont |
>>>>>> continuation := cont.
>>>>>> #'create' ] callCC.
>>>>>> action == #'create'
>>>>>> ifTrue: [
>>>>>> | logEntry |
>>>>>> logEntry := WAObjectLogEntry
>>>>>> error: anException description
>>>>>> continuation: continuation. "the continuation is not
>>>>>> resumable"
>>>>>> logEntry resumeContinuation.
>>>>>> logEntry addToLog.
>>>>>> ^ continuation ].
>>>>>> action == #'debug'
>>>>>> ifTrue: [ self halt ]
>>>>>>
>>>>>>
>>>>>> That uses Grease which I would expect you have it loaded.
>>>>>> WAObjectLogEntry is from Seaside but it's a very stupid
>>>>>> subclass. so if you are not using Seaside you could just
>>>>>> copy that class and give it whatever name and put it in
>>>>>> your code.
>>>>>>
>>>>>> Once the continuation has been created and stored in the
>>>>>> ObjectLog all you have to do is to connect with tODE and
>>>>>> open a debugger on it.
>>>>>>
>>>>>> BTW, be sure to cleanup the object log as continuations
>>>>>> are heavy: http://ws.stfx.eu/2LSEXBAMZT23
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Mariano
>>>>>> http://marianopeck.wordpress.com
>>>>>> <http://marianopeck.wordpress.com>
>>>>>> _______________________________________________
>>>>>> Glass mailing list
>>>>>> Glass at lists.gemtalksystems.com
>>>>>> <mailto:Glass at lists.gemtalksystems.com>
>>>>>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>>>>> <http://lists.gemtalksystems.com/mailman/listinfo/glass>
>>>>>
>>>>> ______________________________ _________________
>>>>> Glass mailing list
>>>>> Glass at lists.gemtalksystems.com
>>>>> <mailto:Glass at lists.gemtalksystems.com>
>>>>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>>>> <http://lists.gemtalksystems.com/mailman/listinfo/glass>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Mariano
>>>>> http://marianopeck.wordpress.com
>>>>> <http://marianopeck.wordpress.com>
>>>>
>>>>
>>>> _______________________________________________
>>>> Glass mailing list
>>>> Glass at lists.gemtalksystems.com
>>>> <mailto:Glass at lists.gemtalksystems.com>
>>>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>>> <http://lists.gemtalksystems.com/mailman/listinfo/glass>
>>>
>>
>>> ______________________________ _________________
>>> Glass mailing list
>>> Glass at lists.gemtalksystems.com
>>> <mailto:Glass at lists.gemtalksystems.com>
>>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>> <http://lists.gemtalksystems.com/mailman/listinfo/glass>
>>
>>
>> ______________________________ _________________
>> Glass mailing list
>> Glass at lists.gemtalksystems.com
>> <mailto:Glass at lists.gemtalksystems.com>
>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>> <http://lists.gemtalksystems.com/mailman/listinfo/glass>
>>
>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20180315/eeece987/attachment-0001.html>
More information about the Glass
mailing list