lhm-shopify 3.3.5

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 (94) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/test.yml +34 -0
  3. data/.gitignore +17 -0
  4. data/.rubocop.yml +183 -0
  5. data/.travis.yml +21 -0
  6. data/CHANGELOG.md +216 -0
  7. data/Gemfile +5 -0
  8. data/LICENSE +27 -0
  9. data/README.md +284 -0
  10. data/Rakefile +22 -0
  11. data/bin/.gitkeep +0 -0
  12. data/dbdeployer/config.json +32 -0
  13. data/dbdeployer/install.sh +64 -0
  14. data/dev.yml +20 -0
  15. data/gemfiles/ar-2.3_mysql.gemfile +6 -0
  16. data/gemfiles/ar-3.2_mysql.gemfile +5 -0
  17. data/gemfiles/ar-3.2_mysql2.gemfile +5 -0
  18. data/gemfiles/ar-4.0_mysql2.gemfile +5 -0
  19. data/gemfiles/ar-4.1_mysql2.gemfile +5 -0
  20. data/gemfiles/ar-4.2_mysql2.gemfile +5 -0
  21. data/gemfiles/ar-5.0_mysql2.gemfile +5 -0
  22. data/lhm.gemspec +34 -0
  23. data/lib/lhm.rb +131 -0
  24. data/lib/lhm/atomic_switcher.rb +52 -0
  25. data/lib/lhm/chunk_finder.rb +32 -0
  26. data/lib/lhm/chunk_insert.rb +51 -0
  27. data/lib/lhm/chunker.rb +87 -0
  28. data/lib/lhm/cleanup/current.rb +74 -0
  29. data/lib/lhm/command.rb +48 -0
  30. data/lib/lhm/entangler.rb +117 -0
  31. data/lib/lhm/intersection.rb +51 -0
  32. data/lib/lhm/invoker.rb +98 -0
  33. data/lib/lhm/locked_switcher.rb +74 -0
  34. data/lib/lhm/migration.rb +43 -0
  35. data/lib/lhm/migrator.rb +237 -0
  36. data/lib/lhm/printer.rb +59 -0
  37. data/lib/lhm/railtie.rb +9 -0
  38. data/lib/lhm/sql_helper.rb +77 -0
  39. data/lib/lhm/sql_retry.rb +61 -0
  40. data/lib/lhm/table.rb +121 -0
  41. data/lib/lhm/table_name.rb +23 -0
  42. data/lib/lhm/test_support.rb +35 -0
  43. data/lib/lhm/throttler.rb +36 -0
  44. data/lib/lhm/throttler/slave_lag.rb +145 -0
  45. data/lib/lhm/throttler/threads_running.rb +53 -0
  46. data/lib/lhm/throttler/time.rb +29 -0
  47. data/lib/lhm/timestamp.rb +11 -0
  48. data/lib/lhm/version.rb +6 -0
  49. data/shipit.rubygems.yml +0 -0
  50. data/spec/.lhm.example +4 -0
  51. data/spec/README.md +58 -0
  52. data/spec/fixtures/bigint_table.ddl +4 -0
  53. data/spec/fixtures/composite_primary_key.ddl +7 -0
  54. data/spec/fixtures/custom_primary_key.ddl +6 -0
  55. data/spec/fixtures/destination.ddl +6 -0
  56. data/spec/fixtures/lines.ddl +7 -0
  57. data/spec/fixtures/origin.ddl +6 -0
  58. data/spec/fixtures/permissions.ddl +5 -0
  59. data/spec/fixtures/small_table.ddl +4 -0
  60. data/spec/fixtures/tracks.ddl +5 -0
  61. data/spec/fixtures/users.ddl +14 -0
  62. data/spec/fixtures/wo_id_int_column.ddl +6 -0
  63. data/spec/integration/atomic_switcher_spec.rb +93 -0
  64. data/spec/integration/chunk_insert_spec.rb +29 -0
  65. data/spec/integration/chunker_spec.rb +185 -0
  66. data/spec/integration/cleanup_spec.rb +136 -0
  67. data/spec/integration/entangler_spec.rb +66 -0
  68. data/spec/integration/integration_helper.rb +237 -0
  69. data/spec/integration/invoker_spec.rb +33 -0
  70. data/spec/integration/lhm_spec.rb +585 -0
  71. data/spec/integration/lock_wait_timeout_spec.rb +30 -0
  72. data/spec/integration/locked_switcher_spec.rb +50 -0
  73. data/spec/integration/sql_retry/lock_wait_spec.rb +125 -0
  74. data/spec/integration/sql_retry/lock_wait_timeout_test_helper.rb +101 -0
  75. data/spec/integration/table_spec.rb +91 -0
  76. data/spec/test_helper.rb +32 -0
  77. data/spec/unit/atomic_switcher_spec.rb +31 -0
  78. data/spec/unit/chunk_finder_spec.rb +73 -0
  79. data/spec/unit/chunk_insert_spec.rb +44 -0
  80. data/spec/unit/chunker_spec.rb +166 -0
  81. data/spec/unit/entangler_spec.rb +124 -0
  82. data/spec/unit/intersection_spec.rb +51 -0
  83. data/spec/unit/lhm_spec.rb +29 -0
  84. data/spec/unit/locked_switcher_spec.rb +51 -0
  85. data/spec/unit/migrator_spec.rb +146 -0
  86. data/spec/unit/printer_spec.rb +97 -0
  87. data/spec/unit/sql_helper_spec.rb +32 -0
  88. data/spec/unit/table_name_spec.rb +39 -0
  89. data/spec/unit/table_spec.rb +47 -0
  90. data/spec/unit/throttler/slave_lag_spec.rb +317 -0
  91. data/spec/unit/throttler/threads_running_spec.rb +64 -0
  92. data/spec/unit/throttler_spec.rb +124 -0
  93. data/spec/unit/unit_helper.rb +13 -0
  94. metadata +239 -0
@@ -0,0 +1,13 @@
1
+ # Copyright (c) 2011 - 2013, SoundCloud Ltd., Rany Keddo, Tobias Bielohlawek, Tobias
2
+ # Schmidt
3
+ require 'test_helper'
4
+
5
+ module UnitHelper
6
+ def fixture(name)
7
+ File.read $fixtures.join(name)
8
+ end
9
+
10
+ def strip(sql)
11
+ sql.strip.gsub(/\n */, "\n")
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,239 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lhm-shopify
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.3.5
5
+ platform: ruby
6
+ authors:
7
+ - SoundCloud
8
+ - Shopify
9
+ - Rany Keddo
10
+ - Tobias Bielohlawek
11
+ - Tobias Schmidt
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+ date: 2021-07-06 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: retriable
19
+ requirement: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 3.0.0
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: 3.0.0
31
+ - !ruby/object:Gem::Dependency
32
+ name: minitest
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ - !ruby/object:Gem::Dependency
46
+ name: mocha
47
+ requirement: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ type: :development
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ - !ruby/object:Gem::Dependency
60
+ name: rake
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: activerecord
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: mysql2
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: simplecov
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ description: Migrate large tables without downtime by copying to a temporary table
116
+ in chunks. The old table is not dropped. Instead, it is moved to timestamp_table_name
117
+ for verification.
118
+ email: database-engineering@shopify.com
119
+ executables: []
120
+ extensions: []
121
+ extra_rdoc_files: []
122
+ files:
123
+ - ".github/workflows/test.yml"
124
+ - ".gitignore"
125
+ - ".rubocop.yml"
126
+ - ".travis.yml"
127
+ - CHANGELOG.md
128
+ - Gemfile
129
+ - LICENSE
130
+ - README.md
131
+ - Rakefile
132
+ - bin/.gitkeep
133
+ - dbdeployer/config.json
134
+ - dbdeployer/install.sh
135
+ - dev.yml
136
+ - gemfiles/ar-2.3_mysql.gemfile
137
+ - gemfiles/ar-3.2_mysql.gemfile
138
+ - gemfiles/ar-3.2_mysql2.gemfile
139
+ - gemfiles/ar-4.0_mysql2.gemfile
140
+ - gemfiles/ar-4.1_mysql2.gemfile
141
+ - gemfiles/ar-4.2_mysql2.gemfile
142
+ - gemfiles/ar-5.0_mysql2.gemfile
143
+ - lhm.gemspec
144
+ - lib/lhm.rb
145
+ - lib/lhm/atomic_switcher.rb
146
+ - lib/lhm/chunk_finder.rb
147
+ - lib/lhm/chunk_insert.rb
148
+ - lib/lhm/chunker.rb
149
+ - lib/lhm/cleanup/current.rb
150
+ - lib/lhm/command.rb
151
+ - lib/lhm/entangler.rb
152
+ - lib/lhm/intersection.rb
153
+ - lib/lhm/invoker.rb
154
+ - lib/lhm/locked_switcher.rb
155
+ - lib/lhm/migration.rb
156
+ - lib/lhm/migrator.rb
157
+ - lib/lhm/printer.rb
158
+ - lib/lhm/railtie.rb
159
+ - lib/lhm/sql_helper.rb
160
+ - lib/lhm/sql_retry.rb
161
+ - lib/lhm/table.rb
162
+ - lib/lhm/table_name.rb
163
+ - lib/lhm/test_support.rb
164
+ - lib/lhm/throttler.rb
165
+ - lib/lhm/throttler/slave_lag.rb
166
+ - lib/lhm/throttler/threads_running.rb
167
+ - lib/lhm/throttler/time.rb
168
+ - lib/lhm/timestamp.rb
169
+ - lib/lhm/version.rb
170
+ - shipit.rubygems.yml
171
+ - spec/.lhm.example
172
+ - spec/README.md
173
+ - spec/fixtures/bigint_table.ddl
174
+ - spec/fixtures/composite_primary_key.ddl
175
+ - spec/fixtures/custom_primary_key.ddl
176
+ - spec/fixtures/destination.ddl
177
+ - spec/fixtures/lines.ddl
178
+ - spec/fixtures/origin.ddl
179
+ - spec/fixtures/permissions.ddl
180
+ - spec/fixtures/small_table.ddl
181
+ - spec/fixtures/tracks.ddl
182
+ - spec/fixtures/users.ddl
183
+ - spec/fixtures/wo_id_int_column.ddl
184
+ - spec/integration/atomic_switcher_spec.rb
185
+ - spec/integration/chunk_insert_spec.rb
186
+ - spec/integration/chunker_spec.rb
187
+ - spec/integration/cleanup_spec.rb
188
+ - spec/integration/entangler_spec.rb
189
+ - spec/integration/integration_helper.rb
190
+ - spec/integration/invoker_spec.rb
191
+ - spec/integration/lhm_spec.rb
192
+ - spec/integration/lock_wait_timeout_spec.rb
193
+ - spec/integration/locked_switcher_spec.rb
194
+ - spec/integration/sql_retry/lock_wait_spec.rb
195
+ - spec/integration/sql_retry/lock_wait_timeout_test_helper.rb
196
+ - spec/integration/table_spec.rb
197
+ - spec/test_helper.rb
198
+ - spec/unit/atomic_switcher_spec.rb
199
+ - spec/unit/chunk_finder_spec.rb
200
+ - spec/unit/chunk_insert_spec.rb
201
+ - spec/unit/chunker_spec.rb
202
+ - spec/unit/entangler_spec.rb
203
+ - spec/unit/intersection_spec.rb
204
+ - spec/unit/lhm_spec.rb
205
+ - spec/unit/locked_switcher_spec.rb
206
+ - spec/unit/migrator_spec.rb
207
+ - spec/unit/printer_spec.rb
208
+ - spec/unit/sql_helper_spec.rb
209
+ - spec/unit/table_name_spec.rb
210
+ - spec/unit/table_spec.rb
211
+ - spec/unit/throttler/slave_lag_spec.rb
212
+ - spec/unit/throttler/threads_running_spec.rb
213
+ - spec/unit/throttler_spec.rb
214
+ - spec/unit/unit_helper.rb
215
+ homepage: http://github.com/shopify/lhm
216
+ licenses:
217
+ - BSD-3-Clause
218
+ metadata:
219
+ allowed_push_host: https://rubygems.org
220
+ post_install_message:
221
+ rdoc_options: []
222
+ require_paths:
223
+ - lib
224
+ required_ruby_version: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: 2.3.0
229
+ required_rubygems_version: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - ">="
232
+ - !ruby/object:Gem::Version
233
+ version: '0'
234
+ requirements: []
235
+ rubygems_version: 3.2.20
236
+ signing_key:
237
+ specification_version: 4
238
+ summary: online schema changer for mysql
239
+ test_files: []