ecco 0.4.1-java → 0.8.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f4f65da7939ae05944c82091f94c505672daa728
4
- data.tar.gz: cb7797b754c53e368c72186ab6e87e2a10a4a3ed
2
+ SHA256:
3
+ metadata.gz: aa0f1adf6e5a97d969a6acf43b3ec6d083e7975e3e60f4684e46b672453dd7e1
4
+ data.tar.gz: de78c5aba80a3ff667d63408721723737e5ae731124c55f413b2c5f0fdb15f4c
5
5
  SHA512:
6
- metadata.gz: 5ae4213115d36e0b6724de3c57f9708c875f47cf7521981b7bfcc2f6b7ff8eec08386ed20ef57dd3e6b3f120ac4e7d947d8b201d1bcc96a0261803ad00b79d82
7
- data.tar.gz: 445de18016ac14be9f88de40396b5fa258ed1667ad2e707c0e14dc15237e343a8b2943d6e9ff9cf39c5767def8936caa27626d73cb5ef3c2fb3fe822bc3a7061
6
+ metadata.gz: 1ee74c54f9ab18d42046b00e7e6e48b7de8c761482a1a5840945ff77bdd3c618ed81721987a6873f76d99dc99835a373c872e8eeba68ed480995a898b6c250e8
7
+ data.tar.gz: 56a14190b670b5a8e02cd1d200f9aab042c3a471287c07a0f80372230a068d90de7c5e80c108f062fe918f8ccf4d383cc48a00edc3d0da474d924424c5d0d0dc
data/.gitignore CHANGED
@@ -8,4 +8,3 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  .env
11
- .vagrant
@@ -1,34 +1,34 @@
1
- sudo: true
2
-
1
+ dist: bionic
3
2
  language: ruby
4
-
5
3
  services:
6
- - mysql
4
+ - docker
5
+
6
+ addons:
7
+ apt:
8
+ packages:
9
+ - haveged # Extra entropy
7
10
 
8
11
  before_install:
9
- - rvm get head
10
- - rvm use jruby-9.0.3.0 --install
11
- - printf "[mysqld]\nlog-bin=mysql-bin\nserver-id=1\nbinlog-format=ROW\n" | sudo tee /etc/mysql/conf.d/binlog.cnf
12
- - sudo service mysql restart
13
- - mysql -u root -e 'create database ecco_test;'
14
- - gem install bundler -v 1.10.6
12
+ - sudo service haveged start # Extra entropy to ensure quick start time for JRuby
13
+ - rvm get master
14
+ - rvm install jruby-9.2.13.0
15
+ - rvm use jruby-9.2.13.0
16
+ - gem install bundler -v '< 2'
17
+ - docker-compose -f docker-compose-mysql-base.yml -f docker-compose-mysql-$MYSQL_VERSION.yml up -d
15
18
 
16
19
  env:
17
20
  global:
18
- - DATABASE_USER=root
19
- - DATABASE_PASS=""
20
- - DATABASE_URL=jdbc:mysql://localhost:3306/ecco_test
21
+ - JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-Xss2m -Xcompile.invokedynamic=false'
22
+ jobs:
23
+ - MYSQL_VERSION="5-6"
24
+ - MYSQL_VERSION="5-7"
25
+ - MYSQL_VERSION="8-0"
26
+
27
+ jobs:
28
+ allow_failures:
29
+ - env: MYSQL_VERSION="8-0"
21
30
 
22
31
  script: bin/all_specs
23
32
 
24
33
  notifications:
25
34
  email: false
26
- hipchat:
27
- on_success: never
28
- on_failure: change
29
- template:
30
- - '%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message}
31
- (<a href="%{build_url}">Details</a>/<a href="%{compare_url}">Change view</a>)'
32
- format: html
33
- rooms:
34
- secure: J7yYVGr6NQ0rOA6WdOVxiB4XxPJJDcQG7R0fgAXxtAzQNun+QHLBH9Yu7NN7kaJrVU69oIMrAw2e7EGSh9mnQ3fmGyA/z9Xu5+3GYjGuN3QDLGA8kbnDggIeo8vZrTZYL9aITVHMUH/6oKwAtg4Q5Tx4ftguj4zvMMWiZTFHuv05V0FgyoQkSggKLE3w8ZndEjZfaBbtgUeN/eGeAl2oeP8w53eM4ebh2+VNYNVGr+5zr1VGkkXz1SoRT3YEJtSjH0DvinZDrsU3VZZY9hIcUKu3dzhPuwZFMIDGshDxVqf/0XADOFUqgYFeHmg64O+ikIye4MiuBKw/miqSvx6lZSdjlsYyHruYFCbjcZue/WIKAw5nWZNQ+YZmzxMWZV4czImO8q2ljMOXUluVgW78mZMYsqzsoE5tX6PVO4I7aVL4L9mnb01nPDAPgJAXCGfudOkHfUi6jaVTkvLqSJvifbCzhsRvaPCA2VAQGUTssv9pm2YkCP5rOOeasU+XgJtLJif8Uv1g/zNjNajNU19A1PLCSNgdvX381Dgd3NS/DjMtNtgTXxGjSpHwQM54aL/lp6a2XhCpSpBZBcBz01KQJGsgLUgDDQJSzO1e8OdiP6YQHIGEA0OM4Wfoq2I3TLWMSlGSzJBvUBHJwstPMjTbH+1HM2AOY80orVHQWzttZlc=
@@ -0,0 +1,87 @@
1
+ # Change Log
2
+
3
+ ## [v0.7.0](https://github.com/twingly/ecco/tree/v0.7.0) (2016-10-07)
4
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.6.1...v0.7.0)
5
+
6
+ **Implemented enhancements:**
7
+
8
+ - Extend on\_save\_position with information about the event [\#23](https://github.com/twingly/ecco/issues/23)
9
+
10
+ **Merged pull requests:**
11
+
12
+ - Expose event information in on\_save\_position [\#24](https://github.com/twingly/ecco/pull/24) ([dentarg](https://github.com/dentarg))
13
+ - Add changelog [\#21](https://github.com/twingly/ecco/pull/21) ([dentarg](https://github.com/dentarg))
14
+
15
+ ## [v0.6.1](https://github.com/twingly/ecco/tree/v0.6.1) (2016-07-18)
16
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.6.0...v0.6.1)
17
+
18
+ **Merged pull requests:**
19
+
20
+ - MySQL 5.6 support [\#20](https://github.com/twingly/ecco/pull/20) ([jage](https://github.com/jage))
21
+ - Use standard rvm key for jruby version [\#19](https://github.com/twingly/ecco/pull/19) ([walro](https://github.com/walro))
22
+ - Improve rake task description [\#17](https://github.com/twingly/ecco/pull/17) ([jage](https://github.com/jage))
23
+
24
+ ## [v0.6.0](https://github.com/twingly/ecco/tree/v0.6.0) (2015-12-04)
25
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.5.0...v0.6.0)
26
+
27
+ **Closed issues:**
28
+
29
+ - Feature: Ecco::Client\#connected? [\#14](https://github.com/twingly/ecco/issues/14)
30
+
31
+ **Merged pull requests:**
32
+
33
+ - Implement Ecco::Client\#connected? [\#15](https://github.com/twingly/ecco/pull/15) ([jage](https://github.com/jage))
34
+
35
+ ## [v0.5.0](https://github.com/twingly/ecco/tree/v0.5.0) (2015-11-26)
36
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.4.1...v0.5.0)
37
+
38
+ **Fixed bugs:**
39
+
40
+ - Trying to connect to non-existent position behaves strange? [\#8](https://github.com/twingly/ecco/issues/8)
41
+
42
+ **Merged pull requests:**
43
+
44
+ - Add keep alive getters and setters [\#11](https://github.com/twingly/ecco/pull/11) ([dentarg](https://github.com/dentarg))
45
+ - Helper method for java root logger [\#10](https://github.com/twingly/ecco/pull/10) ([dentarg](https://github.com/dentarg))
46
+ - Add \#on\_communication\_failure [\#9](https://github.com/twingly/ecco/pull/9) ([walro](https://github.com/walro))
47
+
48
+ ## [v0.4.1](https://github.com/twingly/ecco/tree/v0.4.1) (2015-11-19)
49
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.4.0...v0.4.1)
50
+
51
+ **Implemented enhancements:**
52
+
53
+ - Ensure that we handle "on\_row\_event" before "on\_save\_position" [\#5](https://github.com/twingly/ecco/issues/5)
54
+
55
+ **Merged pull requests:**
56
+
57
+ - Make sure row\_event happens before save\_event [\#7](https://github.com/twingly/ecco/pull/7) ([roback](https://github.com/roback))
58
+ - Minor refactoring [\#6](https://github.com/twingly/ecco/pull/6) ([dentarg](https://github.com/dentarg))
59
+
60
+ ## [v0.4.0](https://github.com/twingly/ecco/tree/v0.4.0) (2015-11-18)
61
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.3.1...v0.4.0)
62
+
63
+ **Implemented enhancements:**
64
+
65
+ - Integration tests [\#2](https://github.com/twingly/ecco/issues/2)
66
+
67
+ **Merged pull requests:**
68
+
69
+ - Add integration tests [\#3](https://github.com/twingly/ecco/pull/3) ([roback](https://github.com/roback))
70
+
71
+ ## [v0.3.1](https://github.com/twingly/ecco/tree/v0.3.1) (2015-11-09)
72
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.3.0...v0.3.1)
73
+
74
+ ## [v0.3.0](https://github.com/twingly/ecco/tree/v0.3.0) (2015-11-09)
75
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.2.0...v0.3.0)
76
+
77
+ **Merged pull requests:**
78
+
79
+ - Implement basic functionality [\#1](https://github.com/twingly/ecco/pull/1) ([walro](https://github.com/walro))
80
+
81
+ ## [v0.2.0](https://github.com/twingly/ecco/tree/v0.2.0) (2015-10-27)
82
+ [Full Changelog](https://github.com/twingly/ecco/compare/v0.1.0...v0.2.0)
83
+
84
+ ## [v0.1.0](https://github.com/twingly/ecco/tree/v0.1.0) (2015-10-27)
85
+
86
+
87
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/twingly/ecco.svg?branch=master)](https://travis-ci.org/twingly/ecco)
4
4
 
5
- MySQL replication binlog parser using [mysql-binlog-connector-java].
5
+ MySQL (5.6 and 5.7) replication binlog parser using [mysql-binlog-connector-java].
6
6
 
7
7
  ## Installation
8
8
 
@@ -46,8 +46,12 @@ client.on_row_event do |row_event|
46
46
  puts "Row event: #{database} #{table} #{type} #{second_column}"
47
47
  end
48
48
 
49
- client.on_save_position do |filename, position|
50
- puts "Save event: #{filename} #{position}"
49
+ client.on_save_position do |filename, position, event_type_name|
50
+ puts "Saved #{event_type_name} event: #{filename} #{position}"
51
+ end
52
+
53
+ client.on_communication_failure do |client, error|
54
+ puts error.message
51
55
  end
52
56
 
53
57
  # Optionally set a starting position
@@ -87,25 +91,45 @@ The integration tests don't run by default. To run all the tests, including inte
87
91
 
88
92
  The tests needs a MySQL server with replication enabled.
89
93
 
90
- Ecco includes a Vagrant machine, that can be used for this. Note that your Vagrant host need to have [Ansible] installed as it is used for provisioning.
94
+ Ecco includes multiple Docker Compose definitions that can be used for this, one per supported MySQL version.
95
+
96
+ Start the desired version before running the tests:
91
97
 
92
- Just start it before running the tests
98
+ ```shell
99
+ # MySQL 5.6
100
+ docker-compose -f docker-compose-mysql-base.yml -f docker-compose-mysql-5-6.yml up
93
101
 
94
- vagrant up
102
+ # MySQL 5.7
103
+ docker-compose -f docker-compose-mysql-base.yml -f docker-compose-mysql-5-7.yml up
104
+
105
+ # MySQL 8.0
106
+ docker-compose -f docker-compose-mysql-base.yml -f docker-compose-mysql-8-0.yml up
107
+ ```
95
108
 
96
- *Note: Stop any local mysql servers first as it forwards mysql to localhost:3306.*
109
+ *Note: Stop any local MySQL server first, otherwise there will be port collisions*
97
110
 
98
111
  ## Release
99
112
 
100
- To release a new version, update the version number in `version.rb`, and then run
113
+ To release a new version, make a commit bumping the version number in `version.rb`, and then run
101
114
 
102
115
  bundle exec rake release
103
116
 
104
117
  which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
105
118
 
119
+ Update the changelog with [GitHub Changelog Generator]:
120
+
121
+ github_changelog_generator
122
+
123
+ Preparations you might have to do:
124
+
125
+ * `gem install github_changelog_generator` if you don't have it
126
+ * set `CHANGELOG_GITHUB_TOKEN` to a personal access token to increase your GitHub API rate limit
127
+
128
+ Make a commit with the changelog changes and push.
129
+
106
130
  ## License
107
131
 
108
132
  The gem is available as open source under the terms of the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
109
133
 
110
134
  [mysql-binlog-connector-java]: https://github.com/shyiko/mysql-binlog-connector-java
111
- [Ansible]: http://www.ansible.com/
135
+ [GitHub Changelog Generator]: https://github.com/skywinder/github-changelog-generator/
data/Rakefile CHANGED
@@ -1,11 +1,13 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
 
4
+ desc "Run non-integration specs"
4
5
  RSpec::Core::RakeTask.new(:spec) do |task|
5
6
  task.exclude_pattern = "spec/integration/*_spec.rb"
6
7
  end
7
8
 
8
9
  namespace :spec do
10
+ desc "Run all specs (including integration)"
9
11
  RSpec::Core::RakeTask.new(:all)
10
12
  end
11
13
 
@@ -0,0 +1,5 @@
1
+ version: "3.7"
2
+
3
+ services:
4
+ db:
5
+ image: mysql:5.6
@@ -0,0 +1,5 @@
1
+ version: "3.7"
2
+
3
+ services:
4
+ db:
5
+ image: mysql:5.7
@@ -0,0 +1,5 @@
1
+ version: "3.7"
2
+
3
+ services:
4
+ db:
5
+ image: mysql:8.0
@@ -0,0 +1,13 @@
1
+ # https://docs.docker.com/compose/extends/#adding-and-overriding-configuration
2
+
3
+ version: "3.7"
4
+
5
+ services:
6
+ db:
7
+ volumes:
8
+ - ./docker/ecco-my.cnf:/etc/mysql/conf.d/ecco-my.cnf
9
+ ports:
10
+ - 3306:3306
11
+ environment:
12
+ MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
13
+ MYSQL_DATABASE: ecco_test
@@ -2,4 +2,3 @@
2
2
  log-bin=mysql-bin
3
3
  server-id=1
4
4
  binlog-format=ROW
5
- bind-address=0.0.0.0
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.10"
23
- spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rake", "~> 12"
24
24
  spec.add_development_dependency "rspec"
25
25
  spec.add_development_dependency "sequel"
26
26
  spec.add_development_dependency "jdbc-mysql"
@@ -1,6 +1,7 @@
1
1
  require "ext/mysql-binlog-connector-java-#{Ecco::MYSQL_BINLOG_CONNECTOR_VERSION}.jar"
2
2
  require "ecco/row_event_listener"
3
3
  require "ecco/save_event_listener"
4
+ require "ecco/lifecycle_failure_listener"
4
5
  require "ecco/error"
5
6
 
6
7
  module Ecco
@@ -9,9 +10,27 @@ module Ecco
9
10
 
10
11
  extend Forwardable
11
12
  def_delegators :@client, :set_server_id, :get_server_id
13
+ def_delegators :@client, :set_keep_alive, :is_keep_alive
14
+ def_delegators :@client, :set_keep_alive_interval, :get_keep_alive_interval
15
+ def_delegators :@client, :set_heartbeat_interval, :get_heartbeat_interval
16
+ def_delegators :@client, :set_connect_timeout, :get_connect_timeout
12
17
  def_delegators :@client, :set_binlog_filename, :get_binlog_filename
13
18
  def_delegators :@client, :set_binlog_position, :get_binlog_position
14
19
 
20
+ def get_keep_alive_connect_timeout
21
+ warn "[DEPRECATION] `#{__method__}` is deprecated. "\
22
+ "Please use `get_connect_timeout` instead."
23
+
24
+ get_connect_timeout
25
+ end
26
+
27
+ def set_keep_alive_connect_timeout(timeout)
28
+ warn "[DEPRECATION] `#{__method__}` is deprecated. "\
29
+ "Please use `set_connect_timeout` instead."
30
+
31
+ set_connect_timeout(timeout)
32
+ end
33
+
15
34
  java_import com.github.shyiko.mysql.binlog.BinaryLogClient
16
35
  java_import java.io.IOException
17
36
 
@@ -23,6 +42,9 @@ module Ecco
23
42
 
24
43
  @save_event_listener = SaveEventListener.new(self)
25
44
  @client.register_event_listener(@save_event_listener)
45
+
46
+ @lifecycle_failure_listener = LifecycleFailureListener.new
47
+ @client.register_lifecycle_listener(@lifecycle_failure_listener)
26
48
  end
27
49
 
28
50
  def on_save_position(&block)
@@ -33,6 +55,10 @@ module Ecco
33
55
  @row_event_listener.callback = block
34
56
  end
35
57
 
58
+ def on_communication_failure(&block)
59
+ @lifecycle_failure_listener.callback = block
60
+ end
61
+
36
62
  def start
37
63
  @client.connect
38
64
  rescue IOException => e
@@ -43,6 +69,10 @@ module Ecco
43
69
  @client.connect(connect_timeout)
44
70
  end
45
71
 
72
+ def connected?
73
+ @client.is_connected
74
+ end
75
+
46
76
  def stop
47
77
  @client.disconnect
48
78
  end
@@ -2,5 +2,8 @@ module Ecco
2
2
  module Error
3
3
  class ConnectionError < StandardError
4
4
  end
5
+
6
+ class CommunicationError < StandardError
7
+ end
5
8
  end
6
9
  end
@@ -0,0 +1,14 @@
1
+ module Ecco
2
+ class LifecycleFailureListener < com.github.shyiko.mysql.binlog.BinaryLogClient::AbstractLifecycleListener
3
+ attr_writer :callback
4
+
5
+ def initialize
6
+ @callback = Proc.new {}
7
+ end
8
+
9
+ def onCommunicationFailure(client, exception)
10
+ error = Ecco::Error::CommunicationError.new(exception.get_message)
11
+ @callback.call(client, error)
12
+ end
13
+ end
14
+ end
@@ -3,11 +3,12 @@ require "ecco/row_event"
3
3
 
4
4
  module Ecco
5
5
  class RowEventListener < EventListener
6
- ROW_EVENTS = [
7
- EventType::WRITE_ROWS,
8
- EventType::UPDATE_ROWS,
9
- EventType::DELETE_ROWS,
10
- ]
6
+ # MySQL v1 and v2 row events
7
+ WRITE_EVENTS = [EventType::WRITE_ROWS, EventType::EXT_WRITE_ROWS]
8
+ UPDATE_EVENTS = [EventType::UPDATE_ROWS, EventType::EXT_UPDATE_ROWS]
9
+ DELETE_EVENTS = [EventType::DELETE_ROWS, EventType::EXT_DELETE_ROWS]
10
+
11
+ ROW_EVENTS = WRITE_EVENTS + UPDATE_EVENTS + DELETE_EVENTS
11
12
 
12
13
  def table_event
13
14
  EventType::TABLE_MAP
@@ -26,9 +27,9 @@ module Ecco
26
27
  @table_map_event = event
27
28
  when *accepted_events
28
29
  row_event = Ecco::RowEvent.new
29
- row_event.type = type.to_s
30
30
  row_event.table_id = data.get_table_id
31
31
  row_event.rows = data.rows
32
+ row_event.type = row_type_to_string(type)
32
33
 
33
34
  if @table_map_event
34
35
  table_event_data = @table_map_event.get_data
@@ -40,5 +41,17 @@ module Ecco
40
41
  @callback.call(row_event)
41
42
  end
42
43
  end
44
+
45
+ private
46
+
47
+ def row_type_to_string(type)
48
+ if WRITE_EVENTS.include?(type)
49
+ "WRITE_ROWS"
50
+ elsif UPDATE_EVENTS.include?(type)
51
+ "UPDATE_ROWS"
52
+ elsif DELETE_EVENTS.include?(type)
53
+ "DELETE_ROWS"
54
+ end
55
+ end
43
56
  end
44
57
  end
@@ -2,16 +2,19 @@ require "ecco/event_listener"
2
2
 
3
3
  module Ecco
4
4
  class SaveEventListener < EventListener
5
- SAVE_EVENTS = [
6
- EventType::QUERY,
7
- EventType::ROTATE,
8
- EventType::WRITE_ROWS,
9
- EventType::UPDATE_ROWS,
10
- EventType::DELETE_ROWS,
11
- ]
5
+ SAVE_EVENTS = {
6
+ EventType::QUERY => "QUERY",
7
+ EventType::ROTATE => "ROTATE",
8
+ EventType::WRITE_ROWS => "WRITE_ROWS",
9
+ EventType::EXT_WRITE_ROWS => "WRITE_ROWS",
10
+ EventType::UPDATE_ROWS => "UPDATE_ROWS",
11
+ EventType::EXT_UPDATE_ROWS => "UPDATE_ROWS",
12
+ EventType::DELETE_ROWS => "DELETE_ROWS",
13
+ EventType::EXT_DELETE_ROWS => "DELETE_ROWS",
14
+ }
12
15
 
13
16
  def accepted_events
14
- SAVE_EVENTS
17
+ SAVE_EVENTS.keys
15
18
  end
16
19
 
17
20
  def on_event(event)
@@ -19,10 +22,11 @@ module Ecco
19
22
 
20
23
  case type
21
24
  when *accepted_events
22
- filename = @client.get_binlog_filename
23
- position = @client.get_binlog_position
25
+ filename = @client.get_binlog_filename
26
+ position = @client.get_binlog_position
27
+ event_type_name = SAVE_EVENTS.fetch(type)
24
28
 
25
- @callback.call(filename, position)
29
+ @callback.call(filename, position, event_type_name)
26
30
  end
27
31
  end
28
32
  end
@@ -1,4 +1,4 @@
1
1
  module Ecco
2
- VERSION = "0.4.1"
3
- MYSQL_BINLOG_CONNECTOR_VERSION = "0.2.4"
2
+ VERSION = "0.8.0"
3
+ MYSQL_BINLOG_CONNECTOR_VERSION = "0.21.0"
4
4
  end
data/pom.xml CHANGED
@@ -14,7 +14,7 @@
14
14
  <dependency>
15
15
  <groupId>com.github.shyiko</groupId>
16
16
  <artifactId>mysql-binlog-connector-java</artifactId>
17
- <version>0.2.4</version>
17
+ <version>0.21.0</version>
18
18
  </dependency>
19
19
  </dependencies>
20
20
  </project>
metadata CHANGED
@@ -1,85 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecco
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.8.0
5
5
  platform: java
6
6
  authors:
7
7
  - Twingly AB
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-19 00:00:00.000000000 Z
11
+ date: 2020-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.10'
20
14
  requirement: !ruby/object:Gem::Requirement
21
15
  requirements:
22
16
  - - "~>"
23
17
  - !ruby/object:Gem::Version
24
18
  version: '1.10'
25
- prerelease: false
19
+ name: bundler
26
20
  type: :development
27
- - !ruby/object:Gem::Dependency
28
- name: rake
21
+ prerelease: false
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
23
  requirements:
31
24
  - - "~>"
32
25
  - !ruby/object:Gem::Version
33
- version: '10.0'
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
34
28
  requirement: !ruby/object:Gem::Requirement
35
29
  requirements:
36
30
  - - "~>"
37
31
  - !ruby/object:Gem::Version
38
- version: '10.0'
39
- prerelease: false
32
+ version: '12'
33
+ name: rake
40
34
  type: :development
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
35
+ prerelease: false
43
36
  version_requirements: !ruby/object:Gem::Requirement
44
37
  requirements:
45
- - - ">="
38
+ - - "~>"
46
39
  - !ruby/object:Gem::Version
47
- version: '0'
40
+ version: '12'
41
+ - !ruby/object:Gem::Dependency
48
42
  requirement: !ruby/object:Gem::Requirement
49
43
  requirements:
50
44
  - - ">="
51
45
  - !ruby/object:Gem::Version
52
46
  version: '0'
53
- prerelease: false
47
+ name: rspec
54
48
  type: :development
55
- - !ruby/object:Gem::Dependency
56
- name: sequel
49
+ prerelease: false
57
50
  version_requirements: !ruby/object:Gem::Requirement
58
51
  requirements:
59
52
  - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
62
56
  requirement: !ruby/object:Gem::Requirement
63
57
  requirements:
64
58
  - - ">="
65
59
  - !ruby/object:Gem::Version
66
60
  version: '0'
67
- prerelease: false
61
+ name: sequel
68
62
  type: :development
69
- - !ruby/object:Gem::Dependency
70
- name: jdbc-mysql
63
+ prerelease: false
71
64
  version_requirements: !ruby/object:Gem::Requirement
72
65
  requirements:
73
66
  - - ">="
74
67
  - !ruby/object:Gem::Version
75
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
76
70
  requirement: !ruby/object:Gem::Requirement
77
71
  requirements:
78
72
  - - ">="
79
73
  - !ruby/object:Gem::Version
80
74
  version: '0'
81
- prerelease: false
75
+ name: jdbc-mysql
82
76
  type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
83
  description: MySQL replication binlog parser using mysql-binlog-connector-java.
84
84
  email:
85
85
  - support@twingly.com
@@ -91,26 +91,30 @@ files:
91
91
  - ".rspec"
92
92
  - ".ruby-version"
93
93
  - ".travis.yml"
94
+ - CHANGELOG.md
94
95
  - Gemfile
95
96
  - README.md
96
97
  - Rakefile
97
- - Vagrantfile
98
98
  - bin/all_specs
99
99
  - bin/console
100
100
  - bin/specs
101
+ - docker-compose-mysql-5-6.yml
102
+ - docker-compose-mysql-5-7.yml
103
+ - docker-compose-mysql-8-0.yml
104
+ - docker-compose-mysql-base.yml
105
+ - docker/ecco-my.cnf
101
106
  - ecco.gemspec
102
107
  - lib/ecco.rb
103
108
  - lib/ecco/client.rb
104
109
  - lib/ecco/error.rb
105
110
  - lib/ecco/event_listener.rb
111
+ - lib/ecco/lifecycle_failure_listener.rb
106
112
  - lib/ecco/row_event.rb
107
113
  - lib/ecco/row_event_listener.rb
108
114
  - lib/ecco/save_event_listener.rb
109
115
  - lib/ecco/version.rb
110
- - lib/ext/mysql-binlog-connector-java-0.2.4.jar
116
+ - lib/ext/mysql-binlog-connector-java-0.21.0.jar
111
117
  - pom.xml
112
- - vagrant/files/ecco-my.cnf
113
- - vagrant/playbook.yml
114
118
  homepage: https://github.com/twingly/ecco
115
119
  licenses:
116
120
  - Apache-2.0
@@ -130,8 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
134
  - !ruby/object:Gem::Version
131
135
  version: '0'
132
136
  requirements: []
133
- rubyforge_project:
134
- rubygems_version: 2.4.8
137
+ rubygems_version: 3.0.6
135
138
  signing_key:
136
139
  specification_version: 4
137
140
  summary: MySQL replication binlog parser.
@@ -1,11 +0,0 @@
1
- Vagrant.configure("2") do |config|
2
- config.vm.define "ecco-test" do |ubuntu|
3
- ubuntu.vm.hostname = "ecco-test"
4
- ubuntu.vm.box = "ubuntu/trusty64"
5
- ubuntu.vm.provision :ansible do |ansible|
6
- ansible.playbook = "vagrant/playbook.yml"
7
- end
8
-
9
- ubuntu.vm.network :forwarded_port, host: 3306, guest: 3306
10
- end
11
- end
@@ -1,27 +0,0 @@
1
- ---
2
- - hosts: all
3
- sudo: yes
4
- tasks:
5
-
6
- - name: Update package cache
7
- apt: update_cache=yes
8
-
9
- - name: Install ansible dependencies
10
- apt: name={{ item }}
11
- with_items:
12
- - python-mysqldb
13
-
14
- - name: Install mysql server
15
- apt: name=mysql-server state=present
16
-
17
- - name: Copy mysql config file
18
- copy: src=files/ecco-my.cnf dest=/etc/mysql/conf.d/
19
-
20
- - name: Allow mysql root connection from remote hosts
21
- mysql_user: name=root password="" host=% priv=*.*:ALL state=present
22
-
23
- - name: Restart mysql
24
- service: name=mysql state=restarted
25
-
26
- - name: Create database
27
- mysql_db: name=ecco_test