Sha256: 7e02e4a7ab4c1639e1cc08329023a5c81dda02539e33a6805179f801e1f10967

Contents?: true

Size: 1.55 KB

Versions: 3

Compression:

Stored size: 1.55 KB

Contents

# Copyright OpenSearch Contributors
# SPDX-License-Identifier: Apache-2.0

require 'opensearch'
require 'opensearch/transport/transport/connections/selector'

  # elasticsearch-transport versions prior to 7.2.0 suffered of a race condition on accessing
  # the connection pool. This issue was fixed (in 7.2.0) with
  # https://github.com/elastic/elasticsearch-ruby/commit/15f9d78591a6e8823948494d94b15b0ca38819d1
  #
  # This plugin, at the moment, is using elasticsearch >= 5.0.5
  # When this requirement ceases, this patch could be removed.
module OpenSearch
  module Transport
    module Transport
      module Connections
        module Selector

          # "Round-robin" selector strategy (default).
          #
          class RoundRobin
            include Base

            # @option arguments [Connections::Collection] :connections Collection with connections.
            #
            def initialize(arguments = {})
              super
              @mutex = Mutex.new
              @current = nil
            end

            # Returns the next connection from the collection, rotating them in round-robin fashion.
            #
            # @return [Connections::Connection]
            #
            def select(options={})
              @mutex.synchronize do
                conns = connections
                if @current && (@current < conns.size-1)
                  @current += 1
                else
                  @current = 0
                end
                conns[@current]
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
logstash-filter-opensearch-manticore-0.1.1 lib/logstash/filters/opensearch/patches/_opensearch_transport_connections_selector.rb
logstash-filter-opensearch-manticore-0.1.0 lib/logstash/filters/opensearch/patches/_opensearch_transport_connections_selector.rb
logstash-input-opensearch-1.0.0 lib/logstash/inputs/opensearch/patches/_opensearch_transport_connections_selector.rb