SearchObject API class returns incomplete list of objects after run of ucybdbld

Discussion created by Michael_Lowry on Feb 7, 2018
Latest reply on Mar 19, 2018 by Michael_Lowry

As most of you know, we use an [DEAD LINK https://community.automic.com/discussion/comment/31392/#Comment_31392]automated batch deployment system, to promote batches (folders) of AE objects from one system to another (e.g., from TEST to PROD). One of the steps in batch deployment involves removing objects from the target folder that were not part of the deployment. In broad strokes, it does this in the following way:

  1. Get list of objects in target folder, using SearchObject Java API class.
  2. Load transport case file into target system.
  3. Remove objects from target folder that were not in the transport case file.
  4. Run SearchObject again to identify folders under the target folder that no longer have any child objects.
  5. Remove these empty folders in a bottom-up fashion.

This is an oversimplified description of the process, but it will serve for the purposes of this discussion.

We discovered today that on rare occasions, SearchObject will return an incomplete list of objects. In our case, it happens in step 4. (And because the list returned omits some objects, the deployment program sometimes mistakenly thinks that some folders are empty when they are not. It then removes these folders, and the child objects end up in <No Folder>.)

We suspect that this problem is likely to happen when these circumstances are present:

  • SearchObject is run shortly after a transport case file has been loaded.
  • The objects loaded reside in folders that are in the scope of the SearchObject search.
  • The number of objects loaded is high (several hundred or more).
  • The AE system is busy.

It seems possible that ucybdbld is completing before all of the database changes (e.g., changes to the OFS table) have been committed. I have reported the problem to Automic in INC00219765. I will update this thread when I have more information.