Too many requests when loading Holdings Editor for multiple items
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Evergreen |
Fix Released
|
Medium
|
Unassigned | ||
3.7 |
Fix Committed
|
Medium
|
Unassigned | ||
3.8 |
Fix Released
|
Medium
|
Unassigned |
Bug Description
When you load the holdings editor to edit multiple items, it generates a lot of pcrud requests:
- parallel open-ils.
- one open-ils.
- redundant open-ils.
You can reproduce the behavior in at least two ways:
1. add multiple items to item bucket
2. Cataloguing > Item Buckets > retrieve bucket
3. select all items
4. Actions > Edit Selected Items
or:
1. in Item Status, scan multiple items (or load from CSV)
2. select all items
3. Actions > Edit > Items
If you're using one of these methods to edit a lot of items at once -- and we have libraries that edit 100+ items simultaneously like this -- it can lead to sudden large spikes in pcrud drone counts and potential performance issues/drone exhaustion.
It would be nice if we could batch or serialize the aca and bmp requests, and maybe cache the acnp/acns lookups since they only produce different results when you have different owning libraries.
tags: | added: parallel-requests |
Changed in evergreen: | |
assignee: | nobody → Jeff Davis (jdavis-sitka) |
Changed in evergreen: | |
status: | New → Confirmed |
Changed in evergreen: | |
assignee: | nobody → Jeff Davis (jdavis-sitka) |
Changed in evergreen: | |
importance: | Undecided → Medium |
Changed in evergreen: | |
status: | Fix Committed → Fix Released |
I think all these requests are happening in cat/volcopy/app.js, not surprisingly.
Looks like the parallel aca searches happen via the ItemSvc addCopy function, most likely when it is called by the fetchRaw function deep within the EditCtrl controller.
The bmp searches are from itemSvc.get_parts which is called in the egVolCopyEdit directive.
The acnp/acns searches are from itemSvc. get_prefixes and itemSvc. get_suffixes which are called in the egVolRow directive.
I'm not sure how to serialize these calls. Even the first one is a little too tricky for me.