5614: Improve Workbench combine collections performance.
authorBrett Smith <brett@curoverse.com>
Wed, 8 Apr 2015 20:37:58 +0000 (16:37 -0400)
committerBrett Smith <brett@curoverse.com>
Wed, 8 Apr 2015 20:39:30 +0000 (16:39 -0400)
commit79f2985e90fe846f7e0120b63cf24010f04bd871
tree96589ce068932a5bb29ace090951d3fcc8dea979
parentfceecc54056fef8e91582422a7a805da0abc189d
5614: Improve Workbench combine collections performance.

* Get links with API list calls, instead of fetching each one
  individually.

* Get a list mapping portable data hashes to UUIDs, and add a single
  UUID per portable data hash to the fetch list.  This helps us avoid
  downloading multiple copies the same manifest text, and is probably
  the single-biggest win in this entire commit for most use cases.

* Use the Ruby SDK to build the new collection.  This lets us avoid
  spawning new arv-normalize processes, and piping large manifests to
  them.  It also lets us build the entire collection and normalize
  only when we're done.

* Create provenance links after we send a response to the browser.  No
  reason not to, really.

* Use Oj instead of JSON.
apps/workbench/Gemfile
apps/workbench/Gemfile.lock
apps/workbench/app/controllers/actions_controller.rb