FLMethodChanged: Materialization error. Method DmQuartalsplan>>#initialize: changed its bytecodes.

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

FLMethodChanged: Materialization error. Method DmQuartalsplan>>#initialize: changed its bytecodes.

jb
Hi,

I am trying to port a pharo2 application to pharo4. Therefore I have to migrate some fuel files from version 1.9 to 1.9.4. I've done this using the script shown in the EnterprisePharo Book in my pharo2 image, no problem.
But trying to load the migrated fuel file into my pharo4 image I get the error message shown above. The source code of the initialize methods is the same in both images, of course. But the byte codes differ:

Pharo2:
37 <70> self
38 <42> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0 numArgs: 2 bytes 43 to 50


Pharo4:
37 <70> self
38 <40> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0


What can I do?
Johannes

Reply | Threaded
Open this post in threaded view
|

Re: FLMethodChanged: Materialization error. Method DmQuartalsplan>>#initialize: changed its bytecodes.

Mariano Martinez Peck
HI Johannes,

Could I see the source of the DmQuartalsplan>>#initialize:  ? 

I think I workaround may be to do a Fuel replacement to replace the sortedCollection with an OrderedCollection and then a post initialize method. 
But again, probably seeing if the closure of the sorted collection is clean or not may have different behaviors.

Cheers, 



On Mon, Mar 21, 2016 at 3:09 PM, Johannes Brauer <[hidden email]> wrote:
Hi,

I am trying to port a pharo2 application to pharo4. Therefore I have to migrate some fuel files from version 1.9 to 1.9.4. I've done this using the script shown in the EnterprisePharo Book in my pharo2 image, no problem.
But trying to load the migrated fuel file into my pharo4 image I get the error message shown above. The source code of the initialize methods is the same in both images, of course. But the byte codes differ:

Pharo2:
37 <70> self
38 <42> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0 numArgs: 2 bytes 43 to 50


Pharo4:
37 <70> self
38 <40> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0


What can I do?
Johannes




--
jb
Reply | Threaded
Open this post in threaded view
|

Re: FLMethodChanged: Materialization error. Method DmQuartalsplan>>#initialize: changed its bytecodes.

jb

Am 21.03.2016 um 19:19 schrieb Mariano Martinez Peck <[hidden email]>:

HI Johannes,

Could I see the source of the DmQuartalsplan>>#initialize:  ? 
yes, of course:
'From Pharo4.0 of 18 March 2013 [Latest update: #40626] on 21 March 2016 at 6:19:38.568095 pm'!

!DmQuartalsplan methodsFor: 'initialize-release' stamp: ' 15/1/14 15:24'!
initialize: einQuartal
self
lehrveranstaltungen:
(SortedCollection
sortBlock: [:x :y | x modul modulNummer <= y modul modulNummer]).
self quartal: einQuartal! !


Joh.

I think I workaround may be to do a Fuel replacement to replace the sortedCollection with an OrderedCollection and then a post initialize method. 
But again, probably seeing if the closure of the sorted collection is clean or not may have different behaviors.

Cheers, 



On Mon, Mar 21, 2016 at 3:09 PM, Johannes Brauer <[hidden email]> wrote:
Hi,

I am trying to port a pharo2 application to pharo4. Therefore I have to migrate some fuel files from version 1.9 to 1.9.4. I've done this using the script shown in the EnterprisePharo Book in my pharo2 image, no problem.
But trying to load the migrated fuel file into my pharo4 image I get the error message shown above. The source code of the initialize methods is the same in both images, of course. But the byte codes differ:

Pharo2:
37 <70> self
38 <42> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0 numArgs: 2 bytes 43 to 50


Pharo4:
37 <70> self
38 <40> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0


What can I do?
Johannes




--

Reply | Threaded
Open this post in threaded view
|

Re: FLMethodChanged: Materialization error. Method DmQuartalsplan>>#initialize: changed its bytecodes.

Mariano Martinez Peck


On Mon, Mar 21, 2016 at 3:51 PM, Johannes Brauer <[hidden email]> wrote:

Am 21.03.2016 um 19:19 schrieb Mariano Martinez Peck <[hidden email]>:

HI Johannes,

Could I see the source of the DmQuartalsplan>>#initialize:  ? 
yes, of course:
'From Pharo4.0 of 18 March 2013 [Latest update: #40626] on 21 March 2016 at 6:19:38.568095 pm'!

!DmQuartalsplan methodsFor: 'initialize-release' stamp: ' 15/1/14 15:24'!
initialize: einQuartal
self
lehrveranstaltungen:
(SortedCollection
sortBlock: [:x :y | x modul modulNummer <= y modul modulNummer]).
self quartal: einQuartal! !


I am not sure if the following will work. Please backup your image file and all your fuel files.
But...what if you try to implement:

DmQuartalsplan >> fuelReplacement
| copy | 
copy := self copy.
copy lehrveranstaltungen: copy lehrveranstaltungen asOrderedCollection. 
^ copy 


And finally, at the image where you are materializing, you could implement:

 DmQuartalsplan >> fuelAfterMaterialization 
self lehrveranstaltungen: (self lehrveranstaltungen asSortedCollection:  [:x :y | x modul modulNummer <= y modul modulNummer])


Once the migration is done, you can discard #fuelReplacement and #fuelAfterMaterialization if you want. 


I never tried this approach, so I am not sure ;)



 

Joh.

I think I workaround may be to do a Fuel replacement to replace the sortedCollection with an OrderedCollection and then a post initialize method. 
But again, probably seeing if the closure of the sorted collection is clean or not may have different behaviors.

Cheers, 



On Mon, Mar 21, 2016 at 3:09 PM, Johannes Brauer <[hidden email]> wrote:
Hi,

I am trying to port a pharo2 application to pharo4. Therefore I have to migrate some fuel files from version 1.9 to 1.9.4. I've done this using the script shown in the EnterprisePharo Book in my pharo2 image, no problem.
But trying to load the migrated fuel file into my pharo4 image I get the error message shown above. The source code of the initialize methods is the same in both images, of course. But the byte codes differ:

Pharo2:
37 <70> self
38 <42> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0 numArgs: 2 bytes 43 to 50


Pharo4:
37 <70> self
38 <40> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0


What can I do?
Johannes




--




--
jb
Reply | Threaded
Open this post in threaded view
|

Re: FLMethodChanged: Materialization error. Method DmQuartalsplan>>#initialize: changed its bytecodes.

jb
Hi Mariano,

i tried it with fuelReplacement but I get the exception:
FLObjectNotFound: Serialization error. Unexpected reference to Quartalsplan: 1-1 in the graph. This usually happens when the graph changes during serialization

Joh.
Am 21.03.2016 um 20:10 schrieb Mariano Martinez Peck <[hidden email]>:



On Mon, Mar 21, 2016 at 3:51 PM, Johannes Brauer <[hidden email]> wrote:

Am 21.03.2016 um 19:19 schrieb Mariano Martinez Peck <[hidden email]>:

HI Johannes,

Could I see the source of the DmQuartalsplan>>#initialize:  ? 
yes, of course:
'From Pharo4.0 of 18 March 2013 [Latest update: #40626] on 21 March 2016 at 6:19:38.568095 pm'!

!DmQuartalsplan methodsFor: 'initialize-release' stamp: ' 15/1/14 15:24'!
initialize: einQuartal
self
lehrveranstaltungen:
(SortedCollection
sortBlock: [:x :y | x modul modulNummer <= y modul modulNummer]).
self quartal: einQuartal! !


I am not sure if the following will work. Please backup your image file and all your fuel files.
But...what if you try to implement:

DmQuartalsplan >> fuelReplacement
| copy | 
copy := self copy.
copy lehrveranstaltungen: copy lehrveranstaltungen asOrderedCollection. 
^ copy 


And finally, at the image where you are materializing, you could implement:

 DmQuartalsplan >> fuelAfterMaterialization 
self lehrveranstaltungen: (self lehrveranstaltungen asSortedCollection:  [:x :y | x modul modulNummer <= y modul modulNummer])


Once the migration is done, you can discard #fuelReplacement and #fuelAfterMaterialization if you want. 


I never tried this approach, so I am not sure ;)



 

Joh.

I think I workaround may be to do a Fuel replacement to replace the sortedCollection with an OrderedCollection and then a post initialize method. 
But again, probably seeing if the closure of the sorted collection is clean or not may have different behaviors.

Cheers, 



On Mon, Mar 21, 2016 at 3:09 PM, Johannes Brauer <[hidden email]> wrote:
Hi,

I am trying to port a pharo2 application to pharo4. Therefore I have to migrate some fuel files from version 1.9 to 1.9.4. I've done this using the script shown in the EnterprisePharo Book in my pharo2 image, no problem.
But trying to load the migrated fuel file into my pharo4 image I get the error message shown above. The source code of the initialize methods is the same in both images, of course. But the byte codes differ:

Pharo2:
37 <70> self
38 <42> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0 numArgs: 2 bytes 43 to 50


Pharo4:
37 <70> self
38 <40> pushLit: SortedCollection
39 <8F 02 00 08> closureNumCopied: 0


What can I do?
Johannes




-- 




--