<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Dale,<div class=""><br class=""></div><div class="">Reviving this thread since there still are some references to old compiled blocks left in the upgraded repository which I missed earlier on.<br class=""><div class="">Although most were removed after executing the script to clean the session methods structure, I was still left with the list below.</div><div class=""><br class=""></div><div class="">Since these were referenced from an old class version of GsPackagePolicy, I ran the following as SystemUser:</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>GsPackagePolicy classHistory removeVersion: GsPackagePolicy classHistory first</div><div class=""><br class=""></div><div class="">Which cleared the list.</div><div class="">Does this look like an expected/normal step I can/need to do?</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Johan</div><div class=""><br class=""><div class="">------</div><div class=""> doit<br class=""> | obsoleteBlockClasses blockArrays |<br class=""> obsoleteBlockClasses := Array withAll: (ObsoleteClasses select: [ :object | object isClass and: [ object inheritsFrom: BlockClosure ] ]).<br class=""> blockArrays := SystemRepository listInstances: obsoleteBlockClasses.<br class=""> blockArrays do: [ :blockArray |<br class=""> blockArray do: [ :block |<br class=""> Transcript show: ('Instance {1} of {2} was defined in: {3}>>#{4}' format: { block asOop. block class name. block method inClass name. block method selector }) ] ].<br class=""> nil<br class=""><div class=""><br class=""></div><div class=""><div class=""><div class="">--transcript--'Instance 8573185 of SimpleBlock was defined in: GsPackagePolicy class>>#initialize'</div><div class="">--transcript--'Instance 8600577 of ComplexVCBlock was defined in: GsPackagePolicy>>#buildSessionMethodDictionary'</div><div class="">--transcript--'Instance 8600833 of ComplexVCBlock was defined in: GsPackagePolicy>>#buildSessionMethodDictionary'</div><div class="">--transcript--'Instance 8582913 of ComplexBlock was defined in: GsPackagePolicy>>#removeSelector:fromCategoriesFor:'</div><div class="">--transcript--'Instance 8584193 of ComplexBlock was defined in: GsPackagePolicy>>#sessionMethodRemoveAllMethodsFor:'</div><div class="">--transcript--'Instance 8585473 of ComplexBlock was defined in: GsPackagePolicy>>#removeAllSubclassCodeFor:'</div><div class="">--transcript--'Instance 8587777 of ComplexBlock was defined in: GsPackagePolicy>>#setStamp:forBehavior:forMethod:'</div><div class="">--transcript--'Instance 8589057 of ComplexBlock was defined in: GsPackagePolicy>>#packagesDo:'</div><div class="">--transcript--'Instance 8591361 of ComplexBlock was defined in: GsPackagePolicy>>#copyCategoryDictFor:into:'</div><div class="">--transcript--'Instance 8592129 of ComplexBlock was defined in: GsPackagePolicy>>#selectorsFor:into:'</div><div class="">--transcript--'Instance 8592897 of ComplexBlock was defined in: GsPackagePolicy>>#categoryOfSelector:for:'</div><div class="">--transcript--'Instance 8593665 of ComplexBlock was defined in: GsPackagePolicy>>#compiledMethodAt:for:'</div><div class="">--transcript--'Instance 8594433 of ComplexBlock was defined in: GsPackagePolicy>>#includesSelector:for:'</div><div class="">--transcript--'Instance 8595201 of ComplexBlock was defined in: GsPackagePolicy>>#copyMethodDictFor:into:'</div><div class="">--transcript--'Instance 8596481 of ComplexBlock was defined in: GsPackagePolicy>>#removeAllMethodsFor:'</div><div class="">--transcript--'Instance 8597249 of ComplexBlock was defined in: GsPackagePolicy>>#removeMethodAt:for:'</div><div class="">--transcript--'Instance 8598529 of ComplexBlock was defined in: GsPackagePolicy>>#packageReverseDo:'</div><div class="">--transcript--'Instance 8600321 of ComplexBlock was defined in: GsPackagePolicy>>#buildSessionMethodDictionary'</div><div class="">--transcript--'Instance 8605185 of ComplexBlock was defined in: GsPackagePolicy>>#permitSessionMethodFor:selector:'</div><div class="">--transcript--'Instance 8605953 of ComplexBlock was defined in: GsPackagePolicy>>#pragmasForMethod:in:'</div><div class="">--transcript--'Instance 8606721 of ComplexBlock was defined in: GsPackagePolicy>>#stampForMethod:in:'</div><div class="">--transcript--'Instance 8607489 of ComplexBlock was defined in: GsPackagePolicy>>#setPragmas:forBehavior:forMethod:'</div><div class="">--transcript--'Instance 8610305 of ComplexBlock was defined in: GsPackagePolicy>>#sessionMethodRemoveMethodAt:for:'</div><div class="">--transcript--'Instance 8611073 of ComplexBlock was defined in: GsPackagePolicy>>#sessionMethodRemoveAllSubclassCodeFor:'</div><div class="">--transcript--'Instance 8611841 of ComplexBlock was defined in: GsPackagePolicy>>#removeCategory:for:'</div><div class="">--transcript--'Instance 8612609 of ComplexBlock was defined in: GsPackagePolicy>>#categoryNamesFor:into:'</div><div class="">--transcript--'Instance 8613377 of ComplexBlock was defined in: GsPackagePolicy>>#selectorsIn:for:into:'</div></div><div class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 19 Nov 2021, at 23:39, Dale Henrichs <<a href="mailto:dale.henrichs@gemtalksystems.com" class="">dale.henrichs@gemtalksystems.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Check.<br class="">To be clear: it’s not in the post upgrade step of the GsDevKit code?<br class="">It’s not that I missed it when copying them to our scripts…?<br class=""></blockquote><div class="">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 ...</div><div class=""><br class=""></div><div class="">Dale</div><div class=""><br class=""></div><div class="">[1] <a href="https://github.com/GsDevKit/GsDevKit_upgrade/issues/21" class="">https://github.com/GsDevKit/GsDevKit_upgrade/issues/21</a></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 19, 2021 at 12:40 PM Johan Brichau <<a href="mailto:johan@yesplan.be" class="">johan@yesplan.be</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br class="">
<br class="">
> On 19 Nov 2021, at 21:07, Dale Henrichs <<a href="mailto:dale.henrichs@gemtalksystems.com" target="_blank" class="">dale.henrichs@gemtalksystems.com</a>> wrote:<br class="">
> <br class="">
> 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 ...<br class="">
<br class="">
Yes, we apply the postconv script as mentioned in the upgrade instructions.<br class="">
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.<br class="">
<br class="">
> And yes, the session method cleanup code should be included in your post upgradeSeasideImage processing along with "sort block" cleanup code ...<br class="">
<br class="">
Check.<br class="">
To be clear: it’s not in the post upgrade step of the GsDevKit code?<br class="">
It’s not that I missed it when copying them to our scripts…?</blockquote></div>
</div></blockquote></div><br class=""></div></div></div></div></div></body></html>