[Glass] Instances of obsolete classes after stone upgrade

Dale Henrichs dale.henrichs at gemtalksystems.com
Wed Jan 5 09:34:22 PST 2022


Johan,

GsPackagePolicy changed shape somewhere along the line (pre 3.3 perhaps?)
so it's something that may only need to be done when upgrading across that
boundary ...

Dale

On Wed, Jan 5, 2022 at 6:03 AM Johan Brichau <johan at yesplan.be> wrote:

> Hi Dale,
>
> Reviving this thread since there still are some references to old compiled
> blocks left in the upgraded repository which I missed earlier on.
> Although most were removed after executing the script to clean the session
> methods structure, I was still left with the list below.
>
> Since these were referenced from an old class version of GsPackagePolicy,
> I ran the following as SystemUser:
>
> GsPackagePolicy classHistory removeVersion: GsPackagePolicy classHistory
> first
>
> Which cleared the list.
> Does this look like an expected/normal step I can/need to do?
>
> Cheers,
> Johan
>
> ------
>     doit
>     | obsoleteBlockClasses blockArrays |
>     obsoleteBlockClasses := Array withAll: (ObsoleteClasses select: [
> :object | object isClass and: [ object inheritsFrom: BlockClosure ] ]).
>     blockArrays := SystemRepository listInstances: obsoleteBlockClasses.
>     blockArrays do: [ :blockArray |
>         blockArray do: [ :block |
>             Transcript show: ('Instance {1} of {2} was defined in:
> {3}>>#{4}' format: { block asOop. block class name. block method inClass
> name. block method selector }) ] ].
>     nil
>
> --transcript--'Instance 8573185 of SimpleBlock was defined in:
> GsPackagePolicy class>>#initialize'
> --transcript--'Instance 8600577 of ComplexVCBlock was defined in:
> GsPackagePolicy>>#buildSessionMethodDictionary'
> --transcript--'Instance 8600833 of ComplexVCBlock was defined in:
> GsPackagePolicy>>#buildSessionMethodDictionary'
> --transcript--'Instance 8582913 of ComplexBlock was defined in:
> GsPackagePolicy>>#removeSelector:fromCategoriesFor:'
> --transcript--'Instance 8584193 of ComplexBlock was defined in:
> GsPackagePolicy>>#sessionMethodRemoveAllMethodsFor:'
> --transcript--'Instance 8585473 of ComplexBlock was defined in:
> GsPackagePolicy>>#removeAllSubclassCodeFor:'
> --transcript--'Instance 8587777 of ComplexBlock was defined in:
> GsPackagePolicy>>#setStamp:forBehavior:forMethod:'
> --transcript--'Instance 8589057 of ComplexBlock was defined in:
> GsPackagePolicy>>#packagesDo:'
> --transcript--'Instance 8591361 of ComplexBlock was defined in:
> GsPackagePolicy>>#copyCategoryDictFor:into:'
> --transcript--'Instance 8592129 of ComplexBlock was defined in:
> GsPackagePolicy>>#selectorsFor:into:'
> --transcript--'Instance 8592897 of ComplexBlock was defined in:
> GsPackagePolicy>>#categoryOfSelector:for:'
> --transcript--'Instance 8593665 of ComplexBlock was defined in:
> GsPackagePolicy>>#compiledMethodAt:for:'
> --transcript--'Instance 8594433 of ComplexBlock was defined in:
> GsPackagePolicy>>#includesSelector:for:'
> --transcript--'Instance 8595201 of ComplexBlock was defined in:
> GsPackagePolicy>>#copyMethodDictFor:into:'
> --transcript--'Instance 8596481 of ComplexBlock was defined in:
> GsPackagePolicy>>#removeAllMethodsFor:'
> --transcript--'Instance 8597249 of ComplexBlock was defined in:
> GsPackagePolicy>>#removeMethodAt:for:'
> --transcript--'Instance 8598529 of ComplexBlock was defined in:
> GsPackagePolicy>>#packageReverseDo:'
> --transcript--'Instance 8600321 of ComplexBlock was defined in:
> GsPackagePolicy>>#buildSessionMethodDictionary'
> --transcript--'Instance 8605185 of ComplexBlock was defined in:
> GsPackagePolicy>>#permitSessionMethodFor:selector:'
> --transcript--'Instance 8605953 of ComplexBlock was defined in:
> GsPackagePolicy>>#pragmasForMethod:in:'
> --transcript--'Instance 8606721 of ComplexBlock was defined in:
> GsPackagePolicy>>#stampForMethod:in:'
> --transcript--'Instance 8607489 of ComplexBlock was defined in:
> GsPackagePolicy>>#setPragmas:forBehavior:forMethod:'
> --transcript--'Instance 8610305 of ComplexBlock was defined in:
> GsPackagePolicy>>#sessionMethodRemoveMethodAt:for:'
> --transcript--'Instance 8611073 of ComplexBlock was defined in:
> GsPackagePolicy>>#sessionMethodRemoveAllSubclassCodeFor:'
> --transcript--'Instance 8611841 of ComplexBlock was defined in:
> GsPackagePolicy>>#removeCategory:for:'
> --transcript--'Instance 8612609 of ComplexBlock was defined in:
> GsPackagePolicy>>#categoryNamesFor:into:'
> --transcript--'Instance 8613377 of ComplexBlock was defined in:
> GsPackagePolicy>>#selectorsIn:for:into:'
>
>
> On 19 Nov 2021, at 23:39, Dale Henrichs <dale.henrichs at gemtalksystems.com>
> wrote:
>
> Check.
>> To be clear: it’s not in the post upgrade step of the GsDevKit code?
>> It’s not that I missed it when copying them to our scripts…?
>>
> The session method cleanup script I sent is NOT part of postUpgrade
> processing ...  I didn't think that the session methods structure could be
> a culprit for holding onto old GsMethod instances until you noticed the
> problem, so I've submitted an issue against GsDevKit_upgrade[1] which is
> used to drive the seasideImage upgrade process for 3.5.x and beyond ...
>
> Dale
>
> [1] https://github.com/GsDevKit/GsDevKit_upgrade/issues/21
>
> On Fri, Nov 19, 2021 at 12:40 PM Johan Brichau <johan at yesplan.be> wrote:
>
>>
>>
>> > On 19 Nov 2021, at 21:07, Dale Henrichs <
>> dale.henrichs at gemtalksystems.com> wrote:
>> >
>> > With regards to dealing with block instances, I believe there should be
>> a section in the release notes that provides scripts for finding a
>> replacing obsolete block instances for use cases like SortedCollection,
>> where the potentially obsolete block instance is stored in an instance
>> variable ...
>>
>> Yes, we apply the postconv script as mentioned in the upgrade
>> instructions.
>> We have some blocks left in our application code that require manual
>> intervention and that’s why we also noticed the ones referenced by the
>> GsMethod instances.
>>
>> > And yes, the session method cleanup code should be included in your
>> post upgradeSeasideImage processing along with "sort block" cleanup code ...
>>
>> Check.
>> To be clear: it’s not in the post upgrade step of the GsDevKit code?
>> It’s not that I missed it when copying them to our scripts…?
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/archives/glass/attachments/20220105/1055f778/attachment-0001.htm>


More information about the Glass mailing list