Corrupt database?
Jerry Bell
jdbell at oxfordmetamedia.com
Thu May 7 19:39:11 UTC 2009
No, STBUser is a subclass of STBModel which is a subclass of Object.
Thanks,
Jerry
On May 7, 2009, at 12:50 PM, Chris Muller wrote:
> Is STBUser a kind of Set?
>
> On Thu, May 7, 2009 at 12:32 PM, Jerry Bell <jdbell at oxfordmetamedia.com
> > wrote:
>> Hi,
>>
>> I seem to have some sort of corruption in one of my Magma databases.
>>
>> I'm running a Seaside application with Magma 0.41gamma1 and
>> MagmaSeasideHelper.
>>
>> I have 2 test images and 2 databases. Both images can access one
>> of the
>> databases with no problems. Trying to access the other database
>> from either
>> image results in a error. So I assume that there is something
>> wrong with
>> the "bad" database and not a problem with my images.
>>
>> The error occurs during initial startup, beginning with:
>>
>> ^(WAMagmaSoloAuto forApp: 'CCS') rootAt: CCSServerRoot
>>
>> The error is: STBUser cannot have variable sized instances
>>
>> Looking through the call stack, things seem to go wrong in
>> MaFixedObjectBuffer>>createObjectUsing:. Here, indexedSize is 2,
>> which
>> causes "skeleton" to be "class basicNew: indexedSize" instead of
>> "class
>> basicNew".
>>
>> The root cause of this appears to be that the MagmaClassIdManager's
>> class
>> definitions for the STBUser. Version numbers are incorrect, or out
>> of order
>> in some way.
>>
>> (results from exploring a MagmaClassIdManager, STBUser classId is
>> 126)
>>
>> | def |
>> 1 to: 5 do: [:index | def := self definitionForClassId: 126
>> version: index.
>> Transcript show: ('Index: ', (index
>> printString),
>> ' Version: ', (def version
>> printString),
>> ' ivar count: ', (def
>> namedInstSize
>> printString)); cr ]
>>
>> Index: 1 Version: 4 ivar count: 5
>> Index: 2 Version: 5 ivar count: 6
>> Index: 3 Version: 2 ivar count: 9
>> Index: 4 Version: 1 ivar count: 10
>> Index: 5 Version: 3 ivar count: 11
>>
>> When I look at other class definitions, the index and version
>> numbers match.
>> So something seems wrong.
>>
>> The instance variable counts look right, but the version numbers
>> appear to
>> be wrong. Also, the inImageSerializer believes that we are on
>> version 3:
>>
>> def := (MaObjectSerializer allInstances first classIdManager
>> inImageDefinition: STBUser).
>> def version -> 3
>> def namedInstSize -> 11 (which is the correct number)
>>
>> While in the debugger, I re-ordered the definitions for STBUser by
>> the
>> version number and resumed. This actually resulted in the
>> application
>> starting up successfully, and all my data for my newly added users
>> was
>> present.
>>
>> However I'm sure if the in-image definition was thought to be 4 or
>> 5 then my
>> ivar count would have been off and the STBUsers would have failed
>> to load
>> again.
>>
>> So it appears that there are too many versions in Magmas' class
>> definition
>> collection for my class, and those versions are out of order.
>>
>> Somehow I always manage to make interesting errors!
>>
>> Also: after re-arranging those class definitions and closing the
>> Magma
>> session, closing my image without saving, and restarting the image,
>> my
>> application opened with no problems. So I guess my changes to the
>> Magma
>> class definitions were persisted. However, that does leave me
>> with version
>> 4 and 5 definitions; while the in-image version of STBUser is 3.
>> I'm sure
>> I could go in and remove those definitions, and close the session and
>> everything will be OK.
>>
>> So my questions are:
>>
>> Any idea how this could have possibly happened?
>>
>> How can I fix it permanently, preferably through a code patch and
>> not manual
>> "live" tinkering? (The bad database I am testing with is a copy of a
>> currently deployed system, which is currently working fine right
>> now, but
>> I'm sure it will break if I ever close and restart its image)
>>
>> Is there any way to make sure it does not happen again?
>>
>> Thanks,
>>
>> Jerry Bell
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Magma mailing list
>> Magma at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/magma
>>
More information about the Magma
mailing list