[Glass] Migrating from 3.2.9 to 3.3.3 block compilation issue

Mariano Martinez Peck via Glass glass at lists.gemtalksystems.com
Thu Jan 26 12:48:28 PST 2017


Some more info...

The exact upgareStone I used was:

upgradeStoneName="${sourceStoneName}_333"
$GS_HOME/bin/upgradeStone -f -U "$stoneUsername" -P "$stonePass"
"$sourceStoneName" "$upgradeStoneName" 3.3.3

Note that I KNOW I must recompile all methods, that's what I tried to do,
but when trying to do so, I get to that error. Maybe I just need to do a
few #recompileAllMethods to a concrete number of classes ? (like
MCRepositoryGroup)
What I don't understand is why `upgradeStone` did not recompile those
automatically. Shouldn't that had happened?

Thanks in advance


On Thu, Jan 26, 2017 at 4:01 PM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:

> Hi guys,
>
> I am migrating some stones (tODE and GsDevKit based) that are on GemStone
> 3.2.9 to 3.3.3. I am doing this with the `upgradeStone` gsDevKit command.
>
> I first hit one problem when trying to execute this code via topaz:
>
> MCRepositoryGroup default removeRepository: (MCHttpRepository
>                         location: 'xxx'
>                         user: ''
>                         password: '').
>
>
>
>
> *ERROR 2142 , a ImproperOperation occurred (error 2142), Cannot execute
> method, 'method needs recompile, MCRepositoryGroup class >> default , oop
> 206736385' (ImproperOperation)*
>
> Then, I said...ok, let's connect with tODE and investigate some more (like
> doing Object _objectForOop: 206736385). But when I try to connect with tODE
> I get:
>
>
> *Error running testLogin:*
>
> *'Error: Unable to log into server:a ImproperOperation occurred (error
> 2142), Cannot execute method, ''method needs recompile, TDTopezServer class
> >> createFor: , oop 245949953''with: ''TDTopezServer createFor: 1'''*
>
> * NOTE: netldi log can be found in the file:
> '$GS_HOME/server/stones/<stone-name>/logs/netldi.log'.*
>
>
>
> So...looks like I have methods to be recompiled everywhere. I saw this
> issue [1] but that does not seem to help as these closures are not in
> sorted collections right ?
>
> Now, manually fixing each, like this:
>
>  | sc sortBlock val cls str val |
>   sc := "sortedcollection instance".
>   sortBlock := sc sortBlock.
>   str := sortBlock _sourceString.
>   val := str evaluate.
>   sc _sortBlock: val
>
> Is a pain...because I must know how to re-assign the new compiled method.
> Is there an alternative GENERIC solution to recompile all needed ones? I
> can think of that but using #become:
>
>
> System commit.
>   [
>   MCPlatformSupport installAlmostOutOfMemoryStaticHandler: 75.
>   ExecBlock allSubInstances do: [:each |
> each become: each _sourceString evaluate.
> ].
> ]
>   ensure: [ MCPlatformSupport uninstallAlmostOutOfMemoryStaticHandler ].
> System commit.
>
> But...comment of #become: says that BlockClosure instances cannot be
> become...BUUUUUUH.
>
> So.. any idea?
>
> Thanks in advance,
>
> [1] https://github.com/GsDevKit/GsDevKit_home/issues/70
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>



-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20170126/9517df1c/attachment.html>


More information about the Glass mailing list