<div dir="ltr"><div>Otto,</div><div><br></div><div>This was a head scratcher for a minute, but then I remembered that when you encounter an undefined Global in GLASS, the reference is replaces by a Set that references all of the methods(?) that contain a reference to the class ... the Set is magically used when the new class gets defined and the referencing methods are recompiled ... so you've either got a case where WARetryHttpRequest was undefined and if it has been defined in your image, then the magical methods didn't get run correctly ... If WARetryHttpRequest is present (most likely)  recompiling that method should fix the problem ... and inspecting the Set from the debugger should give you references to the rest of the methods that reference WARetryHttpRequest ...<br></div><div><br></div><div>I've run out of time and have head to dinner right now ... let me know if you were able to repair things ... there is a undefined globals test somewhere that should give you some hints about the magic ... I'm out of time ... sorry ...</div><div><br></div><div>Dale<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 3, 2022 at 11:56 PM Otto Behrens via Glass <<a href="mailto:glass@lists.gemtalksystems.com">glass@lists.gemtalksystems.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi,<br></div><div><br></div><div>I'm getting an MNU error SafelyPerformBlockRequiringAbort class does not understand  #'do:' when I try to process a seaside request.</div><div><br></div><div>I'm building a GemStone 3.6.5 database starting with GemStone64Bit3.6.5-x86_64.Linux/bin/extent0.seaside.dbf and then loading all our Seaside / Magritte / Zinc stuff in there. The versions that we are loading are not the same as what is shipped in that seaside.dbf, some of it may be older.</div><div><br></div><div>Perhaps someone out there has seen this and can point me in the right direction? More details below:</div><div><br></div><div><div>If I look at the code, it is the call to #, that triggers it (more source code below):</div><div>      [ result := resultBlock value: aNativeRequest ]<br>        on: WARetryHttpRequest , SafelyPerformBlockRequiringAbort<br>        do: [ :ex | <br></div><div><br></div><div>SafelyPerformBlockRequiringAbort is a notification, that should be something that one can list in the exception handler, I think.</div><div><br></div><div>a MessageNotUnderstood occurred (error 2010), a SafelyPerformBlockRequiringAbort class does not understand  #'do:'<br>1 GRGemStonePlatform >> logError:title:shouldCommit: @2 line 6  [GsNMethod 62714625]<br>2 GRGemStonePlatform >> logError:title: @2 line 3  [GsNMethod 61628417]<br>3 WAGsZincAdaptor >> internalServerErrorMessage: @16 line 14  [GsNMethod 165070593]<br>4 [] in GRGemStonePlatform >> seasideProcessRequest:adaptor:resultBlock: @31 line 15  [GsNMethod 163916289]<br>5 MessageNotUnderstood (AbstractException) >> _executeHandler: @7 line 11  [GsNMethod 3780353]<br>6 MessageNotUnderstood (AbstractException) >> _signalWith: @1 line 2  [GsNMethod 3771905]<br>7 MessageNotUnderstood (AbstractException) >> signal @2 line 47  [GsNMethod 3784193]<br>8 SafelyPerformBlockRequiringAbort class (Object) >> doesNotUnderstand: @9 line 10  [GsNMethod 6476545]<br>9 SafelyPerformBlockRequiringAbort class (Object) >> _doesNotUnderstand:args:envId:reason: @8 line 14  [GsNMethod 6432001]<br>10 SafelyPerformBlockRequiringAbort class (Object) >> accompaniedBy:do: @2 line 6  [GsNMethod 5462017]<br>11 Set (Collection) >> addAll: @7 line 7  [GsNMethod 3491073]<br>12 Set (UnorderedCollection) >> , @4 line 5  [GsNMethod 47934209]<br>13 [] in GRGemStonePlatform >> seasideProcessRequestWithRetry:resultBlock: @15 line 13  [GsNMethod 163915777]<br>14 ExecBlock0 (ExecBlock) >> ensure: @2 line 12  [GsNMethod 5925633]<br>15 TransientRecursionLock >> critical: @11 line 12  [GsNMethod 41372417]<br>16 GRGemStonePlatform >> seasideProcessRequestWithRetry:resultBlock: @3 line 6  [GsNMethod 147897857]<br>17 [] in GRGemStonePlatform >> seasideProcessRequest:adaptor:resultBlock: @17 line 6  [GsNMethod 199570945]<br>18 Array (Collection) >> do: @5 line 10  [GsNMethod 3489793]<br>19 [] in GRGemStonePlatform >> seasideProcessRequest:adaptor:resultBlock: @7 line 5  [GsNMethod 163916545]<br>20 ExecBlock0 (ExecBlock) >> on:do: @3 line 44  [GsNMethod 5913601]<br>21 GRGemStonePlatform >> seasideProcessRequest:adaptor:resultBlock: @2 line 12  [GsNMethod 147898113]<br>22 WAGsZincAdaptor >> process: @3 line 4  [GsNMethod 165070849]<br>23 ZnSeasideServerAdaptorDelegate >> handleRequest: @3 line 4  [GsNMethod 166077697]<br></div><div><br></div><div>seasideProcessRequestWithRetry: aNativeRequest resultBlock: resultBlock<br>  "answer nil to retry request"<br><br>  | result retryRequest retryException |<br>  self transactionMutex<br>    critical: [<br>      System inTransaction<br>        ifTrue: [ self doAbortTransaction ]<br>        ifFalse: [ self doBeginTransaction ].<br>      retryRequest := false.<br>      System _sessionCacheStatAt: 0 put: (System _sessionCacheStatAt: 0) + 1. "requests received"<br>      [ result := resultBlock value: aNativeRequest ]<br>        on: WARetryHttpRequest , SafelyPerformBlockRequiringAbort<br>        do: [ :ex |<br>          retryRequest := true.<br>          retryException := ex ].<br>self transactionMutex privateLockingProcess: Processor activeProcess.<br>      retryRequest<br>        ifTrue: [<br>          (retryException isKindOf: SafelyPerformBlockRequiringAbort)<br>            ifTrue: [<br>              "Abort and start a transaction"<br>              self doBeginTransaction.<br>              retryException block value: true. "block is expected to do it's own commit, but make sure we've left transaction mode"<br>              self doAbortTransaction ]<br>            ifFalse: [<br>              "lock not acquired - unwind the stack to this point and leave transaction mode"<br>              self doAbortTransaction "self<br>saveLogEntry: (WAObjectLogEntry trace: retryException logMessage request: aNativeRequest object: retryException description)<br>shouldCommit: true" ].<br>          ^ nil "retry request" ].<br>      self doCommitTransaction<br>        ifFalse: [<br>          | conflicts |<br>          conflicts := System transactionConflicts.<br>          self doAbortTransaction.<br>          self<br>            saveLogEntry:<br>              (WAObjectLogEntry<br>                warn: 'Commit failure - retrying'<br>                request: aNativeRequest url<br>                object: conflicts)<br>            shouldCommit: true.<br>          ^ nil "retry request" ].<br>      System _sessionCacheStatAt: 1 put: (System _sessionCacheStatAt: 1) + 1 "requests processed (successful)" ].<br>  ^ result</div></div><div><br></div><div>Thanks</div><br clear="all"><div><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><table style="color:rgb(0,0,0);font-family:Times;font-size:medium" width="600" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td width="400" valign="bottom"><p style="margin:0px;padding:0px"><span style="font-size:18px;color:rgb(146,148,151);font-family:Calibri,sans-serif;font-weight:700">Otto Behrens</span><br></p><p style="font-size:18px;font-weight:700;color:rgb(146,148,151);font-family:Calibri,sans-serif;margin:0px;padding:0px"><span style="font-size:14px;font-weight:300;margin:0px;padding:0px">+27 82 809 2375</span></p></td><td width="200" valign="middle"><img src="https://www.finworks.biz/signature/finworks-signature-logo.png" alt="FINWorks" style="display: block; border: 0px none; width: 200px; height: 38px; margin: 0px; padding: 0px;" width="200" height="38"></td></tr></tbody></table><table style="color:rgb(0,0,0);font-family:Times;font-size:medium" width="600" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td height="5"></td></tr></tbody></table><table style="color:rgb(0,0,0);font-family:Times;font-size:medium;border-bottom:1px solid rgb(200,28,36)" width="600" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td height="15"></td></tr></tbody></table><table style="color:rgb(0,0,0);font-family:Times;font-size:medium" width="600" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td height="20"></td></tr></tbody></table><table style="color:rgb(0,0,0);font-family:Times;font-size:medium" width="600" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td style="display:inline-block" width="15" valign="top"><a href="http://za.linkedin.com/in/waltherbehrens" style="color:rgb(17,85,204)" target="_blank"><img src="https://www.finworks.biz/signature/finworks-linkedin-logo.png" alt="FINWorks" style="display: inline-block; border: 0px none; width: 15px; height: 15px; margin-top: 1.5px; padding: 0px;" width="15" height="15"></a></td><td style="display:inline-block" width="250" valign="top"><a href="http://www.finworks.biz/" style="color:rgb(200,28,36);font-family:Calibri,sans-serif;margin-left:10px;margin-top:0px;padding-top:0px;font-size:11pt;display:inline-block" target="_blank">www.finworks.biz</a></td></tr></tbody></table><table style="color:rgb(0,0,0);font-family:Times;font-size:medium" width="600" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td height="10"></td></tr></tbody></table><table style="color:rgb(0,0,0);font-family:Times;font-size:medium" width="600" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td><p style="font-size:10px;color:rgb(146,148,151);font-family:Calibri,sans-serif;text-align:justify">Disclaimer & Confidentiality Note: This email is intended solely for the use of the individual or entity named above as it may contain information that is confidential and privileged. If you are not the intended recipient, be advised that any dissemination, distribution or copying of this email is strictly prohibited. FINWorks cannot be held liable by any person other than the addressee in respect of any opinions, conclusions, advice or other information contained in this email.</p></td></tr></tbody></table></div></div></div></div></div></div>
_______________________________________________<br>
Glass mailing list<br>
<a href="mailto:Glass@lists.gemtalksystems.com" target="_blank">Glass@lists.gemtalksystems.com</a><br>
<a href="https://lists.gemtalksystems.com/mailman/listinfo/glass" rel="noreferrer" target="_blank">https://lists.gemtalksystems.com/mailman/listinfo/glass</a><br>
</blockquote></div>