gooddata 2.3.1 → 2.3.3

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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.gdc-ii-config.yaml +1 -1
  3. data/.github/workflows/build.yml +10 -16
  4. data/.github/workflows/check-extended.yaml +245 -0
  5. data/.github/workflows/check.yaml +190 -0
  6. data/.github/workflows/gate.yaml +200 -0
  7. data/.github/workflows/pre-merge.yml +23 -54
  8. data/.travis.yml +0 -35
  9. data/CHANGELOG.md +6 -0
  10. data/Dockerfile +4 -10
  11. data/Dockerfile.jruby +14 -2
  12. data/DockerfileOldImage +88 -0
  13. data/SDK_VERSION +1 -1
  14. data/VERSION +1 -1
  15. data/bin/provision.sh +1 -1
  16. data/bin/release.sh +1 -1
  17. data/bin/rollout.sh +1 -1
  18. data/bin/user_filters.sh +1 -1
  19. data/bin/users.sh +1 -1
  20. data/ci/bigquery/pom.xml +1 -1
  21. data/ci/postgresql/pom.xml +1 -1
  22. data/ci/snowflake/pom.xml +11 -1
  23. data/gooddata.gemspec +27 -11
  24. data/lib/gooddata/cloud_resources/mssql/mssql_client.rb +2 -1
  25. data/lib/gooddata/cloud_resources/mysql/mysql_client.rb +2 -1
  26. data/lib/gooddata/cloud_resources/postgresql/postgresql_client.rb +2 -1
  27. data/lib/gooddata/cloud_resources/redshift/redshift_client.rb +2 -1
  28. data/lib/gooddata/cloud_resources/snowflake/snowflake_client.rb +58 -3
  29. data/lib/gooddata/helpers/global_helpers.rb +1 -1
  30. data/lib/gooddata/lcm/actions/import_object_collections.rb +23 -2
  31. data/lib/gooddata/lcm/actions/synchronize_clients.rb +31 -3
  32. data/lib/gooddata/lcm/actions/synchronize_dataset_mappings.rb +6 -2
  33. data/lib/gooddata/lcm/actions/synchronize_etls_in_segment.rb +3 -3
  34. data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +5 -1
  35. data/lib/gooddata/lcm/lcm2.rb +4 -0
  36. data/lib/gooddata/models/domain.rb +16 -4
  37. data/lib/gooddata/models/metadata/label.rb +21 -4
  38. data/lib/gooddata/models/model.rb +1 -1
  39. data/lib/gooddata/models/project.rb +17 -2
  40. data/lib/gooddata/models/segment.rb +3 -2
  41. data/lib/gooddata/models/user_filters/user_filter_builder.rb +4 -3
  42. data/lib/gooddata/rest/client.rb +6 -1
  43. data/lib/gooddata/rest/connection.rb +20 -5
  44. metadata +126 -88
@@ -58,6 +58,8 @@ module GoodData
58
58
  RETRYABLE_ERRORS = [
59
59
  Net::HTTPBadResponse,
60
60
  RestClient::InternalServerError,
61
+ RestClient::Exceptions::OpenTimeout,
62
+ RestClient::Exceptions::ReadTimeout,
61
63
  RestClient::RequestTimeout,
62
64
  RestClient::MethodNotAllowed,
63
65
  SystemCallError,
@@ -65,7 +67,7 @@ module GoodData
65
67
  ]
66
68
 
67
69
  RETRY_TIME_INITIAL_VALUE = 1
68
- RETRY_TIME_COEFFICIENT = 1.5
70
+ RETRY_TIME_COEFFICIENT = 2
69
71
  RETRYABLE_ERRORS << Net::ReadTimeout if Net.const_defined?(:ReadTimeout)
70
72
 
71
73
  RETRYABLE_ERRORS << OpenSSL::SSL::SSLErrorWaitReadable if OpenSSL::SSL.const_defined?(:SSLErrorWaitReadable)
@@ -94,7 +96,7 @@ module GoodData
94
96
 
95
97
  # Retry block if exception thrown
96
98
  def retryable(options = {}, &_block)
97
- opts = { :tries => 12, :on => RETRYABLE_ERRORS }.merge(options)
99
+ opts = { :tries => 14, :on => RETRYABLE_ERRORS }.merge(options)
98
100
 
99
101
  retry_exception = opts[:on]
100
102
  retries = opts[:tries]
@@ -110,6 +112,7 @@ module GoodData
110
112
  raise e unless options[:refresh_token]
111
113
  raise e if options[:dont_reauth]
112
114
 
115
+ logging_retry_error(e, retry_time)
113
116
  options[:refresh_token].call # (dont_reauth: true)
114
117
  if (retries -= 1) > 0
115
118
  retry
@@ -117,11 +120,17 @@ module GoodData
117
120
  fail e
118
121
  end
119
122
  rescue RestClient::TooManyRequests, RestClient::ServiceUnavailable, *retry_exception => e
120
- GoodData.logger.warn "#{e.message}, retrying in #{retry_time} seconds"
123
+ logging_retry_error(e, retry_time)
121
124
  sleep retry_time
122
- retry_time *= RETRY_TIME_COEFFICIENT
123
- # 10 requests with 1.5 coefficent should take ~ 3 mins to finish
125
+ if OpenSSL::SSL.const_defined?(:SSLErrorWaitReadable) && e.is_a?(OpenSSL::SSL::SSLErrorWaitReadable)
126
+ GoodData.gd_logger.warn "Refresh token status=start retry_time=#{retry_time}. Error: #{e.message}"
127
+ options[:refresh_token].call # (dont_reauth: true)
128
+ GoodData.gd_logger.warn "Refresh token status=success retry_time=#{retry_time}. Error: #{e.message}"
129
+ end
130
+
131
+ # Total 10 retry requests with 1.5 coefficent should take ~ 2 mins to finish
124
132
  if (retries -= 1) > 0
133
+ retry_time *= RETRY_TIME_COEFFICIENT
125
134
  retry
126
135
  else
127
136
  fail e
@@ -129,6 +138,12 @@ module GoodData
129
138
  end
130
139
  yield
131
140
  end
141
+
142
+ def logging_retry_error(e, retry_time)
143
+ error_message = "#{e.message}, retrying in #{retry_time} seconds"
144
+ GoodData.logger.warn error_message
145
+ GoodData.gd_logger.warn error_message
146
+ end
132
147
  end
133
148
 
134
149
  attr_reader :request_params
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gooddata
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 2.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kolesnikov
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2024-03-21 00:00:00.000000000 Z
17
+ date: 2025-08-06 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: license_finder
@@ -30,6 +30,20 @@ dependencies:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: redcarpet
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.1'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.1'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: rake
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -45,19 +59,39 @@ dependencies:
45
59
  - !ruby/object:Gem::Version
46
60
  version: '13.0'
47
61
  - !ruby/object:Gem::Dependency
48
- name: redcarpet
62
+ name: rubocop
49
63
  requirement: !ruby/object:Gem::Requirement
50
64
  requirements:
51
- - - "~>"
65
+ - - ">="
52
66
  - !ruby/object:Gem::Version
53
- version: '3.1'
67
+ version: '1.28'
54
68
  type: :development
55
69
  prerelease: false
56
70
  version_requirements: !ruby/object:Gem::Requirement
57
71
  requirements:
58
- - - "~>"
72
+ - - ">="
59
73
  - !ruby/object:Gem::Version
60
- version: '3.1'
74
+ version: '1.28'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubocop-ast
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.24.1
82
+ - - "<="
83
+ - !ruby/object:Gem::Version
84
+ version: 1.42.0
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 1.24.1
92
+ - - "<="
93
+ - !ruby/object:Gem::Version
94
+ version: 1.42.0
61
95
  - !ruby/object:Gem::Dependency
62
96
  name: rspec
63
97
  requirement: !ruby/object:Gem::Requirement
@@ -101,19 +135,81 @@ dependencies:
101
135
  - !ruby/object:Gem::Version
102
136
  version: 0.6.0
103
137
  - !ruby/object:Gem::Dependency
104
- name: rubocop
138
+ name: azure-storage-blob
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '2.0'
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '2.0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: nokogiri
105
153
  requirement: !ruby/object:Gem::Requirement
106
154
  requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '1'
107
158
  - - ">="
108
159
  - !ruby/object:Gem::Version
109
- version: '1.28'
110
- type: :development
160
+ version: 1.10.8
161
+ type: :runtime
111
162
  prerelease: false
112
163
  version_requirements: !ruby/object:Gem::Requirement
113
164
  requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '1'
114
168
  - - ">="
115
169
  - !ruby/object:Gem::Version
116
- version: '1.28'
170
+ version: 1.10.8
171
+ - !ruby/object:Gem::Dependency
172
+ name: json_pure
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - "~>"
176
+ - !ruby/object:Gem::Version
177
+ version: '2.6'
178
+ type: :runtime
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - "~>"
183
+ - !ruby/object:Gem::Version
184
+ version: '2.6'
185
+ - !ruby/object:Gem::Dependency
186
+ name: restforce
187
+ requirement: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '2.4'
192
+ type: :runtime
193
+ prerelease: false
194
+ version_requirements: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '2.4'
199
+ - !ruby/object:Gem::Dependency
200
+ name: rubyzip
201
+ requirement: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ type: :runtime
207
+ prerelease: false
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
117
213
  - !ruby/object:Gem::Dependency
118
214
  name: simplecov
119
215
  requirement: !ruby/object:Gem::Requirement
@@ -286,16 +382,16 @@ dependencies:
286
382
  name: activesupport
287
383
  requirement: !ruby/object:Gem::Requirement
288
384
  requirements:
289
- - - "<"
385
+ - - ">="
290
386
  - !ruby/object:Gem::Version
291
- version: 7.0.0
387
+ version: 6.0.3.1
292
388
  type: :runtime
293
389
  prerelease: false
294
390
  version_requirements: !ruby/object:Gem::Requirement
295
391
  requirements:
296
- - - "<"
392
+ - - ">="
297
393
  - !ruby/object:Gem::Version
298
- version: 7.0.0
394
+ version: 6.0.3.1
299
395
  - !ruby/object:Gem::Dependency
300
396
  name: net-smtp
301
397
  requirement: !ruby/object:Gem::Requirement
@@ -366,40 +462,6 @@ dependencies:
366
462
  - - "~>"
367
463
  - !ruby/object:Gem::Version
368
464
  version: '1.1'
369
- - !ruby/object:Gem::Dependency
370
- name: azure-storage-blob
371
- requirement: !ruby/object:Gem::Requirement
372
- requirements:
373
- - - "~>"
374
- - !ruby/object:Gem::Version
375
- version: '2.0'
376
- type: :runtime
377
- prerelease: false
378
- version_requirements: !ruby/object:Gem::Requirement
379
- requirements:
380
- - - "~>"
381
- - !ruby/object:Gem::Version
382
- version: '2.0'
383
- - !ruby/object:Gem::Dependency
384
- name: nokogiri
385
- requirement: !ruby/object:Gem::Requirement
386
- requirements:
387
- - - "~>"
388
- - !ruby/object:Gem::Version
389
- version: '1'
390
- - - ">="
391
- - !ruby/object:Gem::Version
392
- version: 1.10.8
393
- type: :runtime
394
- prerelease: false
395
- version_requirements: !ruby/object:Gem::Requirement
396
- requirements:
397
- - - "~>"
398
- - !ruby/object:Gem::Version
399
- version: '1'
400
- - - ">="
401
- - !ruby/object:Gem::Version
402
- version: 1.10.8
403
465
  - !ruby/object:Gem::Dependency
404
466
  name: gli
405
467
  requirement: !ruby/object:Gem::Requirement
@@ -429,47 +491,47 @@ dependencies:
429
491
  - !ruby/object:Gem::Version
430
492
  version: 2.0.0.pre.develop.14
431
493
  - !ruby/object:Gem::Dependency
432
- name: json_pure
494
+ name: multi_json
433
495
  requirement: !ruby/object:Gem::Requirement
434
496
  requirements:
435
497
  - - "~>"
436
498
  - !ruby/object:Gem::Version
437
- version: '2.6'
499
+ version: '1.12'
438
500
  type: :runtime
439
501
  prerelease: false
440
502
  version_requirements: !ruby/object:Gem::Requirement
441
503
  requirements:
442
504
  - - "~>"
443
505
  - !ruby/object:Gem::Version
444
- version: '2.6'
506
+ version: '1.12'
445
507
  - !ruby/object:Gem::Dependency
446
- name: multi_json
508
+ name: parseconfig
447
509
  requirement: !ruby/object:Gem::Requirement
448
510
  requirements:
449
511
  - - "~>"
450
512
  - !ruby/object:Gem::Version
451
- version: '1.12'
513
+ version: '1.0'
452
514
  type: :runtime
453
515
  prerelease: false
454
516
  version_requirements: !ruby/object:Gem::Requirement
455
517
  requirements:
456
518
  - - "~>"
457
519
  - !ruby/object:Gem::Version
458
- version: '1.12'
520
+ version: '1.0'
459
521
  - !ruby/object:Gem::Dependency
460
- name: parseconfig
522
+ name: path_expander
461
523
  requirement: !ruby/object:Gem::Requirement
462
524
  requirements:
463
- - - "~>"
525
+ - - "<"
464
526
  - !ruby/object:Gem::Version
465
- version: '1.0'
527
+ version: 1.1.2
466
528
  type: :runtime
467
529
  prerelease: false
468
530
  version_requirements: !ruby/object:Gem::Requirement
469
531
  requirements:
470
- - - "~>"
532
+ - - "<"
471
533
  - !ruby/object:Gem::Version
472
- version: '1.0'
534
+ version: 1.1.2
473
535
  - !ruby/object:Gem::Dependency
474
536
  name: pmap
475
537
  requirement: !ruby/object:Gem::Requirement
@@ -512,20 +574,6 @@ dependencies:
512
574
  - - "~>"
513
575
  - !ruby/object:Gem::Version
514
576
  version: 1.0.3
515
- - !ruby/object:Gem::Dependency
516
- name: restforce
517
- requirement: !ruby/object:Gem::Requirement
518
- requirements:
519
- - - ">="
520
- - !ruby/object:Gem::Version
521
- version: '2.4'
522
- type: :runtime
523
- prerelease: false
524
- version_requirements: !ruby/object:Gem::Requirement
525
- requirements:
526
- - - ">="
527
- - !ruby/object:Gem::Version
528
- version: '2.4'
529
577
  - !ruby/object:Gem::Dependency
530
578
  name: rest-client
531
579
  requirement: !ruby/object:Gem::Requirement
@@ -540,20 +588,6 @@ dependencies:
540
588
  - - "~>"
541
589
  - !ruby/object:Gem::Version
542
590
  version: '2.0'
543
- - !ruby/object:Gem::Dependency
544
- name: rubyzip
545
- requirement: !ruby/object:Gem::Requirement
546
- requirements:
547
- - - ">="
548
- - !ruby/object:Gem::Version
549
- version: '0'
550
- type: :runtime
551
- prerelease: false
552
- version_requirements: !ruby/object:Gem::Requirement
553
- requirements:
554
- - - ">="
555
- - !ruby/object:Gem::Version
556
- version: '0'
557
591
  - !ruby/object:Gem::Dependency
558
592
  name: terminal-table
559
593
  requirement: !ruby/object:Gem::Requirement
@@ -637,6 +671,9 @@ files:
637
671
  - ".gdc-ii-config-chart.yaml"
638
672
  - ".gdc-ii-config.yaml"
639
673
  - ".github/workflows/build.yml"
674
+ - ".github/workflows/check-extended.yaml"
675
+ - ".github/workflows/check.yaml"
676
+ - ".github/workflows/gate.yaml"
640
677
  - ".github/workflows/pre-merge.yml"
641
678
  - ".gitignore"
642
679
  - ".pronto.yml"
@@ -651,6 +688,7 @@ files:
651
688
  - Dockerfile
652
689
  - Dockerfile.jruby
653
690
  - Dockerfile.ruby
691
+ - DockerfileOldImage
654
692
  - Gemfile
655
693
  - Guardfile
656
694
  - Jenkinsfile