google-cloud-pubsub 0.37.1 → 0.38.0

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: 9ca95d3d409fb3fd3061e5e9bb0e34eed7d8efdd3677c4de6e34dbed26499eae
4
- data.tar.gz: e7a16095e21f9a166461cbecbc4c95a4895421762da8c644a866cbce95a0e19b
3
+ metadata.gz: 7d5381a504110817167a469d767b176debfe597ba4388de028485ef49118cc83
4
+ data.tar.gz: 83915c1329784d01e58d208dff9e713417d768a26a2924e54f3e7ab48edfd453
5
5
  SHA512:
6
- metadata.gz: 2ad6bd6779827fcd87e613832f7a47cc73331615dcd3564d223776cea9d8469890829a7c2f8dd5bd989f1ffb5147c2fc8197086ce3e32994d40786c38141e1d7
7
- data.tar.gz: f056480612e86fac7b2339067dae67c6d393cfc0864d30dcba8a492f3db25d6e6e269385d00dd5e85fd9de22d00cc577227b557e18aa4f3fe5f0244d1416c0d2
6
+ metadata.gz: ce37e8734b042325330222d29672abf5f7f77334b4bc03d21ff234aefdd5c9865edb4e6c0c33660855f229f9cc8c3c6ce06bb42db0e0d0edf45adb564523a9ff
7
+ data.tar.gz: 3c5da92014d6c54983930b380146f86c79a5ab7474b17d1bb3361f1c13418d513836045ff5f6211f244185694bde54465cceebf95e598842145727219597a453
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Release History
2
2
 
3
+ ### 0.38.0 / 2019-07-31
4
+
5
+ * Allow persistence_regions to be set
6
+ * Support setting persistence_regions on topic creation
7
+ and topic update.
8
+ * Allow Service endpoint to be configured
9
+ * Google::Cloud::PubSub.configure.endpoint
10
+ * Fix max threads setting in thread pools
11
+ * Thread pools once again limit the number of threads allocated.
12
+ * Reduce thread usage at startup
13
+ * Allocate threads in pool as needed, not all up front
14
+ * Update documentation links
15
+
3
16
  ### 0.37.1 / 2019-07-09
4
17
 
5
18
  * Add IAM GetPolicyOptions in the lower-level interface.
data/LOGGING.md CHANGED
@@ -5,7 +5,7 @@ To enable logging for this library, set the logger for the underlying
5
5
  that you set may be a Ruby stdlib
6
6
  [`Logger`](https://ruby-doc.org/stdlib-2.5.0/libdoc/logger/rdoc/Logger.html) as
7
7
  shown below, or a
8
- [`Google::Cloud::Logging::Logger`](https://googleapis.github.io/google-cloud-ruby/docs/google-cloud-logging/latest/Google/Cloud/Logging/Logger)
8
+ [`Google::Cloud::Logging::Logger`](https://googleapis.dev/ruby/google-cloud-logging/latest)
9
9
  that will write logs to [Stackdriver
10
10
  Logging](https://cloud.google.com/logging/). See
11
11
  [grpc/logconfig.rb](https://github.com/grpc/grpc/blob/master/src/ruby/lib/grpc/logconfig.rb)
@@ -193,9 +193,9 @@ module Google
193
193
 
194
194
  def init_resources!
195
195
  @first_published_at ||= Time.now
196
- @publish_thread_pool ||= Concurrent::CachedThreadPool.new \
196
+ @publish_thread_pool ||= Concurrent::ThreadPoolExecutor.new \
197
197
  max_threads: @publish_threads
198
- @callback_thread_pool ||= Concurrent::CachedThreadPool.new \
198
+ @callback_thread_pool ||= Concurrent::ThreadPoolExecutor.new \
199
199
  max_threads: @callback_threads
200
200
  @thread ||= Thread.new { run_background }
201
201
  end
@@ -174,6 +174,9 @@ module Google
174
174
  # @param [String] kms_key The Cloud KMS encryption key that will be used
175
175
  # to protect access to messages published on this topic. Optional.
176
176
  # For example: `projects/a/locations/b/keyRings/c/cryptoKeys/d`
177
+ # @param [Array<String>] persistence_regions The list of GCP region IDs
178
+ # where messages that are published to the topic may be persisted in
179
+ # storage. Optional.
177
180
  # @param [Hash] async A hash of values to configure the topic's
178
181
  # {AsyncPublisher} that is created when {Topic#publish_async}
179
182
  # is called. Optional.
@@ -202,11 +205,13 @@ module Google
202
205
  # pubsub = Google::Cloud::PubSub.new
203
206
  # topic = pubsub.create_topic "my-topic"
204
207
  #
205
- def create_topic topic_name, labels: nil, kms_key: nil, async: nil
208
+ def create_topic topic_name, labels: nil, kms_key: nil,
209
+ persistence_regions: nil, async: nil
206
210
  ensure_service!
207
211
  grpc = service.create_topic topic_name,
208
- labels: labels,
209
- kms_key_name: kms_key
212
+ labels: labels,
213
+ kms_key_name: kms_key,
214
+ persistence_regions: persistence_regions
210
215
  Topic.from_grpc grpc, service, async: async
211
216
  end
212
217
  alias new_topic create_topic
@@ -126,12 +126,21 @@ module Google
126
126
 
127
127
  ##
128
128
  # Creates the given topic with the given name.
129
- def create_topic topic_name, labels: nil, kms_key_name: nil, options: {}
129
+ def create_topic topic_name, labels: nil, kms_key_name: nil,
130
+ persistence_regions: nil, options: {}
131
+ if persistence_regions
132
+ message_storage_policy = {
133
+ allowed_persistence_regions: Array(persistence_regions)
134
+ }
135
+ end
136
+
130
137
  execute do
131
- publisher.create_topic topic_path(topic_name, options),
132
- labels: labels,
133
- kms_key_name: kms_key_name,
134
- options: default_options
138
+ publisher.create_topic \
139
+ topic_path(topic_name, options),
140
+ labels: labels,
141
+ kms_key_name: kms_key_name,
142
+ message_storage_policy: message_storage_policy,
143
+ options: default_options
135
144
  end
136
145
  end
137
146
 
@@ -48,7 +48,7 @@ module Google
48
48
  @pause_cond = new_cond
49
49
 
50
50
  @inventory = Inventory.new self, @subscriber.stream_inventory
51
- @callback_thread_pool = Concurrent::CachedThreadPool.new \
51
+ @callback_thread_pool = Concurrent::ThreadPoolExecutor.new \
52
52
  max_threads: @subscriber.callback_threads
53
53
 
54
54
  @stream_keepalive_task = Concurrent::TimerTask.new(
@@ -201,7 +201,7 @@ module Google
201
201
  end
202
202
 
203
203
  def with_threadpool
204
- pool = Concurrent::CachedThreadPool.new \
204
+ pool = Concurrent::ThreadPoolExecutor.new \
205
205
  max_threads: @subscriber.push_threads
206
206
 
207
207
  yield pool
@@ -212,6 +212,30 @@ module Google
212
212
  Array @grpc.message_storage_policy.allowed_persistence_regions
213
213
  end
214
214
 
215
+ ##
216
+ # Sets the list of GCP region IDs where messages that are published to
217
+ # the topic may be persisted in storage.
218
+ #
219
+ # @param [Array<String>] new_persistence_regions
220
+ #
221
+ # @example
222
+ # require "google/cloud/pubsub"
223
+ #
224
+ # pubsub = Google::Cloud::PubSub.new
225
+ #
226
+ # topic = pubsub.topic "my-topic"
227
+ #
228
+ # topic.persistence_regions = ["us-central1", "us-central2"]
229
+ #
230
+ def persistence_regions= new_persistence_regions
231
+ update_grpc = Google::Cloud::PubSub::V1::Topic.new \
232
+ name: name, message_storage_policy: {
233
+ allowed_persistence_regions: Array(new_persistence_regions)
234
+ }
235
+ @grpc = service.update_topic update_grpc, :message_storage_policy
236
+ @resource_name = nil
237
+ end
238
+
215
239
  ##
216
240
  # Permanently deletes the topic.
217
241
  #
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module PubSub
19
- VERSION = "0.37.1".freeze
19
+ VERSION = "0.38.0".freeze
20
20
  end
21
21
 
22
22
  Pubsub = PubSub unless const_defined? :Pubsub
@@ -111,6 +111,7 @@ module Google
111
111
  PubSub::Project.new(
112
112
  PubSub::Service.new(
113
113
  project_id, credentials, timeout: timeout,
114
+ host: configure.endpoint,
114
115
  client_config: client_config
115
116
  )
116
117
  )
@@ -136,6 +137,8 @@ module Google
136
137
  # * `timeout` - (Integer) Default timeout to use in requests.
137
138
  # * `client_config` - (Hash) A hash of values to override the default
138
139
  # behavior of the API client.
140
+ # * `endpoint` - (String) Override of the endpoint host name, or `nil`
141
+ # to use the default endpoint.
139
142
  # * `emulator_host` - (String) Host name of the emulator. Defaults to
140
143
  # `ENV["PUBSUB_EMULATOR_HOST"]`
141
144
  # * `on_error` - (Proc) A Proc to be run when an error is encountered
@@ -143,4 +143,5 @@ Google::Cloud.configure.add_config! :pubsub do |config|
143
143
  config.add_field! :emulator_host, default_emulator,
144
144
  match: String, allow_nil: true
145
145
  config.add_field! :on_error, nil, match: Proc
146
+ config.add_field! :endpoint, nil, match: String
146
147
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-pubsub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.37.1
4
+ version: 0.38.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-07-10 00:00:00.000000000 Z
12
+ date: 2019-08-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-cloud-core
@@ -306,7 +306,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
306
306
  - !ruby/object:Gem::Version
307
307
  version: '0'
308
308
  requirements: []
309
- rubygems_version: 3.0.3
309
+ rubygems_version: 3.0.4
310
310
  signing_key:
311
311
  specification_version: 4
312
312
  summary: API Client library for Google Cloud Pub/Sub