error upgrading stone: become is not allowed

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

error upgrading stone: become is not allowed

GLASS mailing list
Hi,

In the conversion of a Gemstone 2.4.4.1 stone to Gemstone 3.2, I hit an error in the final step when loading our application code:

a ImproperOperation occurred (error 2426), become is not allowed on aNPGsFileWrapper, 'One object is a GsFile or RubySocket while the other is neither'
Error Category: 231169 [GemStone] Number: 2426  Arg Count: 2 Context : 1906733569 exception : 4489410561

We indeed have a subclass of GsFile, called NPGsFileWrapper
Migrating the instances on application load seems to wrong, though both the old and new class are ‘NPGsFileWrapper’ (see stack context of the invocation of become: below)

5 NPGsFileWrapper (Object) >> become:           @4 line 112   [methId 59070977]
    receiver [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
    anObject [148062465 sz:4 cls: 6802930945 NPGsFileWrapper] aNPGsFileWrapper
    self [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
    prot [10 sz:0 cls: 74241 SmallInteger] 1 == 0x1

Any way to circumvent this issue in the upgrade?
Or do we need to move away from having instances of classes that are subclasses of GsFile before we attempt to upgrade?

thx
Johan
_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: error upgrading stone: become is not allowed

GLASS mailing list
A bit more info… I did a lookup of the oops mentioned in the call of become:

In the source 2.4 extent:
        The receiver object with oop 4489369089 does not exist
        The argument object with oop 148062465 is an instance of NPGsFileWrapper

In the destination 3.2 extent (following the failed bulk migrate after application load):
        The receiver object with oop 4489369089 is an object anArray( #'switch')
        The argument object with oop 148062465 is still that instance of NPGsFileWrapper

When I executed: SystemRepository findReferencePathToObject: (Object _objectForOop: 4489369089), I got:
a ArgumentError occurred (error 2027), A committed object was expected rather than object anArray( #'switch'), which is either special or uncommitted.

> On 27 Apr 2017, at 17:22, Johan Brichau <[hidden email]> wrote:
>
> Hi,
>
> In the conversion of a Gemstone 2.4.4.1 stone to Gemstone 3.2, I hit an error in the final step when loading our application code:
>
> a ImproperOperation occurred (error 2426), become is not allowed on aNPGsFileWrapper, 'One object is a GsFile or RubySocket while the other is neither'
> Error Category: 231169 [GemStone] Number: 2426  Arg Count: 2 Context : 1906733569 exception : 4489410561
>
> We indeed have a subclass of GsFile, called NPGsFileWrapper
> Migrating the instances on application load seems to wrong, though both the old and new class are ‘NPGsFileWrapper’ (see stack context of the invocation of become: below)
>
> 5 NPGsFileWrapper (Object) >> become:           @4 line 112   [methId 59070977]
>    receiver [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
>    anObject [148062465 sz:4 cls: 6802930945 NPGsFileWrapper] aNPGsFileWrapper
>    self [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
>    prot [10 sz:0 cls: 74241 SmallInteger] 1 == 0x1
>
> Any way to circumvent this issue in the upgrade?
> Or do we need to move away from having instances of classes that are subclasses of GsFile before we attempt to upgrade?
>
> thx
> Johan

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: error upgrading stone: become is not allowed

GLASS mailing list
Final info: when I remove the instance before starting the upgrade process, all works fine.
As the instance was only persistent because it was on the object log, I don’t need to try to keep it.

> On 27 Apr 2017, at 17:48, Johan Brichau <[hidden email]> wrote:
>
> A bit more info… I did a lookup of the oops mentioned in the call of become:
>
> In the source 2.4 extent:
> The receiver object with oop 4489369089 does not exist
> The argument object with oop 148062465 is an instance of NPGsFileWrapper
>
> In the destination 3.2 extent (following the failed bulk migrate after application load):
> The receiver object with oop 4489369089 is an object anArray( #'switch')
> The argument object with oop 148062465 is still that instance of NPGsFileWrapper
>
> When I executed: SystemRepository findReferencePathToObject: (Object _objectForOop: 4489369089), I got:
> a ArgumentError occurred (error 2027), A committed object was expected rather than object anArray( #'switch'), which is either special or uncommitted.
>
>> On 27 Apr 2017, at 17:22, Johan Brichau <[hidden email]> wrote:
>>
>> Hi,
>>
>> In the conversion of a Gemstone 2.4.4.1 stone to Gemstone 3.2, I hit an error in the final step when loading our application code:
>>
>> a ImproperOperation occurred (error 2426), become is not allowed on aNPGsFileWrapper, 'One object is a GsFile or RubySocket while the other is neither'
>> Error Category: 231169 [GemStone] Number: 2426  Arg Count: 2 Context : 1906733569 exception : 4489410561
>>
>> We indeed have a subclass of GsFile, called NPGsFileWrapper
>> Migrating the instances on application load seems to wrong, though both the old and new class are ‘NPGsFileWrapper’ (see stack context of the invocation of become: below)
>>
>> 5 NPGsFileWrapper (Object) >> become:           @4 line 112   [methId 59070977]
>>   receiver [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
>>   anObject [148062465 sz:4 cls: 6802930945 NPGsFileWrapper] aNPGsFileWrapper
>>   self [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
>>   prot [10 sz:0 cls: 74241 SmallInteger] 1 == 0x1
>>
>> Any way to circumvent this issue in the upgrade?
>> Or do we need to move away from having instances of classes that are subclasses of GsFile before we attempt to upgrade?
>>
>> thx
>> Johan
>

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: error upgrading stone: become is not allowed

GLASS mailing list
In reply to this post by GLASS mailing list


On 04/27/2017 08:22 AM, Johan Brichau via Glass wrote:

> Hi,
>
> In the conversion of a Gemstone 2.4.4.1 stone to Gemstone 3.2, I hit an error in the final step when loading our application code
>
> a ImproperOperation occurred (error 2426), become is not allowed on aNPGsFileWrapper, 'One object is a GsFile or RubySocket while the other is neither'
> Error Category: 231169 [GemStone] Number: 2426  Arg Count: 2 Context : 1906733569 exception : 4489410561
>
> We indeed have a subclass of GsFile, called NPGsFileWrapper
> Migrating the instances on application load seems to wrong, though both the old and new class are ‘NPGsFileWrapper’ (see stack context of the invocation of become: below)
>
> 5 NPGsFileWrapper (Object) >> become:           @4 line 112   [methId 59070977]
>      receiver [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
>      anObject [148062465 sz:4 cls: 6802930945 NPGsFileWrapper] aNPGsFileWrapper
>      self [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
>      prot [10 sz:0 cls: 74241 SmallInteger] 1 == 0x1
>
> Any way to circumvent this issue in the upgrade?
I guess to start with, I'd like to see more of the stack ... for some
reason you are apparently getting a new class version of
NPGsFileWrapper... there is a fair amount of logic in McClassDefinition
(MCClassDefinition>>hasSimpleModsRelativeTo:) and the class creation
code
(Class>>_equivalentSubclass:superCls:name:newOpts:newFormat:newInstVars:newClassInstVars:newPools:newClassVars:inDict:constraints:isKernel:)that
attempts to avoid creating new versions of a class unless "absolutely
necessary."

So the first thing to explore is why you are migrating the class when no
class versions should have been created --- assuming that the shape of
the class NPGsFileWrapper hasn't changed ...

I am also curious what steps you've done to do the upgrade prior to
loading. Ideally you would be doing something very similar to what is
done by the GsDevKit_home upgradeStone script[1] ...

Dale

[1] https://github.com/GsDevKit/GsDevKit_home/blob/master/bin/upgradeStone
> Or do we need to move away from having instances of classes that are subclasses of GsFile before we attempt to upgrade?
>
> thx
> Johan
> _______________________________________________
> Glass mailing list
> [hidden email]
> http://lists.gemtalksystems.com/mailman/listinfo/glass

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: error upgrading stone: become is not allowed

GLASS mailing list
In reply to this post by GLASS mailing list


On 04/27/2017 10:56 AM, Johan Brichau via Glass wrote:
> Final info: when I remove the instance before starting the upgrade process, all works fine.
> As the instance was only persistent because it was on the object log, I don’t need to try to keep it
Okay, that's good to know ... I'm glad you've been able to get past the
problem ...

>
>> On 27 Apr 2017, at 17:48, Johan Brichau <[hidden email]> wrote:
>>
>> A bit more info… I did a lookup of the oops mentioned in the call of become:
>>
>> In the source 2.4 extent:
>> The receiver object with oop 4489369089 does not exist
>> The argument object with oop 148062465 is an instance of NPGsFileWrapper
>>
>> In the destination 3.2 extent (following the failed bulk migrate after application load):
>> The receiver object with oop 4489369089 is an object anArray( #'switch')
>> The argument object with oop 148062465 is still that instance of NPGsFileWrapper
>>
>> When I executed: SystemRepository findReferencePathToObject: (Object _objectForOop: 4489369089), I got:
>> a ArgumentError occurred (error 2027), A committed object was expected rather than object anArray( #'switch'), which is either special or uncommitted.
>>
>>> On 27 Apr 2017, at 17:22, Johan Brichau <[hidden email]> wrote:
>>>
>>> Hi,
>>>
>>> In the conversion of a Gemstone 2.4.4.1 stone to Gemstone 3.2, I hit an error in the final step when loading our application code:
>>>
>>> a ImproperOperation occurred (error 2426), become is not allowed on aNPGsFileWrapper, 'One object is a GsFile or RubySocket while the other is neither'
>>> Error Category: 231169 [GemStone] Number: 2426  Arg Count: 2 Context : 1906733569 exception : 4489410561
>>>
>>> We indeed have a subclass of GsFile, called NPGsFileWrapper
>>> Migrating the instances on application load seems to wrong, though both the old and new class are ‘NPGsFileWrapper’ (see stack context of the invocation of become: below)
>>>
>>> 5 NPGsFileWrapper (Object) >> become:           @4 line 112   [methId 59070977]
>>>    receiver [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
>>>    anObject [148062465 sz:4 cls: 6802930945 NPGsFileWrapper] aNPGsFileWrapper
>>>    self [4489369089 sz:6 cls: 4487621633 NPGsFileWrapper] aNPGsFileWrapper
>>>    prot [10 sz:0 cls: 74241 SmallInteger] 1 == 0x1
>>>
>>> Any way to circumvent this issue in the upgrade?
>>> Or do we need to move away from having instances of classes that are subclasses of GsFile before we attempt to upgrade?
>>>
>>> thx
>>> Johan
> _______________________________________________
> Glass mailing list
> [hidden email]
> http://lists.gemtalksystems.com/mailman/listinfo/glass

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: error upgrading stone: become is not allowed

GLASS mailing list
In reply to this post by GLASS mailing list
Hey Dale,

I guess to start with, I'd like to see more of the stack … 

In the file in attachment.

So the first thing to explore is why you are migrating the class when no class versions should have been created --- assuming that the shape of the class NPGsFileWrapper hasn't changed …

The old version of NPGsFileWrapper has become a subclass of Obsolete23GsFile in the upgraded extent.
Reloading our application code loads the NPGsFileWrapper class being a subclass of GsFile, triggering the instance migration.

I am also curious what steps you've done to do the upgrade prior to loading. Ideally you would be doing something very similar to what is done by the GsDevKit_home upgradeStone script[1] …

I’m executing that script, with a boot load of GLASS1.0-beta.9-3
The application load script first uses GsUpgrader to load GLASS1 and latest Grease, etc… followed by a load of our ConfigurationOfNextPlan.

Except this GsFileWrapper thing… the upgrade process is going well. Nothing in production yet, as we are sorting through compatibilities, automated tests for all platforms, quality checks, 
But all in all, I must say I’m glad we’re finally able to do this at Yesplan ;)

Thanks for any info you can think of to be a little bit at peace of mind with this issue!

Johan



_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass

migrateStackError.txt (12K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: error upgrading stone: become is not allowed

GLASS mailing list
Dale,


Should I check out the GsDevKit script?
Since we have a directory structure for multiple stones on a server that predates the one defined by GsDevKit, I’ve stayed away from it for now.


On 27 Apr 2017, at 20:10, Johan Brichau <[hidden email]> wrote:

Hey Dale,

I guess to start with, I'd like to see more of the stack … 

In the file in attachment.

So the first thing to explore is why you are migrating the class when no class versions should have been created --- assuming that the shape of the class NPGsFileWrapper hasn't changed …

The old version of NPGsFileWrapper has become a subclass of Obsolete23GsFile in the upgraded extent.
Reloading our application code loads the NPGsFileWrapper class being a subclass of GsFile, triggering the instance migration.

I am also curious what steps you've done to do the upgrade prior to loading. Ideally you would be doing something very similar to what is done by the GsDevKit_home upgradeStone script[1] …

I’m executing that script, with a boot load of GLASS1.0-beta.9-3
The application load script first uses GsUpgrader to load GLASS1 and latest Grease, etc… followed by a load of our ConfigurationOfNextPlan.

Except this GsFileWrapper thing… the upgrade process is going well. Nothing in production yet, as we are sorting through compatibilities, automated tests for all platforms, quality checks, 
But all in all, I must say I’m glad we’re finally able to do this at Yesplan ;)

Thanks for any info you can think of to be a little bit at peace of mind with this issue!

Johan

<migrateStackError.txt>


_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: error upgrading stone: become is not allowed

GLASS mailing list



On 04/27/2017 11:14 AM, Johan Brichau via Glass wrote:
Dale,


Should I check out the GsDevKit script?
Since we have a directory structure for multiple stones on a server that predates the one defined by GsDevKit, I’ve stayed away from it for now.

The GsDevKit_home upgradeStone is intended to pretty much automate the whole upgrade process (including the running of the postconv script as described in the release notes) so I started with the steps described in webEditionHome and expanded them to include upgrades to versions other than 3.2 (each version boundary can present it's own little issues) and then fixes any issues that ran across iwhile testing ...

The script is regulary tested by doing upgrades between various versions of Gemstone on travis-ci[1], so I would recommend that you take a look at the script as inspiration for your own script ...

If you have an upgrade process that is working for you, then I would stick with it:)

Dale

[1] https://travis-ci.org/GsDevKit/GsDevKit_home/builds/219459311

On 27 Apr 2017, at 20:10, Johan Brichau <[hidden email]> wrote:

Hey Dale,

I guess to start with, I'd like to see more of the stack … 

In the file in attachment.

So the first thing to explore is why you are migrating the class when no class versions should have been created --- assuming that the shape of the class NPGsFileWrapper hasn't changed …

The old version of NPGsFileWrapper has become a subclass of Obsolete23GsFile in the upgraded extent.
Reloading our application code loads the NPGsFileWrapper class being a subclass of GsFile, triggering the instance migration.

I am also curious what steps you've done to do the upgrade prior to loading. Ideally you would be doing something very similar to what is done by the GsDevKit_home upgradeStone script[1] …

I’m executing that script, with a boot load of GLASS1.0-beta.9-3
The application load script first uses GsUpgrader to load GLASS1 and latest Grease, etc… followed by a load of our ConfigurationOfNextPlan.

Except this GsFileWrapper thing… the upgrade process is going well. Nothing in production yet, as we are sorting through compatibilities, automated tests for all platforms, quality checks, 
But all in all, I must say I’m glad we’re finally able to do this at Yesplan ;)

Thanks for any info you can think of to be a little bit at peace of mind with this issue!

Johan

<migrateStackError.txt>



_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass


_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass