cassandra-schema 0.2.0 → 0.3.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 +4 -4
- data/.gems-test +1 -0
- data/README.md +15 -0
- data/cassandra-schema.gemspec +1 -1
- data/lib/cassandra-schema/migrator.rb +10 -6
- data/test/migrator_test.rb +20 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 646b6d54404b35f5f4925709947d873dc7bf2880
|
4
|
+
data.tar.gz: 5550c316d8f6fa5460f7db981654344e347a5252
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4a88f2462cafff564678761264402e76da9574f9d1b6df02ce008363a51cc96b7af3d06ceb0354e7de61b2e4d90e94d51354b75b9f9a41325463ade1bd5298f
|
7
|
+
data.tar.gz: c64a715befaed5b60ff833ad8a61a4ef07ac67e50a842d94fc3595c9f9e5d3ef7c14966f25373b990bc9671f6163668f6ef2e5d7afeae973179520e9f5bbe16f
|
data/.gems-test
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,11 @@ Simple reversible schema migrations for cassandra.
|
|
4
4
|
|
5
5
|
## Changelog
|
6
6
|
|
7
|
+
### Version `0.3.0`
|
8
|
+
|
9
|
+
- Add `query_timeout` option for running migration commands. Default 30 seconds.
|
10
|
+
- Log relevant exception message when running migrations
|
11
|
+
|
7
12
|
### Version `0.2.0`
|
8
13
|
|
9
14
|
- Refactor `schema_information` queries to use LWT and `:quorum` consistency level
|
@@ -65,6 +70,7 @@ migrator = CassandraSchema::Migrator.new(
|
|
65
70
|
connection: CONN, # any connection object implementing `execute` method
|
66
71
|
migrations: CassandraSchema.migrations, # list of migrations
|
67
72
|
logger: Logger.new, # any logger object implementing `info` and `error` methods
|
73
|
+
options: {}, # additional configuration
|
68
74
|
)
|
69
75
|
```
|
70
76
|
|
@@ -82,6 +88,15 @@ migrator.migrate(2)
|
|
82
88
|
|
83
89
|
CassandraSchema tracks which migrations you have already run.
|
84
90
|
|
91
|
+
|
92
|
+
### Options
|
93
|
+
|
94
|
+
name | default | description
|
95
|
+
---- | ------- | -----------
|
96
|
+
lock | true | whether the Migrator must lock the schema before running migrations
|
97
|
+
lock_timeout | 30 | number of seconds for auto-unlocking schema
|
98
|
+
query_timeout | 30 | number of seconds after which to time out the command if it hasn’t completed
|
99
|
+
|
85
100
|
## Installation
|
86
101
|
|
87
102
|
You can install it using rubygems.
|
data/cassandra-schema.gemspec
CHANGED
@@ -5,8 +5,9 @@ module CassandraSchema
|
|
5
5
|
attr_reader :connection, :current_version, :options
|
6
6
|
|
7
7
|
DEFAULT_OPTIONS = {
|
8
|
-
lock:
|
9
|
-
lock_timeout:
|
8
|
+
lock: true,
|
9
|
+
lock_timeout: 30,
|
10
|
+
query_timeout: 30,
|
10
11
|
}
|
11
12
|
|
12
13
|
def initialize(connection:, migrations:, logger: Logger.new(STDOUT), options: {})
|
@@ -54,6 +55,7 @@ module CassandraSchema
|
|
54
55
|
@logger.info "Current version: #{current_version}"
|
55
56
|
@logger.info "Done!"
|
56
57
|
rescue => ex
|
58
|
+
@logger.error ex.message if ex.message && !ex.message.empty?
|
57
59
|
@logger.info "Failed migrating all files. Current schema version: #{@current_version}"
|
58
60
|
ensure
|
59
61
|
unlock_schema if @options.fetch(:lock)
|
@@ -161,7 +163,7 @@ module CassandraSchema
|
|
161
163
|
index = 0
|
162
164
|
|
163
165
|
commands.each do |command|
|
164
|
-
unless execute_command(command)
|
166
|
+
unless execute_command(command, timeout: @options.fetch(:query_timeout))
|
165
167
|
message = "Failed migrating to version #{target}."
|
166
168
|
|
167
169
|
if index > 0
|
@@ -174,7 +176,9 @@ module CassandraSchema
|
|
174
176
|
.fetch(direction == :up ? :down : :up)
|
175
177
|
.last(index)
|
176
178
|
|
177
|
-
results = recover_commands.map { |cmd|
|
179
|
+
results = recover_commands.map { |cmd|
|
180
|
+
execute_command(cmd, timeout: @options.fetch(:query_timeout))
|
181
|
+
}
|
178
182
|
|
179
183
|
message += results.all? ? "Ok." : "Failed."
|
180
184
|
end
|
@@ -190,9 +194,9 @@ module CassandraSchema
|
|
190
194
|
update_version(new_version)
|
191
195
|
end
|
192
196
|
|
193
|
-
def execute_command(command)
|
197
|
+
def execute_command(command, options)
|
194
198
|
begin
|
195
|
-
@connection.execute command
|
199
|
+
@connection.execute command, options
|
196
200
|
true
|
197
201
|
rescue => ex
|
198
202
|
@logger.error ex.message
|
data/test/migrator_test.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "minitest/autorun"
|
2
|
+
require "mocha/setup"
|
2
3
|
|
3
4
|
require_relative "support/connections"
|
4
5
|
require_relative "../lib/cassandra-schema/migrator"
|
@@ -185,6 +186,25 @@ describe "CassandraSchema::Migrator" do
|
|
185
186
|
|
186
187
|
assert_equal "Nothing to migrate.", logger_b.stdout.pop
|
187
188
|
end
|
189
|
+
|
190
|
+
it "runs commands with custom timeout" do
|
191
|
+
migrator = CassandraSchema::Migrator.new(
|
192
|
+
connection: CONN,
|
193
|
+
migrations: CassandraSchema.migrations,
|
194
|
+
logger: @fake_logger,
|
195
|
+
options: { query_timeout: 45 },
|
196
|
+
)
|
197
|
+
|
198
|
+
migrator.expects(:execute_command).times(4).with(anything, { timeout: 45 }).returns(true)
|
199
|
+
|
200
|
+
migrator.expects(:lock_schema).returns(true)
|
201
|
+
migrator.expects(:get_current_version).returns(0)
|
202
|
+
migrator.expects(:update_version).times(2)
|
203
|
+
migrator.expects(:renew_lock).times(2)
|
204
|
+
migrator.expects(:unlock_schema)
|
205
|
+
|
206
|
+
migrator.migrate
|
207
|
+
end
|
188
208
|
end
|
189
209
|
|
190
210
|
describe "migrating down" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassandra-schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lautaro Orazi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Simple reversible schema migrations for Cassandra.
|
14
14
|
email:
|