pg_eventstore 3.0.1 → 3.1.2

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -8
  3. data/README.md +1 -0
  4. data/docs/admin_ui.md +5 -0
  5. data/docs/metrics.md +233 -0
  6. data/lib/pg_eventstore/chunks/subscription_events_index_chunk.rb +4 -9
  7. data/lib/pg_eventstore/queries/replica_queries.rb +8 -5
  8. data/lib/pg_eventstore/sql_builder.rb +1 -1
  9. data/lib/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rb +1 -1
  10. data/lib/pg_eventstore/subscriptions/runner_recovery_strategies/report_subscription_unrecoverable_error.rb +31 -0
  11. data/lib/pg_eventstore/subscriptions/runner_recovery_strategies.rb +1 -0
  12. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/collection.rb +9 -7
  13. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/index_read_strategy.rb +16 -16
  14. data/lib/pg_eventstore/subscriptions/subscription_feed_strategies/replication_strategy.rb +15 -15
  15. data/lib/pg_eventstore/subscriptions/subscription_feed_strategy.rb +4 -3
  16. data/lib/pg_eventstore/subscriptions/subscription_runner.rb +0 -5
  17. data/lib/pg_eventstore/subscriptions/subscription_runners_feeder.rb +15 -4
  18. data/lib/pg_eventstore/subscriptions/subscriptions_manager.rb +5 -0
  19. data/lib/pg_eventstore/utils.rb +2 -0
  20. data/lib/pg_eventstore/version.rb +1 -1
  21. data/lib/pg_eventstore/web/application.rb +7 -0
  22. data/lib/pg_eventstore/web/metrics/application.rb +64 -0
  23. data/lib/pg_eventstore/web/metrics/collectors/base.rb +69 -0
  24. data/lib/pg_eventstore/web/metrics/collectors/subscriptions_health.rb +78 -0
  25. data/lib/pg_eventstore/web/metrics/collectors/subscriptions_latency.rb +161 -0
  26. data/lib/pg_eventstore/web/metrics/collectors/subscriptions_throughput.rb +59 -0
  27. data/lib/pg_eventstore/web/metrics/formatter.rb +45 -0
  28. data/lib/pg_eventstore/web/metrics/helpers.rb +30 -0
  29. data/lib/pg_eventstore/web/metrics/metric_family.rb +40 -0
  30. data/lib/pg_eventstore/web/paginator/helpers.rb +27 -23
  31. data/lib/pg_eventstore/web/views/home/partials/events.erb +8 -6
  32. data/lib/pg_eventstore/web/views/home/partials/stream_filter.erb +1 -1
  33. data/lib/pg_eventstore/web/views/streams/partials/streams.erb +1 -1
  34. data/lib/pg_eventstore/web.rb +8 -0
  35. data/rbs_collection.lock.yaml +1 -1
  36. data/sig/pg_eventstore/subscriptions/callback_handlers/subscription_runner_handlers.rbs +1 -1
  37. data/sig/pg_eventstore/subscriptions/runner_recovery_strategies/report_subscription_unrecoverable_error.rbs +15 -0
  38. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/collection.rbs +1 -1
  39. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/index_read_strategy.rbs +1 -1
  40. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy/replication_strategy.rbs +1 -1
  41. data/sig/pg_eventstore/subscriptions/subscription_feed_strategy.rbs +1 -1
  42. data/sig/pg_eventstore/subscriptions/subscription_runner.rbs +0 -2
  43. data/sig/pg_eventstore/subscriptions/subscription_runners_feeder.rbs +2 -0
  44. data/sig/pg_eventstore/web/application.rbs +2 -0
  45. data/sig/pg_eventstore/web/metrics/application.rbs +11 -0
  46. data/sig/pg_eventstore/web/metrics/collectors/base.rbs +33 -0
  47. data/sig/pg_eventstore/web/metrics/collectors/subscriptions_health.rbs +15 -0
  48. data/sig/pg_eventstore/web/metrics/collectors/subscriptions_latency.rbs +31 -0
  49. data/sig/pg_eventstore/web/metrics/collectors/subscriptions_throughput.rbs +15 -0
  50. data/sig/pg_eventstore/web/metrics/formatter.rbs +19 -0
  51. data/sig/pg_eventstore/web/metrics/helpers.rbs +11 -0
  52. data/sig/pg_eventstore/web/metrics/metric_family.rbs +19 -0
  53. data/sig/pg_eventstore/web/paginator/helpers.rbs +5 -3
  54. metadata +20 -1
@@ -30,7 +30,7 @@ module PgEventstore
30
30
 
31
31
  # @return [String]
32
32
  def first_page_link
33
- path = build_path(params.slice(*(params.keys - ['starting_id'])))
33
+ path = url(build_path(params.slice(*(params.keys - ['starting_id']))))
34
34
  <<~HTML
35
35
  <li class="page-item">
36
36
  <a class="page-link" href="#{path}" tabindex="-1">First</a>
@@ -41,17 +41,19 @@ module PgEventstore
41
41
  # @param per_page [String] string representation of items per page. E.g. "10", "20", etc.
42
42
  # @return [String]
43
43
  def per_page_url(per_page)
44
- build_path(params.merge(per_page:))
44
+ url(build_path(params.merge(per_page:)))
45
45
  end
46
46
 
47
47
  # @param order [String] "asc"/"desc"
48
48
  # @return [String]
49
49
  def sort_url(order)
50
- build_path(params.merge(order:))
50
+ url(build_path(params.merge(order:)))
51
51
  end
52
52
 
53
+ # @param should_resolve [Boolean]
54
+ # @return [String]
53
55
  def resolve_link_tos_url(should_resolve)
54
- build_path(params.merge(resolve_link_tos: should_resolve))
56
+ url(build_path(params.merge(resolve_link_tos: should_resolve)))
55
57
  end
56
58
 
57
59
  # @param number [Integer] total number of events by the current filter
@@ -82,27 +84,29 @@ module PgEventstore
82
84
 
83
85
  # @param stream [PgEventstore::Stream]
84
86
  # @return [String]
85
- def stream_path(stream)
86
- build_path(
87
- {
88
- filter: {
89
- streams: [
90
- {
91
- context: escape_empty_string(stream.context),
92
- stream_name: escape_empty_string(stream.stream_name),
93
- stream_id: escape_empty_string(stream.stream_id),
94
- },
95
- ],
87
+ def stream_url(stream)
88
+ url(
89
+ build_path(
90
+ {
91
+ filter: {
92
+ streams: [
93
+ {
94
+ context: escape_empty_string(stream.context),
95
+ stream_name: escape_empty_string(stream.stream_name),
96
+ stream_id: escape_empty_string(stream.stream_id),
97
+ },
98
+ ],
99
+ },
96
100
  },
97
- },
98
- base_url: '/'
101
+ base_path: '/'
102
+ )
99
103
  )
100
104
  end
101
105
 
102
106
  # @param marker [String]
103
107
  # @return [String]
104
- def event_marker_path(marker)
105
- build_path({ filter: { markers: [escape_empty_string(marker)] } }, base_url: '/')
108
+ def event_marker_url(marker)
109
+ url(build_path({ filter: { markers: [escape_empty_string(marker)] } }, base_path: '/'))
106
110
  end
107
111
 
108
112
  # @param str [String]
@@ -120,16 +124,16 @@ module PgEventstore
120
124
  def build_starting_id_link(starting_id)
121
125
  return 'javascript: void(0);' unless starting_id
122
126
 
123
- build_path(params.merge(starting_id:))
127
+ url(build_path(params.merge(starting_id:)))
124
128
  end
125
129
 
126
130
  # @param params [Hash, Array]
127
131
  # @return [String]
128
- def build_path(params, base_url: request.path)
132
+ def build_path(params, base_path: request.path_info)
129
133
  encoded_params = Rack::Utils.build_nested_query(params)
130
- return base_url if encoded_params.empty?
134
+ return base_path if encoded_params.empty?
131
135
 
132
- "#{base_url}?#{encoded_params}"
136
+ "#{base_path}?#{encoded_params}"
133
137
  end
134
138
  end
135
139
  end
@@ -12,7 +12,7 @@
12
12
  <td><%= empty_characters_fallback(h event.stream.context) %></td>
13
13
  <td><%= empty_characters_fallback(h event.stream.stream_name) %></td>
14
14
  <td>
15
- <a href="<%= stream_path(event.stream) %>"><%= empty_characters_fallback(h event.stream.stream_id) %></a>
15
+ <a href="<%= stream_url(event.stream) %>"><%= empty_characters_fallback(h event.stream.stream_id) %></a>
16
16
  <a role="button" href="#" data-title="Copy stream definition." class="copy-to-clipboard"
17
17
  data-clipboard-content="<%= h "PgEventstore::Stream.new(context: #{event.stream.context.inspect}, stream_name: #{event.stream.stream_name.inspect}, stream_id: #{event.stream.stream_id.inspect})" %>">
18
18
  <i class="fa fa-clipboard"></i>
@@ -33,9 +33,11 @@
33
33
  <a href="javascript: void(0);" class="d-inline-block text-nowrap toggle-event-data">
34
34
  JSON <i class="fa fa-eye"></i>
35
35
  </a>
36
- <a href="javascript: void(0);" class="ml-2 btn btn-danger btn-small delete-event-btn" data-global-position="<%= event.global_position %>" data-url="<%= delete_event_url(event.global_position) %>" data-toggle="modal" data-target="#delete-event-modal">
37
- Delete
38
- </a>
36
+ <% if can_delete? %>
37
+ <a href="javascript: void(0);" class="ml-2 btn btn-danger btn-small delete-event-btn" data-global-position="<%= event.global_position %>" data-url="<%= delete_event_url(event.global_position) %>" data-toggle="modal" data-target="#delete-event-modal">
38
+ Delete
39
+ </a>
40
+ <% end %>
39
41
  </td>
40
42
  </tr>
41
43
  <tr class="event-payload d-none">
@@ -55,7 +57,7 @@
55
57
  <% event.feature_markers.each do |feature_marker| %>
56
58
  <li>
57
59
  <%= "#{h feature_marker.description}:" if feature_marker.description %>
58
- <a href="<%= event_marker_path(feature_marker.marker) %>">
60
+ <a href="<%= event_marker_url(feature_marker.marker) %>">
59
61
  <%= empty_characters_fallback(h feature_marker.marker) %>
60
62
  </a>
61
63
  </li>
@@ -66,7 +68,7 @@
66
68
  Event markers
67
69
  <ul>
68
70
  <% event.markers.each do |marker| %>
69
- <li> <a href="<%= event_marker_path(marker) %>"><%= empty_characters_fallback(h marker) %></a> </li>
71
+ <li> <a href="<%= event_marker_url(marker) %>"><%= empty_characters_fallback(h marker) %></a> </li>
70
72
  <% end %>
71
73
  </ul>
72
74
  <% end %>
@@ -39,7 +39,7 @@
39
39
  <a class="btn btn-default remove-filter" href="javascript: void(0);">
40
40
  <i class="fa fa-minus-circle"></i>
41
41
  </a>
42
- <% if stream[:context] && stream[:stream_name] && stream[:stream_id] %>
42
+ <% if stream[:context] && stream[:stream_name] && stream[:stream_id] && can_delete? %>
43
43
  <a class="btn btn-danger btn-small delete-stream" data-confirm="You are about to delete all events in <%= h stream.inspect %> stream. This action is irreversible Continue?" data-confirm-title="Delete Stream" data-method="post" href="<%= delete_stream_url(stream) %>">
44
44
  Delete stream
45
45
  </a>
@@ -4,7 +4,7 @@
4
4
  <td><%= empty_characters_fallback(h stream.context) %></td>
5
5
  <td><%= empty_characters_fallback(h stream.stream_name) %></td>
6
6
  <td>
7
- <a href="<%= stream_path(stream) %>" target="_blank"><%= empty_characters_fallback(h stream.stream_id) %></a>
7
+ <a href="<%= stream_url(stream) %>" target="_blank"><%= empty_characters_fallback(h stream.stream_id) %></a>
8
8
  </td>
9
9
  <td><%= stream.stream_revision %></td>
10
10
  </tr>
@@ -19,6 +19,14 @@ require_relative 'web/subscriptions/with_state/set_collection'
19
19
  require_relative 'web/subscriptions/with_state/subscriptions'
20
20
  require_relative 'web/subscriptions/with_state/subscriptions_set'
21
21
  require_relative 'web/subscriptions/helpers'
22
+ require_relative 'web/metrics/metric_family'
23
+ require_relative 'web/metrics/formatter'
24
+ require_relative 'web/metrics/collectors/base'
25
+ require_relative 'web/metrics/collectors/subscriptions_latency'
26
+ require_relative 'web/metrics/collectors/subscriptions_health'
27
+ require_relative 'web/metrics/collectors/subscriptions_throughput'
28
+ require_relative 'web/metrics/helpers'
29
+ require_relative 'web/metrics/application'
22
30
  require_relative 'web/application'
23
31
 
24
32
  module PgEventstore
@@ -6,7 +6,7 @@ gems:
6
6
  source:
7
7
  type: git
8
8
  name: ruby/gem_rbs_collection
9
- revision: 0cb6351d218704700cf4df797ff8966b3a418fcd
9
+ revision: 9ab762c8247028f90620fc93c4e7aac20eb693d7
10
10
  remote: https://github.com/ruby/gem_rbs_collection.git
11
11
  repo_dir: gems
12
12
  - name: forwardable
@@ -15,7 +15,7 @@ module PgEventstore
15
15
  Integer events_number
16
16
  ) -> void
17
17
 
18
- def self.update_subscription_error: (Subscription subscription, WrappedException error) -> void
18
+ def self.update_subscription_error: (Subscription subscription, StandardError error) -> void
19
19
 
20
20
  def self.update_subscription_chunk_stats: (Subscription subscription, Integer subscription_position) -> void
21
21
 
@@ -0,0 +1,15 @@
1
+ module PgEventstore
2
+ module RunnerRecoveryStrategies
3
+ class ReportSubscriptionUnrecoverableError
4
+ include RunnerRecoveryStrategy
5
+
6
+ @failed_subscription_notifier: _FailedSubscriptionNotifier?
7
+ @subscription: Subscription
8
+
9
+ def initialize: (
10
+ subscription: Subscription,
11
+ failed_subscription_notifier: _FailedSubscriptionNotifier?
12
+ )-> untyped
13
+ end
14
+ end
15
+ end
@@ -4,7 +4,7 @@ module PgEventstore
4
4
  DEFAULT_SUBSCRIPTIONS_NUM_PER_QUERY: Integer
5
5
 
6
6
  def self.create: (
7
- Array[SubscriptionRunner | ReplicaSubscriptionRunner] runners,
7
+ Hash[SubscriptionRunner | ReplicaSubscriptionRunner, Hash[Symbol, untyped]] runners_query_options,
8
8
  Connection connection,
9
9
  QueryStrategy query_strategy,
10
10
  ?subscriptions_per_query: Integer
@@ -7,7 +7,7 @@ module PgEventstore
7
7
 
8
8
  @connection: Connection
9
9
  @query_strategy: QueryStrategy
10
- @runners: Array[SubscriptionRunner]
10
+ @runners_query_options: Hash[SubscriptionRunner, Hash[Symbol, untyped]]
11
11
 
12
12
  def initialize: (Connection connection, QueryStrategy query_strategy) -> void
13
13
 
@@ -7,7 +7,7 @@ module PgEventstore
7
7
 
8
8
  @connection: Connection
9
9
  @query_strategy: QueryStrategy
10
- @runners: Array[ReplicaSubscriptionRunner]
10
+ @runners_query_options: Hash[ReplicaSubscriptionRunner, Hash[Symbol, untyped]]
11
11
 
12
12
  def initialize: (Connection connection, QueryStrategy query_strategy) -> void
13
13
 
@@ -1,6 +1,6 @@
1
1
  module PgEventstore
2
2
  module SubscriptionFeedStrategy[unchecked Runner]
3
- def add: (*Runner runners) -> Array[Runner]
3
+ def add: (Runner runner, Hash[Symbol, untyped] query_options) -> void
4
4
 
5
5
  def any?: -> bool
6
6
 
@@ -23,8 +23,6 @@ module PgEventstore
23
23
 
24
24
  def next_chunk_query_opts: () -> ::Hash[untyped, untyped]
25
25
 
26
- def time_to_feed?: () -> bool
27
-
28
26
  def next_chunk_global_position: () -> Integer
29
27
 
30
28
  def estimate_events_number: () -> Integer
@@ -8,6 +8,8 @@ module PgEventstore
8
8
 
9
9
  private
10
10
 
11
+ def time_to_feed?: (SubscriptionRunner runner) -> bool
12
+
11
13
  def connection: -> Connection
12
14
  end
13
15
  end
@@ -11,6 +11,8 @@ module PgEventstore
11
11
 
12
12
  def asset_url: (String path) -> String
13
13
 
14
+ def can_delete?: -> bool
15
+
14
16
  def connection: -> Connection
15
17
 
16
18
  def current_config: -> Symbol
@@ -0,0 +1,11 @@
1
+ module PgEventstore
2
+ module Web
3
+ module Metrics
4
+ class Application
5
+ def metrics_connection: -> Connection
6
+
7
+ def config_name: -> Symbol
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,33 @@
1
+ module PgEventstore
2
+ module Web
3
+ module Metrics
4
+ module Collectors
5
+ class Base
6
+ STATEMENT_TIMEOUT: Integer
7
+
8
+ @connection: Connection
9
+
10
+ @sets: Array[String]
11
+
12
+ attr_reader connection: Connection
13
+
14
+ attr_reader sets: Array[String]
15
+
16
+ def initialize: (Connection connection, ?sets: Array[String]) -> void
17
+
18
+ def call: -> Array[Web::Metrics::MetricFamily]
19
+
20
+ def subscriptions_sql_builder: -> SQLBuilder
21
+
22
+ private
23
+
24
+ def subscription_labels: (Hash[String, untyped] row) -> Hash[Symbol, untyped]
25
+
26
+ def transaction_queries: -> TransactionQueries
27
+
28
+ def with_safe_conn: () { (PgConnection conn) -> PG::Result } -> Array[Hash[String, untyped]]
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,15 @@
1
+ module PgEventstore
2
+ module Web
3
+ module Metrics
4
+ module Collectors
5
+ class SubscriptionsHealth < Base
6
+ def call: -> Array[MetricFamily]
7
+
8
+ private
9
+
10
+ def subscription_rows: -> Array[Hash[String, untyped]]
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,31 @@
1
+ module PgEventstore
2
+ module Web
3
+ module Metrics
4
+ module Collectors
5
+ class SubscriptionsLatency < Base
6
+ def call: -> Array[MetricFamily]
7
+
8
+ private
9
+
10
+ def add_samples: (
11
+ Hash[String, untyped] row,
12
+ Hash[Integer, Time] created_at_by_position,
13
+ Time now,
14
+ MetricFamily lag_events,
15
+ MetricFamily lag_seconds
16
+ ) -> void
17
+
18
+ def positions: -> [Integer, Integer]
19
+
20
+ def subscription_rows: (Integer frontier_position) -> Array[Hash[String, untyped]]
21
+
22
+ def resolve_created_at: (Array[Hash[String, untyped]] subscription_rows) -> Hash[Integer, Time]
23
+
24
+ def events_global_index_queries: -> EventsGlobalIndexQueries
25
+
26
+ def store_families: (Integer frontier_position, Integer head_global_position) -> Array[MetricFamily]
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ module PgEventstore
2
+ module Web
3
+ module Metrics
4
+ module Collectors
5
+ class SubscriptionsThroughput < Base
6
+ def call: -> Array[MetricFamily]
7
+
8
+ private
9
+
10
+ def subscription_rows: -> Array[Hash[String, untyped]]
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module PgEventstore
2
+ module Web
3
+ module Metrics
4
+ class Formatter
5
+ CONTENT_TYPE: String
6
+
7
+ def call: (Array[MetricFamily] families) -> String
8
+
9
+ private
10
+
11
+ def format_family: (MetricFamily family) -> String
12
+
13
+ def format_labels: (Hash[Symbol, untyped] labels) -> String
14
+
15
+ def escape_label_value: (String value) -> String
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ module PgEventstore
2
+ module Web
3
+ module Metrics
4
+ module Helpers
5
+ def metrics_response: (Array[untyped] collector_classes) -> String
6
+
7
+ def requested_sets: -> Array[String]
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ module PgEventstore
2
+ module Web
3
+ module Metrics
4
+ class MetricFamily
5
+ attr_reader name: String
6
+
7
+ attr_reader type: String
8
+
9
+ attr_reader help: String
10
+
11
+ attr_reader samples: Array[Hash[Symbol, untyped]]
12
+
13
+ def initialize: (name: String, type: String, help: String) -> void
14
+
15
+ def add_sample: (labels: Hash[Symbol, untyped], value: Integer | Float) -> void
16
+ end
17
+ end
18
+ end
19
+ end
@@ -4,7 +4,7 @@ module PgEventstore
4
4
  module Helpers
5
5
  def empty_characters_fallback: (String str)-> String
6
6
 
7
- def event_marker_path: (String marker) -> String
7
+ def event_marker_url: (String marker) -> String
8
8
 
9
9
  def previous_page_link: (BaseCollection collection) -> String
10
10
 
@@ -14,17 +14,19 @@ module PgEventstore
14
14
 
15
15
  def per_page_url: (String per_page) -> String
16
16
 
17
+ def resolve_link_tos_url: (bool should_resolve) -> String
18
+
17
19
  def sort_url: (String order) -> String
18
20
 
19
21
  def total_count: (Integer number) -> String
20
22
 
21
23
  def number_with_delimiter: (Integer number, ?delimiter: String) -> String
22
24
 
23
- def stream_path: (Stream stream) -> String
25
+ def stream_url: (Stream stream) -> String
24
26
 
25
27
  def build_starting_id_link: ((String | Integer)? starting_id) -> String
26
28
 
27
- def build_path: ((::Hash[untyped, untyped] | ::Array[untyped]) params, ?base_url: String) -> String
29
+ def build_path: ((::Hash[untyped, untyped] | ::Array[untyped]) params, ?base_path: String) -> String
28
30
  end
29
31
  end
30
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_eventstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Dzyzenko
@@ -119,6 +119,7 @@ files:
119
119
  - docs/how_it_works.md
120
120
  - docs/linking_events.md
121
121
  - docs/maintenance.md
122
+ - docs/metrics.md
122
123
  - docs/multiple_commands.md
123
124
  - docs/reading_events.md
124
125
  - docs/reading_streams.md
@@ -265,6 +266,7 @@ files:
265
266
  - lib/pg_eventstore/subscriptions/replica_subscription_handler.rb
266
267
  - lib/pg_eventstore/subscriptions/replica_subscription_runner.rb
267
268
  - lib/pg_eventstore/subscriptions/runner_recovery_strategies.rb
269
+ - lib/pg_eventstore/subscriptions/runner_recovery_strategies/report_subscription_unrecoverable_error.rb
268
270
  - lib/pg_eventstore/subscriptions/runner_recovery_strategies/restore_connection.rb
269
271
  - lib/pg_eventstore/subscriptions/runner_recovery_strategies/restore_subscription_feeder.rb
270
272
  - lib/pg_eventstore/subscriptions/runner_recovery_strategies/restore_subscription_runner.rb
@@ -302,6 +304,14 @@ files:
302
304
  - lib/pg_eventstore/version.rb
303
305
  - lib/pg_eventstore/web.rb
304
306
  - lib/pg_eventstore/web/application.rb
307
+ - lib/pg_eventstore/web/metrics/application.rb
308
+ - lib/pg_eventstore/web/metrics/collectors/base.rb
309
+ - lib/pg_eventstore/web/metrics/collectors/subscriptions_health.rb
310
+ - lib/pg_eventstore/web/metrics/collectors/subscriptions_latency.rb
311
+ - lib/pg_eventstore/web/metrics/collectors/subscriptions_throughput.rb
312
+ - lib/pg_eventstore/web/metrics/formatter.rb
313
+ - lib/pg_eventstore/web/metrics/helpers.rb
314
+ - lib/pg_eventstore/web/metrics/metric_family.rb
305
315
  - lib/pg_eventstore/web/paginator/base_collection.rb
306
316
  - lib/pg_eventstore/web/paginator/event_types_collection.rb
307
317
  - lib/pg_eventstore/web/paginator/events_collection.rb
@@ -494,6 +504,7 @@ files:
494
504
  - sig/pg_eventstore/subscriptions/queries/subscriptions_set_queries.rbs
495
505
  - sig/pg_eventstore/subscriptions/replica_subscription_handler.rbs
496
506
  - sig/pg_eventstore/subscriptions/replica_subscription_runner.rbs
507
+ - sig/pg_eventstore/subscriptions/runner_recovery_strategies/report_subscription_unrecoverable_error.rbs
497
508
  - sig/pg_eventstore/subscriptions/runner_recovery_strategies/restore_connection.rbs
498
509
  - sig/pg_eventstore/subscriptions/runner_recovery_strategies/restore_subscription_feeder.rbs
499
510
  - sig/pg_eventstore/subscriptions/runner_recovery_strategies/restore_subscription_runner.rbs
@@ -529,6 +540,14 @@ files:
529
540
  - sig/pg_eventstore/utils.rbs
530
541
  - sig/pg_eventstore/version.rbs
531
542
  - sig/pg_eventstore/web/application.rbs
543
+ - sig/pg_eventstore/web/metrics/application.rbs
544
+ - sig/pg_eventstore/web/metrics/collectors/base.rbs
545
+ - sig/pg_eventstore/web/metrics/collectors/subscriptions_health.rbs
546
+ - sig/pg_eventstore/web/metrics/collectors/subscriptions_latency.rbs
547
+ - sig/pg_eventstore/web/metrics/collectors/subscriptions_throughput.rbs
548
+ - sig/pg_eventstore/web/metrics/formatter.rbs
549
+ - sig/pg_eventstore/web/metrics/helpers.rbs
550
+ - sig/pg_eventstore/web/metrics/metric_family.rbs
532
551
  - sig/pg_eventstore/web/paginator/base_collection.rbs
533
552
  - sig/pg_eventstore/web/paginator/event_types_collection.rbs
534
553
  - sig/pg_eventstore/web/paginator/events_collection.rbs