algolia / algoliasearch-client-ruby

⚡️ A fully-featured and blazing-fast Ruby API client to interact with Algolia.
https://www.algolia.com/doc/api-client/getting-started/install/ruby/?language=ruby
MIT License
166 stars 72 forks source link

Client allows endless loops if there is a network issue #390

Open kaspergrubbe opened 4 years ago

kaspergrubbe commented 4 years ago

Description

This is basically an endless loop:

https://github.com/algolia/algoliasearch-client-ruby/blob/55e2fb916eb147e51532fd08bdb0d75a58f12ce1/lib/algolia/client.rb#L494-L511

There should be some retry logic, and if enough fails it should throw an error.

DevinCodes commented 3 years ago

Related: when perform a save_objects! with an empty batch, the taskID returned from the engine never resolves, resulting in this loop running forever.

client = ::Algolia::Search::Client.create_with_config(
::Algolia::Search::Config.new(
application_id: ENV['ALGOLIA_APP_ID'],
api_key: ENV['ALGOLIA_ADMIN_API_KEY'],
batch_size: ENV['ALGOLIA_BATCH_SIZE']
)
)

index = client.init_index('test-index-name')
index.save_objects!([]) # Hangs forever

We'll need to come up with a proper way to break here after x loops to prevent the infinite loop. I'll discuss this internally to see what we want to do about it.

berniechiu commented 3 years ago

thanks for looking into the issue : )

kaspergrubbe commented 1 year ago

This code still seem to be causing endless loops when there's issues on Algolias servers.

https://status.algolia.com/incidents/4367

kaspergrubbe commented 1 year ago

@chuckmeyer reached out to me on Twitter, and pointed me to this PR: https://github.com/algolia/algoliasearch-client-ruby/pull/487