zooniverse / panoptes

Zooniverse API to support user defined volunteer research projects
Apache License 2.0
103 stars 41 forks source link

Data Model help #492

Closed alianos- closed 9 years ago

alianos- commented 9 years ago

So I need some help on how to set up the project if you have time at some point. The task at hand presents the user with 2 aerial photographs of the same location for different years. We ask users to markup the percentage of land use types for each image. (e.g. 2005: 80% forest, 20% pasture, 2013: 75% forest, 25% pasture). There are are some additional flags they can raise on each image.

  1. I don't think this can be broken to subtasks, should I set it up as 1 workflow with 1 task?
  2. The images are grouped by area. We want to give users the ability to select which area/areas they wish to see images from. What would be the best way to do that? Should I create multiple similar workflows even though the task is the same, or I can achieve that with subjectSets?
  3. When the user finishes the task, I am thinking to store each individual result as an annotation. Is that appropriate?
  4. How do I retrieve the next appropriate subject? (because retrieve subject does not seem to take into account projects/workflow/sets etc).

Finally, is there a something like a guide or a tutorial that I might have missed?

camallen commented 9 years ago

Hi @alianos-

Sounds like you will want two images / subject, i.e. give me a subject and it has before and after image URL's for the client to display.

  1. I would set it up as a workflow with each land use type as a different task. Your example would have 3 marking tasks / image.
  2. If you want to allow the users to select the areas they see, then you can use subject sets to logically group the subjects. The workflow can have multiple subject sets, your client interface would then ask for subjects from a worfklow / subjet_set via the subjects end point.
  3. A classification stores the results of each completed task in the annotations array. Here is some mock data that the front end is using. Let us know if the API docs need updating.
  4. I addressed this via 2. Depending on how you setup the workflow (see the optional cellect params), you can have random, priority, pairwise random/ priority subject selection strategies. Normally you'd use random to get a good distribution of classifications across your data set but it depends on your use case. See this code for more details.

Unfortunately not, otherwise i would have pointed you at at! It's on our list of things todo. @aliburchard you might want to use this as a template question re how to setup a project in future docs.

alianos- commented 9 years ago

One of things that bugs me is that all the tasks are performed at once. It really only looks as one task. Have a look at the mock interface they have designed if you want to get a better idea. http://hampshire.agrisat.co.uk/0.21/classification.html . I also have an issue with limited task types, but I'll open another thread for that.

I'll let you know what happened once I figure what links to what in what order :)

camallen commented 9 years ago

Just submit the annotations the way you want them.

Using the mockup i'd store / package them via the type -> next button locally before submitting to the server, possibly resulting in an unordered list of 'type', 'marks' json object.

alianos- commented 9 years ago

I have one project, linked to one workflow, linked to 2 subjectSets. One subjectSet contains 4 subjects, the other contains 2 (based on the set_member_subject_count, as retrieving either a set or a subject does not contain the actual links!). I have 5 subjects in total, so 1 of them belongs to both groups.

I am trying to retrieve the next subject to present but I am getting an error

Request

GET /api/subjects?sort=cellect&workflow_id=1&subject_set_id=2 HTTP/1.1
Host: 192.168.1.102:3000
Connection: keep-alive
Accept: application/vnd.api+json; version=1
Origin: http://localhost:8383
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36 OPR/27.0.1689.66
Authorization: Bearer 8b6f6acc81c903564b97f29ccb0235a03f6b35d9427165cffe8f8668eec84034
content-type: application/json
Referer: http://localhost:8383/PanoptesUI/index.html
Accept-Encoding: gzip, deflate, lzma, sdch
Accept-Language: en-US,en;q=0.8
Cookie: _Panoptes_session=eFN3Q1BGcThiQ0sycE05QnBETHdOR2NEdDJwU1ZGOTh3Wk1DbVEwbEVnOEFBVUV4b1d4eGcra0hOYmwrZ0l0VkxuOFBPVXpnMGhsZEJkK3B2U1U3NlduT0xyK1VrZ1M5SFBjaGFPTzJQQkFnSjlwTDUxak5VNDZ3K0lMYTYzVFd5MGdEZHZmUkZqVm1ENTk2bzZsSXhPSXpnZ0trb2RsOWI3U3hQdWo2MmxFQTIyaEF5NVY4RU1UU0VXUEZXSG0rTjFEVHFQTFU0bGpoMG05bTJBN2dWRS9Ccml2Ni9EWVN5NHYxdGNCRW82dGxZRXM3N0lld3ZaR3E4ME9aeG1EUWtsa0xSOUF2anc5Nm1WbzNmTnhVQTRCNzZRTS9CQmpBUng5eE5ocDJ3RGs9LS1ud3pJeGpiVVRmenk0cEkxeVlqVEJRPT0%3D--40eb74240f48e118230fe2f2d1b103daac1eb229

Response

  <!-- This file lives in public/500.html -->
  <div class="dialog">
    <div>
      <h1>We're sorry, but something went wrong.</h1>
    </div>
    <p>If you are the application owner check the logs for more information.</p>
  </div>

Panoptes

image

camallen commented 9 years ago

Looks like the cellect client can't talk to zoo keeper, what's in your config/cellect.yml. Or the cellect server is offline. Can you include the whole log from fig up to the error.

I assume you are running using fig / docker?

alianos- commented 9 years ago

Yes I am using docker

my `config/cellect.yml' is whatever was in the box.

development:
    zk_url: zookeeper:2181

test:
    zk_url: zookeeper:2181

The full log is

Recreating panoptes_postgres_1...
Recreating panoptes_zookeeper_1...
Recreating panoptes_cellect_1...
Recreating panoptes_redis_1...
Recreating panoptes_kafka_1...
Recreating panoptes_panoptes_1...
Attaching to panoptes_postgres_1, panoptes_zookeeper_1, panoptes_cellect_1, panoptes_redis_1, panoptes_kafka_1, panoptes_panoptes_1
postgres_1  | *** Running /etc/rc.local...
postgres_1  | *** Booting runit daemon...
postgres_1  | *** Runit started as PID 11
postgres_1  | POSTGRES_USER=panoptes
postgres_1  | POSTGRES_PASS=panoptes
postgres_1  | POSTGRES_DATA_DIR=/data
postgres_1  | Starting PostgreSQL...
postgres_1  | Creating the superuser: panoptes
postgres_1  | 2015-02-06 21:08:11 UTC LOG:  database system was shut down at 2015-02-06 20:38:15 UTC
postgres_1  | 2015-02-06 21:08:11 UTC LOG:  database system is ready to accept connections
postgres_1  | 2015-02-06 21:08:11 UTC LOG:  autovacuum launcher started
postgres_1  | 2015-02-06 21:08:11 UTC ERROR:  role "panoptes" cannot be dropped because some objects depend on it
postgres_1  | 2015-02-06 21:08:11 UTC DETAIL:  owner of database panoptes_test
postgres_1  |  owner of database panoptes_development
postgres_1  |  46 objects in database panoptes_development
postgres_1  | 2015-02-06 21:08:11 UTC STATEMENT:  DROP ROLE IF EXISTS panoptes;
postgres_1  | ERROR:  role "panoptes" cannot be dropped because some objects depend on it
postgres_1  | DETAIL:  owner of database panoptes_test
postgres_1  | owner of database panoptes_development
postgres_1  | 46 objects in database panoptes_development
postgres_1  | 2015-02-06 21:08:11 UTC ERROR:  role "panoptes" already exists
postgres_1  | 2015-02-06 21:08:11 UTC STATEMENT:  CREATE ROLE panoptes WITH ENCRYPTED PASSWORD 'panoptes';
postgres_1  | ERROR:  role "panoptes" already exists
zookeeper_1 | JMX enabled by default
zookeeper_1 | Using config: /etc/zookeeper/conf/zoo.cfg
cellect_1   | Puma starting in single mode...
cellect_1   | * Version 2.11.0 (ruby 2.1.5-p273), codename: Intrepid Squirrel
cellect_1   | * Min threads: 0, max threads: 16
cellect_1   | * Environment: development
cellect_1   | * Listening on tcp://0.0.0.0:9292
cellect_1   | Use Ctrl-C to stop
redis_1     |                 _._                                                  
redis_1     |            _.-``__ ''-._                                             
redis_1     |       _.-``    `.  `_.  ''-._           Redis 2.8.19 (00000000/0) 64 bit
redis_1     |   .-`` .-```.  ```\/    _.,_ ''-._                                   
redis_1     |  (    '      ,       .-`  | `,    )     Running in stand alone mode
redis_1     |  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
redis_1     |  |    `-._   `._    /     _.-'    |     PID: 1
redis_1     |   `-._    `-._  `-./  _.-'    _.-'                                   
redis_1     |  |`-._`-._    `-.__.-'    _.-'_.-'|                                  
redis_1     |  |    `-._`-._        _.-'_.-'    |           http://redis.io        
redis_1     |   `-._    `-._`-.__.-'_.-'    _.-'                                   
redis_1     |  |`-._`-._    `-.__.-'    _.-'_.-'|                                  
redis_1     |  |    `-._`-._        _.-'_.-'    |                                  
redis_1     |   `-._    `-._`-.__.-'_.-'    _.-'                                   
redis_1     |       `-._    `-.__.-'    _.-'                                       
redis_1     |           `-._        _.-'                                           
redis_1     |               `-.__.-'                                               
redis_1     | 
redis_1     | [1] 06 Feb 21:08:13.457 # Server started, Redis version 2.8.19
redis_1     | [1] 06 Feb 21:08:13.457 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis_1     | [1] 06 Feb 21:08:13.457 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis_1     | [1] 06 Feb 21:08:13.457 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1     | [1] 06 Feb 21:08:13.610 * DB loaded from append only file: 0.153 seconds
redis_1     | [1] 06 Feb 21:08:13.610 * The server is now ready to accept connections on port 6379
kafka_1     | /usr/lib/python2.7/dist-packages/supervisor/options.py:295: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
kafka_1     |   'Supervisord is running as root and it is searching '
kafka_1     | 2015-02-06 21:08:14,266 CRIT Supervisor running as root (no user in config file)
kafka_1     | 2015-02-06 21:08:14,266 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
kafka_1     | 2015-02-06 21:08:14,282 INFO RPC interface 'supervisor' initialized
kafka_1     | 2015-02-06 21:08:14,282 CRIT Server 'unix_http_server' running without any HTTP authentication checking
kafka_1     | 2015-02-06 21:08:14,282 INFO supervisord started with pid 12
panoptes_1  | + cd /rails_app
panoptes_1  | + '[' -d /rails_conf/ ']'
panoptes_1  | + '[' development == development ']'
panoptes_1  | + exec foreman start
kafka_1     | 2015-02-06 21:08:15,284 INFO spawned: 'kafka' with pid 15
kafka_1     | 2015-02-06 21:08:16,421 INFO success: kafka entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
panoptes_1  | file:/usr/local/lib/jruby.jar!/jruby/kernel19/process.rb:13 warning: unsupported spawn option: err
panoptes_1  | file:/usr/local/lib/jruby.jar!/jruby/kernel19/process.rb:13 warning: unsupported spawn option: out
panoptes_1  | file:/usr/local/lib/jruby.jar!/jruby/kernel19/process.rb:13 warning: unsupported spawn option: err
panoptes_1  | file:/usr/local/lib/jruby.jar!/jruby/kernel19/process.rb:13 warning: unsupported spawn option: out
panoptes_1  | 21:08:18 sidekiq.1 | started with pid 28
panoptes_1  | 21:08:18 server.1  | started with pid 22
panoptes_1  | file:/usr/local/lib/jruby.jar!/jruby/kernel19/kernel.rb:28 warning: unsupported exec option: close_others
panoptes_1  | file:/usr/local/lib/jruby.jar!/jruby/kernel19/kernel.rb:28 warning: unsupported exec option: close_others
panoptes_1  | log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
panoptes_1  | log4j:WARN Please initialize the log4j system properly.
panoptes_1  | => Booting Puma
panoptes_1  | => Rails 4.1.9 application starting in development on http://0.0.0.0:80
panoptes_1  | => Run `rails server -h` for more startup options
panoptes_1  | => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
panoptes_1  | => Ctrl-C to shutdown server
panoptes_1  | log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
panoptes_1  | log4j:WARN Please initialize the log4j system properly.
panoptes_1  | The signal USR1 is in use by the JVM and will not work correctly on this platform
panoptes_1  | Puma 2.11.0 starting...
panoptes_1  | * Min threads: 0, max threads: 16
panoptes_1  | * Environment: development
panoptes_1  | * Listening on tcp://0.0.0.0:80
panoptes_1  | 
panoptes_1  | 
panoptes_1  | Started GET "/users/sign_in" for 192.168.1.80 at 2015-02-06 21:09:20 +0000
panoptes_1  | Processing by SessionsController#new as */*
panoptes_1  |   Rendered devise/shared/_links.erb (5.0ms)
panoptes_1  |   Rendered devise/sessions/new.html.erb within layouts/application (73.0ms)
panoptes_1  | Completed 200 OK in 441ms (Views: 208.0ms | ActiveRecord: 0.0ms)
panoptes_1  | 
panoptes_1  | 
panoptes_1  | Started POST "/users/sign_in" for 192.168.1.80 at 2015-02-06 21:09:21 +0000
panoptes_1  | Processing by SessionsController#create as JSON
panoptes_1  |   Parameters: {"user"=>{"login"=>"zooniverse_admin", "password"=>"[FILTERED]"}, "authenticity_token"=>"ZKcji+SEyY/+pGuXkB+guF6UqeUjXSIgqoghzhLcJgM="}
panoptes_1  |   User Load (3.0ms)  SELECT  "users".* FROM "users"  WHERE "users"."login" = 'zooniverse_admin'  ORDER BY "users"."id" ASC LIMIT 1
panoptes_1  |   SQL (3.0ms)  UPDATE "users" SET "current_sign_in_at" = '2015-02-06 21:09:21.256000', "last_sign_in_at" = '2015-02-06 20:37:13.662000', "sign_in_count" = 11, "updated_at" = '2015-02-06 21:09:21.258000' WHERE "users"."id" = 1
panoptes_1  |   User Load (1.0ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 1 LIMIT 20 OFFSET 0
panoptes_1  |    (0.0ms)  SELECT COUNT(*) FROM "users"  WHERE "users"."id" = 1
panoptes_1  | Completed 200 OK in 201ms (Views: 4.0ms | ActiveRecord: 7.0ms)
panoptes_1  | 
panoptes_1  | 
panoptes_1  | Started POST "/oauth/token" for 192.168.1.80 at 2015-02-06 21:09:21 +0000
panoptes_1  |   Doorkeeper::Application Load (2.0ms)  SELECT  "oauth_applications".* FROM "oauth_applications"  WHERE "oauth_applications"."uid" = '8b8b2094f010f794ba6050c6a2664e3ee901e47d405719e88119492d87da7820'  ORDER BY "oauth_applications"."id" ASC LIMIT 1
panoptes_1  | Processing by TokensController#create as JSON
panoptes_1  |   Parameters: {"grant_type"=>"password", "client_id"=>"8b8b2094f010f794ba6050c6a2664e3ee901e47d405719e88119492d87da7820", "scope"=>"public user project group collection classification subject"}
panoptes_1  |   User Load (1.0ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 1  ORDER BY "users"."id" ASC LIMIT 1
panoptes_1  |   Doorkeeper::AccessToken Exists (1.0ms)  SELECT  1 AS one FROM "oauth_access_tokens"  WHERE "oauth_access_tokens"."token" = '1c06b674a25efd2d2c683f98d511f4fe56fdd188084659f4ff41f865dcd382ef' LIMIT 1
panoptes_1  |   Doorkeeper::AccessToken Exists (1.0ms)  SELECT  1 AS one FROM "oauth_access_tokens"  WHERE "oauth_access_tokens"."refresh_token" = 'f7e1cb6dcbdfe71002af4e8d3d7fd63df0a0cb47aa4be460fc3de13153b90d2b' LIMIT 1
panoptes_1  |    (2.0ms)  SELECT version()
panoptes_1  |   SQL (1.0ms)  INSERT INTO "oauth_access_tokens" ("created_at", "expires_in", "refresh_token", "resource_owner_id", "scopes", "token") VALUES ('2015-02-06 21:09:21.706000', 7200, 'f7e1cb6dcbdfe71002af4e8d3d7fd63df0a0cb47aa4be460fc3de13153b90d2b', 1, 'public user project group collection classification subject', '1c06b674a25efd2d2c683f98d511f4fe56fdd188084659f4ff41f865dcd382ef') RETURNING "id"
panoptes_1  | Completed 200 OK in 74ms
panoptes_1  | 
panoptes_1  | 
panoptes_1  | Started GET "/api/subjects?sort=cellect&workflow_id=1&subject_set_id=2" for 192.168.1.80 at 2015-02-06 21:09:28 +0000
panoptes_1  | Processing by Api::V1::SubjectsController#index as JSON_API
panoptes_1  |   Parameters: {"sort"=>"cellect", "workflow_id"=>"1", "subject_set_id"=>"2"}
panoptes_1  |   Doorkeeper::AccessToken Load (1.0ms)  SELECT  "oauth_access_tokens".* FROM "oauth_access_tokens"  WHERE "oauth_access_tokens"."token" = '1c06b674a25efd2d2c683f98d511f4fe56fdd188084659f4ff41f865dcd382ef'  ORDER BY "oauth_access_tokens"."id" ASC LIMIT 1
panoptes_1  |   User Load (2.0ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 1 LIMIT 1
panoptes_1  | E, [2015-02-06T21:09:29.007000 #27] ERROR -- : Actor crashed!
panoptes_1  | Java::JavaNet::ConnectException: Connection refused
panoptes_1  |  sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
panoptes_1  |  sun.nio.ch.SocketChannelImpl.finishConnect(sun/nio/ch/SocketChannelImpl.java:739)
panoptes_1  |  java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:606)
panoptes_1  |  RUBY.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-io-0.16.0.pre/lib/celluloid/io/tcp_socket.rb:92)
panoptes_1  |  RUBY.open(/usr/local/lib/ruby/gems/shared/gems/celluloid-io-0.16.0.pre/lib/celluloid/io/tcp_socket.rb:16)
panoptes_1  |  RUBY.perform(/usr/local/lib/ruby/gems/shared/gems/http-0.7.1/lib/http/client.rb:54)
panoptes_1  |  RUBY.request(/usr/local/lib/ruby/gems/shared/gems/http-0.7.1/lib/http/client.rb:32)
panoptes_1  |  RUBY.request(/usr/local/lib/ruby/gems/shared/gems/http-0.7.1/lib/http/chainable.rb:72)
panoptes_1  |  RUBY.get(/usr/local/lib/ruby/gems/shared/gems/http-0.7.1/lib/http/chainable.rb:16)
panoptes_1  |  RUBY.send_http(/usr/local/lib/ruby/gems/shared/gems/cellect-client-0.0.9/lib/cellect/client/connection.rb:53)
panoptes_1  |  RUBY.get_subjects(/usr/local/lib/ruby/gems/shared/gems/cellect-client-0.0.9/lib/cellect/client/connection.rb:36)
panoptes_1  |  org.jruby.RubyKernel.public_send(org/jruby/RubyKernel.java:1958)
panoptes_1  |  Celluloid::Call.dispatch(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/calls.rb:26)
panoptes_1  |  Celluloid::Call.dispatch(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/calls.rb:26)
panoptes_1  |  Celluloid::SyncCall.dispatch(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/calls.rb:63)
panoptes_1  |  Celluloid::SyncCall.dispatch(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/calls.rb:63)
panoptes_1  |  Celluloid::Cell.invoke(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/cell.rb:60)
panoptes_1  |  Celluloid::Cell.invoke(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/cell.rb:60)
panoptes_1  |  Celluloid::Cell.task(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/cell.rb:71)
panoptes_1  |  Celluloid::Cell.task(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/cell.rb:71)
panoptes_1  |  Celluloid::Actor.task(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/actor.rb:362)
panoptes_1  |  Celluloid::Actor.task(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/actor.rb:362)
panoptes_1  |  Celluloid::Task.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks.rb:55)
panoptes_1  |  Celluloid::Task.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks.rb:55)
panoptes_1  |  Celluloid::Task.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks.rb:47)
panoptes_1  |  Celluloid::Task.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks.rb:47)
panoptes_1  |  Celluloid::TaskFiber.create(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks/task_fiber.rb:15)
panoptes_1  |  Celluloid::TaskFiber.create(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks/task_fiber.rb:15)
panoptes_1  |  java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1145)
panoptes_1  |  java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:615)
panoptes_1  |  java.lang.Thread.run(java/lang/Thread.java:745)
panoptes_1  | E, [2015-02-06T21:09:29.009000 #27] ERROR -- : thread crashed
panoptes_1  | Java::JavaNet::ConnectException: Connection refused
panoptes_1  |  sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
panoptes_1  |  sun.nio.ch.SocketChannelImpl.finishConnect(sun/nio/ch/SocketChannelImpl.java:739)
panoptes_1  |  java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:606)
panoptes_1  |  RUBY.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-io-0.16.0.pre/lib/celluloid/io/tcp_socket.rb:92)
panoptes_1  |  RUBY.open(/usr/local/lib/ruby/gems/shared/gems/celluloid-io-0.16.0.pre/lib/celluloid/io/tcp_socket.rb:16)
panoptes_1  |  RUBY.perform(/usr/local/lib/ruby/gems/shared/gems/http-0.7.1/lib/http/client.rb:54)
panoptes_1  |  RUBY.request(/usr/local/lib/ruby/gems/shared/gems/http-0.7.1/lib/http/client.rb:32)
panoptes_1  |  RUBY.request(/usr/local/lib/ruby/gems/shared/gems/http-0.7.1/lib/http/chainable.rb:72)
panoptes_1  |  RUBY.get(/usr/local/lib/ruby/gems/shared/gems/http-0.7.1/lib/http/chainable.rb:16)
panoptes_1  |  RUBY.send_http(/usr/local/lib/ruby/gems/shared/gems/cellect-client-0.0.9/lib/cellect/client/connection.rb:53)
panoptes_1  |  RUBY.get_subjects(/usr/local/lib/ruby/gems/shared/gems/cellect-client-0.0.9/lib/cellect/client/connection.rb:36)
panoptes_1  |  org.jruby.RubyKernel.public_send(org/jruby/RubyKernel.java:1958)
panoptes_1  |  Celluloid::Call.dispatch(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/calls.rb:26)
panoptes_1  |  Celluloid::Call.dispatch(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/calls.rb:26)
panoptes_1  |  Celluloid::SyncCall.dispatch(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/calls.rb:63)
panoptes_1  |  Celluloid::SyncCall.dispatch(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/calls.rb:63)
panoptes_1  |  Celluloid::Cell.invoke(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/cell.rb:60)
panoptes_1  |  Celluloid::Cell.invoke(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/cell.rb:60)
panoptes_1  |  Celluloid::Cell.task(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/cell.rb:71)
panoptes_1  |  Celluloid::Cell.task(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/cell.rb:71)
panoptes_1  |  Celluloid::Actor.task(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/actor.rb:362)
panoptes_1  |  Celluloid::Actor.task(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/actor.rb:362)
panoptes_1  |  Celluloid::Task.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks.rb:55)
panoptes_1  |  Celluloid::Task.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks.rb:55)
panoptes_1  |  Celluloid::Task.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks.rb:47)
panoptes_1  |  Celluloid::Task.initialize(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks.rb:47)
panoptes_1  |  Celluloid::TaskFiber.create(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks/task_fiber.rb:15)
panoptes_1  |  Celluloid::TaskFiber.create(/usr/local/lib/ruby/gems/shared/gems/celluloid-0.16.0.pre/lib/celluloid/tasks/task_fiber.rb:15)
panoptes_1  |  java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1145)
panoptes_1  |  java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:615)
panoptes_1  |  java.lang.Thread.run(java/lang/Thread.java:745)
panoptes_1  | Completed 500 Internal Server Error in 202ms
panoptes_1  | 
panoptes_1  | Java::JavaNet::ConnectException (Connection refused):
panoptes_1  |   sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
panoptes_1  |   sun.nio.ch.SocketChannelImpl.finishConnect(sun/nio/ch/SocketChannelImpl.java:739)
panoptes_1  |   java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:606)
panoptes_1  |   RUBY.initialize(celluloid-io (0.16.0.pre) lib/celluloid/io/tcp_socket.rb:92)
panoptes_1  |   RUBY.open(celluloid-io (0.16.0.pre) lib/celluloid/io/tcp_socket.rb:16)
panoptes_1  |   RUBY.perform(http (0.7.1) lib/http/client.rb:54)
panoptes_1  |   RUBY.request(http (0.7.1) lib/http/client.rb:32)
panoptes_1  |   RUBY.request(http (0.7.1) lib/http/chainable.rb:72)
panoptes_1  |   RUBY.get(http (0.7.1) lib/http/chainable.rb:16)
panoptes_1  |   RUBY.send_http(cellect-client (0.0.9) lib/cellect/client/connection.rb:53)
panoptes_1  |   RUBY.get_subjects(cellect-client (0.0.9) lib/cellect/client/connection.rb:36)
panoptes_1  |   org.jruby.RubyKernel.public_send(org/jruby/RubyKernel.java:1958)
panoptes_1  |   Celluloid::Call.dispatch(celluloid (0.16.0.pre) lib/celluloid/calls.rb:26)
panoptes_1  |   Celluloid::Call.dispatch(celluloid (0.16.0.pre) lib/celluloid/calls.rb:26)
panoptes_1  |   Celluloid::SyncCall.dispatch(celluloid (0.16.0.pre) lib/celluloid/calls.rb:63)
panoptes_1  |   Celluloid::SyncCall.dispatch(celluloid (0.16.0.pre) lib/celluloid/calls.rb:63)
panoptes_1  |   Celluloid::Cell.invoke(celluloid (0.16.0.pre) lib/celluloid/cell.rb:60)
panoptes_1  |   Celluloid::Cell.invoke(celluloid (0.16.0.pre) lib/celluloid/cell.rb:60)
panoptes_1  |   Celluloid::Cell.task(celluloid (0.16.0.pre) lib/celluloid/cell.rb:71)
panoptes_1  |   Celluloid::Cell.task(celluloid (0.16.0.pre) lib/celluloid/cell.rb:71)
panoptes_1  |   Celluloid::Actor.task(celluloid (0.16.0.pre) lib/celluloid/actor.rb:362)
panoptes_1  |   Celluloid::Actor.task(celluloid (0.16.0.pre) lib/celluloid/actor.rb:362)
panoptes_1  |   Celluloid::Task.initialize(celluloid (0.16.0.pre) lib/celluloid/tasks.rb:55)
panoptes_1  |   Celluloid::Task.initialize(celluloid (0.16.0.pre) lib/celluloid/tasks.rb:55)
panoptes_1  |   Celluloid::Task.initialize(celluloid (0.16.0.pre) lib/celluloid/tasks.rb:47)
panoptes_1  |   Celluloid::Task.initialize(celluloid (0.16.0.pre) lib/celluloid/tasks.rb:47)
panoptes_1  |   Celluloid::TaskFiber.create(celluloid (0.16.0.pre) lib/celluloid/tasks/task_fiber.rb:15)
panoptes_1  |   Celluloid::TaskFiber.create(celluloid (0.16.0.pre) lib/celluloid/tasks/task_fiber.rb:15)
panoptes_1  |   java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1145)
panoptes_1  |   java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:615)
panoptes_1  |   java.lang.Thread.run(java/lang/Thread.java:745)
panoptes_1  | 
panoptes_1  | 
panoptes_1  |   Rendered /usr/local/lib/ruby/gems/shared/gems/actionpack-4.1.9/lib/action_dispatch/middleware/templates/rescues/_source.erb (1.0ms)
panoptes_1  |   Rendered /usr/local/lib/ruby/gems/shared/gems/actionpack-4.1.9/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.0ms)
panoptes_1  |   Rendered /usr/local/lib/ruby/gems/shared/gems/actionpack-4.1.9/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (8.0ms)
panoptes_1  |   Rendered /usr/local/lib/ruby/gems/shared/gems/actionpack-4.1.9/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (35.0ms)
camallen commented 9 years ago

closing in favour of #511