-
Type: Task
-
Resolution: Done
-
Affects Version/s: None
-
Component/s: None
-
None
I'm getting EOFError: end of file reached
I suspect it is related to MONGOID-92, MONGOID-2377 and threads but I'm using Mongoid with Sneakers not Passenger and have been unable to take insights from those issues.
I've move Mongoid configuration into post fork code, which appears to have solved Moped::Errors::OperationFailure with nil error that I was getting but the EOFError has persisted
Unable to find source-code formatter for language: `. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
Stacktrace (most recent call first): bson/hash.rb:77:in `readbyte' while (type = bson.readbyte.chr) != NULL_BYTE bson/hash.rb:77:in `from_bson' while (type = bson.readbyte.chr) != NULL_BYTE moped/connection.rb:133:in `block (2 levels) in read' ::BSON::Document.from_bson(buffer) moped/connection.rb:132:in `times' reply.documents = reply.count.times.map do moped/connection.rb:132:in `each' reply.documents = reply.count.times.map do moped/connection.rb:132:in `map' reply.documents = reply.count.times.map do moped/connection.rb:132:in `block in read' reply.documents = reply.count.times.map do moped/connection.rb:224:in `with_connection' yield @sock moped/connection.rb:114:in `read' with_connection do |socket| moped/protocol/query.rb:213:in `receive_replies' connection.read moped/connection.rb:152:in `block in receive_replies' operation.receive_replies(self) moped/connection.rb:151:in `map' operations.map do |operation| moped/connection.rb:151:in `receive_replies' operations.map do |operation| moped/node.rb:591:in `block (2 levels) in flush' replies = conn.receive_replies(operations) moped/node.rb:181:in `block in ensure_connected' yield(conn) moped/node.rb:115:in `block in connection' yield(conn) connection_pool.rb:58:in `with' yield conn moped/node.rb:114:in `connection' pool.with do |conn| moped/node.rb:177:in `ensure_connected' connection do |conn| moped/node.rb:589:in `block in flush' ensure_connected do |conn| moped/node.rb:617:in `block in logging' yield if block_given? active_support/notifications.rb:159:in `block in instrument' instrumenter.instrument(name, payload) { yield payload if block_given? } active_support/notifications/instrumenter.rb:20:in `instrument' yield payload active_support/notifications.rb:159:in `instrument' instrumenter.instrument(name, payload) { yield payload if block_given? } moped/instrumentable.rb:31:in `instrument' instrumenter.instrument(name, payload, &block) moped/node.rb:616:in `logging' instrument(TOPIC, prefix: " MOPED: #{address.resolved}", ops: operations) do newrelic_moped/instrumentation.rb:40:in `block in logging_with_newrelic_trace' command = Proc.new { logging_without_newrelic_trace(operations, &blk) } newrelic_moped/instrumentation.rb:49:in `call' res = command.call newrelic_moped/instrumentation.rb:49:in `block in logging_with_newrelic_trace' res = command.call new_relic/agent/method_tracer.rb:281:in `trace_execution_scoped' result = yield newrelic_moped/instrumentation.rb:46:in `logging_with_newrelic_trace' self.class.trace_execution_scoped(metrics) do moped/node.rb:587:in `flush' logging(operations) do moped/node.rb:391:in `process' flush([[ operation, callback ]]) moped/operation/read.rb:48:in `execute' node.process(operation) do |reply| moped/node.rb:648:in `read' Operation::Read.new(operation).execute(self) moped/node.rb:411:in `query' read(Protocol::Query.new(database, collection, selector, options)) moped/query.rb:128:in `block in first' node.query( moped/cluster.rb:249:in `block in with_primary' return yield(node) moped/node.rb:204:in `block in ensure_primary' yield(self) moped/executable.rb:25:in `execute' yield(self) moped/node.rb:203:in `ensure_primary' execute(:ensure_primary) do moped/cluster.rb:248:in `with_primary' node.ensure_primary do moped/read_preference/primary.rb:55:in `block in with_node' cluster.with_primary(&block) moped/read_preference/selectable.rb:65:in `call' block.call moped/read_preference/selectable.rb:65:in `with_retry' block.call moped/read_preference/primary.rb:54:in `with_node' with_retry(cluster) do moped/query.rb:127:in `first' reply = read_preference.with_node(cluster) do |node| mongoid/query_cache.rb:187:in `block in first_with_cache' first_without_cache mongoid/query_cache.rb:135:in `with_cache' return yield unless QueryCache.enabled? mongoid/query_cache.rb:186:in `first_with_cache' with_cache(:first) do new_relic/agent/instrumentation/sinatra.rb:151:in `dispatch_and_notice_errors_with_newrelic' dispatch_without_newrelic new_relic/agent/instrumentation/sinatra.rb:146:in `block in dispatch_with_newrelic' dispatch_and_notice_errors_with_newrelic new_relic/agent/instrumentation/controller_instrumentation.rb:335:in `perform_action_with_newrelic_trace' yield new_relic/agent/instrumentation/sinatra.rb:143:in `dispatch_with_newrelic' perform_action_with_newrelic_trace(:category => :sinatra, sinatra/base.rb:898:in `block in call!' invoke { dispatch! } sinatra/base.rb:1058:in `block in invoke' res = catch(:halt) { yield } sinatra/base.rb:1058:in `catch' res = catch(:halt) { yield } sinatra/base.rb:1058:in `invoke' res = catch(:halt) { yield } sinatra/base.rb:898:in `call!' invoke { dispatch! } sinatra/base.rb:886:in `call' dup.call!(env) new_relic/rack/error_collector.rb:55:in `call' @app.call(env) new_relic/rack/browser_monitoring.rb:27:in `call' result = @app.call(env) # [status, headers, response] new_relic/rack/agent_hooks.rb:32:in `call' result = @app.call(env) rack/protection/xss_header.rb:18:in `call' status, headers, body = @app.call(env) rack/protection/path_traversal.rb:16:in `call' app.call env rack/protection/json_csrf.rb:18:in `call' status, headers, body = app.call(env) rack/protection/base.rb:49:in `call' result or app.call(env) rack/protection/base.rb:49:in `call' result or app.call(env) rack/protection/frame_options.rb:31:in `call' status, headers, body = @app.call(env) rack/nulllogger.rb:9:in `call' @app.call(env) rack/head.rb:11:in `call' status, headers, body = @app.call(env) sinatra/base.rb:180:in `call' result, callback = app.call(env), env['async.callback'] sinatra/base.rb:2014:in `call' @stack.call(env) sinatra/base.rb:1478:in `block in call' synchronize { prototype.call(env) } sinatra/base.rb:1788:in `synchronize' yield sinatra/base.rb:1478:in `call' synchronize { prototype.call(env) } rack/urlmap.rb:65:in `block in call' return app.call(env) rack/urlmap.rb:50:in `each' @mapping.each do |host, location, match, app| rack/urlmap.rb:50:in `call' @mapping.each do |host, location, match, app| librato/rack.rb:94:in `process_request' response = @app.call(env) trakio/api/librato_middleware.rb:28:in `call' response, duration = process_request(env) new_relic/rack/error_collector.rb:55:in `call' @app.call(env) new_relic/rack/agent_hooks.rb:32:in `call' result = @app.call(env) raven/integrations/rack.rb:61:in `call' response = @app.call(env) trakio/api/consumer/worker.rb:73:in `work' self.class.api_application.call(env) sneakers/worker.rb:58:in `block (3 levels) in do_work' res = work(msg) sneakers/metrics/null_metrics.rb:8:in `call' block.call sneakers/metrics/null_metrics.rb:8:in `timing' block.call sneakers/worker.rb:54:in `block (2 levels) in do_work' metrics.timing("work.#{self.class.name}.time") do timeout.rb:91:in `block in timeout' return yield(sec) timeout.rb:35:in `block in catch' ::Kernel.catch(exc) {yield exc} timeout.rb:35:in `catch' ::Kernel.catch(exc) {yield exc} timeout.rb:35:in `catch' ::Kernel.catch(exc) {yield exc} timeout.rb:106:in `timeout' bt = ExitException.catch(message, &bl) sneakers/worker.rb:53:in `block in do_work' Timeout.timeout(@timeout_after) do thread/pool.rb:56:in `call' @block.call(*@arguments) thread/pool.rb:56:in `execute' @block.call(*@arguments) thread/pool.rb:384:in `block (2 levels) in spawn_thread' task.execute(thread) thread/pool.rb:351:in `loop' loop do thread/pool.rb:351:in `block in spawn_thread' loop do
`