Summary
aem instance upgrade unpacks a new Quickstart distribution, but the subsequent normal aem instance start launches the unpacked JAR under crx-quickstart/app.
For AEM 6.5 LTS service-pack upgrades, this does not apply all startup-resource updates from the new Quickstart distribution.
Reproduction
- Create and start an AEM 6.6.2 instance through AEMC.
- Replace the configured Quickstart JAR with AEM 6.6.3.
- Stop the instance.
- Run:
aem instance upgrade
aem instance start
Actual Result
AEMC unpacks the 6.6.3 distribution, then the normal start script launches:
crx-quickstart/app/cq-quickstart-6.6.3-standalone-quickstart.jar
The prior startup resource remains active:
crx-quickstart/launchpad/startup/1/com.adobe.granite.crypto-3.5.10.jar
AEM 6.6.3 upgrades com.adobe.granite.crypto.keystore to 4.0.24, but it remains Installed because it requires the package exported by Granite Crypto 3.5.40.
This causes a broad OSGi dependency cascade, including com.day.cq.cq-replication.
Expected Result
During an upgrade, AEMC should start the external new Quickstart JAR once, instead of only starting the unpacked app JAR:
java -jar <new-quickstart-jar> -nofork -nointeractive \
-r <run-modes> -p <port>
After this bootstrap start has completed, AEMC can stop it. The caller can then use the ordinary aem instance start lifecycle.
Verified Result
With that external-JAR bootstrap:
com.adobe.granite.crypto 3.5.40 Active
com.adobe.granite.crypto.keystore 4.0.24 Active
com.day.cq.cq-replication 6.2.86 Active
org.apache.commons.commons-io 2.21.0 Active
All bundles become stable.
Adobe Reference
Adobe explicitly states that starting through the normal start script does not start the upgrade:
https://experienceleague.adobe.com/en/docs/experience-manager-65-lts/content/implementing/deploying/upgrading/in-place-upgrade#determining-the-correct-upgrade-start-command:~:text=start%20script%20will%20not%20start%20the%20upgrade
Sling Properties
Adobe's preparation instructions also say to back up and delete:
crx-quickstart/conf/sling.properties
before unpacking the new Quickstart JAR.
AEMC currently manages custom Sling properties itself. We need a design decision on whether instance upgrade should:
- Back up/remove and regenerate
sling.properties as part of the upgrade command.
- Leave this preparation step to the caller/orchestration layer before invoking
instance upgrade.
Summary
aem instance upgradeunpacks a new Quickstart distribution, but the subsequent normalaem instance startlaunches the unpacked JAR undercrx-quickstart/app.For AEM 6.5 LTS service-pack upgrades, this does not apply all startup-resource updates from the new Quickstart distribution.
Reproduction
Actual Result
AEMC unpacks the 6.6.3 distribution, then the normal start script launches:
The prior startup resource remains active:
AEM 6.6.3 upgrades
com.adobe.granite.crypto.keystoreto4.0.24, but it remainsInstalledbecause it requires the package exported by Granite Crypto3.5.40.This causes a broad OSGi dependency cascade, including
com.day.cq.cq-replication.Expected Result
During an upgrade, AEMC should start the external new Quickstart JAR once, instead of only starting the unpacked app JAR:
After this bootstrap start has completed, AEMC can stop it. The caller can then use the ordinary
aem instance startlifecycle.Verified Result
With that external-JAR bootstrap:
All bundles become stable.
Adobe Reference
Adobe explicitly states that starting through the normal start script does not start the upgrade:
https://experienceleague.adobe.com/en/docs/experience-manager-65-lts/content/implementing/deploying/upgrading/in-place-upgrade#determining-the-correct-upgrade-start-command:~:text=start%20script%20will%20not%20start%20the%20upgrade
Sling Properties
Adobe's preparation instructions also say to back up and delete:
before unpacking the new Quickstart JAR.
AEMC currently manages custom Sling properties itself. We need a design decision on whether
instance upgradeshould:sling.propertiesas part of the upgrade command.instance upgrade.