connectors_service 8.6.0.4.pre.20221116T024501Z → 8.7.0.0.pre.20221117T004928Z

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a610999d9c34543392e1dd9b7b9ab136557992cc1503fa5aa5973186d17af9e
4
- data.tar.gz: '086282a4a15ce1b168e6a0add5f78646e1fe89c336b8a257677826cce3677635'
3
+ metadata.gz: 39e0bb6ae283bcb1afebd57e715342b7e30a7178c33653dfd05fee6f322061e6
4
+ data.tar.gz: e1fd33b8d28d7d906b4b8eea672a34c0be12e0a124977bbeb10c62c147690a8b
5
5
  SHA512:
6
- metadata.gz: bf0a0a22ea96074bcbb904000ec489a591fc8491bc2d91759bc1a097c60e31c2abad7b118bb97d16bbe80c5b00dbe08f7c65653710c2d6a77d3356607d87e045
7
- data.tar.gz: 67ff773ed2ae3f869897b5fb3a2c0dc3fc55c5922c602e032ed5bafa800043bd4b7f4af90fdd055e575ea877f3cf3b9e308d91c58bad59cd6c63dd5eb8ab98f4
6
+ metadata.gz: bb6b96ac0c07e9ed4cbe87f16a17844771c12d7a7ccbb2e8c7aeb571cb146f67e5a0489b1e73ff907613dcda442912ba09c193e0e8e4e11fec553ebe9afdec12
7
+ data.tar.gz: c3c2fc12ac9de6ed37a85dbfb46725e2de37c08beba453c3e9d8a3f0c6c56a078a1c5987931251ca84f18e5a9388b6698ff43abe3ce547d291537b3040b15b0a
@@ -1,10 +1,11 @@
1
1
  # general metadata
2
- version: 8.6.0.4-20221116T024501Z
3
- repository: git@github.com:elastic/ent-search-connectors.git
4
- revision: b3cc1332879a38930a272a63f8c6be1847578204
2
+ version: 8.7.0.0-20221117T004928Z
3
+ repository: https://github.com/elastic/connectors-ruby.git
4
+ revision: 294214a26b0fe9a4347763b01de681c336e8daae
5
5
  elasticsearch:
6
+ cloud_id: CHANGEME
6
7
  hosts: http://localhost:9200
7
- api_key: MDJyaGZZUUJ1ZXdOLTB1ZnQ5aXQ6a2IwQURWSjVUc1NPcjVsOFBuVDBzZw==
8
+ api_key: CHANGEME
8
9
  retry_on_failure: 3
9
10
  request_timeout: 120
10
11
  disable_warnings: true
@@ -14,11 +15,11 @@ thread_pool:
14
15
  min_threads: 0
15
16
  max_threads: 5
16
17
  max_queue: 100
17
- log_level: debug
18
- ecs_logging: false
18
+ log_level: info
19
+ ecs_logging: true
19
20
  poll_interval: 3
20
21
  termination_timeout: 60
21
22
  heartbeat_interval: 1800
22
- native_mode: false
23
- connector_id: 0mrhfYQBuewN-0ufptgN
24
- service_type: mongodb
23
+ native_mode: true
24
+ connector_id: CHANGEME
25
+ service_type: CHANGEME
data/lib/app/config.rb CHANGED
@@ -54,6 +54,9 @@ puts "Parsing #{CONFIG_FILE} configuration file."
54
54
  optional(:poll_interval).value(:integer)
55
55
  optional(:termination_timeout).value(:integer)
56
56
  optional(:heartbeat_interval).value(:integer)
57
+
58
+ optional(:max_ingestion_queue_size).value(:integer) # items
59
+ optional(:max_ingestion_queue_bytes).value(:integer) # bytes
57
60
  end
58
61
  end
59
62
 
@@ -133,6 +133,8 @@ module App
133
133
  min_threads: MIN_THREADS,
134
134
  max_threads: MAX_THREADS,
135
135
  max_queue: MAX_QUEUE,
136
+ max_ingestion_queue_size: (App::Config.max_ingestion_queue_size || Utility::Constants::DEFAULT_MAX_INGESTION_QUEUE_SIZE).to_i,
137
+ max_ingestion_queue_bytes: (App::Config.max_ingestion_queue_bytes || Utility::Constants::DEFAULT_MAX_INGESTION_QUEUE_BYTES).to_i,
136
138
  scheduler: scheduler
137
139
  )
138
140
 
@@ -0,0 +1,13 @@
1
+ #
2
+ # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ # or more contributor license agreements. Licensed under the Elastic License;
4
+ # you may not use this file except in compliance with the Elastic License.
5
+ #
6
+
7
+ module ConnectorsApp
8
+ module Errors
9
+ INVALID_API_KEY = 'INVALID_API_KEY'
10
+ UNSUPPORTED_AUTH_SCHEME = 'UNSUPPORTED_AUTH_SCHEME'
11
+ INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR'
12
+ end
13
+ end
@@ -21,7 +21,7 @@ require 'elasticsearch/api'
21
21
  module Core
22
22
  module Ingestion
23
23
  class EsSink
24
- def initialize(index_name, request_pipeline, bulk_queue = Utility::BulkQueue.new, max_allowed_document_size = 5 * 1024 * 1024)
24
+ def initialize(index_name, request_pipeline, bulk_queue = Utility::BulkQueue.new, max_allowed_document_size = Utility::Constants::DEFAULT_MAX_INGESTION_QUEUE_BYTES)
25
25
  @client = Utility::EsClient.new(App::Config[:elasticsearch])
26
26
  @index_name = index_name
27
27
  @request_pipeline = request_pipeline
@@ -6,10 +6,20 @@
6
6
 
7
7
  # frozen_string_literal: true
8
8
 
9
+ require 'utility/constants'
10
+
9
11
  module Core
10
12
  module Jobs
11
13
  class Consumer
12
- def initialize(scheduler:, poll_interval: 3, termination_timeout: 60, min_threads: 1, max_threads: 5, max_queue: 100, idle_time: 5)
14
+ def initialize(scheduler:,
15
+ max_ingestion_queue_size:,
16
+ max_ingestion_queue_bytes:,
17
+ poll_interval: 3,
18
+ termination_timeout: 60,
19
+ min_threads: 1,
20
+ max_threads: 5,
21
+ max_queue: 100,
22
+ idle_time: 5)
13
23
  @scheduler = scheduler
14
24
  @poll_interval = poll_interval
15
25
  @termination_timeout = termination_timeout
@@ -18,6 +28,9 @@ module Core
18
28
  @max_queue = max_queue
19
29
  @idle_time = idle_time
20
30
 
31
+ @max_ingestion_queue_size = max_ingestion_queue_size
32
+ @max_ingestion_queue_bytes = max_ingestion_queue_bytes
33
+
21
34
  @running = Concurrent::AtomicBoolean.new(false)
22
35
  end
23
36
 
@@ -76,7 +89,12 @@ module Core
76
89
  pool.post do
77
90
  Utility::Logger.info("Connector #{connector_settings.formatted} picked up the job #{job.id}")
78
91
  Core::ElasticConnectorActions.ensure_content_index_exists(connector_settings.index_name)
79
- job_runner = Core::SyncJobRunner.new(connector_settings, job)
92
+ job_runner = Core::SyncJobRunner.new(
93
+ connector_settings,
94
+ job,
95
+ @max_ingestion_queue_size,
96
+ @max_ingestion_queue_bytes
97
+ )
80
98
  job_runner.execute
81
99
  rescue Core::JobAlreadyRunningError
82
100
  Utility::Logger.info("Sync job for #{connector_settings.formatted} is already running, skipping.")
@@ -23,9 +23,17 @@ module Core
23
23
  class SyncJobRunner
24
24
  JOB_REPORTING_INTERVAL = 10
25
25
 
26
- def initialize(connector_settings, job)
26
+ def initialize(connector_settings, job, max_ingestion_queue_size, max_ingestion_queue_bytes)
27
27
  @connector_settings = connector_settings
28
- @sink = Core::Ingestion::EsSink.new(connector_settings.index_name, @connector_settings.request_pipeline)
28
+ @sink = Core::Ingestion::EsSink.new(
29
+ connector_settings.index_name,
30
+ @connector_settings.request_pipeline,
31
+ Utility::BulkQueue.new(
32
+ max_ingestion_queue_size,
33
+ max_ingestion_queue_bytes
34
+ ),
35
+ max_ingestion_queue_bytes
36
+ )
29
37
  @connector_class = Connectors::REGISTRY.connector_class(connector_settings.service_type)
30
38
  @sync_finished = false
31
39
  @sync_error = nil
@@ -6,12 +6,14 @@
6
6
 
7
7
  require 'json'
8
8
 
9
+ require 'utility/constants'
10
+
9
11
  module Utility
10
12
  class BulkQueue
11
13
  class QueueOverflowError < StandardError; end
12
14
 
13
15
  # 500 items or 5MB
14
- def initialize(operation_count_threshold = 500, size_threshold = 5 * 1024 * 1024)
16
+ def initialize(operation_count_threshold = Utility::Constants::DEFAULT_MAX_INGESTION_QUEUE_LENGTH, size_threshold = Utility::Constants::DEFAULT_MAX_INGESTION_QUEUE_BYTES)
15
17
  @operation_count_threshold = operation_count_threshold.freeze
16
18
  @size_threshold = size_threshold.freeze
17
19
 
@@ -18,5 +18,10 @@ module Utility
18
18
  CRAWLER_SERVICE_TYPE = 'elastic-crawler'
19
19
  FILTERING_RULES_FEATURE = 'filtering_rules'
20
20
  FILTERING_ADVANCED_FEATURE = 'filtering_advanced_config'
21
+
22
+ # Maximum number of operations in BULK Elasticsearch operation that will ingest the data
23
+ DEFAULT_MAX_INGESTION_QUEUE_SIZE = 500
24
+ # Maximum size of either whole BULK Elasticsearch operation or one document in it
25
+ DEFAULT_MAX_INGESTION_QUEUE_BYTES = 5 * 1024 * 1024
21
26
  end
22
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: connectors_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.6.0.4.pre.20221116T024501Z
4
+ version: 8.7.0.0.pre.20221117T004928Z
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-16 00:00:00.000000000 Z
11
+ date: 2022-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -420,6 +420,7 @@ files:
420
420
  - lib/connectors/registry.rb
421
421
  - lib/connectors/sync_status.rb
422
422
  - lib/connectors/tolerable_error_helper.rb
423
+ - lib/connectors_app/\
423
424
  - lib/connectors_service.rb
424
425
  - lib/connectors_utility.rb
425
426
  - lib/core.rb
@@ -469,7 +470,7 @@ homepage: https://github.com/elastic/connectors-ruby
469
470
  licenses:
470
471
  - Elastic-2.0
471
472
  metadata: {}
472
- post_install_message:
473
+ post_install_message:
473
474
  rdoc_options: []
474
475
  require_paths:
475
476
  - lib
@@ -485,7 +486,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
485
486
  version: 1.3.1
486
487
  requirements: []
487
488
  rubygems_version: 3.0.3.1
488
- signing_key:
489
+ signing_key:
489
490
  specification_version: 4
490
491
  summary: Gem containing Elastic connectors service
491
492
  test_files: []