mammoth 0.9.0 → 1.1.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/CHANGELOG.md +89 -1
- data/README.md +87 -7
- data/config/mammoth.example.yml +19 -9
- data/config/mammoth.schema.json +2 -2
- data/lib/mammoth/application.rb +34 -3
- data/lib/mammoth/delivery_processor.rb +5 -2
- data/lib/mammoth/delivery_progress_coordinator.rb +153 -0
- data/lib/mammoth/delivery_worker.rb +9 -25
- data/lib/mammoth/event_serializer.rb +39 -7
- data/lib/mammoth/observability_metrics.rb +3 -1
- data/lib/mammoth/observability_server.rb +5 -3
- data/lib/mammoth/observability_snapshot.rb +63 -10
- data/lib/mammoth/postgres_observability_metrics.rb +80 -0
- data/lib/mammoth/replication_consumer.rb +28 -7
- data/lib/mammoth/sources/postgres.rb +252 -4
- data/lib/mammoth/sources/postgres_publication_inspector.rb +214 -0
- data/lib/mammoth/sources/postgres_slot_health.rb +90 -0
- data/lib/mammoth/transaction_envelope_serializer.rb +12 -2
- data/lib/mammoth/version.rb +1 -1
- data/lib/mammoth.rb +5 -1
- metadata +33 -9
data/lib/mammoth.rb
CHANGED
|
@@ -18,6 +18,9 @@ require_relative "mammoth/commands/deliver_sample_command"
|
|
|
18
18
|
require_relative "mammoth/commands/dead_letters_command"
|
|
19
19
|
require_relative "mammoth/dispatch_metrics"
|
|
20
20
|
require_relative "mammoth/metrics_observer"
|
|
21
|
+
require_relative "mammoth/sources/postgres_slot_health"
|
|
22
|
+
require_relative "mammoth/sources/postgres_publication_inspector"
|
|
23
|
+
require_relative "mammoth/postgres_observability_metrics"
|
|
21
24
|
require_relative "mammoth/observability_metrics"
|
|
22
25
|
require_relative "mammoth/observability_snapshot"
|
|
23
26
|
require_relative "mammoth/observability_server"
|
|
@@ -25,6 +28,7 @@ require_relative "mammoth/sqlite_store"
|
|
|
25
28
|
require_relative "mammoth/checkpoint_store"
|
|
26
29
|
require_relative "mammoth/dead_letter_store"
|
|
27
30
|
require_relative "mammoth/delivered_envelope_store"
|
|
31
|
+
require_relative "mammoth/delivery_progress_coordinator"
|
|
28
32
|
require_relative "mammoth/event_serializer"
|
|
29
33
|
require_relative "mammoth/transaction_envelope_serializer"
|
|
30
34
|
require_relative "mammoth/persisted_payload_deserializer"
|
|
@@ -54,7 +58,7 @@ require_relative "mammoth/cli"
|
|
|
54
58
|
|
|
55
59
|
# Mammoth is a self-hosted PostgreSQL event relay.
|
|
56
60
|
#
|
|
57
|
-
# Mammoth
|
|
61
|
+
# Mammoth 1.x is a single-node PostgreSQL CDC relay with webhook fanout,
|
|
58
62
|
# replayable operational SQLite state, health/metrics endpoints, and explicit
|
|
59
63
|
# extension contracts for state, destination, runtime, lifecycle, configuration,
|
|
60
64
|
# and local command integrations.
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mammoth
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ken C. Demanawa
|
|
@@ -51,34 +51,54 @@ dependencies:
|
|
|
51
51
|
- - "~>"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '6.2'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: pg
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '1.6'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '1.6'
|
|
54
68
|
- !ruby/object:Gem::Dependency
|
|
55
69
|
name: pgoutput-client
|
|
56
70
|
requirement: !ruby/object:Gem::Requirement
|
|
57
71
|
requirements:
|
|
58
72
|
- - "~>"
|
|
59
73
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '0.
|
|
74
|
+
version: '0.4'
|
|
61
75
|
type: :runtime
|
|
62
76
|
prerelease: false
|
|
63
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
78
|
requirements:
|
|
65
79
|
- - "~>"
|
|
66
80
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: '0.
|
|
81
|
+
version: '0.4'
|
|
68
82
|
- !ruby/object:Gem::Dependency
|
|
69
83
|
name: pgoutput-decoder
|
|
70
84
|
requirement: !ruby/object:Gem::Requirement
|
|
71
85
|
requirements:
|
|
72
86
|
- - "~>"
|
|
73
87
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '0.
|
|
88
|
+
version: '0.2'
|
|
89
|
+
- - ">="
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: 0.2.0
|
|
75
92
|
type: :runtime
|
|
76
93
|
prerelease: false
|
|
77
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
78
95
|
requirements:
|
|
79
96
|
- - "~>"
|
|
80
97
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '0.
|
|
98
|
+
version: '0.2'
|
|
99
|
+
- - ">="
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: 0.2.0
|
|
82
102
|
- !ruby/object:Gem::Dependency
|
|
83
103
|
name: pgoutput-parser
|
|
84
104
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -99,20 +119,20 @@ dependencies:
|
|
|
99
119
|
requirements:
|
|
100
120
|
- - "~>"
|
|
101
121
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: '0.
|
|
122
|
+
version: '0.3'
|
|
103
123
|
- - ">="
|
|
104
124
|
- !ruby/object:Gem::Version
|
|
105
|
-
version: 0.
|
|
125
|
+
version: 0.3.1
|
|
106
126
|
type: :runtime
|
|
107
127
|
prerelease: false
|
|
108
128
|
version_requirements: !ruby/object:Gem::Requirement
|
|
109
129
|
requirements:
|
|
110
130
|
- - "~>"
|
|
111
131
|
- !ruby/object:Gem::Version
|
|
112
|
-
version: '0.
|
|
132
|
+
version: '0.3'
|
|
113
133
|
- - ">="
|
|
114
134
|
- !ruby/object:Gem::Version
|
|
115
|
-
version: 0.
|
|
135
|
+
version: 0.3.1
|
|
116
136
|
- !ruby/object:Gem::Dependency
|
|
117
137
|
name: sqlite3
|
|
118
138
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -181,6 +201,7 @@ files:
|
|
|
181
201
|
- lib/mammoth/dead_letter_store.rb
|
|
182
202
|
- lib/mammoth/delivered_envelope_store.rb
|
|
183
203
|
- lib/mammoth/delivery_processor.rb
|
|
204
|
+
- lib/mammoth/delivery_progress_coordinator.rb
|
|
184
205
|
- lib/mammoth/delivery_worker.rb
|
|
185
206
|
- lib/mammoth/destinations/adapter.rb
|
|
186
207
|
- lib/mammoth/destinations/registry.rb
|
|
@@ -199,6 +220,7 @@ files:
|
|
|
199
220
|
- lib/mammoth/operational_state/registry.rb
|
|
200
221
|
- lib/mammoth/operational_state/sqlite_adapter.rb
|
|
201
222
|
- lib/mammoth/persisted_payload_deserializer.rb
|
|
223
|
+
- lib/mammoth/postgres_observability_metrics.rb
|
|
202
224
|
- lib/mammoth/registry.rb
|
|
203
225
|
- lib/mammoth/replication_consumer.rb
|
|
204
226
|
- lib/mammoth/route_filter.rb
|
|
@@ -208,6 +230,8 @@ files:
|
|
|
208
230
|
- lib/mammoth/runtimes/inline_adapter.rb
|
|
209
231
|
- lib/mammoth/runtimes/registry.rb
|
|
210
232
|
- lib/mammoth/sources/postgres.rb
|
|
233
|
+
- lib/mammoth/sources/postgres_publication_inspector.rb
|
|
234
|
+
- lib/mammoth/sources/postgres_slot_health.rb
|
|
211
235
|
- lib/mammoth/sql/__bootstrap__.sql
|
|
212
236
|
- lib/mammoth/sqlite_store.rb
|
|
213
237
|
- lib/mammoth/status.rb
|