[Glass] Instances of obsolete classes after stone upgrade

Johan Brichau johan at yesplan.be
Fri Nov 19 09:29:44 PST 2021


After upgrading a GLASS/Seaside repository from to 3.4.5, I notice there are still a lot of instances of the obsolete classes SimpleBlock, ComplexVCBlock, ExecutableBlock, ComplexBlock
We noticed these instances are references held by the methods in which they are defined. 

Is that ‘expected’ ? Since all methods are recompiled when upgrading, should there still be instances of these obsolete block classes?
Running the following code removes the references, but we do get a SecurityError when it tries to recompile GsPackagePolicy class>>initialize. We run it as DataCurator. Should we run it as SystemUser?

    | obsoleteBlockClasses blockArrays sourceClasses |
    obsoleteBlockClasses := Array withAll: (ObsoleteClasses select: [ :object | object isClass and: [ object inheritsFrom: BlockClosure ] ]).
    blockArrays := SystemRepository listInstances: obsoleteBlockClasses.
    sourceClasses := IdentitySet new.
    blockArrays do: [ :blocks |
        blocks do: [ :block |
            block method inClass ifNotNil: [ :sourceClass |
                sourceClasses add: sourceClass ] ] ].
    sourceClasses do: [ :sourceClass |
        Transcript show: ('Recompiling class {1} ({2})' format: { sourceClass name. sourceClass asOop }).
        sourceClass recompileAllMethods ].

Thanks for insights!

More information about the Glass mailing list