pgbus 0.17.0 → 0.17.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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -0
  3. data/README.md +69 -14
  4. data/Rakefile +7 -1
  5. data/app/controllers/concerns/pgbus/job_listing.rb +37 -0
  6. data/app/controllers/concerns/pgbus/process_listing.rb +17 -0
  7. data/app/controllers/pgbus/application_controller.rb +5 -2
  8. data/app/controllers/pgbus/batches_controller.rb +4 -1
  9. data/app/controllers/pgbus/dashboard_controller.rb +20 -6
  10. data/app/controllers/pgbus/dead_letter_controller.rb +27 -3
  11. data/app/controllers/pgbus/events_controller.rb +52 -3
  12. data/app/controllers/pgbus/insights_controller.rb +19 -1
  13. data/app/controllers/pgbus/jobs_controller.rb +45 -26
  14. data/app/controllers/pgbus/locks_controller.rb +7 -2
  15. data/app/controllers/pgbus/outbox_controller.rb +4 -1
  16. data/app/controllers/pgbus/processes_controller.rb +3 -1
  17. data/app/controllers/pgbus/queues_controller.rb +16 -4
  18. data/app/controllers/pgbus/recurring_tasks_controller.rb +5 -7
  19. data/app/frontend/pgbus/modules/charts.js +119 -77
  20. data/app/frontend/pgbus/style.css +1 -1
  21. data/app/frontend/pgbus/tailwind.css +18 -0
  22. data/app/helpers/pgbus/application_helper.rb +155 -113
  23. data/app/helpers/pgbus/button_helper.rb +88 -0
  24. data/app/helpers/pgbus/dashboard_helper.rb +157 -0
  25. data/app/helpers/pgbus/events_helper.rb +40 -0
  26. data/app/helpers/pgbus/insights_helper.rb +39 -0
  27. data/app/helpers/pgbus/processes_helper.rb +79 -0
  28. data/app/views/pgbus/batches/_batches_table.html.erb +16 -13
  29. data/app/views/pgbus/batches/show.html.erb +3 -4
  30. data/app/views/pgbus/dashboard/_processes_table.html.erb +11 -11
  31. data/app/views/pgbus/dashboard/_queue_health.html.erb +42 -51
  32. data/app/views/pgbus/dashboard/_queues_table.html.erb +18 -16
  33. data/app/views/pgbus/dashboard/_recent_failures.html.erb +16 -12
  34. data/app/views/pgbus/dashboard/_stats_cards.html.erb +70 -36
  35. data/app/views/pgbus/dashboard/show.html.erb +1 -1
  36. data/app/views/pgbus/dead_letter/_error.html.erb +13 -0
  37. data/app/views/pgbus/dead_letter/_messages_table.html.erb +37 -96
  38. data/app/views/pgbus/dead_letter/_row.html.erb +75 -0
  39. data/app/views/pgbus/dead_letter/index.html.erb +6 -9
  40. data/app/views/pgbus/dead_letter/show.html.erb +37 -21
  41. data/app/views/pgbus/events/_list.html.erb +55 -0
  42. data/app/views/pgbus/events/_processed_table.html.erb +45 -0
  43. data/app/views/pgbus/events/_replay.html.erb +10 -0
  44. data/app/views/pgbus/events/_row.html.erb +162 -0
  45. data/app/views/pgbus/events/_tabs.html.erb +13 -0
  46. data/app/views/pgbus/events/index.html.erb +27 -48
  47. data/app/views/pgbus/events/show.html.erb +25 -7
  48. data/app/views/pgbus/insights/_chart_card.html.erb +21 -0
  49. data/app/views/pgbus/insights/_latency_table.html.erb +20 -0
  50. data/app/views/pgbus/insights/_status_table.html.erb +19 -0
  51. data/app/views/pgbus/insights/_throughput_table.html.erb +18 -0
  52. data/app/views/pgbus/insights/show.html.erb +83 -100
  53. data/app/views/pgbus/jobs/_list.html.erb +64 -0
  54. data/app/views/pgbus/jobs/_row.html.erb +107 -0
  55. data/app/views/pgbus/jobs/_tabs.html.erb +14 -0
  56. data/app/views/pgbus/jobs/index.html.erb +10 -10
  57. data/app/views/pgbus/jobs/show.html.erb +18 -20
  58. data/app/views/pgbus/locks/_concurrency.html.erb +25 -23
  59. data/app/views/pgbus/locks/_uniqueness.html.erb +20 -22
  60. data/app/views/pgbus/outbox/index.html.erb +30 -27
  61. data/app/views/pgbus/processes/_processes_table.html.erb +6 -25
  62. data/app/views/pgbus/processes/_row.html.erb +48 -0
  63. data/app/views/pgbus/processes/_status.html.erb +4 -0
  64. data/app/views/pgbus/queues/_queues_list.html.erb +28 -32
  65. data/app/views/pgbus/queues/show.html.erb +69 -118
  66. data/app/views/pgbus/recurring_tasks/_tasks_table.html.erb +75 -76
  67. data/app/views/pgbus/recurring_tasks/index.html.erb +1 -1
  68. data/app/views/pgbus/recurring_tasks/show.html.erb +45 -51
  69. data/app/views/pgbus/shared/_empty_row.html.erb +2 -0
  70. data/app/views/pgbus/shared/_pager.html.erb +34 -0
  71. data/config/i18n-tasks.yml +11 -2
  72. data/config/locales/da.yml +405 -113
  73. data/config/locales/de.yml +405 -113
  74. data/config/locales/en.yml +405 -113
  75. data/config/locales/es.yml +404 -112
  76. data/config/locales/fi.yml +404 -112
  77. data/config/locales/fr.yml +406 -114
  78. data/config/locales/it.yml +405 -113
  79. data/config/locales/ja.yml +405 -113
  80. data/config/locales/nb.yml +405 -113
  81. data/config/locales/nl.yml +405 -113
  82. data/config/locales/pt.yml +406 -114
  83. data/config/locales/sv.yml +404 -112
  84. data/lib/generators/pgbus/templates/initializer.rb.erb +4 -0
  85. data/lib/pgbus/active_job/executor.rb +36 -17
  86. data/lib/pgbus/cli/dlq.rb +32 -5
  87. data/lib/pgbus/client.rb +7 -2
  88. data/lib/pgbus/configuration.rb +93 -2
  89. data/lib/pgbus/dead_letter_header.rb +129 -0
  90. data/lib/pgbus/doctor.rb +37 -5
  91. data/lib/pgbus/event_bus/handler.rb +18 -11
  92. data/lib/pgbus/event_bus/registry.rb +6 -0
  93. data/lib/pgbus/failed_event_recorder.rb +51 -0
  94. data/lib/pgbus/instrumentation.rb +2 -1
  95. data/lib/pgbus/mcp/base_tool.rb +25 -0
  96. data/lib/pgbus/mcp/tools/concurrency_tool.rb +23 -4
  97. data/lib/pgbus/mcp/tools/dlq_detail_tool.rb +4 -2
  98. data/lib/pgbus/mcp/tools/dlq_tool.rb +10 -4
  99. data/lib/pgbus/mcp/tools/locks_tool.rb +23 -5
  100. data/lib/pgbus/mcp/tools/recurring_tool.rb +33 -4
  101. data/lib/pgbus/outbox/poller.rb +1 -1
  102. data/lib/pgbus/process/claim_buffer.rb +115 -0
  103. data/lib/pgbus/process/consumer.rb +94 -17
  104. data/lib/pgbus/process/dispatcher.rb +1 -1
  105. data/lib/pgbus/process/supervisor.rb +35 -12
  106. data/lib/pgbus/process/worker.rb +91 -25
  107. data/lib/pgbus/recurring/scheduler.rb +2 -1
  108. data/lib/pgbus/ruby_jit.rb +21 -0
  109. data/lib/pgbus/version.rb +1 -1
  110. data/lib/pgbus/visibility_heartbeat.rb +38 -3
  111. data/lib/pgbus/web/data_source/dashboard_signals.rb +170 -0
  112. data/lib/pgbus/web/data_source/dead_letter.rb +142 -0
  113. data/lib/pgbus/web/data_source/event_list.rb +161 -0
  114. data/lib/pgbus/web/data_source/job_list.rb +323 -0
  115. data/lib/pgbus/web/data_source/list_counts.rb +80 -0
  116. data/lib/pgbus/web/data_source/process_list.rb +69 -0
  117. data/lib/pgbus/web/data_source/queue_summary.rb +122 -0
  118. data/lib/pgbus/web/data_source.rb +132 -254
  119. data/lib/pgbus/web/dead_letter_reason.rb +81 -0
  120. data/lib/pgbus/web/event_state.rb +71 -0
  121. data/lib/pgbus/web/health_app.rb +7 -3
  122. data/lib/pgbus/web/health_verdict.rb +78 -0
  123. data/lib/pgbus/web/insights_charts.rb +84 -0
  124. data/lib/pgbus/web/job_state.rb +111 -0
  125. data/lib/pgbus/web/process_activity.rb +97 -0
  126. data/lib/pgbus/web/process_state.rb +187 -0
  127. data/lib/pgbus/web/queue_summary.rb +104 -0
  128. data/lib/pgbus/web/time_format.rb +128 -0
  129. metadata +45 -4
  130. data/app/views/pgbus/events/_pending_table.html.erb +0 -169
  131. data/app/views/pgbus/jobs/_enqueued_table.html.erb +0 -118
  132. data/app/views/pgbus/jobs/_failed_table.html.erb +0 -76
@@ -41,6 +41,7 @@ nb:
41
41
  title: Aktive prosesser
42
42
  queue_health:
43
43
  dead_tuples: Døde tupler
44
+ empty: Ingen køtabeller å måle ennå
44
45
  headers:
45
46
  bloat: Bloat
46
47
  dead: Døde
@@ -60,14 +61,34 @@ nb:
60
61
  one: "%{count} tabell trenger vacuum"
61
62
  other: "%{count} tabeller trenger vacuum"
62
63
  title: Køhelse
64
+ words:
65
+ bloat:
66
+ critical: "%{ratio} på %{table} — lesing går tregere; kjør vacuum nå (kritisk over %{critical}, advarer over %{warn})"
67
+ none: Ingenting å måle ennå
68
+ ok: "%{ratio} på %{table} — fint (advarer over %{warn}, kritisk over %{critical})"
69
+ warn: "%{ratio} på %{table} — vacuum trengs (advarer over %{warn}, kritisk over %{critical})"
70
+ dead_tuples:
71
+ ok: Fint — advarer over %{limit} døde rader
72
+ warn: Over %{limit} — autovacuum henger etter; tabellen under viser hvor
73
+ transaction:
74
+ critical: Over %{critical} — vacuum kan ikke frigjøre rader før den avsluttes; finn den i pg_stat_activity (advarer ved %{warn}; helsevurderingen forverres etter %{verdict})
75
+ none: Ingen åpen transaksjon — vacuum kan frigjøre alle døde rader (advarer ved %{warn}, varsler ved %{critical}; helsevurderingen forverres etter %{verdict})
76
+ ok: Fint — advarer ved %{warn}, varsler ved %{critical}; helsevurderingen forverres etter %{verdict}
77
+ warn: Over %{warn} — en lang transaksjon hindrer vacuum i å frigjøre rader (varsler ved %{critical}; helsevurderingen forverres etter %{verdict})
78
+ vacuum:
79
+ critical: Over %{critical} — autovacuum når ikke disse tabellene; sjekk innstillingene (advarer etter %{warn})
80
+ ok: Fint — advarer etter %{warn}, kritisk etter %{critical}
81
+ unknown: Aldri kjørt vacuum, eller statistikken er utilgjengelig
82
+ warn: Over %{warn} — autovacuum henger kanskje etter (kritisk etter %{critical})
63
83
  worst_bloat: Verste Bloat
64
84
  queues_table:
65
85
  empty: Ingen køer funnet
66
86
  headers:
67
87
  depth: Dybde
68
- oldest_claimable: Eldste tilgjengelig (s)
88
+ oldest_claimable: Eldste tilgjengelig
69
89
  parked: Parkert
70
90
  queue: Kø
91
+ status: Status
71
92
  total: Totalt
72
93
  visible: Synlig
73
94
  title: Køer
@@ -75,7 +96,9 @@ nb:
75
96
  recent_failures:
76
97
  empty: Ingen feil
77
98
  headers:
99
+ attempt: Forsøk
78
100
  error: Feil
101
+ job: Jobb
79
102
  queue: Kø
80
103
  when: Når
81
104
  title: Nylige feil
@@ -83,19 +106,72 @@ nb:
83
106
  show:
84
107
  title: Dashbord
85
108
  stats_cards:
109
+ dead_lettered: I dead-letter
110
+ dlq_newest_html: 'nyeste: %{error_class} i %{job} %{ago}'
111
+ dlq_newest_legacy_html: 'nyeste: %{job} %{ago} — ingen årsak registrert'
112
+ dlq_newest_no_error_html: 'nyeste: %{job} %{ago} — ingen feil registrert'
113
+ dlq_none: Ingenting i dead-letter
114
+ dlq_see_why: åpne dead-letter-siden for å se hvorfor hver enkelt døde
86
115
  enqueued: I kø
87
- failed_dlq: Mislyktes / DLQ
88
- failed_dlq_labels: Mislyktes / Dead Lettered
116
+ enqueued_detail: "%{claimable} kan hentes nå · %{waiting} planlagt, kjører eller prøves på nytt"
117
+ enqueued_paused:
118
+ one: "%{count} i køer satt på pause"
119
+ other: "%{count} i køer satt på pause"
89
120
  parked_jobs: Parkerte jobber
90
121
  parked_jobs_oldest: eldst %{age}
91
122
  processes: Prosesser
123
+ processes_detail: "%{healthy} friske · %{stalled} fastlåst · %{stale} utdaterte"
124
+ processes_none: Ingenting kjører — ingen jobb blir hentet
125
+ processes_stale: utdaterte prosesser har sluttet å sende heartbeat; jobbene deres som pågår kjøres på nytt når synlighetstidsavbruddet utløper
92
126
  queues: Køer
127
+ queues_detail: "%{paused} satt på pause · %{dlq} i dead-letter"
128
+ queues_undrained:
129
+ one: "%{count} har jobber som ingenting tømmer"
130
+ other: "%{count} har jobber som ingenting tømmer"
93
131
  recurring: Gjentakende
132
+ recurring_detail: Oppgaver planleggeren legger i kø etter timeplanen sin
133
+ retrying: Prøves på nytt
134
+ retrying_due:
135
+ one: "%{count} forfalt nå"
136
+ other: "%{count} forfalt nå"
137
+ retrying_newest: nyeste feil %{error_class}
138
+ retrying_next_html: neste forsøk %{time}
139
+ retrying_none: Ingenting prøves på nytt
94
140
  throughput: Gjennomstrømning
95
- throughput_unit: meldinger/s
96
- view_tasks: Vis oppgaver
97
- visible: synlig
141
+ throughput_detail: jobber/min de siste %{minutes} min
142
+ throughput_unavailable: krever jobbstatistikk (rails g pgbus:add_job_stats)
143
+ verdict:
144
+ links:
145
+ dlq: Dead letters
146
+ processes: Prosesser
147
+ look_at: 'Se på:'
148
+ meaning:
149
+ degraded: Noe trenger oppmerksomhet, men jobbene flyter fortsatt. /readyz svarer fortsatt klar.
150
+ ok: Hver kø med arbeid blir tømt, og alle prosesser sender heartbeat. /readyz svarer klar.
151
+ stalled: Jobber venter og ingenting henter dem. /readyz svarer ikke klar (503).
152
+ statuses:
153
+ degraded: DEGRADED
154
+ ok: OK
155
+ stalled: STALLED
156
+ title: 'Helse: %{status}'
157
+ unavailable: Helsevurdering utilgjengelig — kontrollene bak den kunne ikke leses; se loggen
98
158
  dead_letter:
159
+ detail:
160
+ backtrace: Backtrace (første linjer)
161
+ died: 'Døde:'
162
+ dlq: 'Dead letter-kø:'
163
+ error_from_attempt: Feil fra forsøk %{attempt}; forsøk %{from}–%{to} registrerte ingen feil.
164
+ source: 'Flyttet av:'
165
+ sources:
166
+ consumer: hendelseskonsument
167
+ worker: jobb-worker
168
+ why: Hvorfor den døde
169
+ filters:
170
+ all: Alle
171
+ clear_error_class: Fjern filter
172
+ error_class: 'Feil: %{error_class}'
173
+ filter_error_class: Vis bare %{error_class}
174
+ label: Filtrer dead letters
99
175
  index:
100
176
  discard_all: Forkast alle
101
177
  discard_all_confirm: Slett alle DLQ-meldinger permanent?
@@ -115,10 +191,12 @@ nb:
115
191
  empty: Dead letter queue er tom
116
192
  full_json_payload: Full JSON-payload
117
193
  headers:
118
- enqueued: I kø
194
+ actions: Handlinger
195
+ attempts: Forsøk
196
+ died: Døde
119
197
  id: ID
120
- job_class: Jobbklasse
121
- reads: Leser
198
+ job: Jobb
199
+ reason: Årsak
122
200
  source_queue: Kildekø
123
201
  headers_section: Overskrifter
124
202
  job_id: 'Jobb-ID:'
@@ -131,6 +209,16 @@ nb:
131
209
  visible_at: 'Synlig ved:'
132
210
  retry: Prøv igjen
133
211
  total_label: meldinger i dead letter-kø
212
+ view: Vis
213
+ reasons:
214
+ error_earlier_attempt_html: 'Nye forsøk brukt opp. Siste registrerte feil, fra forsøk %{error_attempt}: %{error_class}: %{error_message}'
215
+ error_html: 'Nye forsøk brukt opp. Siste feil: %{error_class}: %{error_message}'
216
+ event_no_error_html: Handleren feilet på %{attempts} leveranser (maks %{max}) — ingen handler-feil ble registrert
217
+ no_error_recorded_html: Overskred %{max} nye forsøk etter %{attempts} lesinger — ingen feil ble registrert; hvert feilende forsøk krasjet før det kunne rapportere
218
+ not_recorded_html: Årsak ikke registrert (flyttet til DLQ før pgbus %{version})
219
+ retried_before:
220
+ one: Forsøkt på nytt fra DLQ én gang før.
221
+ other: Forsøkt på nytt fra DLQ %{count} ganger før.
134
222
  show:
135
223
  back: Tilbake til DLQ
136
224
  context: Kontekst
@@ -138,8 +226,10 @@ nb:
138
226
  discard_confirm: Forkaste permanent?
139
227
  headers: Overskrifter
140
228
  labels:
229
+ attempts: Forsøk
230
+ died: Døde
231
+ dlq: Dead letter-kø
141
232
  enqueued_at: Innlagt klokken
142
- read_count: Antall ganger lest
143
233
  source_queue: Kildekø
144
234
  visibility_timeout: Synlighetstidsavbrudd
145
235
  not_found: Melding ikke funnet
@@ -163,6 +253,7 @@ nb:
163
253
  mark_handled_failed: Kunne ikke merke hendelse som håndtert.
164
254
  marked_handled: Hendelse merket som håndtert.
165
255
  none_selected: Ingen hendelser valgt.
256
+ payload_redacted: 'Ikke lagret: payloaden inneholder fortsatt sladdede ([FILTERED]) verdier som ville erstattet de ekte.'
166
257
  payload_update_failed: Kunne ikke oppdatere nyttelast. Sjekk at JSON er gyldig.
167
258
  payload_updated: Nyttelast oppdatert og hendelse lagt i kø på nytt.
168
259
  replay_failed: Hendelse ikke funnet eller kunne ikke spilles av på nytt.
@@ -170,56 +261,118 @@ nb:
170
261
  reroute_failed: Kunne ikke omdirigere hendelse.
171
262
  rerouted: Hendelse omdirigert til målbehandler.
172
263
  index:
173
- discard_selected: Forkast valgte
174
- discard_selected_confirm: Forkast valgte hendelser?
175
- pending_empty: Ingen ventende hendelser
176
- pending_headers:
177
- enqueued: I kø
178
- handler_queue: Behandlerkø
179
- id: ID
180
- reads: Lesninger
181
- routing_key: Rutingsnøkkel
182
264
  pending_title: Ventende hendelser
183
- processed_empty: Ingen hendelser behandlet ennå
184
- processed_headers:
185
- event_id: Hendelses-ID
186
- handler: Behandler
187
- processed_at: Behandlet klokken
188
265
  processed_title: Behandlede hendelser
266
+ subscribers:
267
+ covered: Behandles av en kjørende consumer
268
+ uncovered: Ingen kjørende consumer dekker dette mønsteret
269
+ unknown: Consumer-dekning ukjent
270
+ view_pending: Vis ventende
189
271
  subscribers_empty: Ingen abonnenter registrert
190
272
  subscribers_headers:
273
+ consumer: Consumer
191
274
  handler: Behandler
192
275
  pattern: Mønster
276
+ pending: Ventende
193
277
  queue: Kø
194
278
  subscribers_title: Registrerte abonnenter
195
279
  title: Hendelser
196
- pending_table:
197
- arguments: Nyttelast
280
+ list:
198
281
  context: Kontekst
199
282
  discard: Forkast
200
283
  discard_confirm: Forkast denne hendelsen? Den vil bli arkivert.
284
+ discard_failure_confirm: Forkaste denne feilede hendelsen? Meldingen er ikke lenger i køen.
285
+ discard_selected: Forkast valgte
286
+ discard_selected_confirm: Forkast valgte hendelser?
201
287
  edit_payload: Rediger & prøv på nytt
202
288
  edit_payload_confirm: Oppdater nyttelast og legg denne hendelsen i kø på nytt?
203
289
  edit_payload_label: 'JSON-nyttelast:'
290
+ empty:
291
+ all: Ingen ventende hendelser
292
+ ready: Ingen hendelser venter på behandling
293
+ retrying: Ingen hendelser venter på nytt forsøk
294
+ running: Ingen hendelser behandles
295
+ scheduled: Ingen planlagte hendelser
204
296
  event_id: 'Hendelses-ID:'
205
297
  full_json_payload: Full JSON-nyttelast
298
+ headers:
299
+ actions: Handlinger
300
+ attempts: Forsøk
301
+ event: Hendelse
302
+ handler: Behandler
303
+ id: ID
304
+ reason: Neste kjøring / Årsak
305
+ state: Tilstand
206
306
  headers_section: Overskrifter
207
307
  mark_handled: Merk som håndtert
208
- mark_handled_confirm: Merk denne hendelsen som håndtert? Den vil bli arkivert og hoppes over ved avspilling.
308
+ mark_handled_confirm: Merke denne hendelsen som behandlet? Meldingen arkiveres, og handleren kjører den ikke.
209
309
  metadata: Metadata
210
310
  metadata_labels:
311
+ enqueued: 'Satt i kø:'
211
312
  last_read: 'Sist lest:'
313
+ published: 'Publisert:'
212
314
  read_count: 'Antall lesninger:'
213
315
  visible_at: 'Synlig fra:'
316
+ payload: Nyttelast
317
+ reasons:
318
+ handling_html: Behandles av %{handler} — hentet %{ago} · lease utløper %{time}
319
+ lease_expired_html: Lease utløpt (consumeren døde sannsynligvis) — leveres på nytt til %{handler}, forsøk %{attempt}
320
+ no_consumer_for_queue_html: Ingen kjørende consumer abonnerer på %{pattern} (%{handler})
321
+ no_consumers_html: Ingen frisk consumer kjører
322
+ orphaned_html: Feilet med %{error} i %{handler} — meldingen er ikke lenger i køen
323
+ paused_html: Køen er satt på pause
324
+ retrying_dlq_html: "%{handler} forsøk %{attempt}/%{max} feilet: %{error} — neste lesing flytter den til DLQ"
325
+ retrying_due_html: "%{handler} forsøk %{attempt}/%{max} feilet: %{error} — neste forsøk nå"
326
+ retrying_html: "%{handler} forsøk %{attempt}/%{max} feilet: %{error} — neste forsøk %{time}"
327
+ scheduled_html: Planlagt — behandles av %{handler} %{time}
328
+ waiting_html: 'Venter — %{count} foran · neste: %{handler}'
329
+ waiting_unknown_html: Venter på %{handler}
214
330
  reroute: Omdiriger
215
331
  reroute_confirm: Omdiriger denne hendelsen til en annen behandler?
216
332
  reroute_label: 'Målbehandler:'
333
+ states:
334
+ ready: Klar
335
+ retrying: Prøver igjen
336
+ running: Behandles
337
+ scheduled: Planlagt
338
+ tabs:
339
+ all: Alle
340
+ ready: Klar
341
+ retrying: Prøver igjen
342
+ running: Behandles
343
+ scheduled: Planlagt
344
+ tabs_label: Hendelsestilstander
345
+ view_failure: Vis feil
346
+ processed:
347
+ empty: Ingen hendelser behandlet ennå
348
+ headers:
349
+ actions: Handlinger
350
+ event_id: Hendelses-ID
351
+ handler: Behandler
352
+ reason: Årsak
353
+ state: Tilstand
354
+ reasons:
355
+ abandoned_html: Claim ble stille %{ago} — neste levering kjører handleren på nytt
356
+ completed_html: Fullført %{ago}
357
+ completed_legacy_html: Registrert %{ago} (enfase-claim; oppgrader med pgbus:add_processed_event_completion)
358
+ handling_html: Behandles — claim oppdatert %{ago}
359
+ replay: Spill av på nytt
360
+ replay_confirm: Lever denne hendelsen til handleren på nytt med en ny hendelses-ID? Handleren kjører igjen.
361
+ replay_unavailable:
362
+ no_handler: Handleren er ikke lenger registrert
363
+ not_archived: Ikke lenger i arkivet
364
+ states:
365
+ abandoned: Stille
366
+ completed: Fullført
367
+ handling: Behandles
217
368
  show:
218
369
  back: Tilbake til hendelser
219
370
  labels:
371
+ completed_at: Fullført
220
372
  event_id: Hendelses-ID
221
373
  handler: Behandler
222
374
  processed_at: Behandlet klokken
375
+ state: Tilstand
223
376
  not_found: Hendelse ikke funnet
224
377
  title: Hendelse %{event_id}
225
378
  helpers:
@@ -231,6 +384,7 @@ nb:
231
384
  bulk_select_row: Velg %{id}
232
385
  bulk_selected: valgt
233
386
  pagination:
387
+ label: Paginering
234
388
  next: Neste
235
389
  previous: Forrige
236
390
  showing: Viser %{from}–%{to} av %{total}
@@ -245,24 +399,50 @@ nb:
245
399
  healthy: Sunn
246
400
  stale: Utdatert
247
401
  stalled: Fastlåst
402
+ time:
403
+ absolute_format: "%Y-%m-%d %H:%M:%S %Z"
404
+ clock_format: "%H:%M"
405
+ future: om %{distance}
406
+ now: nå
407
+ past: for %{distance} siden
408
+ range:
409
+ days:
410
+ one: "%{count} dag"
411
+ other: "%{count} dager"
412
+ hours:
413
+ one: "%{count} time"
414
+ other: "%{count} timer"
415
+ minutes:
416
+ one: "%{count} minutt"
417
+ other: "%{count} minutter"
418
+ units:
419
+ days: "%{count}d"
420
+ hours: "%{count}t"
421
+ milliseconds: "%{count}ms"
422
+ minutes: "%{count}m"
423
+ seconds: "%{count}s"
248
424
  insights:
249
425
  show:
250
426
  charts:
251
- failed_to_load: Kunne ikke laste diagramdata
252
- latency: Køforsinkelse (ms)
427
+ captions:
428
+ latency: Jobbene ventet %{avg} i gjennomsnitt før en worker hentet dem, p95 %{p95}
429
+ status: "%{success} lyktes, %{failed} mislyktes, %{dead_lettered} i dead-letter"
430
+ throughput_html: "%{total} jobber de siste %{range}, topp på %{peak} jobber/min %{at}"
431
+ data_table: Datatabell
432
+ latency: Køforsinkelse
253
433
  latency_avg: Gj.snitt
254
434
  latency_p95: P95
255
435
  no_data: Ingen data ennå
256
436
  series_name: Jobber/min
257
437
  status_distribution: Statusfordeling
258
- throughput: Gjennomstrømning (jobber/min)
438
+ throughput: Gjennomstrømning
259
439
  description_html: Jobbprestasjonsmålinger for de siste %{range}
260
440
  latency_by_queue:
261
441
  empty: Ingen forsinkelsesdata ennå
262
442
  headers:
263
- avg: Gj.snitt (ms)
443
+ avg: Gj.snitt
264
444
  count: Antall
265
- p95: P95 (ms)
445
+ p95: P95
266
446
  queue: Kø
267
447
  title: Forsinkelse per kø
268
448
  live_streams:
@@ -282,6 +462,10 @@ nb:
282
462
  job_class: Jobbklasse
283
463
  max: Maks
284
464
  title: Sakte jobber (gj.snitt varighet)
465
+ statuses:
466
+ dead_lettered: I dead-letter
467
+ failed: Mislyktes
468
+ success: Lyktes
285
469
  streams:
286
470
  summary:
287
471
  active: Aktiv
@@ -310,6 +494,20 @@ nb:
310
494
  p99_latency: P99 Forsinkelse
311
495
  succeeded: Lyktes
312
496
  total_jobs: Totalt antall jobber
497
+ tables:
498
+ captions:
499
+ latency_minute: Køforsinkelse per minutt
500
+ latency_step: Køforsinkelse per %{step}
501
+ status: Jobber etter endelig status
502
+ throughput_minute: Jobber per minutt
503
+ throughput_step: Jobber per %{step}
504
+ headers:
505
+ avg: Gj.snitt
506
+ from: Fra
507
+ highest_p95: Høyeste P95
508
+ jobs: Jobber
509
+ share: Andel
510
+ status: Status
313
511
  time_ranges:
314
512
  1h: 1t
315
513
  24h: 24t
@@ -317,60 +515,87 @@ nb:
317
515
  7d: 7d
318
516
  title: Innsikt
319
517
  jobs:
320
- enqueued_table:
518
+ index:
519
+ discard_all: Forkast alle
520
+ discard_all_confirm: Forkast alle mislykkede jobber?
521
+ discard_all_enqueued_notice: Forkastet %{count} køede jobber og frigitt låsene.
522
+ discard_selected: Forkast valgte
523
+ discard_selected_confirm: Forkast valgte elementer?
524
+ discarded_selected:
525
+ one: Forkastet 1 valgt element.
526
+ other: Forkastet %{count} valgte elementer.
527
+ none_selected: Ingen elementer valgt.
528
+ retry_all: Prøv alle på nytt
529
+ retry_all_confirm: Prøv alle mislykkede jobber på nytt?
530
+ title: Jobber
531
+ list:
321
532
  arguments: Argumenter
322
533
  discard: Forkast
323
- discard_all: Forkast alle
324
- discard_all_confirm: Forkast alle køede jobber og frigi låsene? Dette kan ikke angres.
325
- discard_confirm: Forkaste denne meldingen?
326
- empty: Ingen kølagte jobber
534
+ discard_all_enqueued: Forkast alle i kø
535
+ discard_all_enqueued_confirm: Forkast alle køede jobber og frigi låsene? Dette kan ikke angres.
536
+ discard_confirm: Forkast denne jobben?
537
+ empty:
538
+ all: Ingen jobber
539
+ blocked: Ingen jobber blokkert av en samtidighetsgrense
540
+ ready: Ingen jobber venter på å kjøre
541
+ retrying: Ingen jobber venter på nytt forsøk
542
+ running: Ingen jobber kjører
543
+ scheduled: Ingen planlagte jobber
327
544
  full_json_payload: Full JSON-payload
328
545
  headers:
329
- enqueued: Kølagt
546
+ actions: Handlinger
547
+ attempts: Forsøk
330
548
  id: ID
331
- job_class: Jobbklasse
549
+ job: Jobb
332
550
  queue: Kø
333
- reads: Lesninger
551
+ reason: Neste kjøring / Årsak
552
+ state: Tilstand
334
553
  headers_section: Overskrifter
335
554
  job_id: 'Jobb-ID:'
336
555
  metadata: Metadata
337
556
  metadata_labels:
557
+ concurrency_key: 'Samtidighetsnøkkel:'
558
+ enqueued: 'Satt i kø:'
338
559
  last_read: 'Sist lest:'
339
560
  locale: 'Språk:'
340
561
  priority: 'Prioritet:'
341
- queue: 'Kø:'
342
562
  scheduled: 'Planlagt:'
343
563
  timezone: 'Tidssone:'
344
564
  visible_at: 'Synlig fra:'
345
- retry: Prøv igjen
346
- retry_confirm: Tilbakestill synlighetstidsavbrudd og prøv igjen?
347
- title: Kølagte jobber
348
- failed_table:
349
- discard: Forkast
350
- discard_confirm: Forkast denne jobben?
351
- empty: Ingen mislykkede jobber
352
- headers:
353
- actions: Handlinger
354
- error: Feil
355
- failed: Mislyktes
356
- id: ID
357
- queue: Kø
358
- retries: Forsøk
565
+ reasons:
566
+ blocked_html: Venter på en samtidighetsplass på %{key} (opptatt %{held}/%{limit}) · parkert %{ago}
567
+ blocked_no_slots_html: Venter på en samtidighetsplass på %{key} · parkert %{ago}
568
+ lease_expired_html: Lease utløpt (worker døde sannsynligvis) — leveres på nytt, forsøk %{attempt}
569
+ no_workers_html: Ingen frisk worker kjører
570
+ not_drained_html: Ingen worker tømmer denne køen
571
+ orphaned_html: Feilet med %{error} — meldingen er ikke lenger i køen
572
+ paused_html: Køen er satt på pause
573
+ retrying_dlq_html: 'Forsøk %{attempt}/%{max} feilet: %{error} — neste lesing flytter den til DLQ'
574
+ retrying_due_html: 'Forsøk %{attempt}/%{max} feilet: %{error} — neste forsøk nå'
575
+ retrying_html: 'Forsøk %{attempt}/%{max} feilet: %{error} — neste forsøk %{time}'
576
+ running_html: Hentet %{ago} · lease utløper %{time}
577
+ scheduled_html: Planlagt — kjører %{time}
578
+ waiting_html: Venter — %{count} foran
579
+ waiting_priority_html: Venter — %{count} foran med denne prioriteten
580
+ waiting_unknown_html: Venter på å bli hentet
359
581
  retry: Prøv på nytt
360
- title: Mislykkede jobber
361
- index:
362
- discard_all: Forkast alle
363
- discard_all_confirm: Forkast alle mislykkede jobber?
364
- discard_all_enqueued_notice: Forkastet %{count} køede jobber og frigitt låsene.
365
- discard_selected: Forkast valgte
366
- discard_selected_confirm: Forkast valgte elementer?
367
- discarded_selected:
368
- one: Forkastet 1 valgt element.
369
- other: Forkastet %{count} valgte elementer.
370
- none_selected: Ingen elementer valgt.
371
- retry_all: Prøv alle på nytt
372
- retry_all_confirm: Prøv alle mislykkede jobber på nytt?
373
- title: Jobber
582
+ retry_confirm: Tilbakestill synlighetstidsavbrudd og prøv igjen?
583
+ states:
584
+ blocked: Blokkert
585
+ ready: Klar
586
+ retrying: Prøver igjen
587
+ running: Kjører
588
+ scheduled: Planlagt
589
+ tabs:
590
+ all: Alle
591
+ blocked: Blokkert
592
+ ready: Klar
593
+ retrying: Prøver igjen
594
+ running: Kjører
595
+ scheduled: Planlagt
596
+ tabs_label: Jobbtilstander
597
+ view_failure: Vis feil
598
+ view_locks: Vis låser
374
599
  show:
375
600
  back: Tilbake til jobber
376
601
  backtrace: Tilbakekalling
@@ -423,6 +648,7 @@ nb:
423
648
  other: Forkast de %{count} jobbene som er parkert bak denne nøkkelen? De vil aldri kjøre.
424
649
  empty: Ingen samtidighetsnøkler i bruk
425
650
  headers:
651
+ actions: Handlinger
426
652
  in_use: I bruk
427
653
  key: Nøkkel
428
654
  lease: Leie
@@ -456,6 +682,7 @@ nb:
456
682
  discard_selected_confirm: Vil du forkaste valgte låser?
457
683
  empty: Ingen aktive låser
458
684
  headers:
685
+ actions: Handlinger
459
686
  age: Alder
460
687
  lock_key: Låsenøkkel
461
688
  msg_id: Meldings-ID
@@ -483,8 +710,6 @@ nb:
483
710
  pending: Venter
484
711
  published: Publisert
485
712
  stats:
486
- no_age: "—"
487
- oldest_age: "%{seconds}s"
488
713
  oldest_unpublished: Eldste upubliserte
489
714
  total: Totalt
490
715
  unpublished: Upublisert
@@ -493,18 +718,76 @@ nb:
493
718
  index:
494
719
  title: Prosesser
495
720
  processes_table:
721
+ capsule: kapsel %{capsule} · prosess %{process}
496
722
  empty: Ingen prosesser kjører
497
723
  headers:
498
- hostname: Vertsnavn
499
- kind: Type
500
- last_heartbeat: Siste hjertebank
501
- metadata: Metadata
502
- pid: PID
724
+ activity: Aktivitet
725
+ heartbeat: Hjerteslag
726
+ process: Prosess
727
+ recycle: Resirkulering
503
728
  status: Status
504
- rates:
505
- dequeued: hentet
506
- failed: mislyktes
507
- processed: behandlet
729
+ no_raw_metadata: Ingen andre metadata
730
+ raw_metadata: Andre metadata
731
+ started: Startet
732
+ under_supervisor: under supervisor %{pid}
733
+ uptime: oppe %{duration}
734
+ state:
735
+ activity:
736
+ buffered: "%{number} i buffer"
737
+ busy_slots: "%{busy}/%{capacity} plasser opptatt"
738
+ busy_threads: "%{busy}/%{capacity} tråder opptatt"
739
+ consumes: Konsumerer %{topics}
740
+ drains: Tømmer %{queues}
741
+ drains_all: Tømmer alle køer
742
+ failed_rate: "%{rate} feilet/s"
743
+ handled: "%{number} håndtert"
744
+ maintenance: Kjører vedlikehold hvert %{interval} (planlagte jobber, døde prosesser, arkiver)
745
+ outbox: Publiserer outbox-oppføringer
746
+ rate: "%{rate} jobber/s"
747
+ schedule:
748
+ one: Kjører %{count} gjentakende oppgave, sjekker hvert %{interval}
749
+ other: Kjører %{count} gjentakende oppgaver, sjekker hvert %{interval}
750
+ slots:
751
+ one: "%{count} plass"
752
+ other: "%{count} plasser"
753
+ supervises: Overvåker %{children}
754
+ supervises_none: Overvåker ingen prosesser på denne verten
755
+ threads:
756
+ one: "%{count} tråd"
757
+ other: "%{count} tråder"
758
+ kinds:
759
+ consumer:
760
+ one: "%{count} consumer"
761
+ other: "%{count} consumere"
762
+ dispatcher:
763
+ one: dispatcher
764
+ other: "%{count} dispatchere"
765
+ outbox_poller:
766
+ one: outbox-poller
767
+ other: "%{count} outbox-pollere"
768
+ scheduler:
769
+ one: scheduler
770
+ other: "%{count} schedulere"
771
+ worker:
772
+ one: "%{count} worker"
773
+ other: "%{count} workere"
774
+ next:
775
+ stale_reaped: sannsynligvis død; fjernes ved dispatcherens neste opprydding (innen %{within})
776
+ stale_unreaped: sannsynligvis død; ingen levende dispatcher til å fjerne den
777
+ stalled_maintenance: planlagte jobber, opprydding av døde prosesser og arkivkomprimering står stille
778
+ stalled_schedule: gjentakende oppgaver blir ikke satt i kø
779
+ stalled_standalone: ingen supervisor til å starte den på nytt
780
+ stalled_supervised: supervisorens watchdog starter den på nytt
781
+ reasons:
782
+ healthy_detection_off_html: Hjerteslag %{ago} (grense %{limit}) · stoppdeteksjon av
783
+ healthy_heartbeat_html: Hjerteslag %{ago} (grense %{limit})
784
+ healthy_loop_html: Løkken tikket %{ago} (grense %{limit})
785
+ stale_html: Ingen hjerteslag på %{age} (grense %{limit})
786
+ stalled_html: Løkken tikket sist %{ago} (grense %{limit})
787
+ recycle:
788
+ jobs: "%{done} / %{limit} jobber"
789
+ lifetime: oppe %{uptime} / %{limit}
790
+ memory: "%{used} / %{limit} MB"
508
791
  queues:
509
792
  destroy:
510
793
  success: Køen %{name} slettet.
@@ -517,59 +800,70 @@ nb:
517
800
  headers:
518
801
  actions: Handlinger
519
802
  depth: Dybde
520
- newest: Nyeste (s)
521
- oldest_claimable: Eldste tilgjengelig (s)
803
+ newest: Nyeste
804
+ oldest_claimable: Eldste tilgjengelig
522
805
  parked: Parkert
523
806
  queue: Kø
524
807
  total_ever: Totalt noensinne
525
808
  visible: Synlig
526
809
  pause: Pause
527
810
  pause_confirm: Pause behandling for %{name}?
528
- paused: Pauset
529
811
  purge: Rens
530
812
  purge_confirm: Rens alle meldinger fra %{name}?
531
813
  resume: Gjenoppta
532
814
  show:
533
- arguments: Argumenter
534
815
  back: Tilbake til køer
535
816
  delete_confirm: Slette denne køen permanent? Dette kan ikke angres.
536
817
  delete_queue: Slett kø
537
- depth: 'Dybde:'
538
- discard: Forkast
539
- discard_confirm: Forkaste denne meldingen?
540
- empty: Køen er tom
541
- full_json_payload: Full JSON-payload
542
- headers:
543
- enqueued: I kø
544
- id: ID
545
- job_class: Jobbklasse
546
- reads: Lesninger
547
- vt: VT
548
- headers_section: Overskrifter
549
- job_id: 'Jobb-ID:'
818
+ dlq_link: Prøv på nytt eller forkast dem på Dead Letter-siden
819
+ dlq_pointer:
820
+ one: Dead letter-kø for %{logical} — %{count} melding.
821
+ other: Dead letter-kø for %{logical} — %{count} meldinger.
550
822
  message_discard_failed: Kunne ikke forkaste meldingen.
551
823
  message_discarded: Melding forkastet.
552
824
  message_retried: Meldingens synlighet tilbakestilt.
553
825
  message_retry_failed: Kunne ikke prøve meldingen igjen.
554
- metadata: Metadata
555
- metadata_labels:
556
- last_read: 'Sist lest:'
557
- locale: 'Språk:'
558
- priority: 'Prioritet:'
559
- queue: 'Kø:'
560
- scheduled: 'Planlagt:'
561
- timezone: 'Tidssone:'
562
- visible_at: 'Synlig fra:'
563
- oldest: 'Eldste:'
564
- oldest_claimable: 'Eldste tilgjengelig:'
565
- parked: 'Parkert:'
826
+ metrics:
827
+ claimable: Klare nå
828
+ depth: Dybde
829
+ oldest: Eldste
830
+ oldest_claimable: Eldste klare
831
+ parked: Parkert
832
+ total: Totalt noensinne
833
+ other_levels: 'Andre prioritetsnivåer:'
566
834
  pause: Pause
567
835
  pause_confirm: Pause behandling?
568
836
  purge_confirm: Rens alle meldinger?
569
837
  purge_queue: Rens kø
570
838
  resume: Gjenoppta
571
- retry: Prøv igjen
572
- retry_confirm: Tilbakestill synlighetstidsavbrudd og prøv igjen?
839
+ summary:
840
+ backlog_html: "%{visible} klare til henting nå, eldste har ventet %{age} · %{parked} parkert (planlagt eller nytt forsøk)"
841
+ backlog_parked_only_html: Ingenting klart til henting nå · %{parked} parkert (planlagt eller nytt forsøk)
842
+ dlq_html: 'Dead letter-kø for %{logical}: jobber havner her etter %{max} mislykkede forsøk'
843
+ drained_by_html:
844
+ one: Tømmes av %{capsules} (%{count} frisk worker)
845
+ other: Tømmes av %{capsules} (%{count} friske workers)
846
+ drained_live_html:
847
+ one: Tømmes av %{count} frisk worker som lytter på denne køen
848
+ other: Tømmes av %{count} friske workers som lytter på denne køen
849
+ drained_wildcard_html:
850
+ one: Tømmes av en jokertegn-worker-kapsel (%{count} frisk worker)
851
+ other: Tømmes av en jokertegn-worker-kapsel (%{count} friske workers)
852
+ empty_html: Ingenting venter
853
+ handler_html: Hendelsesbehandler-kø — tømmes av consumers (%{count} friske)
854
+ no_consumers_html:
855
+ one: Hendelsesbehandler-kø uten frisk consumer — %{count} hendelse venter
856
+ other: Hendelsesbehandler-kø uten frisk consumer — %{count} hendelser venter
857
+ no_workers_html:
858
+ one: Ingen frisk worker kjører — %{count} jobb kan hentes, men ingenting henter den
859
+ other: Ingen frisk worker kjører — %{count} jobber kan hentes, men ingenting henter dem
860
+ not_drained_html: Ingen worker-kapsel tømmer denne køen — jobber venter til en er konfigurert
861
+ paused_circuit_breaker_html: 'Automatisk satt på pause %{ago} etter %{failures} feil på rad — gjenopptas %{time} (utløsning #%{trip})'
862
+ paused_operator_html: Satt på pause %{ago} — %{reason}
863
+ paused_operator_no_reason_html: Satt på pause %{ago} av en operatør
864
+ priority_level_html: Prioritetsnivå %{level} av %{logical}
865
+ stream_html: Stream-kø — leveres med peek, tømmes ikke av workers
866
+ summary_label: Køoversikt
573
867
  table_health:
574
868
  headers:
575
869
  bloat: Bloat
@@ -579,8 +873,6 @@ nb:
579
873
  table: Tabell
580
874
  oldest_txn: 'Eldste åpne transaksjon:'
581
875
  title: Tabellhelse
582
- total: 'Totalt:'
583
- visible: 'Synlig:'
584
876
  recurring_tasks:
585
877
  index:
586
878
  task_count: