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 @@ fi:
41
41
  title: Aktiiviset prosessit
42
42
  queue_health:
43
43
  dead_tuples: Kuolleet tuplat
44
+ empty: Ei vielä mitattavia jonotauluja
44
45
  headers:
45
46
  bloat: Bloat
46
47
  dead: Kuolleet
@@ -60,14 +61,34 @@ fi:
60
61
  one: "%{count} taulu tarvitsee vacuum-käsittelyn"
61
62
  other: "%{count} taulua tarvitsee vacuum-käsittelyn"
62
63
  title: Jonon kunto
64
+ words:
65
+ bloat:
66
+ critical: "%{ratio} taulussa %{table} — lukeminen hidastuu; aja vacuum nyt (kriittinen yli %{critical}, varoittaa yli %{warn})"
67
+ none: Ei vielä mitattavaa
68
+ ok: "%{ratio} taulussa %{table} — kunnossa (varoittaa yli %{warn}, kriittinen yli %{critical})"
69
+ warn: "%{ratio} taulussa %{table} — vacuum tarpeen (varoittaa yli %{warn}, kriittinen yli %{critical})"
70
+ dead_tuples:
71
+ ok: Kunnossa — varoittaa yli %{limit} kuolleesta rivistä
72
+ warn: Yli %{limit} — autovacuum on jäljessä; alla oleva taulu näyttää missä
73
+ transaction:
74
+ critical: Yli %{critical} — vacuum ei voi vapauttaa rivejä ennen kuin se päättyy; etsi se pg_stat_activity-näkymästä (varoittaa %{warn} kohdalla; kuntoarvio heikkenee %{verdict} jälkeen)
75
+ none: Ei avointa transaktiota — vacuum voi vapauttaa kaikki kuolleet rivit (varoittaa %{warn} kohdalla, hälyttää %{critical} kohdalla; kuntoarvio heikkenee %{verdict} jälkeen)
76
+ ok: Kunnossa — varoittaa %{warn} kohdalla, hälyttää %{critical} kohdalla; kuntoarvio heikkenee %{verdict} jälkeen
77
+ warn: Yli %{warn} — pitkä transaktio estää vacuumia vapauttamasta rivejä (hälyttää %{critical} kohdalla; kuntoarvio heikkenee %{verdict} jälkeen)
78
+ vacuum:
79
+ critical: Yli %{critical} — autovacuum ei yllä näihin tauluihin; tarkista sen asetukset (varoittaa %{warn} jälkeen)
80
+ ok: Kunnossa — varoittaa %{warn} jälkeen, kriittinen %{critical} jälkeen
81
+ unknown: Vacuumia ei ole koskaan ajettu, tai tilastot eivät ole saatavilla
82
+ warn: Yli %{warn} — autovacuum saattaa jäädä jälkeen (kriittinen %{critical} jälkeen)
63
83
  worst_bloat: Pahin Bloat
64
84
  queues_table:
65
85
  empty: Jonot eivät löytyneet
66
86
  headers:
67
87
  depth: Syvyys
68
- oldest_claimable: Vanhin saatavilla (s)
88
+ oldest_claimable: Vanhin saatavilla
69
89
  parked: Pysäköidyt
70
90
  queue: Jono
91
+ status: Tila
71
92
  total: Yhteensä
72
93
  visible: Näkyvissä
73
94
  title: Jonot
@@ -75,7 +96,9 @@ fi:
75
96
  recent_failures:
76
97
  empty: Ei virheitä
77
98
  headers:
99
+ attempt: Yritys
78
100
  error: Virhe
101
+ job: Job
79
102
  queue: Jono
80
103
  when: Milloin
81
104
  title: Viimeaikaiset virheet
@@ -83,19 +106,72 @@ fi:
83
106
  show:
84
107
  title: Kojelauta
85
108
  stats_cards:
109
+ dead_lettered: Dead-lettered
110
+ dlq_newest_html: 'uusin: %{error_class} työssä %{job} %{ago}'
111
+ dlq_newest_legacy_html: 'uusin: %{job} %{ago} — syytä ei tallennettu'
112
+ dlq_newest_no_error_html: 'uusin: %{job} %{ago} — virhettä ei tallennettu'
113
+ dlq_none: Mikään ei ole dead-lettered
114
+ dlq_see_why: avaa dead letter -sivu nähdäksesi, miksi kukin kuoli
86
115
  enqueued: Lisätty jonoon
87
- failed_dlq: Epäonnistuneet / DLQ
88
- failed_dlq_labels: Epäonnistuneet / Dead Lettered
116
+ enqueued_detail: "%{claimable} otettavissa nyt · %{waiting} ajastettu, käynnissä tai uudelleenyrityksessä"
117
+ enqueued_paused:
118
+ one: "%{count} keskeytetyissä jonoissa"
119
+ other: "%{count} keskeytetyissä jonoissa"
89
120
  parked_jobs: Pysäköidyt työt
90
121
  parked_jobs_oldest: vanhin %{age}
91
122
  processes: Prosessit
123
+ processes_detail: "%{healthy} terveitä · %{stalled} jumissa · %{stale} vanhentunutta"
124
+ processes_none: Mikään ei ole käynnissä — yhtään työtä ei oteta
125
+ processes_stale: vanhentuneet prosessit ovat lakanneet lähettämästä sydämenlyöntejä; niiden käynnissä olevat työt ajetaan uudelleen, kun niiden visibility timeout umpeutuu
92
126
  queues: Jonot
127
+ queues_detail: "%{paused} keskeytetty · %{dlq} dead letter"
128
+ queues_undrained:
129
+ one: "%{count} sisältää töitä, joita mikään ei tyhjennä"
130
+ other: "%{count} sisältää töitä, joita mikään ei tyhjennä"
93
131
  recurring: Toistuva
132
+ recurring_detail: Tehtävät, jotka ajastin lisää jonoon aikataulunsa mukaan
133
+ retrying: Uudelleenyrityksessä
134
+ retrying_due:
135
+ one: "%{count} erääntyy nyt"
136
+ other: "%{count} erääntyy nyt"
137
+ retrying_newest: uusin virhe %{error_class}
138
+ retrying_next_html: seuraava yritys %{time}
139
+ retrying_none: Mikään ei ole uudelleenyrityksessä
94
140
  throughput: Läpäisykyky
95
- throughput_unit: viestit/s
96
- view_tasks: Näytä tehtävät
97
- visible: näkyvissä
141
+ throughput_detail: tehtäviä/min viimeisen %{minutes} min aikana
142
+ throughput_unavailable: vaatii työtilastot (rails g pgbus:add_job_stats)
143
+ verdict:
144
+ links:
145
+ dlq: Dead letterit
146
+ processes: Prosessit
147
+ look_at: 'Katso:'
148
+ meaning:
149
+ degraded: Jokin vaatii huomiota, mutta työt etenevät yhä. /readyz vastaa yhä valmis.
150
+ ok: Jokainen jono, jossa on työtä, tyhjenee, ja jokainen prosessi lähettää sydämenlyöntejä. /readyz vastaa valmis.
151
+ stalled: Töitä odottaa, eikä mikään ota niitä. /readyz vastaa ei valmis (503).
152
+ statuses:
153
+ degraded: DEGRADED
154
+ ok: OK
155
+ stalled: STALLED
156
+ title: 'Kunto: %{status}'
157
+ unavailable: Kuntoarvio ei ole saatavilla — sen taustalla olevia tarkistuksia ei voitu lukea; katso loki
98
158
  dead_letter:
159
+ detail:
160
+ backtrace: Backtrace (ensimmäiset rivit)
161
+ died: 'Kuoli:'
162
+ dlq: 'Dead letter -jono:'
163
+ error_from_attempt: Virhe yrityksestä %{attempt}; yritykset %{from}–%{to} eivät tallentaneet virhettä.
164
+ source: 'Siirtäjä:'
165
+ sources:
166
+ consumer: tapahtumakuluttaja
167
+ worker: job-worker
168
+ why: Miksi se kuoli
169
+ filters:
170
+ all: Kaikki
171
+ clear_error_class: Poista suodatin
172
+ error_class: 'Virhe: %{error_class}'
173
+ filter_error_class: Näytä vain %{error_class}
174
+ label: Suodata dead letterit
99
175
  index:
100
176
  discard_all: Hylkää kaikki
101
177
  discard_all_confirm: Hylätäänkö kaikki DLQ-viestit pysyvästi?
@@ -115,10 +191,12 @@ fi:
115
191
  empty: Dead letter -jono on tyhjä
116
192
  full_json_payload: Täysi JSON-payload
117
193
  headers:
118
- enqueued: Lisätty jonoon
194
+ actions: Toiminnot
195
+ attempts: Yritykset
196
+ died: Kuoli
119
197
  id: ID
120
- job_class: Työluokka
121
- reads: Lukee
198
+ job: Job
199
+ reason: Syy
122
200
  source_queue: Lähdejono
123
201
  headers_section: Otsikot
124
202
  job_id: 'Työ ID:'
@@ -131,6 +209,16 @@ fi:
131
209
  visible_at: 'Näkyvissä klo:'
132
210
  retry: Yritä uudelleen
133
211
  total_label: viestiä dead letter -jonossa
212
+ view: Näytä
213
+ reasons:
214
+ error_earlier_attempt_html: 'Uudelleenyritykset käytetty. Viimeisin tallennettu virhe, yrityksestä %{error_attempt}: %{error_class}: %{error_message}'
215
+ error_html: 'Uudelleenyritykset käytetty. Viimeisin virhe: %{error_class}: %{error_message}'
216
+ event_no_error_html: Käsittelijä epäonnistui %{attempts} toimituksessa (enintään %{max}) — käsittelijän virhettä ei tallennettu
217
+ no_error_recorded_html: Ylitti %{max} uudelleenyritystä %{attempts} lukukerran jälkeen — virhettä ei tallennettu; jokainen epäonnistunut yritys kaatui ennen kuin ehti raportoida
218
+ not_recorded_html: Syytä ei tallennettu (siirretty DLQ:hun ennen pgbus %{version} -versiota)
219
+ retried_before:
220
+ one: Yritetty uudelleen DLQ:sta kerran aiemmin.
221
+ other: Yritetty uudelleen DLQ:sta %{count} kertaa aiemmin.
134
222
  show:
135
223
  back: Takaisin DLQ:hon
136
224
  context: Konteksti
@@ -138,8 +226,10 @@ fi:
138
226
  discard_confirm: Hylätään pysyvästi?
139
227
  headers: Otsikot
140
228
  labels:
229
+ attempts: Yritykset
230
+ died: Kuoli
231
+ dlq: Dead letter -jono
141
232
  enqueued_at: Jonoon lisätty
142
- read_count: Lukukerrat
143
233
  source_queue: Lähdejono
144
234
  visibility_timeout: Näkyvyysaikaraja
145
235
  not_found: Viestia ei löytynyt
@@ -163,6 +253,7 @@ fi:
163
253
  mark_handled_failed: Tapahtumaa ei voitu merkitä käsitellyksi.
164
254
  marked_handled: Tapahtuma merkitty käsitellyksi.
165
255
  none_selected: Ei tapahtumia valittuna.
256
+ payload_redacted: 'Ei tallennettu: payload sisältää yhä peitettyjä ([FILTERED]) arvoja, jotka korvaisivat oikeat.'
166
257
  payload_update_failed: Kuormaa ei voitu päivittää. Tarkista, että JSON on kelvollinen.
167
258
  payload_updated: Kuorma päivitetty ja tapahtuma uudelleen jonotettu.
168
259
  replay_failed: Tapahtumaa ei löytynyt tai sitä ei voitu toistaa.
@@ -170,56 +261,118 @@ fi:
170
261
  reroute_failed: Tapahtumaa ei voitu uudelleenreitittää.
171
262
  rerouted: Tapahtuma uudelleenreititetty kohdekäsittelijälle.
172
263
  index:
173
- discard_selected: Hylkää valitut
174
- discard_selected_confirm: Hylätäänkö valitut tapahtumat?
175
- pending_empty: Ei odottavia tapahtumia
176
- pending_headers:
177
- enqueued: Jonotettu
178
- handler_queue: Käsittelijäjono
179
- id: ID
180
- reads: Lukukerrat
181
- routing_key: Reitityksen avain
182
264
  pending_title: Odotettavat tapahtumat
183
- processed_empty: Ei vielä käsiteltyjä tapahtumia
184
- processed_headers:
185
- event_id: Tapahtuman tunnus
186
- handler: Käsittelijä
187
- processed_at: Käsitelty klo
188
265
  processed_title: Käsitellyt tapahtumat
266
+ subscribers:
267
+ covered: Käynnissä oleva consumer käsittelee
268
+ uncovered: Mikään käynnissä oleva consumer ei kata tätä mallia
269
+ unknown: Consumer-kattavuus tuntematon
270
+ view_pending: Näytä odottavat
189
271
  subscribers_empty: Ei rekisteröityjä tilaajia
190
272
  subscribers_headers:
273
+ consumer: Consumer
191
274
  handler: Käsittelijä
192
275
  pattern: Malli
276
+ pending: Odottavat
193
277
  queue: Jono
194
278
  subscribers_title: Rekisteröidyt tilaajat
195
279
  title: Tapahtumat
196
- pending_table:
197
- arguments: Kuorma
280
+ list:
198
281
  context: Konteksti
199
282
  discard: Hylkää
200
283
  discard_confirm: Hylätäänkö tämä tapahtuma? Se arkistoidaan.
284
+ discard_failure_confirm: Hylätäänkö tämä epäonnistunut tapahtuma? Sen viesti ei ole enää jonossa.
285
+ discard_selected: Hylkää valitut
286
+ discard_selected_confirm: Hylätäänkö valitut tapahtumat?
201
287
  edit_payload: Muokkaa ja yritä uudelleen
202
288
  edit_payload_confirm: Päivitetäänkö kuorma ja uudelleen jonotetaanko tämä tapahtuma?
203
289
  edit_payload_label: 'JSON-kuorma:'
290
+ empty:
291
+ all: Ei odottavia tapahtumia
292
+ ready: Ei käsittelyä odottavia tapahtumia
293
+ retrying: Ei uudelleenyritystä odottavia tapahtumia
294
+ running: Ei käsittelyssä olevia tapahtumia
295
+ scheduled: Ei ajastettuja tapahtumia
204
296
  event_id: 'Tapahtuman ID:'
205
297
  full_json_payload: Täysi JSON-kuorma
298
+ headers:
299
+ actions: Toiminnot
300
+ attempts: Yritykset
301
+ event: Tapahtuma
302
+ handler: Käsittelijä
303
+ id: ID
304
+ reason: Seuraava ajo / Syy
305
+ state: Tila
206
306
  headers_section: Otsikot
207
307
  mark_handled: Merkitse käsitellyksi
208
- mark_handled_confirm: Merkitäänkö tämä tapahtuma käsitellyksi? Se arkistoidaan ja ohitetaan toistossa.
308
+ mark_handled_confirm: Merkitäänkö tämä tapahtuma käsitellyksi? Viesti arkistoidaan, eikä käsittelijä suorita sitä.
209
309
  metadata: Metatiedot
210
310
  metadata_labels:
311
+ enqueued: 'Jonoon lisätty:'
211
312
  last_read: 'Viimeksi luettu:'
313
+ published: 'Julkaistu:'
212
314
  read_count: 'Lukukerrat:'
213
315
  visible_at: 'Näkyvissä:'
316
+ payload: Kuorma
317
+ reasons:
318
+ handling_html: "%{handler} käsittelee — haettu %{ago} · lease päättyy %{time}"
319
+ lease_expired_html: Lease päättyi (consumer luultavasti kaatui) — toimitetaan uudelleen käsittelijälle %{handler}, yritys %{attempt}
320
+ no_consumer_for_queue_html: Mikään käynnissä oleva consumer ei tilaa mallia %{pattern} (%{handler})
321
+ no_consumers_html: Yhtään tervettä consumeria ei ole käynnissä
322
+ orphaned_html: Epäonnistui virheellä %{error} käsittelijässä %{handler} — viesti ei ole enää jonossa
323
+ paused_html: Jono on keskeytetty
324
+ retrying_dlq_html: "%{handler} yritys %{attempt}/%{max} epäonnistui: %{error} — seuraava luku siirtää sen DLQ:hun"
325
+ retrying_due_html: "%{handler} yritys %{attempt}/%{max} epäonnistui: %{error} — seuraava yritys nyt"
326
+ retrying_html: "%{handler} yritys %{attempt}/%{max} epäonnistui: %{error} — seuraava yritys %{time}"
327
+ scheduled_html: Ajastettu — %{handler} käsittelee %{time}
328
+ waiting_html: 'Odottaa — %{count} edellä · seuraavaksi: %{handler}'
329
+ waiting_unknown_html: Odottaa käsittelijää %{handler}
214
330
  reroute: Uudelleenreititys
215
331
  reroute_confirm: Uudelleenreititetäänkö tämä tapahtuma toiselle käsittelijälle?
216
332
  reroute_label: 'Kohdekäsittelijä:'
333
+ states:
334
+ ready: Valmiina
335
+ retrying: Uudelleenyritys
336
+ running: Käsittelyssä
337
+ scheduled: Ajastettu
338
+ tabs:
339
+ all: Kaikki
340
+ ready: Valmiina
341
+ retrying: Uudelleenyritys
342
+ running: Käsittelyssä
343
+ scheduled: Ajastetut
344
+ tabs_label: Tapahtumien tilat
345
+ view_failure: Näytä virhe
346
+ processed:
347
+ empty: Ei vielä käsiteltyjä tapahtumia
348
+ headers:
349
+ actions: Toiminnot
350
+ event_id: Tapahtuman tunnus
351
+ handler: Käsittelijä
352
+ reason: Syy
353
+ state: Tila
354
+ reasons:
355
+ abandoned_html: Claim hiljeni %{ago} — seuraava toimitus suorittaa käsittelijän uudelleen
356
+ completed_html: Valmis %{ago}
357
+ completed_legacy_html: Kirjattu %{ago} (yksivaiheinen claim; päivitä komennolla pgbus:add_processed_event_completion)
358
+ handling_html: Käsittelyssä — claim päivitetty %{ago}
359
+ replay: Toista
360
+ replay_confirm: Toimitetaanko tämä tapahtuma uudelleen käsittelijälleen uudella tapahtumatunnuksella? Käsittelijä suoritetaan uudelleen.
361
+ replay_unavailable:
362
+ no_handler: Käsittelijä ei ole enää rekisteröity
363
+ not_archived: Ei enää arkistossa
364
+ states:
365
+ abandoned: Hiljainen
366
+ completed: Valmis
367
+ handling: Käsittelyssä
217
368
  show:
218
369
  back: Takaisin tapahtumiin
219
370
  labels:
371
+ completed_at: Valmistui
220
372
  event_id: Tapahtuman tunnus
221
373
  handler: Käsittelijä
222
374
  processed_at: Käsitelty klo
375
+ state: Tila
223
376
  not_found: Tapahtumaa ei löytynyt
224
377
  title: Tapahtuma %{event_id}
225
378
  helpers:
@@ -231,6 +384,7 @@ fi:
231
384
  bulk_select_row: Valitse %{id}
232
385
  bulk_selected: valittu
233
386
  pagination:
387
+ label: Sivutus
234
388
  next: Seuraava
235
389
  previous: Edellinen
236
390
  showing: Näytetään %{from}–%{to} / %{total}
@@ -245,24 +399,50 @@ fi:
245
399
  healthy: Toimiva
246
400
  stale: Vanha
247
401
  stalled: Juuttunut
402
+ time:
403
+ absolute_format: "%Y-%m-%d %H:%M:%S %Z"
404
+ clock_format: "%H:%M"
405
+ future: "%{distance} päästä"
406
+ now: nyt
407
+ past: "%{distance} sitten"
408
+ range:
409
+ days:
410
+ one: "%{count} päivä"
411
+ other: "%{count} päivää"
412
+ hours:
413
+ one: "%{count} tunti"
414
+ other: "%{count} tuntia"
415
+ minutes:
416
+ one: "%{count} minuutti"
417
+ other: "%{count} minuuttia"
418
+ units:
419
+ days: "%{count}pv"
420
+ hours: "%{count}h"
421
+ milliseconds: "%{count}ms"
422
+ minutes: "%{count}min"
423
+ seconds: "%{count}s"
248
424
  insights:
249
425
  show:
250
426
  charts:
251
- failed_to_load: Latauksen kaavioaineisto epäonnistui
252
- latency: Jon viive (ms)
427
+ captions:
428
+ latency: Työt odottivat keskimäärin %{avg}, ennen kuin worker otti ne, p95 %{p95}
429
+ status: "%{success} onnistui, %{failed} epäonnistui, %{dead_lettered} dead-lettered"
430
+ throughput_html: "%{total} työtä viimeisen %{range} aikana, huippu %{peak} tehtävää/min %{at}"
431
+ data_table: Taulukko
432
+ latency: Jonon viive
253
433
  latency_avg: Keskim.
254
434
  latency_p95: P95
255
435
  no_data: Ei vielä tietoja
256
436
  series_name: Tehtäviä/min
257
437
  status_distribution: Tilajakauma
258
- throughput: Kapasiteetti (tehtäviä/min)
438
+ throughput: Läpäisykyky
259
439
  description_html: Työsuorituksen mittarit viimeiseltä %{range}
260
440
  latency_by_queue:
261
441
  empty: Ei viivetietoja vielä
262
442
  headers:
263
- avg: Keskim. (ms)
443
+ avg: Keskim.
264
444
  count: Määrä
265
- p95: P95 (ms)
445
+ p95: P95
266
446
  queue: Jono
267
447
  title: Viive jonon mukaan
268
448
  live_streams:
@@ -282,6 +462,10 @@ fi:
282
462
  job_class: Tehtäväluokka
283
463
  max: Maksimi
284
464
  title: Hitaimmat työn luokat (keskimääräinen kesto)
465
+ statuses:
466
+ dead_lettered: Dead-lettered
467
+ failed: Epäonnistui
468
+ success: Onnistui
285
469
  streams:
286
470
  summary:
287
471
  active: Aktiivinen
@@ -310,6 +494,20 @@ fi:
310
494
  p99_latency: P99-viive
311
495
  succeeded: Onnistuneet
312
496
  total_jobs: Yhteensä töitä
497
+ tables:
498
+ captions:
499
+ latency_minute: Jonon viive minuutissa
500
+ latency_step: Jonon viive per %{step}
501
+ status: Työt lopullisen tilan mukaan
502
+ throughput_minute: Töitä minuutissa
503
+ throughput_step: Töitä per %{step}
504
+ headers:
505
+ avg: Keskim.
506
+ from: Alkaen
507
+ highest_p95: Korkein p95
508
+ jobs: Työt
509
+ share: Osuus
510
+ status: Tila
313
511
  time_ranges:
314
512
  1h: 1h
315
513
  24h: 24h
@@ -317,60 +515,87 @@ fi:
317
515
  7d: 7d
318
516
  title: Näkemykset
319
517
  jobs:
320
- enqueued_table:
518
+ index:
519
+ discard_all: Hylkää kaikki
520
+ discard_all_confirm: Hylätäänkö kaikki epäonnistuneet työt?
521
+ discard_all_enqueued_notice: Hylättiin %{count} jonossa olevaa tehtävää ja vapautettiin lukot.
522
+ discard_selected: Hylkää valitut
523
+ discard_selected_confirm: Hylätäänkö valitut kohteet?
524
+ discarded_selected:
525
+ one: Hylättiin 1 valittu kohde.
526
+ other: Hylättiin %{count} valittua kohdetta.
527
+ none_selected: Ei valittuja kohteita.
528
+ retry_all: Yritä uudelleen kaikki
529
+ retry_all_confirm: Yritetäänkö uudelleen kaikki epäonnistuneet työt?
530
+ title: Työt
531
+ list:
321
532
  arguments: Argumentit
322
533
  discard: Hylkää
323
- discard_all: Hylkää kaikki
324
- discard_all_confirm: Hylkää kaikki jonossa olevat tehtävät ja vapauta lukot? Tätä ei voi perua.
325
- discard_confirm: Hylätä tämä viesti?
326
- empty: Ei jonotettuja töitä
534
+ discard_all_enqueued: Hylkää kaikki jonossa olevat
535
+ discard_all_enqueued_confirm: Hylkää kaikki jonossa olevat tehtävät ja vapauta lukot? Tätä ei voi perua.
536
+ discard_confirm: Hylätäänkö tämä työ?
537
+ empty:
538
+ all: Ei töitä
539
+ blocked: Ei rinnakkaisuusrajan estämiä töitä
540
+ ready: Ei ajoa odottavia töitä
541
+ retrying: Ei uudelleenyritystä odottavia töitä
542
+ running: Ei käynnissä olevia töitä
543
+ scheduled: Ei ajastettuja töitä
327
544
  full_json_payload: Täysi JSON-payload
328
545
  headers:
329
- enqueued: Jonotettu
546
+ actions: Toiminnot
547
+ attempts: Yritykset
330
548
  id: ID
331
- job_class: Työn luokka
549
+ job: Työ
332
550
  queue: Jono
333
- reads: Lukemiset
551
+ reason: Seuraava ajo / Syy
552
+ state: Tila
334
553
  headers_section: Otsikot
335
554
  job_id: 'Työn ID:'
336
555
  metadata: Metatiedot
337
556
  metadata_labels:
557
+ concurrency_key: 'Rinnakkaisuusavain:'
558
+ enqueued: 'Jonoon lisätty:'
338
559
  last_read: 'Viimeksi luettu:'
339
560
  locale: 'Alue:'
340
561
  priority: 'Prioriteetti:'
341
- queue: 'Jono:'
342
562
  scheduled: 'Aikataulutettu:'
343
563
  timezone: 'Aikavyöhyke:'
344
564
  visible_at: 'Näkyvissä:'
565
+ reasons:
566
+ blocked_html: Odottaa rinnakkaisuuspaikkaa avaimelle %{key} (varattu %{held}/%{limit}) · pysäköity %{ago}
567
+ blocked_no_slots_html: Odottaa rinnakkaisuuspaikkaa avaimelle %{key} · pysäköity %{ago}
568
+ lease_expired_html: Vuokra vanhentui (worker luultavasti kaatui) — toimitetaan uudelleen, yritys %{attempt}
569
+ no_workers_html: Yksikään terve worker ei ole käynnissä
570
+ not_drained_html: Mikään worker ei käsittele tätä jonoa
571
+ orphaned_html: 'Epäonnistui: %{error} — viesti ei ole enää jonossa'
572
+ paused_html: Jono on keskeytetty
573
+ retrying_dlq_html: 'Yritys %{attempt}/%{max} epäonnistui: %{error} — seuraava luku siirtää sen DLQ:hun'
574
+ retrying_due_html: 'Yritys %{attempt}/%{max} epäonnistui: %{error} — seuraava yritys nyt'
575
+ retrying_html: 'Yritys %{attempt}/%{max} epäonnistui: %{error} — seuraava yritys %{time}'
576
+ running_html: Noudettu %{ago} · vuokra vanhenee %{time}
577
+ scheduled_html: Ajastettu — ajetaan %{time}
578
+ waiting_html: Odottaa — %{count} edellä
579
+ waiting_priority_html: Odottaa — %{count} edellä tällä prioriteetilla
580
+ waiting_unknown_html: Odottaa noutoa
345
581
  retry: Yritä uudelleen
346
582
  retry_confirm: Nollaa näkyvyysaika ja yritä uudelleen?
347
- title: Jonotetut työt
348
- failed_table:
349
- discard: Hylkää
350
- discard_confirm: Hylätäänkö tämä työ?
351
- empty: Ei epäonnistuneita töitä
352
- headers:
353
- actions: Toiminnot
354
- error: Virhe
355
- failed: Epäonnistunut
356
- id: ID
357
- queue: Jono
358
- retries: Uudelleenyritykset
359
- retry: Yritä uudelleen
360
- title: Epäonnistuneet työt
361
- index:
362
- discard_all: Hylkää kaikki
363
- discard_all_confirm: Hylätäänkö kaikki epäonnistuneet työt?
364
- discard_all_enqueued_notice: Hylättiin %{count} jonossa olevaa tehtävää ja vapautettiin lukot.
365
- discard_selected: Hylkää valitut
366
- discard_selected_confirm: Hylätäänkö valitut kohteet?
367
- discarded_selected:
368
- one: Hylättiin 1 valittu kohde.
369
- other: Hylättiin %{count} valittua kohdetta.
370
- none_selected: Ei valittuja kohteita.
371
- retry_all: Yritä uudelleen kaikki
372
- retry_all_confirm: Yritetäänkö uudelleen kaikki epäonnistuneet työt?
373
- title: Työt
583
+ states:
584
+ blocked: Estetty
585
+ ready: Valmiina
586
+ retrying: Uudelleenyritys
587
+ running: Käynnissä
588
+ scheduled: Ajastettu
589
+ tabs:
590
+ all: Kaikki
591
+ blocked: Estetty
592
+ ready: Valmiina
593
+ retrying: Uudelleenyritys
594
+ running: Käynnissä
595
+ scheduled: Ajastetut
596
+ tabs_label: Töiden tilat
597
+ view_failure: Näytä virhe
598
+ view_locks: Näytä lukot
374
599
  show:
375
600
  back: Takaisin töihin
376
601
  backtrace: Takautumisketju
@@ -423,6 +648,7 @@ fi:
423
648
  other: Hylätäänkö tämän avaimen taakse pysäköityä %{count} työtä? Ne eivät koskaan suoritu.
424
649
  empty: Ei rinnakkaisuusavaimia käytössä
425
650
  headers:
651
+ actions: Toiminnot
426
652
  in_use: Käytössä
427
653
  key: Avain
428
654
  lease: Varaus
@@ -456,6 +682,7 @@ fi:
456
682
  discard_selected_confirm: Hylätäänkö valitut lukot?
457
683
  empty: Ei aktiivisia lukkoja
458
684
  headers:
685
+ actions: Toiminnot
459
686
  age: Ikä
460
687
  lock_key: Lukon avain
461
688
  msg_id: Viestin tunnus
@@ -483,8 +710,6 @@ fi:
483
710
  pending: Odottaa
484
711
  published: Julkaistu
485
712
  stats:
486
- no_age: "—"
487
- oldest_age: "%{seconds}s"
488
713
  oldest_unpublished: Vanhin julkaisematon
489
714
  total: Yhteensä
490
715
  unpublished: Julkaisematon
@@ -493,18 +718,76 @@ fi:
493
718
  index:
494
719
  title: Prosessit
495
720
  processes_table:
721
+ capsule: kapseli %{capsule} · prosessi %{process}
496
722
  empty: Ei käynnissä olevia prosesseja
497
723
  headers:
498
- hostname: Isäntänimi
499
- kind: Tyyppi
500
- last_heartbeat: Viimeisin sydämenlyönti
501
- metadata: Metatiedot
502
- pid: PID
724
+ activity: Toiminta
725
+ heartbeat: Sydämenlyönti
726
+ process: Prosessi
727
+ recycle: Kierrätys
503
728
  status: Tila
504
- rates:
505
- dequeued: haettu
506
- failed: epäonnistui
507
- processed: käsitelty
729
+ no_raw_metadata: Ei muita metatietoja
730
+ raw_metadata: Muut metatiedot
731
+ started: Käynnistetty
732
+ under_supervisor: valvoja %{pid}
733
+ uptime: käynnissä %{duration}
734
+ state:
735
+ activity:
736
+ buffered: "%{number} puskurissa"
737
+ busy_slots: "%{busy}/%{capacity} paikkaa varattu"
738
+ busy_threads: "%{busy}/%{capacity} säiettä varattu"
739
+ consumes: Kuluttaa %{topics}
740
+ drains: Tyhjentää %{queues}
741
+ drains_all: Tyhjentää kaikki jonot
742
+ failed_rate: "%{rate} epäonnistui/s"
743
+ handled: "%{number} käsitelty"
744
+ maintenance: Ajaa ylläpidon %{interval} välein (ajastetut työt, kuolleet prosessit, arkistot)
745
+ outbox: Julkaisee outbox-merkintöjä
746
+ rate: "%{rate} työtä/s"
747
+ schedule:
748
+ one: Ajaa %{count} toistuvan tehtävän, tarkistaa %{interval} välein
749
+ other: Ajaa %{count} toistuvaa tehtävää, tarkistaa %{interval} välein
750
+ slots:
751
+ one: "%{count} paikka"
752
+ other: "%{count} paikkaa"
753
+ supervises: 'Valvoo: %{children}'
754
+ supervises_none: Ei valvo prosesseja tällä isännällä
755
+ threads:
756
+ one: "%{count} säie"
757
+ other: "%{count} säiettä"
758
+ kinds:
759
+ consumer:
760
+ one: "%{count} kuluttaja"
761
+ other: "%{count} kuluttajaa"
762
+ dispatcher:
763
+ one: dispatcher
764
+ other: "%{count} dispatcheria"
765
+ outbox_poller:
766
+ one: outbox-poller
767
+ other: "%{count} outbox-polleria"
768
+ scheduler:
769
+ one: ajastin
770
+ other: "%{count} ajastinta"
771
+ worker:
772
+ one: "%{count} worker"
773
+ other: "%{count} workeria"
774
+ next:
775
+ stale_reaped: todennäköisesti kuollut; poistetaan dispatcherin seuraavassa siivouksessa (%{within} sisällä)
776
+ stale_unreaped: todennäköisesti kuollut; ei elävää dispatcheria poistamaan sitä
777
+ stalled_maintenance: ajastetut työt, kuolleiden prosessien siivous ja arkistojen tiivistys eivät etene
778
+ stalled_schedule: toistuvia tehtäviä ei lisätä jonoon
779
+ stalled_standalone: ei valvojaa käynnistämään sitä uudelleen
780
+ stalled_supervised: valvojan vahtikoira käynnistää sen uudelleen
781
+ reasons:
782
+ healthy_detection_off_html: Sydämenlyönti %{ago} (raja %{limit}) · jumiutumisen tunnistus pois
783
+ healthy_heartbeat_html: Sydämenlyönti %{ago} (raja %{limit})
784
+ healthy_loop_html: Silmukka eteni %{ago} (raja %{limit})
785
+ stale_html: Ei sydämenlyöntiä %{age} aikana (raja %{limit})
786
+ stalled_html: Silmukka eteni viimeksi %{ago} (raja %{limit})
787
+ recycle:
788
+ jobs: "%{done} / %{limit} työtä"
789
+ lifetime: käynnissä %{uptime} / %{limit}
790
+ memory: "%{used} / %{limit} Mt"
508
791
  queues:
509
792
  destroy:
510
793
  success: Jono %{name} poistettu.
@@ -517,59 +800,70 @@ fi:
517
800
  headers:
518
801
  actions: Toiminnot
519
802
  depth: Syvyys
520
- newest: Uusimmat (s)
521
- oldest_claimable: Vanhin saatavilla (s)
803
+ newest: Uusimmat
804
+ oldest_claimable: Vanhin saatavilla
522
805
  parked: Pysäköidyt
523
806
  queue: Jono
524
807
  total_ever: Yhteensä koskaan
525
808
  visible: Näkyvissä
526
809
  pause: Tauko
527
810
  pause_confirm: Keskeytä käsittely %{name} ajan?
528
- paused: Keskeytetty
529
811
  purge: Tyhjennä
530
812
  purge_confirm: Tyhjennä kaikki viestit %{name}:sta?
531
813
  resume: Jatka
532
814
  show:
533
- arguments: Argumentit
534
815
  back: Takaisin jonoihin
535
816
  delete_confirm: Poista tämä jono pysyvästi? Tätä ei voi kumota.
536
817
  delete_queue: Poista jono
537
- depth: 'Syvyys:'
538
- discard: Hylkää
539
- discard_confirm: Hylätä tämä viesti?
540
- empty: Jono on tyhjä
541
- full_json_payload: Täysi JSON-payload
542
- headers:
543
- enqueued: Jonoon lisätty
544
- id: ID
545
- job_class: Työn luokka
546
- reads: Lukukerrat
547
- vt: VT
548
- headers_section: Otsikot
549
- job_id: 'Työn ID:'
818
+ dlq_link: Yritä uudelleen tai hylkää ne Dead Letter -sivulla
819
+ dlq_pointer:
820
+ one: Kuolleiden viestien jono jonolle %{logical} — %{count} viesti.
821
+ other: Kuolleiden viestien jono jonolle %{logical} — %{count} viestiä.
550
822
  message_discard_failed: Viestiä ei voitu hylätä.
551
823
  message_discarded: Viesti hylätty.
552
824
  message_retried: Viestin näkyvyys nollattu.
553
825
  message_retry_failed: Viestiä ei voitu yrittää uudelleen.
554
- metadata: Metatiedot
555
- metadata_labels:
556
- last_read: 'Viimeksi luettu:'
557
- locale: 'Alue:'
558
- priority: 'Prioriteetti:'
559
- queue: 'Jono:'
560
- scheduled: 'Aikataulutettu:'
561
- timezone: 'Aikavyöhyke:'
562
- visible_at: 'Näkyvissä:'
563
- oldest: 'Vanhin:'
564
- oldest_claimable: 'Vanhin saatavilla:'
565
- parked: 'Pysäköidyt:'
826
+ metrics:
827
+ claimable: Noudettavissa nyt
828
+ depth: Syvyys
829
+ oldest: Vanhin
830
+ oldest_claimable: Vanhin noudettavissa
831
+ parked: Pysäköity
832
+ total: Yhteensä koskaan
833
+ other_levels: 'Muut prioriteettitasot:'
566
834
  pause: Tauko
567
835
  pause_confirm: Keskeytetäänkö käsittely?
568
836
  purge_confirm: Tyhjennetäänkö kaikki viestit?
569
837
  purge_queue: Tyhjennä jono
570
838
  resume: Jatka
571
- retry: Yritä uudelleen
572
- retry_confirm: Nollaa näkyvyysaika ja yritä uudelleen?
839
+ summary:
840
+ backlog_html: "%{visible} noudettavissa nyt, vanhin odottanut %{age} · %{parked} pysäköity (ajastettu tai uudelleenyritys)"
841
+ backlog_parked_only_html: Ei mitään noudettavissa nyt · %{parked} pysäköity (ajastettu tai uudelleenyritys)
842
+ dlq_html: 'Kuolleiden viestien jono jonolle %{logical}: työt päätyvät tänne %{max} epäonnistuneen yrityksen jälkeen'
843
+ drained_by_html:
844
+ one: Tyhjentää %{capsules} (%{count} terve worker)
845
+ other: Tyhjentää %{capsules} (%{count} tervettä workeria)
846
+ drained_live_html:
847
+ one: Tyhjentää %{count} terve worker, joka kuuntelee tätä jonoa
848
+ other: Tyhjentää %{count} tervettä workeria, jotka kuuntelevat tätä jonoa
849
+ drained_wildcard_html:
850
+ one: Tyhjentää jokerimerkki-worker-kapseli (%{count} terve worker)
851
+ other: Tyhjentää jokerimerkki-worker-kapseli (%{count} tervettä workeria)
852
+ empty_html: Mitään ei odota
853
+ handler_html: Tapahtumankäsittelijän jono — consumerit tyhjentävät (%{count} tervettä)
854
+ no_consumers_html:
855
+ one: Tapahtumankäsittelijän jono ilman tervettä consumeria — %{count} tapahtuma odottaa
856
+ other: Tapahtumankäsittelijän jono ilman tervettä consumeria — %{count} tapahtumaa odottaa
857
+ no_workers_html:
858
+ one: Yksikään terve worker ei ole käynnissä — %{count} työ on noudettavissa, mutta kukaan ei nouda sitä
859
+ other: Yksikään terve worker ei ole käynnissä — %{count} työtä on noudettavissa, mutta kukaan ei nouda niitä
860
+ not_drained_html: Mikään worker-kapseli ei tyhjennä tätä jonoa — työt odottavat, kunnes sellainen määritetään
861
+ paused_circuit_breaker_html: 'Keskeytetty automaattisesti %{ago} %{failures} peräkkäisen virheen jälkeen — jatkuu %{time} (laukaisu #%{trip})'
862
+ paused_operator_html: Keskeytetty %{ago} — %{reason}
863
+ paused_operator_no_reason_html: Operaattori keskeytti %{ago}
864
+ priority_level_html: Prioriteettitaso %{level} jonosta %{logical}
865
+ stream_html: Stream-jono — toimitetaan peekillä, workerit eivät tyhjennä sitä
866
+ summary_label: Jonon yhteenveto
573
867
  table_health:
574
868
  headers:
575
869
  bloat: Bloat
@@ -579,8 +873,6 @@ fi:
579
873
  table: Taulu
580
874
  oldest_txn: 'Vanhin avoin transaktio:'
581
875
  title: Taulun kunto
582
- total: 'Yhteensä:'
583
- visible: 'Näkyvissä:'
584
876
  recurring_tasks:
585
877
  index:
586
878
  task_count: