diff options
-rw-r--r-- | vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb index e03c5e4aa..ccaa48bee 100644 --- a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb +++ b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb @@ -717,8 +717,16 @@ module ActsAsXapian if not $?.success? raise "batch fork child failed, exiting also" end - # database connection doesn't survive a fork, rebuild it - ActiveRecord::Base.connection.reconnect! + + # FIXME: Under Rails 3.1 we get "SSL error: decryption failed or bad record mac", this works around it + retry_count = 0 + begin + # database connection doesn't survive a fork, rebuild it + ActiveRecord::Base.connection.reconnect! + rescue + retry_count += 1 + retry_count > 3 ? raise : retry + end else # fully reopen the database each time (with a new object) |