【问题标题】:SystemStackError (stack level too deep) in sunspot gem太阳黑子宝石中的 SystemStackError(堆栈级别太深)
【发布时间】:2013-04-08 06:19:19
【问题描述】:

我知道这是最难追踪的错误。这就是发生的事情: 我正在做一个涉及太阳黑子搜索的请求。对于返回合理 solr 响应大小的所有请求,一切正常。对于 solr 响应超过 1 MB 的特定请求,我收到此错误:

SOLR Request (186.0ms)  [ path=#<RSolr::Client:0x00000006f76c18> parameters={data: fq=type%3AArticle&fq=review_im%3A46&start=0&rows=0&facet=true&f.source_i.facet.mincount=1&facet.field=source_i&facet.field=language_i&facet.field=publication_types_im&facet.field=features_im&facet.field=locations_im&facet.field=keyphrases_im&facet.field=journal_i&facet.field=authors_im&facet.field=year_i&f.language_i.facet.mincount=1&f.publication_types_im.facet.mincount=1&f.features_im.facet.mincount=1&f.locations_im.facet.limit=30&f.locations_im.facet.mincount=1&f.keyphrases_im.facet.limit=30&f.keyphrases_im.facet.mincount=1&f.journal_i.facet.sort=true&f.journal_i.facet.limit=-1&f.journal_i.facet.mincount=1&f.authors_im.facet.sort=true&f.authors_im.facet.limit=-1&f.authors_im.facet.mincount=1&f.year_i.facet.limit=-1&f.year_i.facet.mincount=1&q=%2A%3A%2A, method: post, params: {:wt=>:ruby}, query: wt=ruby, headers: {"Content-Type"=>"application/x-www-form-urlencoded; charset=UTF-8"}, path: select, uri: http://localhost:8982/solr/select?wt=ruby, open_timeout: , read_timeout: , retry_503: , retry_after_limit: } ]
Solr Select (186.3ms)  fq=type%3AArticle&fq=review_im%3A46&start=0&rows=0&facet=true&f.source_i.facet.mincount=1&facet.field=source_i&facet.field=language_i&facet.field=publication_types_im&facet.field=features_im&facet.field=locations_im&facet.field=keyphrases_im&facet.field=journal_i&facet.field=authors_im&facet.field=year_i&f.language_i.facet.mincount=1&f.publication_types_im.facet.mincount=1&f.features_im.facet.mincount=1&f.locations_im.facet.limit=30&f.locations_im.facet.mincount=1&f.keyphrases_im.facet.limit=30&f.keyphrases_im.facet.mincount=1&f.journal_i.facet.sort=true&f.journal_i.facet.limit=-1&f.journal_i.facet.mincount=1&f.authors_im.facet.sort=true&f.authors_im.facet.limit=-1&f.authors_im.facet.mincount=1&f.year_i.facet.limit=-1&f.year_i.facet.mincount=1&q=%2A%3A%2A
Completed 500 Internal Server Error in 650ms

SystemStackError (stack level too deep):
  actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:70


  Rendered /home/hammady/.rvm/gems/ruby-1.9.2-p320/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
  Rendered /home/hammady/.rvm/gems/ruby-1.9.2-p320/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.1ms)
  Rendered /home/hammady/.rvm/gems/ruby-1.9.2-p320/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (8.7ms)
2013/04/08 08:53:05 [error] 7480#0: *6 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /reviews/46/results?mode=visible&polling=1&search=all HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "localhost:4000"

这是黑子虫吗?

更新:不,这是一个 ruby​​ VM 问题,我报告了它here

【问题讨论】:

  • 提交了sunspot bug
  • 您能否尝试获取完整的堆栈跟踪以及 Solr 的完整响应?
  • 上面的堆栈跟踪是我可以从此类异常中获得的最大值。完整的 Solr 响应可以在 here 找到。

标签: ruby-on-rails sunspot sunspot-rails sunspot-solr


【解决方案1】:

我注意到您正在使用 ruby​​-1.9.2-p320,并且在另一个 gem (delayed_job) 中报告了类似的问题,其中 reloader.rb 导致 SystemStackError

https://github.com/collectiveidea/delayed_job/issues/349

该线程中的几个人(虽然不是每个人)都报告说升级到 Ruby 1.9.3 已修复此问题,因此您可能想尝试一下。

【讨论】:

  • 很抱歉这没有解决问题,阈值大约是 640 KB solr 响应。问题与响应大小(或导致大小变化的方面限制)直接相关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 2013-10-05
  • 2014-10-25
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多