We recently completed an upgrade to 12.2.14. A few days later someone executed an adop PREPARE phase but nothing else. DBA Team was not aware of this “open” adop cycle. In prep for a new clone, we executed adpreclone which failed due to open patch cycle.
We decided to just run the FINALIZE, CUTOVER and CLEANUP phases and move forward with clone prep.
We executed these phases during our maintenance window with no failures or other issues noted. The following day, the client called in emergency tickets due to malfunctioning code. We identified the correct PL/SQL package and when compared to what was in source code we determined it was missing a couple of procedures and functions. The declaration was present but the underlying code was not. We determined the updated package was compiled into PROD 3 days after the open patching cycle PREPARE phase was executed.
Our question is why was the underlying code from the package missing? The user owning the code was a custom user but was edition enabled. We also checked the package syntax and found it was correctly identified as editionable code as well.
So what mechanism caused the underlying code to be removed during the wrap up of an empty patching cycle?