sidekiq 4.1.4 → 6.5.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sidekiq might be problematic. Click here for more details.

Files changed (213) hide show
  1. checksums.yaml +5 -5
  2. data/Changes.md +666 -0
  3. data/LICENSE +3 -3
  4. data/README.md +27 -35
  5. data/bin/sidekiq +27 -3
  6. data/bin/sidekiqload +78 -84
  7. data/bin/sidekiqmon +8 -0
  8. data/lib/generators/sidekiq/job_generator.rb +57 -0
  9. data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
  10. data/lib/generators/sidekiq/templates/job_spec.rb.erb +6 -0
  11. data/lib/generators/sidekiq/templates/job_test.rb.erb +8 -0
  12. data/lib/sidekiq/api.rb +583 -288
  13. data/lib/sidekiq/cli.rb +255 -218
  14. data/lib/sidekiq/client.rb +86 -83
  15. data/lib/sidekiq/component.rb +65 -0
  16. data/lib/sidekiq/delay.rb +43 -0
  17. data/lib/sidekiq/extensions/action_mailer.rb +13 -22
  18. data/lib/sidekiq/extensions/active_record.rb +13 -10
  19. data/lib/sidekiq/extensions/class_methods.rb +14 -11
  20. data/lib/sidekiq/extensions/generic_proxy.rb +13 -5
  21. data/lib/sidekiq/fetch.rb +50 -40
  22. data/lib/sidekiq/job.rb +13 -0
  23. data/lib/sidekiq/job_logger.rb +51 -0
  24. data/lib/sidekiq/job_retry.rb +282 -0
  25. data/lib/sidekiq/job_util.rb +71 -0
  26. data/lib/sidekiq/launcher.rb +192 -85
  27. data/lib/sidekiq/logger.rb +156 -0
  28. data/lib/sidekiq/manager.rb +44 -45
  29. data/lib/sidekiq/metrics/deploy.rb +47 -0
  30. data/lib/sidekiq/metrics/query.rb +153 -0
  31. data/lib/sidekiq/metrics/shared.rb +94 -0
  32. data/lib/sidekiq/metrics/tracking.rb +134 -0
  33. data/lib/sidekiq/middleware/chain.rb +102 -46
  34. data/lib/sidekiq/middleware/current_attributes.rb +63 -0
  35. data/lib/sidekiq/middleware/i18n.rb +7 -7
  36. data/lib/sidekiq/middleware/modules.rb +21 -0
  37. data/lib/sidekiq/monitor.rb +133 -0
  38. data/lib/sidekiq/paginator.rb +20 -16
  39. data/lib/sidekiq/processor.rb +178 -78
  40. data/lib/sidekiq/rails.rb +56 -27
  41. data/lib/sidekiq/redis_client_adapter.rb +154 -0
  42. data/lib/sidekiq/redis_connection.rb +123 -47
  43. data/lib/sidekiq/ring_buffer.rb +29 -0
  44. data/lib/sidekiq/scheduled.rb +97 -40
  45. data/lib/sidekiq/sd_notify.rb +149 -0
  46. data/lib/sidekiq/systemd.rb +24 -0
  47. data/lib/sidekiq/testing/inline.rb +6 -5
  48. data/lib/sidekiq/testing.rb +83 -56
  49. data/lib/sidekiq/transaction_aware_client.rb +45 -0
  50. data/lib/sidekiq/version.rb +2 -1
  51. data/lib/sidekiq/web/action.rb +93 -0
  52. data/lib/sidekiq/web/application.rb +379 -0
  53. data/lib/sidekiq/web/csrf_protection.rb +180 -0
  54. data/lib/sidekiq/web/helpers.rb +365 -0
  55. data/lib/sidekiq/web/router.rb +104 -0
  56. data/lib/sidekiq/web.rb +108 -213
  57. data/lib/sidekiq/worker.rb +288 -42
  58. data/lib/sidekiq.rb +188 -80
  59. data/sidekiq.gemspec +24 -22
  60. data/web/assets/images/apple-touch-icon.png +0 -0
  61. data/web/assets/images/{status-sd8051fd480.png → status.png} +0 -0
  62. data/web/assets/javascripts/application.js +130 -75
  63. data/web/assets/javascripts/chart.min.js +13 -0
  64. data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
  65. data/web/assets/javascripts/dashboard.js +70 -91
  66. data/web/assets/javascripts/graph.js +16 -0
  67. data/web/assets/javascripts/metrics.js +262 -0
  68. data/web/assets/stylesheets/application-dark.css +143 -0
  69. data/web/assets/stylesheets/application-rtl.css +242 -0
  70. data/web/assets/stylesheets/application.css +390 -145
  71. data/web/assets/stylesheets/bootstrap-rtl.min.css +9 -0
  72. data/web/assets/stylesheets/bootstrap.css +4 -8
  73. data/web/locales/ar.yml +87 -0
  74. data/web/locales/de.yml +15 -3
  75. data/web/locales/el.yml +43 -19
  76. data/web/locales/en.yml +15 -1
  77. data/web/locales/es.yml +22 -5
  78. data/web/locales/fa.yml +80 -0
  79. data/web/locales/fr.yml +10 -3
  80. data/web/locales/he.yml +79 -0
  81. data/web/locales/ja.yml +12 -4
  82. data/web/locales/lt.yml +83 -0
  83. data/web/locales/pl.yml +4 -4
  84. data/web/locales/pt-br.yml +27 -9
  85. data/web/locales/ru.yml +4 -0
  86. data/web/locales/ur.yml +80 -0
  87. data/web/locales/vi.yml +83 -0
  88. data/web/views/_footer.erb +6 -3
  89. data/web/views/_job_info.erb +4 -3
  90. data/web/views/_nav.erb +5 -19
  91. data/web/views/_paging.erb +1 -1
  92. data/web/views/_poll_link.erb +2 -5
  93. data/web/views/_summary.erb +7 -7
  94. data/web/views/busy.erb +64 -26
  95. data/web/views/dashboard.erb +26 -17
  96. data/web/views/dead.erb +4 -4
  97. data/web/views/layout.erb +15 -5
  98. data/web/views/metrics.erb +69 -0
  99. data/web/views/metrics_for_job.erb +87 -0
  100. data/web/views/morgue.erb +21 -14
  101. data/web/views/queue.erb +28 -14
  102. data/web/views/queues.erb +15 -5
  103. data/web/views/retries.erb +24 -15
  104. data/web/views/retry.erb +5 -5
  105. data/web/views/scheduled.erb +9 -6
  106. data/web/views/scheduled_job_info.erb +1 -1
  107. metadata +73 -256
  108. data/.github/contributing.md +0 -32
  109. data/.github/issue_template.md +0 -4
  110. data/.gitignore +0 -12
  111. data/.travis.yml +0 -18
  112. data/3.0-Upgrade.md +0 -70
  113. data/4.0-Upgrade.md +0 -53
  114. data/COMM-LICENSE +0 -95
  115. data/Ent-Changes.md +0 -123
  116. data/Gemfile +0 -29
  117. data/Pro-2.0-Upgrade.md +0 -138
  118. data/Pro-3.0-Upgrade.md +0 -44
  119. data/Pro-Changes.md +0 -559
  120. data/Rakefile +0 -9
  121. data/bin/sidekiqctl +0 -99
  122. data/code_of_conduct.md +0 -50
  123. data/lib/generators/sidekiq/templates/worker_spec.rb.erb +0 -6
  124. data/lib/generators/sidekiq/templates/worker_test.rb.erb +0 -8
  125. data/lib/generators/sidekiq/worker_generator.rb +0 -49
  126. data/lib/sidekiq/core_ext.rb +0 -106
  127. data/lib/sidekiq/exception_handler.rb +0 -31
  128. data/lib/sidekiq/logging.rb +0 -106
  129. data/lib/sidekiq/middleware/server/active_record.rb +0 -13
  130. data/lib/sidekiq/middleware/server/logging.rb +0 -40
  131. data/lib/sidekiq/middleware/server/retry_jobs.rb +0 -205
  132. data/lib/sidekiq/util.rb +0 -62
  133. data/lib/sidekiq/web_helpers.rb +0 -255
  134. data/test/config.yml +0 -9
  135. data/test/env_based_config.yml +0 -11
  136. data/test/fake_env.rb +0 -1
  137. data/test/fixtures/en.yml +0 -2
  138. data/test/helper.rb +0 -75
  139. data/test/test_actors.rb +0 -138
  140. data/test/test_api.rb +0 -528
  141. data/test/test_cli.rb +0 -406
  142. data/test/test_client.rb +0 -266
  143. data/test/test_exception_handler.rb +0 -56
  144. data/test/test_extensions.rb +0 -127
  145. data/test/test_fetch.rb +0 -50
  146. data/test/test_launcher.rb +0 -85
  147. data/test/test_logging.rb +0 -35
  148. data/test/test_manager.rb +0 -50
  149. data/test/test_middleware.rb +0 -158
  150. data/test/test_processor.rb +0 -201
  151. data/test/test_rails.rb +0 -22
  152. data/test/test_redis_connection.rb +0 -132
  153. data/test/test_retry.rb +0 -326
  154. data/test/test_retry_exhausted.rb +0 -149
  155. data/test/test_scheduled.rb +0 -115
  156. data/test/test_scheduling.rb +0 -50
  157. data/test/test_sidekiq.rb +0 -107
  158. data/test/test_testing.rb +0 -143
  159. data/test/test_testing_fake.rb +0 -357
  160. data/test/test_testing_inline.rb +0 -94
  161. data/test/test_util.rb +0 -13
  162. data/test/test_web.rb +0 -614
  163. data/test/test_web_helpers.rb +0 -54
  164. data/web/assets/images/bootstrap/glyphicons-halflings-white.png +0 -0
  165. data/web/assets/images/bootstrap/glyphicons-halflings.png +0 -0
  166. data/web/assets/images/status/active.png +0 -0
  167. data/web/assets/images/status/idle.png +0 -0
  168. data/web/assets/javascripts/locales/README.md +0 -27
  169. data/web/assets/javascripts/locales/jquery.timeago.ar.js +0 -96
  170. data/web/assets/javascripts/locales/jquery.timeago.bg.js +0 -18
  171. data/web/assets/javascripts/locales/jquery.timeago.bs.js +0 -49
  172. data/web/assets/javascripts/locales/jquery.timeago.ca.js +0 -18
  173. data/web/assets/javascripts/locales/jquery.timeago.cs.js +0 -18
  174. data/web/assets/javascripts/locales/jquery.timeago.cy.js +0 -20
  175. data/web/assets/javascripts/locales/jquery.timeago.da.js +0 -18
  176. data/web/assets/javascripts/locales/jquery.timeago.de.js +0 -18
  177. data/web/assets/javascripts/locales/jquery.timeago.el.js +0 -18
  178. data/web/assets/javascripts/locales/jquery.timeago.en-short.js +0 -20
  179. data/web/assets/javascripts/locales/jquery.timeago.en.js +0 -20
  180. data/web/assets/javascripts/locales/jquery.timeago.es.js +0 -18
  181. data/web/assets/javascripts/locales/jquery.timeago.et.js +0 -18
  182. data/web/assets/javascripts/locales/jquery.timeago.fa.js +0 -22
  183. data/web/assets/javascripts/locales/jquery.timeago.fi.js +0 -28
  184. data/web/assets/javascripts/locales/jquery.timeago.fr-short.js +0 -16
  185. data/web/assets/javascripts/locales/jquery.timeago.fr.js +0 -17
  186. data/web/assets/javascripts/locales/jquery.timeago.he.js +0 -18
  187. data/web/assets/javascripts/locales/jquery.timeago.hr.js +0 -49
  188. data/web/assets/javascripts/locales/jquery.timeago.hu.js +0 -18
  189. data/web/assets/javascripts/locales/jquery.timeago.hy.js +0 -18
  190. data/web/assets/javascripts/locales/jquery.timeago.id.js +0 -18
  191. data/web/assets/javascripts/locales/jquery.timeago.it.js +0 -16
  192. data/web/assets/javascripts/locales/jquery.timeago.ja.js +0 -19
  193. data/web/assets/javascripts/locales/jquery.timeago.ko.js +0 -17
  194. data/web/assets/javascripts/locales/jquery.timeago.lt.js +0 -20
  195. data/web/assets/javascripts/locales/jquery.timeago.mk.js +0 -20
  196. data/web/assets/javascripts/locales/jquery.timeago.nb.js +0 -18
  197. data/web/assets/javascripts/locales/jquery.timeago.nl.js +0 -20
  198. data/web/assets/javascripts/locales/jquery.timeago.pl.js +0 -31
  199. data/web/assets/javascripts/locales/jquery.timeago.pt-br.js +0 -16
  200. data/web/assets/javascripts/locales/jquery.timeago.pt.js +0 -16
  201. data/web/assets/javascripts/locales/jquery.timeago.ro.js +0 -18
  202. data/web/assets/javascripts/locales/jquery.timeago.rs.js +0 -49
  203. data/web/assets/javascripts/locales/jquery.timeago.ru.js +0 -34
  204. data/web/assets/javascripts/locales/jquery.timeago.sk.js +0 -18
  205. data/web/assets/javascripts/locales/jquery.timeago.sl.js +0 -44
  206. data/web/assets/javascripts/locales/jquery.timeago.sv.js +0 -18
  207. data/web/assets/javascripts/locales/jquery.timeago.th.js +0 -20
  208. data/web/assets/javascripts/locales/jquery.timeago.tr.js +0 -16
  209. data/web/assets/javascripts/locales/jquery.timeago.uk.js +0 -34
  210. data/web/assets/javascripts/locales/jquery.timeago.uz.js +0 -19
  211. data/web/assets/javascripts/locales/jquery.timeago.zh-cn.js +0 -20
  212. data/web/assets/javascripts/locales/jquery.timeago.zh-tw.js +0 -20
  213. data/web/views/_poll_js.erb +0 -5
data/web/locales/pl.yml CHANGED
@@ -10,7 +10,7 @@ pl:
10
10
  Processed: Ukończone
11
11
  Failed: Nieudane
12
12
  Scheduled: Zaplanowane
13
- Retries: Prób
13
+ Retries: Do ponowienia
14
14
  Enqueued: Zakolejkowane
15
15
  Worker: Worker
16
16
  LivePoll: Wczytuj na żywo
@@ -29,15 +29,15 @@ pl:
29
29
  Queues: Kolejki
30
30
  Size: Rozmiar
31
31
  Actions: Akcje
32
- NextRetry: Kolejna próba
33
- RetryCount: Liczba prób
32
+ NextRetry: Następne ponowienie
33
+ RetryCount: Ilość ponowień
34
34
  RetryNow: Ponów teraz
35
35
  LastRetry: Ostatnie ponowienie
36
36
  OriginallyFailed: Ostatnio nieudane
37
37
  AreYouSure: Na pewno?
38
38
  DeleteAll: Usuń wszystko
39
39
  RetryAll: Powtórz wszystko
40
- NoRetriesFound: Brak powtórzeń
40
+ NoRetriesFound: Brak zadań do ponowienia
41
41
  Error: Błąd
42
42
  ErrorClass: Klasa błędu
43
43
  ErrorMessage: Wiadomosć błędu
@@ -8,6 +8,7 @@
8
8
  History: Histórico
9
9
  Busy: Ocupados
10
10
  Processed: Processados
11
+ Utilization: Utilização
11
12
  Failed: Falhas
12
13
  Scheduled: Agendados
13
14
  Retries: Tentativas
@@ -26,18 +27,20 @@
26
27
  Delete: Apagar
27
28
  AddToQueue: Adicionar à fila
28
29
  AreYouSureDeleteJob: Deseja deletar esta tarefa?
29
- AreYouSureDeleteQueue: Deseja deletar a %{queue} fila?
30
+ AreYouSureDeleteQueue: Deseja deletar a fila %{queue}? Isso irá deletar todas as tarefas desta fila.
30
31
  Queues: Filas
31
32
  Size: Tamanho
32
33
  Actions: Ações
33
34
  NextRetry: Próxima Tentativa
34
35
  RetryCount: Número de Tentativas
35
36
  RetryNow: Tentar novamente agora
37
+ Kill: Matar
36
38
  LastRetry: Última tentativa
37
39
  OriginallyFailed: Falhou originalmente
38
40
  AreYouSure: Tem certeza?
39
41
  DeleteAll: Apagar tudo
40
42
  RetryAll: Tentar tudo novamente
43
+ KillAll: Matar todas
41
44
  NoRetriesFound: Nenhuma tentativa encontrada
42
45
  Error: Erro
43
46
  ErrorClass: Classe de erro
@@ -58,11 +61,26 @@
58
61
  OneMonth: 1 mês
59
62
  ThreeMonths: 3 meses
60
63
  SixMonths: 6 meses
61
- Failures : Falhas
62
- DeadJobs : Tarefas mortas
63
- NoDeadJobsFound : Nenhuma tarefa morta foi encontrada
64
- Dead : Morta
65
- Processes : Processos
66
- Thread : Thread
67
- Threads : Threads
68
- Jobs : Tarefas
64
+ Failures: Falhas
65
+ DeadJobs: Tarefas mortas
66
+ NoDeadJobsFound: Nenhuma tarefa morta foi encontrada
67
+ Dead: Morta
68
+ Process: Processo
69
+ Processes: Processos
70
+ Name: Nome
71
+ Thread: Thread
72
+ Threads: Threads
73
+ Jobs: Tarefas
74
+ Paused: Pausado
75
+ Stop: Parar
76
+ Quiet: Silenciar
77
+ StopAll: Parar Todos
78
+ QuietAll: Silenciar Todos
79
+ PollingInterval: Intervalo de Polling
80
+ Plugins: Plug-ins
81
+ NotYetEnqueued: Ainda não enfileirado
82
+ CreatedAt: Criado em
83
+ BackToApp: De volta ao aplicativo
84
+ Latency: Latência
85
+ Pause: Pausar
86
+ Unpause: Despausar
data/web/locales/ru.yml CHANGED
@@ -38,6 +38,7 @@ ru:
38
38
  AreYouSure: Вы уверены?
39
39
  DeleteAll: Удалить все
40
40
  RetryAll: Повторить все
41
+ KillAll: Убить всё
41
42
  NoRetriesFound: Нет попыток
42
43
  Error: Ошибка
43
44
  ErrorClass: Класс ошибки
@@ -76,3 +77,6 @@ ru:
76
77
  NotYetEnqueued: Пока не в очереди
77
78
  CreatedAt: Создан
78
79
  BackToApp: Назад
80
+ Latency: Задержка
81
+ Pause: Пауза
82
+ Unpause: Возобновить
@@ -0,0 +1,80 @@
1
+ # elements like %{queue} are variables and should not be translated
2
+ ur:
3
+ TextDirection: 'rtl'
4
+ Dashboard: صفحۂ اول
5
+ Status: اسٹیٹس
6
+ Time: ﻭﻗﺖ
7
+ Namespace: Namespace
8
+ Realtime: ﺑﺮاﮦ ﺭاﺳﺖ
9
+ History: ﺗﺎﺭﻳﺦ
10
+ Busy: مصروف
11
+ Processed: مکمل شدہ
12
+ Failed: ﻧﺎکاﻡ ﺷﺪﮦ
13
+ Scheduled: ﻁےﺷﺪﮦ
14
+ Retries: ﺩﻭﺑﺎﺭﮦ کﻭﺷﻴﺶ
15
+ Enqueued: قطار ميں شامل
16
+ Worker: ورکر
17
+ LivePoll: ﺑﺮاﮦ ﺭاﺳﺖ
18
+ StopPolling: ﺑﺮاﮦ ﺭاﺳﺖ روکيے
19
+ Queue: قطار
20
+ Class: کلاس
21
+ Job: جاب
22
+ Arguments: دلائل
23
+ Extras: اﺻﺎﻑی
24
+ Started: شروع
25
+ ShowAll: سارے دکھاو
26
+ CurrentMessagesInQueue: قطار ميں موجود تمام پيغامات <span class='title'>%{queue}</span>
27
+ AddToQueue: ﻗﻄﺎﺭ ميں شامل کريں
28
+ AreYouSureDeleteJob: کيا آپ یقین جاب حتم کرنا چاھتے ہيں ؟
29
+ AreYouSureDeleteQueue: کيا آپ یقین قطار حتم کرنا چاھتے ہيں ؟
30
+ Delete: ﺣﺬﻑ
31
+ Queues: قطاريں
32
+ Size: ﺣﺠﻢ
33
+ Actions: ﻋﻮاﻣﻞ
34
+ NextRetry: اگلی کﻭﺷﻴﺶ
35
+ RetryCount: دوبارہ کوشش کا مکمل شمار
36
+ RetryNow: ابھی دوبارہ کوشش
37
+ Kill: ختم کرديں
38
+ LastRetry: گزشتہ کوشش
39
+ OriginallyFailed: ابتادائ ناکامی
40
+ AreYouSure: کيا یقین ؟
41
+ DeleteAll: ﺗﻤﺎﻡ ﺣﺬﻑ کر ديں
42
+ RetryAll: ﺗﻤﺎﻡ کی ﺩﻭﺑﺎﺭﮦ کﻭﺷﻴﺶ کﺭيں
43
+ NoRetriesFound: کویٔ ﺩﻭﺑﺎﺭﮦ کﻭﺷﻴﺶ نھيں ملی
44
+ Error: مسئلہ
45
+ ErrorClass: مسئلہ کی کلاس
46
+ ErrorMessage: مسئلہ کی وجہ
47
+ ErrorBacktrace: مسئلہ کی کی تحقیقات کريں
48
+ GoBack: واپس جايں
49
+ NoScheduledFound: کویٔ ﻁےﺷﺪﮦچيز نہیں ملی
50
+ When: ﺏک
51
+ ScheduledJobs: ﻁےﺷﺪﮦجاب
52
+ idle: بیکار
53
+ active: فعال
54
+ Version: ورژن
55
+ Connections: کنکشنز
56
+ MemoryUsage: یاداشت کا استعمال
57
+ PeakMemoryUsage: سب سے زيادہ یاداشت کا استعمال
58
+ Uptime: اپ ٹائم
59
+ OneWeek: ایک ہفتہ
60
+ OneMonth: ایک مہینہ
61
+ ThreeMonths: تین ماہ
62
+ SixMonths: چھ ماہ
63
+ Failures: ناکامیاں
64
+ DeadJobs: ختم شدہ جاب
65
+ NoDeadJobsFound: کویٔ ختم شدہ جاب نہيی ملی
66
+ Dead: ختم شدہ
67
+ Processes: ﻋﻤﻠﻴﺎﺕ
68
+ Thread: موضوع
69
+ Threads: موضوع
70
+ Jobs: جابز
71
+ Paused: موقوف
72
+ Stop: بند کرو
73
+ Quiet: ﺣﺘﻢ کﺭﻭ
74
+ StopAll: ﺗﻤﺎﻡ ﺑﻨﺪ کﺭﻭ
75
+ QuietAll: ﺗﻤﺎﻡ ﺣﺘﻢ کﺭﻭ
76
+ PollingInterval: ﺑﺮاﮦ ﺭاﺳﺖ کا ﺩﻭﺭاﻧﻴﮧ
77
+ Plugins: پلگ انز
78
+ NotYetEnqueued: ﻗﺘﺎﺭميں شامل نھيں
79
+ CreatedAt: ﺗﺎﺭﻳﺢ آﻏﺎﺯ
80
+ BackToApp: ﻭاپﺱ صفحۂ اﻭﻝ پر
@@ -0,0 +1,83 @@
1
+ # elements like %{queue} are variables and should not be translated
2
+ vi: # <---- change this to your locale code
3
+ Dashboard: Bảng điều khiển
4
+ Status: Trạng thái
5
+ Time: Thời gian
6
+ Namespace: Không gian tên
7
+ Realtime: Thời gian thực
8
+ History: Lịch sử
9
+ Busy: Bận rộn
10
+ Processed: Đã xử lí
11
+ Failed: Đã thất bại
12
+ Scheduled: Đã lên lịch
13
+ Retries: Số lần thử
14
+ Enqueued: Đã xếp hàng đợi
15
+ Worker: Máy xử lí
16
+ LivePoll: Thăm dò trực tiếp
17
+ StopPolling: Ngừng thăm dò
18
+ Queue: Hàng đợi
19
+ Class: Lớp
20
+ Job: Tác vụ
21
+ Arguments: Tham số
22
+ Extras: Thêm
23
+ Started: Đã bắt đầu
24
+ ShowAll: Hiện tất cả
25
+ CurrentMessagesInQueue: Số lượng công việc trong <span class='title'>%{queue}</span>
26
+ Delete: Xóa
27
+ AddToQueue: Thêm vào hàng đợi
28
+ AreYouSureDeleteJob: Bạn có chắc là muốn xóa tác vụ này?
29
+ AreYouSureDeleteQueue: Bạn có chắc là muốn xóa %{queue} này?
30
+ Queues: Các hàng đợi
31
+ Size: Kích thước
32
+ Actions: Những hành động
33
+ NextRetry: Lần thử lại tiếp theo
34
+ RetryCount: Số lần thử lại
35
+ RetryNow: Thử lại ngay bây giờ
36
+ Kill: Giết
37
+ LastRetry: Lần thử cuối
38
+ OriginallyFailed: Đã thất bại từ đầu
39
+ AreYouSure: Bạn chắc chứ?
40
+ DeleteAll: Xóa hết
41
+ RetryAll: Thử lại tất cả
42
+ KillAll: Giết hết
43
+ NoRetriesFound: Không có lần thử nào được tìm thấy
44
+ Error: Lỗi
45
+ ErrorClass: Lớp lỗi
46
+ ErrorMessage: Tin nhắn lỗi
47
+ ErrorBacktrace: Dấu vết của lỗi
48
+ GoBack: ← Trở lại
49
+ NoScheduledFound: Không có tác vụ đã lên lịch nào được tìm thấy
50
+ When: Khi nào
51
+ ScheduledJobs: Những Tác Vụ Được Hẹn
52
+ idle: Đang chờ
53
+ active: Đang hoạt động
54
+ Version: Phiên bản
55
+ Connections: Các kết nối
56
+ MemoryUsage: Lượng bộ nhớ sử dụng
57
+ PeakMemoryUsage: Lượng bộ nhớ sử dụng đỉnh điểm
58
+ Uptime: Thời gian hệ thống đã online (days)
59
+ OneWeek: 1 tuần
60
+ OneMonth: 1 tháng
61
+ ThreeMonths: 3 tháng
62
+ SixMonths: 6 tháng
63
+ Failures: Các thất bại
64
+ DeadJobs: Những tác vụ đã chết
65
+ NoDeadJobsFound: Không có tác vụ đã chết nào được tìm thấy
66
+ Dead: Chết
67
+ Processes: Tiến trình xử lí
68
+ Thread: Luồng xử lí
69
+ Threads: Những luồng xử lí
70
+ Jobs: Các tác vụ
71
+ Paused: Đã tạm dừng
72
+ Stop: Dừng Lại
73
+ Quiet: Im lặng
74
+ StopAll: Dừng lại tất cả
75
+ QuietAll: Làm cho tất cả im lặng
76
+ PollingInterval: Khoảng thời gian giữa các lần thăm dò
77
+ Plugins: Hệ thống đính kèm
78
+ NotYetEnqueued: Chưa được bỏ vào hàng đợi
79
+ CreatedAt: Được tạo vào lúc
80
+ BackToApp: Trở về ứng dụng
81
+ Latency: Độ trễ
82
+ Pause: Tạm dừng
83
+ Unpause: Hủy tạm dừng
@@ -1,15 +1,18 @@
1
- <div class="navbar navbar-fixed-bottom navbar-inverse">
1
+ <div class="navbar navbar-fixed-bottom navbar-inverse ltr">
2
2
  <div class="navbar-inner">
3
3
  <div class="container text-center">
4
4
  <ul class="nav">
5
5
  <li>
6
- <p class="navbar-text" style="color:white;"><%= product_version %></p>
6
+ <p class="navbar-text product-version"><%= product_version %></p>
7
7
  </li>
8
8
  <li>
9
9
  <p class="navbar-text redis-url" title="<%= redis_connection_and_namespace %>"><%= redis_connection_and_namespace %></p>
10
10
  </li>
11
11
  <li>
12
- <p class="navbar-text"><%= Time.now.utc.strftime('%H:%M:%S UTC') %></p>
12
+ <p id="serverUtcTime" class="navbar-text server-utc-time"><%= server_utc_time %></p>
13
+ </li>
14
+ <li>
15
+ <p class="navbar-text"><a style="color: gray;" href="https://github.com/mperham/sidekiq/wiki">docs</a></p>
13
16
  </li>
14
17
  </ul>
15
18
  </div>
@@ -3,7 +3,7 @@
3
3
  </header>
4
4
 
5
5
  <div class="table_container">
6
- <table class="table table-bordered table-striped">
6
+ <table class="table table-bordered table-striped table-hover">
7
7
  <tbody>
8
8
  <tr>
9
9
  <th><%= t('Queue') %></th>
@@ -14,7 +14,8 @@
14
14
  <tr>
15
15
  <th><%= t('Job') %></th>
16
16
  <td>
17
- <code><%= job.display_class %></code>
17
+ <%= job.display_class %>
18
+ <%= display_tags(job) %>
18
19
  </td>
19
20
  </tr>
20
21
  <tr>
@@ -80,7 +81,7 @@
80
81
  <% if type == :dead %>
81
82
  <tr>
82
83
  <th><%= t('LastRetry') %></th>
83
- <td><%= relative_time(job.at) %></td>
84
+ <td><%= relative_time(job.at) if job['retry_count'] %></td>
84
85
  </tr>
85
86
  <% end %>
86
87
  </tbody>
data/web/views/_nav.erb CHANGED
@@ -1,7 +1,7 @@
1
1
  <div class="navbar navbar-default navbar-fixed-top">
2
2
  <div class="container-fluid">
3
3
  <div class="navbar-header" data-navbar="static">
4
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-menu">
4
+ <button type="button" class="navbar-toggle collapsed" data-toggle="navbar-menu" data-target="#navbar-menu">
5
5
  <span class="icon-bar"></span>
6
6
  <span class="icon-bar"></span>
7
7
  <span class="icon-bar"></span>
@@ -9,7 +9,7 @@
9
9
  <div class="navbar-toggle collapsed navbar-livereload">
10
10
  <%= erb :_poll_link %>
11
11
  <% if Sidekiq::Web.app_url %>
12
- <a class="btn btn-inverse" href="<%= Sidekiq::Web.app_url %>">Back to App</a>
12
+ <a class="btn btn-inverse" href="<%= Sidekiq::Web.app_url %>"><%= t('BackToApp') %></a>
13
13
  <% end %>
14
14
  </div>
15
15
  <a class="navbar-brand" href="<%= root_path %>">
@@ -32,28 +32,14 @@
32
32
  <% end %>
33
33
  <% end %>
34
34
 
35
- <li class="dropdown" data-navbar="dropdown">
36
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
37
- <%= t('Plugins') %> <span class="caret"></span>
38
- </a>
39
- <ul class="dropdown-menu" role="menu">
40
- <% Sidekiq::Web.custom_tabs.each do |title, url| %>
41
- <li>
42
- <a href="<%= root_path %><%= url %>"><%= t(title) %></a>
43
- </li>
44
- <% end %>
45
- </ul>
46
- </li>
47
-
48
35
  <% Sidekiq::Web.custom_tabs.each do |title, url| %>
49
36
  <li class="<%= current_path.start_with?(url) ? 'active' : '' %>" data-navbar="custom-tab">
50
37
  <a href="<%= root_path %><%= url %>"><%= t(title) %></a>
51
38
  </li>
52
39
  <% end %>
53
- </ul>
54
- <ul class="nav navbar-nav navbar-right navbar-livereload" data-navbar="static">
55
- <li>
56
- <div class="poll-wrapper pull-right">
40
+
41
+ <li class="navbar-livereload">
42
+ <div class="poll-wrapper">
57
43
  <%= erb :_poll_link %>
58
44
  <% if Sidekiq::Web.app_url %>
59
45
  <a class="btn btn-inverse" href="<%= Sidekiq::Web.app_url %>"><%= t('BackToApp') %></a>
@@ -1,5 +1,5 @@
1
1
  <% if @total_size > @count %>
2
- <ul class="pagination pull-right">
2
+ <ul class="pagination pull-right flip">
3
3
  <li class="<%= 'disabled' if @current_page == 1 %>">
4
4
  <a href="<%= url %>?page=1">&laquo;</a>
5
5
  </li>
@@ -1,7 +1,4 @@
1
1
  <% if current_path != '' %>
2
- <% if params[:poll] %>
3
- <a id="live-poll" class="btn btn-primary active" href="<%= root_path + current_path %>"><%= t('StopPolling') %></a>
4
- <% else %>
5
- <a id="live-poll" class="btn btn-primary" href="<%= root_path + current_path %>?<%= qparams(poll: true) %>"><%= t('LivePoll') %></a>
6
- <% end %>
2
+ <a class="live-poll-start live-poll btn btn-primary"><%= t('LivePoll') %></a>
3
+ <a class="live-poll-stop live-poll btn btn-primary active"><%= t('StopPolling') %></a>
7
4
  <% end %>
@@ -1,39 +1,39 @@
1
1
  <ul class="list-unstyled summary row">
2
2
  <li class="processed col-sm-1">
3
- <span class="count"><%= number_with_delimiter(stats.processed) %></span>
3
+ <span id="txtProcessed" class="count"><%= number_with_delimiter(stats.processed) %></span>
4
4
  <span class="desc"><%= t('Processed') %></span>
5
5
  </li>
6
6
  <li class="failed col-sm-1">
7
- <span class="count"><%= number_with_delimiter(stats.failed) %></span>
7
+ <span id="txtFailed" class="count"><%= number_with_delimiter(stats.failed) %></span>
8
8
  <span class="desc"><%= t('Failed') %></span>
9
9
  </li>
10
10
  <li class="busy col-sm-1">
11
11
  <a href="<%= root_path %>busy">
12
- <span class="count"><%= number_with_delimiter(workers.size) %></span>
12
+ <span id="txtBusy" class="count"><%= number_with_delimiter(workset.size) %></span>
13
13
  <span class="desc"><%= t('Busy') %></span>
14
14
  </a>
15
15
  </li>
16
16
  <li class="enqueued col-sm-1">
17
17
  <a href="<%= root_path %>queues">
18
- <span class="count"><%= number_with_delimiter(stats.enqueued) %></span>
18
+ <span id="txtEnqueued" class="count"><%= number_with_delimiter(stats.enqueued) %></span>
19
19
  <span class="desc"><%= t('Enqueued') %></span>
20
20
  </a>
21
21
  </li>
22
22
  <li class="retries col-sm-1">
23
23
  <a href="<%= root_path %>retries">
24
- <span class="count"><%= number_with_delimiter(stats.retry_size) %></span>
24
+ <span id="txtRetries" class="count"><%= number_with_delimiter(stats.retry_size) %></span>
25
25
  <span class="desc"><%= t('Retries') %></span>
26
26
  </a>
27
27
  </li>
28
28
  <li class="scheduled col-sm-1">
29
29
  <a href="<%= root_path %>scheduled">
30
- <span class="count"><%= number_with_delimiter(stats.scheduled_size) %></span>
30
+ <span id="txtScheduled" class="count"><%= number_with_delimiter(stats.scheduled_size) %></span>
31
31
  <span class="desc"><%= t('Scheduled') %></span>
32
32
  </a>
33
33
  </li>
34
34
  <li class="dead col-sm-1">
35
35
  <a href="<%= root_path %>morgue">
36
- <span class="count"><%= number_with_delimiter(stats.dead_size) %></span>
36
+ <span id="txtDead" class="count"><%= number_with_delimiter(stats.dead_size) %></span>
37
37
  <span class="desc"><%= t('Dead') %></span>
38
38
  </a>
39
39
  </li>
data/web/views/busy.erb CHANGED
@@ -1,56 +1,91 @@
1
1
  <div class="row header">
2
- <div class="col-sm-8 pull-left">
2
+ <div class="col-sm-4 pull-left flip">
3
+ <h3><%= t('Status') %></h3>
4
+ </div>
5
+ </div>
6
+
7
+ <div class="stats-wrapper">
8
+ <div class="stats-container">
9
+ <div class="stat">
10
+ <h3><%= s = processes.size; number_with_delimiter(s) %></h3>
11
+ <p><%= t('Processes') %></p>
12
+ </div>
13
+ <div class="stat">
14
+ <h3><%= x = processes.total_concurrency; number_with_delimiter(x) %></h3>
15
+ <p><%= t('Threads') %></p>
16
+ </div>
17
+ <div class="stat">
18
+ <h3><%= ws = workset.size; number_with_delimiter(ws) %></h3>
19
+ <p><%= t('Busy') %></p>
20
+ </div>
21
+ <div class="stat">
22
+ <h3><%= x == 0 ? 0 : ((ws / x.to_f) * 100).round(0) %>%</h3>
23
+ <p><%= t('Utilization') %></p>
24
+ </div>
25
+ <div class="stat">
26
+ <h3><%= format_memory(processes.total_rss) %></h3>
27
+ <p><%= t('RSS') %></p>
28
+ </div>
29
+ </div>
30
+ </div>
31
+
32
+ <div class="row header">
33
+ <div class="col-sm-4 pull-left flip">
3
34
  <h3><%= t('Processes') %></h3>
4
35
  </div>
5
- <div class="col-sm-4 pull-right">
6
- <form method="POST" style="margin-top: 20px; margin-bottom: 10px;">
36
+ <div class="col-sm-3 pull-right flip">
37
+ <form method="POST" class="warning-messages">
7
38
  <%= csrf_tag %>
8
- <div class="btn-group pull-right">
39
+ <div class="btn-group pull-right flip">
9
40
  <button class="btn btn-warn" type="submit" name="quiet" value="1" data-confirm="<%= t('AreYouSure') %>"><%= t('QuietAll') %></button>
10
41
  <button class="btn btn-danger" type="submit" name="stop" value="1" data-confirm="<%= t('AreYouSure') %>"><%= t('StopAll') %></button>
11
42
  </div>
12
43
  </form>
13
44
  </div>
14
45
  </div>
15
-
16
46
  <div class="table_container">
17
- <table class="processes table table-hover table-bordered table-striped table-white">
47
+ <table class="processes table table-hover table-bordered table-striped">
18
48
  <thead>
19
49
  <th><%= t('Name') %></th>
20
50
  <th><%= t('Started') %></th>
21
- <th><%= t('Threads') %></th>
22
- <th><%= t('Busy') %></th>
51
+ <th class="col-sm-1"><%= t('RSS') %><a target="blank" href="https://github.com/mperham/sidekiq/wiki/Memory#rss"><span class="info-circle" title="Click to learn more about RSS">?</span></a></th>
52
+ <th class="col-sm-1"><%= t('Threads') %></th>
53
+ <th class="col-sm-1"><%= t('Busy') %></th>
23
54
  <th>&nbsp;</th>
24
55
  </thead>
25
- <% processes.each do |process| %>
56
+ <% lead = processes.leader %>
57
+ <% sorted_processes.each do |process| %>
26
58
  <tr>
27
- <td width="50%">
59
+ <td class="box">
28
60
  <%= "#{process['hostname']}:#{process['pid']}" %>
29
61
  <span class="label label-success"><%= process.tag %></span>
30
62
  <% process.labels.each do |label| %>
31
63
  <span class="label label-info"><%= label %></span>
32
64
  <% end %>
33
65
  <% if process.stopping? %>
34
- <span class="label label-danger">Quiet</span>
66
+ <span class="label label-danger">quiet</span>
67
+ <% end %>
68
+ <% if process.identity == lead %>
69
+ <span class="label label-warning">leader</span>
35
70
  <% end %>
36
71
  <br>
37
72
  <b><%= "#{t('Queues')}: " %></b>
38
- <%= process['queues'] * ", " %>
73
+ <%= process.queues.join(", ") %>
39
74
  </td>
40
75
  <td><%= relative_time(Time.at(process['started_at'])) %></td>
76
+ <td><%= format_memory(process['rss'].to_i) %></td>
41
77
  <td><%= process['concurrency'] %></td>
42
78
  <td><%= process['busy'] %></td>
43
79
  <td>
44
- <div class="btn-group pull-right">
45
- <form method="POST">
46
- <%= csrf_tag %>
47
- <input type="hidden" name="identity" value="<%= process['identity'] %>"/>
48
- <% unless process.stopping? %>
49
- <button class="btn btn-warn" type="submit" name="quiet" value="1"><%= t('Quiet') %></button>
50
- <% end %>
51
- <button class="btn btn-danger" type="submit" name="stop" value="1"><%= t('Stop') %></button>
52
- </form>
53
- </div>
80
+ <form method="POST">
81
+ <%= csrf_tag %>
82
+ <input type="hidden" name="identity" value="<%= process['identity'] %>"/>
83
+
84
+ <div class="btn-group pull-right flip">
85
+ <% unless process.stopping? %><button class="btn btn-xs btn-warn" type="submit" name="quiet" value="1"><%= t('Quiet') %></button><% end %>
86
+ <button class="btn btn-xs btn-danger" type="submit" name="stop" value="1"><%= t('Stop') %></button>
87
+ </div>
88
+ </form>
54
89
  </td>
55
90
  </tr>
56
91
  <% end %>
@@ -64,7 +99,7 @@
64
99
  </div>
65
100
 
66
101
  <div class="table_container">
67
- <table class="workers table table-hover table-bordered table-striped table-white">
102
+ <table class="workers table table-hover table-bordered table-striped">
68
103
  <thead>
69
104
  <th><%= t('Process') %></th>
70
105
  <th><%= t('TID') %></th>
@@ -74,8 +109,8 @@
74
109
  <th><%= t('Arguments') %></th>
75
110
  <th><%= t('Started') %></th>
76
111
  </thead>
77
- <% workers.each do |process, thread, msg| %>
78
- <% job = Sidekiq::Job.new(msg['payload']) %>
112
+ <% workset.each do |process, thread, msg| %>
113
+ <% job = Sidekiq::JobRecord.new(msg['payload']) %>
79
114
  <tr>
80
115
  <td><%= process %></td>
81
116
  <td><%= thread %></td>
@@ -83,7 +118,10 @@
83
118
  <td>
84
119
  <a href="<%= root_path %>queues/<%= msg['queue'] %>"><%= msg['queue'] %></a>
85
120
  </td>
86
- <td><%= job.display_class %></td>
121
+ <td>
122
+ <%= job.display_class %>
123
+ <%= display_tags(job, nil) %>
124
+ </td>
87
125
  <td>
88
126
  <div class="args"><%= display_args(job.display_args) %></div>
89
127
  </td>