Skip to content

IncrementalLoad pull handler work queue manager to import and delete items in parallel in some situations#973

Open
raymond-rebbeck wants to merge 4 commits into
intersystems:mainfrom
raymond-rebbeck:work-queue-pull-handler
Open

IncrementalLoad pull handler work queue manager to import and delete items in parallel in some situations#973
raymond-rebbeck wants to merge 4 commits into
intersystems:mainfrom
raymond-rebbeck:work-queue-pull-handler

Conversation

@raymond-rebbeck

@raymond-rebbeck raymond-rebbeck commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Description

Use a work queue manager in the Incremental Load pull event handler for both importing and deleting files. Similar to what was done in #970

Results in a pleasing performance improvement to anything that uses the pull event handler such as revert, switching branches and this also now covers Import All when compileOnImport is enabled - something that was not covered in #970

The work queue manager is not used when decomposeProductions is enabled as I do not use this feature, have limited experience with it and I suspect that additional locking or other more complicated changes would be required to allow decomposed production items to safely create/update/delete productions in parallel.

Testing

Tested locally with pulls of various sizes (including 1000+ files) and other actions that use the pull event handler such as: revert, switching branches and Import All with compileOnImport enabled.

Checklist

  • This branch has the latest changes from the main branch rebased or merged.
  • Web UI has been built (any changes in git-webui/src have matching changes in git-webui/release)
  • CHANGELOG.md entry added if appropriate.
  • [N/A] Documentation has been/will be updated

…en importing items to improve performance

Only used when decomposed productions are not in use, these will very likely require further locking being implemented to ensure that productions are created and updated safely.
… a work queue manager

These are not used anywhere else outside of this class and don't do anything that requires them to be methods as opposed to class methods.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant