arvados.git
9 years ago5074: Fixup Ruby SDK discovery cache warnings. 5074-ruby-sdk-discovery-cache-wip
Brett Smith [Wed, 28 Jan 2015 20:08:06 +0000 (15:08 -0500)]
5074: Fixup Ruby SDK discovery cache warnings.

9 years ago5074: CLI SDK uses Google API client extensions from Ruby SDK.
Brett Smith [Tue, 27 Jan 2015 21:28:30 +0000 (16:28 -0500)]
5074: CLI SDK uses Google API client extensions from Ruby SDK.

9 years ago5074: Improve discovery document caching in Ruby SDK.
Brett Smith [Tue, 27 Jan 2015 21:22:35 +0000 (16:22 -0500)]
5074: Improve discovery document caching in Ruby SDK.

* Report a warning if there's an error reading or parsing a cached
  discovery document.
* Cache discovery documents to a tempfile and rename, to reduce the
  chances that we'll write corrupted caches due to I/O errors.
* Make this extension a separate module that can be loaded by users
  like the CLI SDK.
* Tighten exception handling throughout.

9 years agorefs #4523
Radhika Chippada [Tue, 27 Jan 2015 18:43:18 +0000 (13:43 -0500)]
refs #4523
Merge branch '4523-search-index'

9 years ago4523: a little bit simpler script
Radhika Chippada [Tue, 27 Jan 2015 18:20:38 +0000 (13:20 -0500)]
4523: a little bit simpler script

9 years agoMerge branch 'master' into 4523-search-index
Radhika Chippada [Tue, 27 Jan 2015 17:38:42 +0000 (12:38 -0500)]
Merge branch 'master' into 4523-search-index

9 years agoMerge branch '5087-fix-crunch-sigpipe-wip'
Brett Smith [Tue, 27 Jan 2015 17:00:41 +0000 (12:00 -0500)]
Merge branch '5087-fix-crunch-sigpipe-wip'

Closes #5087, #5089.

9 years ago5087: crunch-job installer feeds tar incrementally.
Brett Smith [Mon, 26 Jan 2015 19:02:56 +0000 (14:02 -0500)]
5087: crunch-job installer feeds tar incrementally.

When the input we give to tar is large enough (greater than 4-5MiB),
writing it all in one shot causes tar to die, and crunch-job to get
SIGPIPE.  Prevent this by feeding the input to tar in a series of
smaller writes.

9 years agoWording tweaks for doc.arvados.org.
Ward Vandewege [Mon, 26 Jan 2015 20:51:07 +0000 (15:51 -0500)]
Wording tweaks for doc.arvados.org.

No issue #

9 years agoMerge branch '4340-arv-ws-fix-ssl-warning'
Ward Vandewege [Mon, 26 Jan 2015 16:05:12 +0000 (11:05 -0500)]
Merge branch '4340-arv-ws-fix-ssl-warning'

Closes #4340

9 years agoMerge branch 'master' into 4340-arv-ws-fix-ssl-warning
Ward Vandewege [Mon, 26 Jan 2015 16:04:50 +0000 (11:04 -0500)]
Merge branch 'master' into 4340-arv-ws-fix-ssl-warning

9 years agoA few tweaks based on review feedback.
Ward Vandewege [Mon, 26 Jan 2015 16:04:09 +0000 (11:04 -0500)]
A few tweaks based on review feedback.

refs #4340

9 years agoMerge branch '5010-trash-button-for-collections'
Tim Pierce [Mon, 26 Jan 2015 15:52:49 +0000 (10:52 -0500)]
Merge branch '5010-trash-button-for-collections'

Fixes #5010.

9 years ago5010: fixed integration test
Tim Pierce [Mon, 26 Jan 2015 15:24:40 +0000 (10:24 -0500)]
5010: fixed integration test

Fixed a failing integration test that checked for the presence of a
collection in the Home project after being deleted.  Removed the
assertion that checked the Home project post-deletion.

9 years agoarv-ws should prefer system's CA certificates (if available).
Ward Vandewege [Fri, 23 Jan 2015 22:00:37 +0000 (17:00 -0500)]
arv-ws should prefer system's CA certificates (if available).

closes #4340

9 years agoMerge branch '0000-workbench-user-profile-wording-changes'
Ward Vandewege [Fri, 23 Jan 2015 21:55:30 +0000 (16:55 -0500)]
Merge branch '0000-workbench-user-profile-wording-changes'

No issue #

9 years agoMerge branch 'master' into 0000-workbench-user-profile-wording-changes
Ward Vandewege [Fri, 23 Jan 2015 19:21:17 +0000 (14:21 -0500)]
Merge branch 'master' into 0000-workbench-user-profile-wording-changes

9 years agorefs #4926 Merge branch '4926-getting-started'
Nancy Ouyang [Fri, 23 Jan 2015 19:15:35 +0000 (14:15 -0500)]
refs #4926 Merge branch '4926-getting-started'

9 years agomore typos
Nancy Ouyang [Fri, 23 Jan 2015 19:11:37 +0000 (14:11 -0500)]
more typos

9 years agominor typos
Nancy Ouyang [Fri, 23 Jan 2015 18:50:28 +0000 (13:50 -0500)]
minor typos

9 years ago5010: updated functional tests for new trash behavior
Tim Pierce [Fri, 23 Jan 2015 16:55:04 +0000 (11:55 -0500)]
5010: updated functional tests for new trash behavior

Renamed "project admin can remove items from the project" to "project
admin can remove collections from the project" and updated it to verify
that the target collection has actually been made inaccessible to API
queries.

Added "project admin can remove items from project other than
collections" test to verify that objects which don't support expires_at
continue to exhibit the old behavior.

9 years agoMerge branch '4889-crunch-deadlock'
Tim Pierce [Thu, 22 Jan 2015 22:08:20 +0000 (17:08 -0500)]
Merge branch '4889-crunch-deadlock'

Fixes #4889.

9 years ago4889: improve error message, unit test
Tim Pierce [Thu, 22 Jan 2015 22:05:36 +0000 (17:05 -0500)]
4889: improve error message, unit test

Per review in #4889-17:

Updated the CopyPipeToChan error message to be more descriptive, for the
benefit of anyone reading log output.

Corrected the test to confirm that the error message is received even if
the child process does not close the stderr log (which matches the usage
patterns in production).

9 years agoMerge branch 'master' into 0000-workbench-user-profile-wording-changes
Ward Vandewege [Thu, 22 Jan 2015 21:37:40 +0000 (16:37 -0500)]
Merge branch 'master' into 0000-workbench-user-profile-wording-changes

9 years ago4926: typos & rewording
Nancy Ouyang [Thu, 22 Jan 2015 20:52:08 +0000 (15:52 -0500)]
4926: typos & rewording

9 years ago4889: added CopyPipeToChan unit test
Tim Pierce [Thu, 22 Jan 2015 20:40:46 +0000 (15:40 -0500)]
4889: added CopyPipeToChan unit test

Added TestCopyPipeToChanLongLines test to confirm that when
CopyPipeToChan attempts to read a line too long for bufio.Scanner, that
it generates an error message on the output channel.

9 years agoMerge branch 'master' into 4523-search-index
Radhika Chippada [Thu, 22 Jan 2015 18:40:08 +0000 (13:40 -0500)]
Merge branch 'master' into 4523-search-index

9 years ago4523: add a new migration script that invokes search_index migration down and up...
Radhika Chippada [Thu, 22 Jan 2015 18:37:37 +0000 (13:37 -0500)]
4523: add a new migration script that invokes search_index migration down and up methods when a search_index with description is found (due to an earlier migration of search_index with descriptions).

9 years agorefs #4523
Radhika Chippada [Thu, 22 Jan 2015 17:06:53 +0000 (12:06 -0500)]
refs #4523
Merge branch '4523-search-index'

9 years ago4523: do not include descriptions in search index and update tests accordingly.
Radhika Chippada [Thu, 22 Jan 2015 16:36:00 +0000 (11:36 -0500)]
4523: do not include descriptions in search index and update tests accordingly.

9 years ago5010: remove_items sets the expired_at date if available
Tim Pierce [Wed, 21 Jan 2015 20:50:56 +0000 (15:50 -0500)]
5010: remove_items sets the expired_at date if available

On objects which support expired_at, remove_items will set that date
rather than moving them out of the current project.

9 years ago4889: close the child stderr pipe before returning
Tim Pierce [Wed, 21 Jan 2015 20:18:16 +0000 (15:18 -0500)]
4889: close the child stderr pipe before returning

Updated CopyPipeToChan to close the child's stderr pipe before
returning, so that even if it returns for some reason other than
EOF (e.g. line too long) the child will not deadlock on writing stderr
output.

9 years agoMerge branch '3021-api-performance' refs #3021
Tom Clegg [Wed, 21 Jan 2015 20:03:34 +0000 (15:03 -0500)]
Merge branch '3021-api-performance' refs #3021

9 years ago4967: Fix API server Gemfile.
Brett Smith [Wed, 21 Jan 2015 19:11:00 +0000 (14:11 -0500)]
4967: Fix API server Gemfile.

I'm kind of at a loss to explain what happened here.  Refs #4967.

9 years ago4967: API server bundle uses bugfixed crunch-job.
Brett Smith [Wed, 21 Jan 2015 18:40:11 +0000 (13:40 -0500)]
4967: API server bundle uses bugfixed crunch-job.

Refs #4967, #4970.

9 years agoMerge branch '4967-crunch-mount-cleanup-wip'
Brett Smith [Wed, 21 Jan 2015 18:38:28 +0000 (13:38 -0500)]
Merge branch '4967-crunch-mount-cleanup-wip'

Closes #4967, #4970, #5039.

9 years ago4967: crunch-job unmounts old Keep mounts more robustly.
Brett Smith [Wed, 21 Jan 2015 16:38:18 +0000 (11:38 -0500)]
4967: crunch-job unmounts old Keep mounts more robustly.

The previous version looked for mounts under $JOB_WORK before
unmounting anything.  We long ago started mounting under $TASK_WORK,
so unmounting hasn't been working for a while.  This version unmounts
every FUSE mount with "keep" in the path, so it will be much more
flexible.

I also changed the cleanup to use bash -e, so the logs are more likely
to indicate if there was trouble during the cleanup step.

9 years ago4926: Added 'getting started' section with three image galleries.
Nancy Ouyang [Wed, 21 Jan 2015 05:10:05 +0000 (00:10 -0500)]
4926: Added 'getting started' section with three image galleries.

9 years agoMerge branch '5016-ctrl-c-arv-ws' closes #5016
Peter Amstutz [Wed, 21 Jan 2015 15:51:51 +0000 (10:51 -0500)]
Merge branch '5016-ctrl-c-arv-ws' closes #5016

9 years ago5029: API server uses bugfixed crunch-job.
Brett Smith [Tue, 20 Jan 2015 19:52:29 +0000 (14:52 -0500)]
5029: API server uses bugfixed crunch-job.

Refs #5029.

9 years ago5029: Fix crunch-job logging when SDK requested+virtualenv unavailable.
Brett Smith [Tue, 20 Jan 2015 19:42:48 +0000 (14:42 -0500)]
5029: Fix crunch-job logging when SDK requested+virtualenv unavailable.

* Properly concatenate the message.

* Query and log installed SDK packages in this scenario, since we
  might fall back to what's available in the Docker image.

Closes #5029.

9 years agorefs #4926
Radhika Chippada [Tue, 20 Jan 2015 18:37:04 +0000 (13:37 -0500)]
refs #4926
Merge branch '4926-browser-based-upload'

9 years ago4926: move tutorial_expectations into sections that are describing command line tools.
Radhika Chippada [Tue, 20 Jan 2015 18:35:54 +0000 (13:35 -0500)]
4926: move tutorial_expectations into sections that are describing command line tools.

9 years agoMerge branch '4838-fuse-executable-files' closes #4838
Peter Amstutz [Tue, 20 Jan 2015 17:24:02 +0000 (12:24 -0500)]
Merge branch '4838-fuse-executable-files' closes #4838

9 years ago4838: Set +x on all StreamReaderFiles
Peter Amstutz [Tue, 20 Jan 2015 16:42:54 +0000 (11:42 -0500)]
4838: Set +x on all StreamReaderFiles

9 years ago3021: Merge branch 'master' into 3021-api-performance
Tom Clegg [Tue, 20 Jan 2015 08:04:07 +0000 (03:04 -0500)]
3021: Merge branch 'master' into 3021-api-performance

9 years ago3021: Use Marshal dump/load to save @old_attributes. Otherwise, hashes
Tom Clegg [Tue, 20 Jan 2015 06:20:54 +0000 (01:20 -0500)]
3021: Use Marshal dump/load to save @old_attributes. Otherwise, hashes
in @old_attributes can contain references to objects that can be
mutated by callers, which could result in the new attributes being
logged incorrectly as old_attributes.

9 years ago3021: Replace more "render json:..." with faster Oj.
Tom Clegg [Tue, 20 Jan 2015 05:53:05 +0000 (00:53 -0500)]
3021: Replace more "render json:..." with faster Oj.

9 years ago4926: add description with section links
Radhika Chippada [Mon, 19 Jan 2015 21:42:45 +0000 (16:42 -0500)]
4926: add description with section links

9 years agoMerge branch '4840-workbench-selections-action-forms-wip'
Brett Smith [Mon, 19 Jan 2015 20:27:42 +0000 (15:27 -0500)]
Merge branch '4840-workbench-selections-action-forms-wip'

Closes #4840, #4996.

9 years ago4840: Workbench selection actions are submitted by POST.
Brett Smith [Thu, 15 Jan 2015 22:30:28 +0000 (17:30 -0500)]
4840: Workbench selection actions are submitted by POST.

The previous implementation could get 414 Request URI Too Long
responses by stuffing a large number of selections into the link href.
This commit sidesteps that problem by POSTing the data with a hidden
form instead.  It's based on rails-ujs' strategy for handling links
with data-method that we were already using for some selection
actions, so it should be minimally disruptive.

9 years ago4840: All Workbench selection links toggle dropdown.
Brett Smith [Thu, 15 Jan 2015 22:27:35 +0000 (17:27 -0500)]
4840: All Workbench selection links toggle dropdown.

9 years ago4840: Restore checkbox to project Pipelines and Jobs tab.
Brett Smith [Mon, 5 Jan 2015 20:43:50 +0000 (15:43 -0500)]
4840: Restore checkbox to project Pipelines and Jobs tab.

9 years agoMerge branch 'master' into 4926-browser-based-upload
Radhika Chippada [Mon, 19 Jan 2015 19:35:54 +0000 (14:35 -0500)]
Merge branch 'master' into 4926-browser-based-upload

9 years ago5016: PollClient.run_forever() polls self.stop() in order to have a chance to process...
Peter Amstutz [Mon, 19 Jan 2015 14:49:43 +0000 (09:49 -0500)]
5016: PollClient.run_forever() polls self.stop() in order to have a chance to process KeyboardInterrupt.

9 years agocloses #3686
Radhika Chippada [Fri, 16 Jan 2015 23:20:07 +0000 (18:20 -0500)]
closes #3686
Merge branch '3686-sharing-repositories'

9 years ago3686: ensure Advanced is always the last pane even after adding the Sharing pane.
Radhika Chippada [Fri, 16 Jan 2015 23:18:22 +0000 (18:18 -0500)]
3686: ensure Advanced is always the last pane even after adding the Sharing pane.

9 years agoMerge branch 'master' into 3686-sharing-repositories
Radhika Chippada [Fri, 16 Jan 2015 21:06:12 +0000 (16:06 -0500)]
Merge branch 'master' into 3686-sharing-repositories

9 years agoMerge branch '4922-google-api-client-force-install'
Tim Pierce [Fri, 16 Jan 2015 20:50:32 +0000 (15:50 -0500)]
Merge branch '4922-google-api-client-force-install'

Fixes #4922.

9 years ago4922: force google-api-python-client install
Tim Pierce [Fri, 16 Jan 2015 19:51:28 +0000 (14:51 -0500)]
4922: force google-api-python-client install

Install google-api-python-client with 'pip install -I' to fix the case
where the Docker image already has an older version of
google-api-python-client installed.

9 years agoUpdate bundle. refs #3021
Tom Clegg [Fri, 16 Jan 2015 17:26:17 +0000 (12:26 -0500)]
Update bundle. refs #3021

9 years agoMerge branch '3021-workbench-perf' refs #3021
Tom Clegg [Fri, 16 Jan 2015 06:37:58 +0000 (01:37 -0500)]
Merge branch '3021-workbench-perf' refs #3021

9 years ago3021: Reset API fixtures before running the first test case.
Tom Clegg [Fri, 16 Jan 2015 03:22:26 +0000 (22:22 -0500)]
3021: Reset API fixtures before running the first test case.

9 years ago3021: Do not drop/create API database at startup if run-tests.sh has done that for us.
Tom Clegg [Fri, 16 Jan 2015 01:24:11 +0000 (20:24 -0500)]
3021: Do not drop/create API database at startup if run-tests.sh has done that for us.

9 years ago3021: Revert "3021: Do not drop/create API database at startup: run-tests.sh does...
Tom Clegg [Fri, 16 Jan 2015 01:22:19 +0000 (20:22 -0500)]
3021: Revert "3021: Do not drop/create API database at startup: run-tests.sh does that for us."

This reverts commit 591446b97754292031a4214f08039adebd56cfe8.

9 years ago3021: Merge branch 'master' into 3021-workbench-perf
Tom Clegg [Thu, 15 Jan 2015 21:29:59 +0000 (16:29 -0500)]
3021: Merge branch 'master' into 3021-workbench-perf

9 years ago3021: Do not show user notifications on error pages.
Tom Clegg [Thu, 15 Jan 2015 17:50:11 +0000 (12:50 -0500)]
3021: Do not show user notifications on error pages.

9 years ago3021: Update Gemfile for Ruby SDK bugfix.
Tom Clegg [Thu, 15 Jan 2015 17:42:59 +0000 (12:42 -0500)]
3021: Update Gemfile for Ruby SDK bugfix.

9 years agoMerge branch '3835-pysdk-keep-exceptions-wip'
Brett Smith [Thu, 15 Jan 2015 17:00:13 +0000 (12:00 -0500)]
Merge branch '3835-pysdk-keep-exceptions-wip'

Closes #3835, #4972.

9 years ago3021: Remove reference to deleted speclist arg.
Tom Clegg [Thu, 15 Jan 2015 16:59:20 +0000 (11:59 -0500)]
3021: Remove reference to deleted speclist arg.

9 years ago3835: PySDK raises NotFoundError when all Keep services report such.
Brett Smith [Wed, 14 Jan 2015 20:22:24 +0000 (15:22 -0500)]
3835: PySDK raises NotFoundError when all Keep services report such.

Previously, we raised this error when >= 75% of services reported
such, as the most reasonable available cutoff to make the
distinction.  Now that Keep exceptions include detailed information
about the error from each service, it seems useful to make this
threshold stricter, and only raise NotFoundError when we're sure
that's the problem.  See further discussion from
<https://arvados.org/issues/3835#note-11>.

9 years ago3835: Improve error reporting in PySDK Keep client.
Brett Smith [Fri, 9 Jan 2015 18:15:07 +0000 (13:15 -0500)]
3835: Improve error reporting in PySDK Keep client.

* Create a KeepRequestError base exception to store information about
  errors encountered when talking to Keep services, and include those
  in the default formatting.
* Include Keep service error information in exceptions raised by the
  Keep client.

9 years agoMerge branch 'master' into 3686-sharing-repositories
Radhika Chippada [Thu, 15 Jan 2015 16:13:27 +0000 (11:13 -0500)]
Merge branch 'master' into 3686-sharing-repositories

9 years ago4926: trailing white space
Radhika Chippada [Thu, 15 Jan 2015 16:02:41 +0000 (11:02 -0500)]
4926: trailing white space

9 years agoMerge branch 'master' into 4926-browser-based-upload
Radhika Chippada [Thu, 15 Jan 2015 16:00:25 +0000 (11:00 -0500)]
Merge branch 'master' into 4926-browser-based-upload

9 years ago4926: minor text update
Radhika Chippada [Thu, 15 Jan 2015 15:59:56 +0000 (10:59 -0500)]
4926: minor text update

9 years agoReduce file_names limit to 2^12. refs #4523.
Tom Clegg [Wed, 14 Jan 2015 22:33:18 +0000 (17:33 -0500)]
Reduce file_names limit to 2^12. refs #4523.

9 years ago4926: improved image quality
Radhika Chippada [Wed, 14 Jan 2015 21:21:22 +0000 (16:21 -0500)]
4926: improved image quality

9 years agoMerge branch 'master' into 4926-browser-based-upload
Radhika Chippada [Wed, 14 Jan 2015 20:41:25 +0000 (15:41 -0500)]
Merge branch 'master' into 4926-browser-based-upload

9 years agocloses #4523
Radhika Chippada [Wed, 14 Jan 2015 20:34:50 +0000 (15:34 -0500)]
closes #4523
Merge branch '4523-search-index'

9 years ago4926: download images
Radhika Chippada [Wed, 14 Jan 2015 20:33:19 +0000 (15:33 -0500)]
4926: download images

9 years ago4926: expand downloading data section
Radhika Chippada [Wed, 14 Jan 2015 20:32:10 +0000 (15:32 -0500)]
4926: expand downloading data section

9 years agoMerge branch '4523-search-index-TC' into 4523-search-index
Radhika Chippada [Wed, 14 Jan 2015 20:21:03 +0000 (15:21 -0500)]
Merge branch '4523-search-index-TC' into 4523-search-index

Conflicts:
services/api/test/integration/collections_api_test.rb

9 years ago4523: Clear up manifest-signing vs. locator-signing.
Tom Clegg [Wed, 14 Jan 2015 19:41:39 +0000 (14:41 -0500)]
4523: Clear up manifest-signing vs. locator-signing.

9 years ago4523: update signed_locator in test
Radhika Chippada [Wed, 14 Jan 2015 19:14:38 +0000 (14:14 -0500)]
4523: update signed_locator in test

9 years agoMerge branch 'master' into 4926-browser-based-upload
Radhika Chippada [Wed, 14 Jan 2015 18:38:45 +0000 (13:38 -0500)]
Merge branch 'master' into 4926-browser-based-upload

9 years agoMerge branch 'master' into 4523-search-index
Radhika Chippada [Wed, 14 Jan 2015 18:12:22 +0000 (13:12 -0500)]
Merge branch 'master' into 4523-search-index

9 years ago4523: try to resolve column order by down and up migrations through VERSION=201408170...
Radhika Chippada [Wed, 14 Jan 2015 18:11:03 +0000 (13:11 -0500)]
4523: try to resolve column order by down and up migrations through VERSION=20140817035914

9 years ago4523: use filters instead of where for search
Radhika Chippada [Wed, 14 Jan 2015 18:06:21 +0000 (13:06 -0500)]
4523: use filters instead of where for search

9 years ago4523: check for a specific file name and stream names in file_names.
Radhika Chippada [Wed, 14 Jan 2015 17:54:41 +0000 (12:54 -0500)]
4523: check for a specific file name and stream names in file_names.

9 years agoPython packages use python-daemon<2.
Brett Smith [Wed, 14 Jan 2015 17:47:38 +0000 (12:47 -0500)]
Python packages use python-daemon<2.

It's good to see python-daemon under active development, but they're
working out so many little issues so rapidly that we're having a hard
time keeping on top of them in our builds.  We're pinning the version
until things settle down a little.  No issue #.

9 years ago4523: update migration script to use execute instead of update_sql so that output...
Radhika Chippada [Wed, 14 Jan 2015 16:24:20 +0000 (11:24 -0500)]
4523: update migration script to use execute instead of update_sql so that output is not printed to console.

9 years agoMerge branch 'master' into 4523-search-index
Radhika Chippada [Wed, 14 Jan 2015 16:15:33 +0000 (11:15 -0500)]
Merge branch 'master' into 4523-search-index

9 years agocloses #3756
Radhika Chippada [Wed, 14 Jan 2015 16:14:56 +0000 (11:14 -0500)]
closes #3756
Merge branch '3756-show-user-button'

9 years agoMerge branch 'master' into 3756-show-user-button
Radhika Chippada [Wed, 14 Jan 2015 16:13:49 +0000 (11:13 -0500)]
Merge branch 'master' into 3756-show-user-button

9 years agoMerge branch 'master' into 3686-sharing-repositories
Radhika Chippada [Wed, 14 Jan 2015 16:12:47 +0000 (11:12 -0500)]
Merge branch 'master' into 3686-sharing-repositories

9 years ago3686: Support sharing pane in repository show page.
Radhika Chippada [Wed, 14 Jan 2015 16:10:27 +0000 (11:10 -0500)]
3686: Support sharing pane in repository show page.
Refactor current project sharing work into application area and reuse it for sharing repositories.
Refactor methods used by tests into helper and reuse in repository sharing tests.

9 years ago3021: Use Oj to encode API responses, and to decode them in tests.
Tom Clegg [Sat, 10 Jan 2015 07:55:55 +0000 (02:55 -0500)]
3021: Use Oj to encode API responses, and to decode them in tests.

* We use the Oj and multi_json gems, which makes Oj the default JSON
  parser. However, Rails' ActiveRecord::Base overrides this and uses
  the native JSON parser, which is slow. In our case we have two
  render() calls that represent nearly all cases where we ask
  ActiveRecord to serialize for us. In both cases we already have a
  hash (not a model object), and we always want JSON responses. So we
  can fix the performance problem simply by calling Oj.dump()
  ourselves, and passing the resulting JSON (instead of the hash) to
  render().

More gory details:

* "ActiveRecord::Base.extend kills JSON performance":
  https://github.com/rails/rails/issues/9212

* "when freedom patches fight, nobody wins":
  https://github.com/intridea/multi_json/pull/138#issuecomment-24468223

9 years ago3021: Do not compute etag for initial model state unless/until actually needed.
Tom Clegg [Sat, 10 Jan 2015 07:54:22 +0000 (02:54 -0500)]
3021: Do not compute etag for initial model state unless/until actually needed.

Profiling shows that making a copy of the attributes hash (which
modelinstance.attributes() does) is much faster than
md5(attrs.inspect). Given that md5(attrs_when_loaded) is never needed
in the common case where a model gets loaded but never changed or
written back to the database, it's better to just stash a copy of the
attributes hash when loading, and defer computing the md5 until
it's time to write a log entry.

9 years ago3021: Call Rails.application.eager_load! only once, not every single
Tom Clegg [Sat, 10 Jan 2015 07:18:00 +0000 (02:18 -0500)]
3021: Call Rails.application.eager_load! only once, not every single
time we use the uuid prefix cache, for two reasons:

* The reason it's here at all is to ensure that all descendant classes
  of ActiveRecord::Base have been defined, so we don't miss any model
  classes when building the uuid prefix cache. Therefore, it's more
  robust (and clearer) to call it from the function where the cache
  gets built, rather than calling it from a function that _uses_ the
  cache.

* eager_load! is (evidently) not very efficient about noticing that
  everything is already loaded: when called too often, it showed up
  prominently in profiling results.