[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 11:01:22 PST 2017


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20170126/0225bec7/attachment.html>


More information about the Glass mailing list