Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

What does generally cause the "Dropped db cursor" error? #63

Open
pedrovinicius opened this issue Jun 11, 2018 · 1 comment
Open

What does generally cause the "Dropped db cursor" error? #63

pedrovinicius opened this issue Jun 11, 2018 · 1 comment

Comments

@pedrovinicius
Copy link

pedrovinicius commented Jun 11, 2018

I'm using this gem in production alongside with Sinatra, ActiveRecord and Puma. Puma is running with 2 workers.

My code for database queries is identical to the following snippet:

database_connections =  YAML.load_file('./databases_list.yml')

database_connections.each do |connection_info|
  connection = ActiveRecord::Base.establish_connection(connection_info)
  connection.execute('SELECT * FROM ...')
  # Other SQL queries here
  connection.disconnect!
end

I have a list of identical databases (running on distinct servers) that I have to connect to and collect some data. But I'm suspecting I'm doing something terribly wrong, as when this code gets executed, the ruby interpreter raises a Dropped DB Cursor exception.

Do you have any idea of what can be possibly causing this error?

@rowland
Copy link
Owner

rowland commented Jun 11, 2018

It would be easier if you were using ActiveRecord OR fb, rather than something in between. If you're not making use of ActiveRecord, either connect directly using fb's API or grab raw_connection from ActiveRecord::Base.connection.

fb's connection's execute method either returns a cursor or takes a block with a cursor as a parameter. Basically, you need to program against the API as it exists, and not how you're guessing it is.

If you just want results, raw_connection.query will give you them. Given that execute returns a cursor, you should close that cursor when you're done iterating it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants