[ARVADOS] updated: 66573d95fcb2a969796448433694488401988554

git at public.curoverse.com git at public.curoverse.com
Mon Jun 8 11:40:56 EDT 2015


Summary of changes:
 .../app/controllers/collections_controller.rb      |   9 -
 .../app/controllers/projects_controller.rb         |  11 +-
 apps/workbench/app/models/arvados_api_client.rb    |  14 +-
 apps/workbench/app/models/arvados_base.rb          |  23 +-
 apps/workbench/app/views/layouts/body.html.erb     |   6 +
 apps/workbench/app/views/projects/public.html.erb  |  29 ++
 apps/workbench/config/application.default.yml      |   4 +-
 apps/workbench/config/routes.rb                    |   2 +
 .../controllers/collections_controller_test.rb     |   7 +
 .../test/controllers/projects_controller_test.rb   |  32 +++
 apps/workbench/test/helpers/manifest_examples.rb   |   1 +
 apps/workbench/test/helpers/time_block.rb          |   1 +
 .../test/integration/anonymous_access_test.rb      |   5 +
 .../test/integration/application_layout_test.rb    |   2 +
 .../collection_unit_test.rb                        |  71 +++++
 .../collections_controller_test.rb                 |  71 +++++
 apps/workbench/test/test_helper.rb                 |  34 ++-
 apps/workbench/test/unit/arvados_base_test.rb      |  87 ++++++
 doc/_config.yml                                    |   2 +-
 doc/_includes/_arv_run_redirection.liquid          |   2 +
 doc/_includes/_ssh_addkey.liquid                   |  17 +-
 doc/_includes/_tutorial_cluster_name.liquid        |   3 +
 .../_tutorial_expectations_workstation.liquid      |   3 +
 doc/index.html.liquid                              |   7 +-
 ...l-manual-prerequisites-ruby.html.textile.liquid |   3 +-
 .../getting_started/community.html.textile.liquid  |   4 +-
 .../getting_started/workbench.html.textile.liquid  |   2 +-
 doc/user/index.html.textile.liquid                 |   2 +-
 doc/user/reference/api-tokens.html.textile.liquid  |   4 +-
 doc/user/topics/arv-docker.html.textile.liquid     |   4 +-
 doc/user/topics/arv-run.html.textile.liquid        |   6 +
 doc/user/topics/arv-web.html.textile.liquid        |   3 +
 doc/user/topics/run-command.html.textile.liquid    |   2 +
 ...nning-pipeline-command-line.html.textile.liquid |  10 +-
 doc/user/topics/tutorial-job1.html.textile.liquid  |   8 +-
 .../topics/tutorial-parallel.html.textile.liquid   |   2 +-
 .../running-external-program.html.textile.liquid   |   8 +-
 .../tutorial-firstscript.html.textile.liquid       |  10 +-
 .../tutorial-keep-get.html.textile.liquid          |   2 +-
 .../tutorials/tutorial-keep.html.textile.liquid    |  11 +-
 ...tutorial-pipeline-workbench.html.textile.liquid |   8 +-
 .../tutorial-submit-job.html.textile.liquid        |   8 +-
 docker/api/Dockerfile                              |   4 +-
 docker/api/apache2_vhost.in                        |   2 -
 docker/api/application.yml.in                      |  11 +-
 docker/api/arvados-clients.yml.in                  |   2 +-
 .../{keep_server_1.json => keep_server_0.json.in}  |   3 +-
 .../{keep_server_0.json => keep_server_1.json.in}  |   2 +-
 docker/api/omniauth.rb.in                          |   2 +-
 docker/api/setup-gitolite.sh.in                    |   4 +-
 docker/arvdock                                     |  58 +++-
 docker/base/Dockerfile                             |   2 +-
 docker/build_tools/Makefile                        |  11 +-
 docker/build_tools/build.rb                        |  52 ++--
 docker/config.yml.example                          |  12 +-
 docker/doc/Dockerfile                              |   5 +-
 docker/doc/{apache2_vhost => apache2_vhost.in}     |   5 +-
 docker/sso/apache2_vhost.in                        |   2 -
 docker/workbench/Dockerfile                        |   4 +-
 docker/workbench/apache2_vhost.in                  |  13 +-
 docker/workbench/application.yml.in                |   6 +-
 sdk/cli/bin/crunch-job                             | 307 ++++++++++++++-------
 sdk/python/arvados/arvfile.py                      |  10 +-
 sdk/python/tests/test_arvfile.py                   |  19 +-
 .../api/app/controllers/application_controller.rb  |  21 +-
 services/api/app/models/blob.rb                    |  13 +-
 services/api/app/models/collection.rb              |   7 +-
 services/api/app/models/node.rb                    |  86 +++---
 services/api/config/application.default.yml        |  53 ++--
 ...50526180251_leading_space_on_full_text_index.rb |   2 +
 services/api/lib/eventbus.rb                       |   8 +-
 services/api/lib/record_filters.rb                 |   2 +-
 .../arvados/v1/collections_controller_test.rb      |  38 ++-
 services/api/test/helpers/manifest_examples.rb     |  31 +++
 services/api/test/helpers/time_block.rb            |  11 +
 .../integration/collections_performance_test.rb    |  40 +++
 .../api/test/unit/collection_performance_test.rb   |  61 ++++
 services/api/test/unit/node_test.rb                |  49 ++++
 services/api/test/unit/record_filters_test.rb      |  36 +++
 79 files changed, 1178 insertions(+), 356 deletions(-)
 create mode 100644 apps/workbench/app/views/projects/public.html.erb
 create mode 120000 apps/workbench/test/helpers/manifest_examples.rb
 create mode 120000 apps/workbench/test/helpers/time_block.rb
 create mode 100644 apps/workbench/test/integration_performance/collection_unit_test.rb
 create mode 100644 apps/workbench/test/integration_performance/collections_controller_test.rb
 create mode 100644 apps/workbench/test/unit/arvados_base_test.rb
 create mode 100644 doc/_includes/_tutorial_cluster_name.liquid
 create mode 100644 doc/_includes/_tutorial_expectations_workstation.liquid
 rename docker/api/{keep_server_1.json => keep_server_0.json.in} (59%)
 rename docker/api/{keep_server_0.json => keep_server_1.json.in} (59%)
 rename docker/doc/{apache2_vhost => apache2_vhost.in} (62%)
 create mode 100644 services/api/test/helpers/manifest_examples.rb
 create mode 100644 services/api/test/helpers/time_block.rb
 create mode 100644 services/api/test/integration/collections_performance_test.rb
 create mode 100644 services/api/test/unit/collection_performance_test.rb
 create mode 100644 services/api/test/unit/record_filters_test.rb

  discards  64cfaed1a3bd3b25ff86dd71b4a72920146e2e83 (commit)
       via  66573d95fcb2a969796448433694488401988554 (commit)
       via  511daa2d275143d89600f015ee0bb19dcbe5641c (commit)
       via  b33597e94eec5f21fbbcfa72611a3b36397755d5 (commit)
       via  869f3f0ad541c85bfb72060b1018905d3f882292 (commit)
       via  a12cf91db3ececed782d9718af30553f8866ad81 (commit)
       via  7cd190acfc0b6ce7f65b3effa1e2ce75ed692a3d (commit)
       via  0d540b1fde91b85db18fa027de65bb67c5389477 (commit)
       via  b193c49962deb916893e1ecb0ab04df8b00e3d7a (commit)
       via  ebdaedbc54c80730733c61cecb3998e26cf5ee7b (commit)
       via  375e0f68744fdd73f13921e8449de8c6fb232169 (commit)
       via  55f5486de7676b8906066b290ed0420b19f90eda (commit)
       via  24e15ff4b9d357d59827db9ec4f1bd165086eecb (commit)
       via  4e27d97b0161e56943a5828262a0fb873b826f22 (commit)
       via  602706ef5510b3f07fc5fa988019952d2133320c (commit)
       via  39a1340d56f7acbddb771f6bef36b68ee9076885 (commit)
       via  22c8b6367a9cd79b17240b7dca1ac8f7d8e7ee77 (commit)
       via  de8324b3fbbf3f67f0f61c162f5895e8dcd3142d (commit)
       via  69f592e029493afb8a0709811b5be1fefabafb4b (commit)
       via  4004979fcf1572336a86660b783fcdbebf658db7 (commit)
       via  c9f0347802b2d7b4844f283072c7931504e25ade (commit)
       via  95a1e7bbc1d6f931a0ea50cef9ceb1ea5074a76c (commit)
       via  c4c8977ef25cc6805f2cca1dedfc83faecc0bc23 (commit)
       via  de1e5fd5605aaf11b96ef411201e11ac767fe8ba (commit)
       via  d9ab8c81c11120c32864858d7caafe908c408ad5 (commit)
       via  1da9a2a61d66601ab9a02bff439d610ee19c5932 (commit)
       via  ac4a24f999b9c87ca5ecf6fa9c72204e11a89e66 (commit)
       via  214ad0d556ff3e0a7d6cef45cd8e84917994dab6 (commit)
       via  b5da9565dd4f27394a65ed321f15ee1c3f8ec2e3 (commit)
       via  78ddad37d72c6c3a728530dc6932fb91f7d81b87 (commit)
       via  7ca020894d276edf9098132f4757cdd46b6b1441 (commit)
       via  4b3b3064b87a07b2ba8035dd5c8f3660dd3b2a67 (commit)
       via  7a0a91fa4e59e1712611c5d52953898417b50038 (commit)
       via  a0ee198f06282e0e5fb6325bb4de852d08546eaf (commit)
       via  baac22ee9ae8f27a10df875e5f1e17b1b6cd51c8 (commit)
       via  c766dd2394de3480be2047f4c073e5802a001d07 (commit)
       via  f645742ae8131314f8d5cbd70f10504fc5fd1101 (commit)
       via  52e32bbee4cb43cc42aca47c927643f7662da266 (commit)
       via  469356d1a60754381e33736ac4f80e1a1e593a7f (commit)
       via  121625abcf70672531b35dc4092a4597d8eca4be (commit)
       via  76e42f169c6e278c1d8cefe9fb7c03cc70892bac (commit)
       via  c6fe632f972e4610ff7f35f83a5d7dcd2d6e7ecb (commit)
       via  178d3f36265e0e9e9cc0bb6ac8c7c47a9c701687 (commit)
       via  299c01cb4d4a96a94ece77db417ceb7af8e9ba69 (commit)
       via  9413eb733015601af699f2027d9a7a5bad3f3dea (commit)
       via  b25916b93d720f80b5bdf16f018d83c13c6c3001 (commit)
       via  1ec1d552c77e18e2912e400ae395ca00f4e51c3c (commit)
       via  1e0d770315a7b01c316b6a4c314bff58856bfe02 (commit)
       via  5e0dd2c6b8f080c81ff6077e629f5ec9f377802f (commit)
       via  7a53d874994a5a9af273cee1329d9635b7e03edb (commit)
       via  1b5c30eb957594e00a09df745df7630f661e3807 (commit)
       via  fa9fc5ab6440415542badc8bee0b144d698ec5cc (commit)
       via  32038d56fbfe5b635b1c53f247aea9abcca2285c (commit)
       via  c51a3888a01543d0835119574960a02fd7d35994 (commit)
       via  3101fea587bc08e0f4f00a583d1d9e2c953417c1 (commit)
       via  6fed84983e6e973eefff66a126f4bb7811c44d29 (commit)
       via  e73222a8d0c18b159ae3d8b53b54474650bdda16 (commit)
       via  d9214af111bb44deed1246ec97624b6bd8d970c5 (commit)
       via  59d68bda41fcc83c47795a19dbe1d0c180952a08 (commit)
       via  15009c109bee16bc09c9bbc11f7df0a677a0cf23 (commit)
       via  a2eb98fa68672d6966233d7864c328feb8df3939 (commit)
       via  b3e2782f72e0ca381f3f8c508227ebd7a2ef0c92 (commit)
       via  53b19718f974e7c9014644ce80fa36363ae0b693 (commit)
       via  2578f9c122d5c4d17cabf9d7f374f14773324360 (commit)
       via  7a47332fa99627c3ed0e22a02c54afcb6d128ef5 (commit)
       via  6bc89efda1447c479642c7459d14a7afa440019d (commit)
       via  8a2a84af560d9de68cf0d0c9e34e0d1f19b65e43 (commit)
       via  1a0ba80d44b4be962f898ee1458faea9d4a59137 (commit)
       via  71f1ccba7367ca9d000e53c0b86c0448600350f4 (commit)
       via  80d57cdcc9fcae93da2b507942815d9de6dd3351 (commit)
       via  a7d558d6c2db242a6555c7f397cb4d91618aa13c (commit)
       via  ae3bb0033a24a38489c49ffc26e5a5e8fd93c160 (commit)
       via  6b0931644aa30ad9d271ea06c8fa413696c562c0 (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (64cfaed1a3bd3b25ff86dd71b4a72920146e2e83)
            \
             N -- N -- N (66573d95fcb2a969796448433694488401988554)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 66573d95fcb2a969796448433694488401988554
Author: Tom Clegg <tom at curoverse.com>
Date:   Sat Jun 6 12:29:00 2015 -0400

    6098: Fix up record_filters API. Add (but skip) test that full-text index is used.

diff --git a/services/api/app/controllers/application_controller.rb b/services/api/app/controllers/application_controller.rb
index e91e3ce..931af00 100644
--- a/services/api/app/controllers/application_controller.rb
+++ b/services/api/app/controllers/application_controller.rb
@@ -207,10 +207,10 @@ class ApplicationController < ActionController::Base
 
   def apply_filters model_class=nil
     model_class ||= self.model_class
-    ft = record_filters @filters, model_class
-    if ft[:cond_out].any?
-      @objects = @objects.where('(' + ft[:cond_out].join(') AND (') + ')',
-                                *ft[:param_out])
+    sql = record_filters @filters, model_class
+    if sql[:conditions].any?
+      @objects = @objects.where('(' + sql[:conditions].join(') AND (') + ')',
+                                *sql[:params])
     end
   end
 
diff --git a/services/api/lib/eventbus.rb b/services/api/lib/eventbus.rb
index 35671d6..ed4eb24 100644
--- a/services/api/lib/eventbus.rb
+++ b/services/api/lib/eventbus.rb
@@ -97,12 +97,12 @@ class EventBus
 
         # Now build filters provided by client
         ws.filters.each do |filter|
-          ft = record_filters filter.filters, Log
-          if ft[:cond_out].any?
+          sql = record_filters filter.filters, Log
+          if sql[:conditions].any?
             # Join the clauses within a single subscription filter with AND
             # so it is consistent with regular queries
-            cond_out << "(#{ft[:cond_out].join ') AND ('})"
-            param_out += ft[:param_out]
+            cond_out << "(#{sql[:conditions].join ') AND ('})"
+            param_out += sql[:params]
           end
         end
 
diff --git a/services/api/lib/record_filters.rb b/services/api/lib/record_filters.rb
index 350c380..1be4e78 100644
--- a/services/api/lib/record_filters.rb
+++ b/services/api/lib/record_filters.rb
@@ -131,7 +131,7 @@ module RecordFilters
       conds_out << cond_out.join(' OR ') if cond_out.any?
     end
 
-    {:cond_out => conds_out, :param_out => param_out}
+    {:conditions => conds_out, :params => param_out}
   end
 
 end
diff --git a/services/api/test/unit/record_filters_test.rb b/services/api/test/unit/record_filters_test.rb
new file mode 100644
index 0000000..6990564
--- /dev/null
+++ b/services/api/test/unit/record_filters_test.rb
@@ -0,0 +1,36 @@
+require 'test_helper'
+
+class RecordFiltersTest < ActiveSupport::TestCase
+  include RecordFilters
+
+  ArvadosModel.descendants.each do |model|
+    # Postgres skips indexes when querying small tables, so these
+    # tests fail inappropriately. We include it to remind ourselves
+    # how to run the appropriate tests when we get around that snag.
+    break
+
+    ft_idx = model.connection.indexes(model.table_name).select do |idx|
+      /_full_text_/ =~ idx.name
+    end.first
+    next unless ft_idx
+    test "@@ query on #{model.to_s} uses full text index" do
+      act_as_user users(:active) do
+        (1..100).each do |i|
+          m = model.new
+          if m.respond_to? :name=
+              m.name = "test number #{i}"
+          end
+          if m.respond_to? :manifest_text=
+              m.manifest_text = ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:foo\n"
+          end
+          m.save!
+        end
+      end
+      query = record_filters [['any', '@@', 'foo:*']], model
+      plan = model.
+        where(query[:conditions].join(' AND '), *query[:params]).
+        explain
+      assert_match /#{ft_idx.name}/, plan
+    end
+  end
+end

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list