sidekiq 6.1.2 → 6.5.6
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.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Changes.md +215 -2
- data/LICENSE +3 -3
- data/README.md +9 -4
- data/bin/sidekiq +3 -3
- data/bin/sidekiqload +70 -66
- data/bin/sidekiqmon +1 -1
- data/lib/generators/sidekiq/job_generator.rb +57 -0
- data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
- data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
- data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
- data/lib/sidekiq/api.rb +321 -145
- data/lib/sidekiq/cli.rb +73 -40
- data/lib/sidekiq/client.rb +48 -72
- data/lib/sidekiq/{util.rb → component.rb} +12 -14
- data/lib/sidekiq/delay.rb +3 -1
- data/lib/sidekiq/extensions/generic_proxy.rb +4 -2
- data/lib/sidekiq/fetch.rb +31 -20
- data/lib/sidekiq/job.rb +13 -0
- data/lib/sidekiq/job_logger.rb +16 -28
- data/lib/sidekiq/job_retry.rb +79 -59
- data/lib/sidekiq/job_util.rb +71 -0
- data/lib/sidekiq/launcher.rb +126 -65
- data/lib/sidekiq/logger.rb +11 -20
- data/lib/sidekiq/manager.rb +35 -34
- data/lib/sidekiq/metrics/deploy.rb +47 -0
- data/lib/sidekiq/metrics/query.rb +153 -0
- data/lib/sidekiq/metrics/shared.rb +94 -0
- data/lib/sidekiq/metrics/tracking.rb +134 -0
- data/lib/sidekiq/middleware/chain.rb +87 -41
- data/lib/sidekiq/middleware/current_attributes.rb +63 -0
- data/lib/sidekiq/middleware/i18n.rb +6 -4
- data/lib/sidekiq/middleware/modules.rb +21 -0
- data/lib/sidekiq/monitor.rb +1 -1
- data/lib/sidekiq/paginator.rb +8 -8
- data/lib/sidekiq/processor.rb +47 -41
- data/lib/sidekiq/rails.rb +22 -4
- data/lib/sidekiq/redis_client_adapter.rb +154 -0
- data/lib/sidekiq/redis_connection.rb +84 -55
- data/lib/sidekiq/ring_buffer.rb +29 -0
- data/lib/sidekiq/scheduled.rb +55 -25
- data/lib/sidekiq/testing/inline.rb +4 -4
- data/lib/sidekiq/testing.rb +38 -39
- data/lib/sidekiq/transaction_aware_client.rb +45 -0
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/action.rb +3 -3
- data/lib/sidekiq/web/application.rb +37 -13
- data/lib/sidekiq/web/csrf_protection.rb +30 -8
- data/lib/sidekiq/web/helpers.rb +60 -28
- data/lib/sidekiq/web/router.rb +4 -1
- data/lib/sidekiq/web.rb +38 -78
- data/lib/sidekiq/worker.rb +136 -13
- data/lib/sidekiq.rb +114 -31
- data/sidekiq.gemspec +12 -4
- data/web/assets/images/apple-touch-icon.png +0 -0
- data/web/assets/javascripts/application.js +113 -60
- data/web/assets/javascripts/chart.min.js +13 -0
- data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
- data/web/assets/javascripts/dashboard.js +50 -67
- data/web/assets/javascripts/graph.js +16 -0
- data/web/assets/javascripts/metrics.js +262 -0
- data/web/assets/stylesheets/application-dark.css +36 -36
- data/web/assets/stylesheets/application-rtl.css +0 -4
- data/web/assets/stylesheets/application.css +82 -237
- data/web/locales/ar.yml +8 -2
- data/web/locales/el.yml +43 -19
- data/web/locales/en.yml +11 -1
- data/web/locales/es.yml +18 -2
- data/web/locales/fr.yml +8 -1
- data/web/locales/ja.yml +3 -0
- data/web/locales/lt.yml +1 -1
- data/web/locales/pt-br.yml +27 -9
- data/web/views/_footer.erb +1 -1
- data/web/views/_job_info.erb +1 -1
- data/web/views/_nav.erb +1 -1
- data/web/views/_poll_link.erb +2 -5
- data/web/views/_summary.erb +7 -7
- data/web/views/busy.erb +50 -19
- data/web/views/dashboard.erb +23 -14
- data/web/views/dead.erb +1 -1
- data/web/views/layout.erb +2 -1
- data/web/views/metrics.erb +69 -0
- data/web/views/metrics_for_job.erb +87 -0
- data/web/views/morgue.erb +6 -6
- data/web/views/queue.erb +15 -11
- data/web/views/queues.erb +3 -3
- data/web/views/retries.erb +7 -7
- data/web/views/retry.erb +1 -1
- data/web/views/scheduled.erb +1 -1
- metadata +43 -36
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -20
- data/.github/contributing.md +0 -32
- data/.github/workflows/ci.yml +0 -41
- data/.gitignore +0 -13
- data/.standard.yml +0 -20
- data/3.0-Upgrade.md +0 -70
- data/4.0-Upgrade.md +0 -53
- data/5.0-Upgrade.md +0 -56
- data/6.0-Upgrade.md +0 -72
- data/COMM-LICENSE +0 -97
- data/Ent-2.0-Upgrade.md +0 -37
- data/Ent-Changes.md +0 -281
- data/Gemfile +0 -24
- data/Gemfile.lock +0 -192
- data/Pro-2.0-Upgrade.md +0 -138
- data/Pro-3.0-Upgrade.md +0 -44
- data/Pro-4.0-Upgrade.md +0 -35
- data/Pro-5.0-Upgrade.md +0 -25
- data/Pro-Changes.md +0 -805
- data/Rakefile +0 -10
- data/code_of_conduct.md +0 -50
- data/lib/generators/sidekiq/worker_generator.rb +0 -57
- data/lib/sidekiq/exception_handler.rb +0 -27
data/web/locales/el.yml
CHANGED
@@ -6,11 +6,12 @@ el: # <---- change this to your locale code
|
|
6
6
|
Namespace: Namespace
|
7
7
|
Realtime: Τρέχουσα Κατάσταση
|
8
8
|
History: Ιστορικό
|
9
|
-
Busy:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
Busy: Υπό επεξεργασία
|
10
|
+
Utilization: Σε χρήση
|
11
|
+
Processed: Επεξεργάστηκαν
|
12
|
+
Failed: Απέτυχαν
|
13
|
+
Scheduled: Προγραμματισμένα
|
14
|
+
Retries: Επαναλήψεις
|
14
15
|
Enqueued: Μπήκαν στην στοίβα
|
15
16
|
Worker: Εργάτης
|
16
17
|
LivePoll: Τρέχουσα Κατάσταση
|
@@ -20,40 +21,42 @@ el: # <---- change this to your locale code
|
|
20
21
|
Job: Εργασία
|
21
22
|
Arguments: Ορίσματα
|
22
23
|
Extras: Extras
|
23
|
-
Started:
|
24
|
+
Started: Ξεκίνησε
|
24
25
|
ShowAll: Εμφάνιση Όλων
|
25
26
|
CurrentMessagesInQueue: Τρέχουσες εργασίες <span class='title'>%{queue}</span>
|
26
27
|
Delete: Διαγραφή
|
27
28
|
AddToQueue: Προσθήκη στην στοίβα
|
28
|
-
AreYouSureDeleteJob: Θέλετε να διαγράψετε την
|
29
|
-
AreYouSureDeleteQueue: Θέλετε να διαγράψετε την %{queue}
|
29
|
+
AreYouSureDeleteJob: Θέλετε να διαγράψετε αυτή την εργασία;
|
30
|
+
AreYouSureDeleteQueue: Θέλετε να διαγράψετε την στοίβα %{queue}; Αυτό θα διαγράψει όλες τις εργασίες εντός της στοίβας, θα εμφανιστεί ξανά εάν προωθήσετε περισσότερες εργασίες σε αυτήν στο μέλλον.
|
30
31
|
Queues: Στοίβες
|
31
32
|
Size: Μέγεθος
|
32
33
|
Actions: Ενέργειες
|
33
|
-
NextRetry: Επόμενη
|
34
|
-
RetryCount: Αριθμός
|
35
|
-
RetryNow:
|
36
|
-
|
34
|
+
NextRetry: Επόμενη Προσπάθεια
|
35
|
+
RetryCount: Αριθμός Προσπαθειών
|
36
|
+
RetryNow: Επανάληψη Τώρα
|
37
|
+
# Kill: Kill
|
38
|
+
LastRetry: Τελευταία Προσπάθεια
|
37
39
|
OriginallyFailed: Αρχικές Αποτυχίες
|
38
|
-
AreYouSure: Είστε
|
39
|
-
DeleteAll: Διαγραφή
|
40
|
+
AreYouSure: Είστε σίγουρος;
|
41
|
+
DeleteAll: Διαγραφή Όλων
|
40
42
|
RetryAll: Επανάληψη Όλων
|
41
|
-
|
43
|
+
# KillAll: Kill All
|
44
|
+
NoRetriesFound: Δεν βρέθηκαν εργασίες προς επαναλήψη
|
42
45
|
Error: Σφάλμα
|
43
46
|
ErrorClass: Κλάση σφάλματος
|
44
47
|
ErrorMessage: Μήνυμα Σφάλματος
|
45
|
-
ErrorBacktrace:
|
48
|
+
ErrorBacktrace: Backtrace Σφάλματος
|
46
49
|
GoBack: ← Πίσω
|
47
50
|
NoScheduledFound: Δεν βρέθηκαν προγραμματισμένες εργασίες
|
48
51
|
When: Πότε
|
49
52
|
ScheduledJobs: Προγραμματισμένες Εργασίες
|
50
|
-
idle:
|
51
|
-
active:
|
53
|
+
idle: αδρανές
|
54
|
+
active: ενεργό
|
52
55
|
Version: Έκδοση
|
53
56
|
Connections: Συνδέσεις
|
54
57
|
MemoryUsage: Χρήση Μνήμης
|
55
58
|
PeakMemoryUsage: Μέγιστη Χρήση Μνήμης
|
56
|
-
Uptime:
|
59
|
+
Uptime: Ημέρες Λειτουργίας
|
57
60
|
OneWeek: 1 εβδομάδα
|
58
61
|
OneMonth: 1 μήνας
|
59
62
|
ThreeMonths: 3 μήνες
|
@@ -62,7 +65,28 @@ el: # <---- change this to your locale code
|
|
62
65
|
DeadJobs: Αδρανείς Εργασίες
|
63
66
|
NoDeadJobsFound: Δεν βρέθηκαν αδρανείς εργασίες
|
64
67
|
Dead: Αδρανείς
|
68
|
+
Process: Διεργασία
|
65
69
|
Processes: Διεργασίες
|
70
|
+
Name: Όνομα
|
66
71
|
Thread: Νήμα
|
67
72
|
Threads: Νήματα
|
68
73
|
Jobs: Εργασίες
|
74
|
+
Paused: Σε παύση
|
75
|
+
Stop: Διακοπή
|
76
|
+
Quiet: Σίγαση
|
77
|
+
StopAll: Διακοπή Όλων
|
78
|
+
QuietAll: Σίγαση Όλων
|
79
|
+
PollingInterval: Συχνότητα Ανανέωσης
|
80
|
+
Plugins: Πρόσθετα
|
81
|
+
NotYetEnqueued: Δεν προστέθηκε στην στοίβα ακόμη
|
82
|
+
CreatedAt: Δημιουργήθηκε στις
|
83
|
+
BackToApp: Πίσω στην Εφαρμογή
|
84
|
+
Latency: Καθυστέρηση
|
85
|
+
Pause: Παύση
|
86
|
+
Unpause: Κατάργηση Παύσης
|
87
|
+
Metrics: Μετρήσεις
|
88
|
+
NoDataFound: Δεν βρέθηκαν δεδομένα
|
89
|
+
ExecutionTime: Συνολικός Χρόνος Εκτέλεσης
|
90
|
+
AvgExecutionTime: Μέσος Χρόνος Εκτέλεσης
|
91
|
+
# Context: Context
|
92
|
+
|
data/web/locales/en.yml
CHANGED
@@ -7,6 +7,7 @@ en: # <---- change this to your locale code
|
|
7
7
|
Realtime: Real-time
|
8
8
|
History: History
|
9
9
|
Busy: Busy
|
10
|
+
Utilization: Utilization
|
10
11
|
Processed: Processed
|
11
12
|
Failed: Failed
|
12
13
|
Scheduled: Scheduled
|
@@ -26,7 +27,7 @@ en: # <---- change this to your locale code
|
|
26
27
|
Delete: Delete
|
27
28
|
AddToQueue: Add to queue
|
28
29
|
AreYouSureDeleteJob: Are you sure you want to delete this job?
|
29
|
-
AreYouSureDeleteQueue: Are you sure you want to delete the %{queue} queue?
|
30
|
+
AreYouSureDeleteQueue: Are you sure you want to delete the %{queue} queue? This will delete all jobs within the queue, it will reappear if you push more jobs to it in the future.
|
30
31
|
Queues: Queues
|
31
32
|
Size: Size
|
32
33
|
Actions: Actions
|
@@ -64,7 +65,9 @@ en: # <---- change this to your locale code
|
|
64
65
|
DeadJobs: Dead Jobs
|
65
66
|
NoDeadJobsFound: No dead jobs were found
|
66
67
|
Dead: Dead
|
68
|
+
Process: Process
|
67
69
|
Processes: Processes
|
70
|
+
Name: Name
|
68
71
|
Thread: Thread
|
69
72
|
Threads: Threads
|
70
73
|
Jobs: Jobs
|
@@ -81,3 +84,10 @@ en: # <---- change this to your locale code
|
|
81
84
|
Latency: Latency
|
82
85
|
Pause: Pause
|
83
86
|
Unpause: Unpause
|
87
|
+
Metrics: Metrics
|
88
|
+
NoDataFound: No data found
|
89
|
+
ExecutionTime: Total Execution Time
|
90
|
+
AvgExecutionTime: Average Execution Time
|
91
|
+
Context: Context
|
92
|
+
Bucket: Bucket
|
93
|
+
NoJobMetricsFound: No recent job metrics were found
|
data/web/locales/es.yml
CHANGED
@@ -7,6 +7,7 @@ es:
|
|
7
7
|
Realtime: Tiempo Real
|
8
8
|
History: Historial
|
9
9
|
Busy: Ocupado
|
10
|
+
Utilization: Utilización
|
10
11
|
Processed: Procesadas
|
11
12
|
Failed: Fallidas
|
12
13
|
Scheduled: Programadas
|
@@ -24,9 +25,9 @@ es:
|
|
24
25
|
ShowAll: Mostrar Todo
|
25
26
|
CurrentMessagesInQueue: Mensajes actualmente en <span class='title'>%{queue}</span>
|
26
27
|
Delete: Eliminar
|
27
|
-
AddToQueue: Añadir a
|
28
|
+
AddToQueue: Añadir a la cola
|
28
29
|
AreYouSureDeleteJob: ¿Estás seguro de eliminar este trabajo?
|
29
|
-
AreYouSureDeleteQueue: ¿Estás seguro de eliminar la
|
30
|
+
AreYouSureDeleteQueue: ¿Estás seguro de eliminar la cola %{queue}?
|
30
31
|
Queues: Colas
|
31
32
|
Size: Tamaño
|
32
33
|
Actions: Acciones
|
@@ -39,6 +40,7 @@ es:
|
|
39
40
|
AreYouSure: ¿Estás seguro?
|
40
41
|
DeleteAll: Borrar Todo
|
41
42
|
RetryAll: Reintentar Todo
|
43
|
+
KillAll: Matar Todo
|
42
44
|
NoRetriesFound: No se encontraron reintentos
|
43
45
|
Error: Error
|
44
46
|
ErrorClass: Clase del Error
|
@@ -63,8 +65,22 @@ es:
|
|
63
65
|
DeadJobs: Trabajos muertos
|
64
66
|
NoDeadJobsFound: No hay trabajos muertos
|
65
67
|
Dead: Muerto
|
68
|
+
Process: Proceso
|
66
69
|
Processes: Procesos
|
70
|
+
Name: Nombre
|
67
71
|
Thread: Hilo
|
68
72
|
Threads: Hilos
|
69
73
|
Jobs: Trabajos
|
74
|
+
Paused: Pausado
|
75
|
+
Stop: Detener
|
76
|
+
Quiet: Silenciar
|
77
|
+
StopAll: Detener Todo
|
78
|
+
QuietAll: Silenciar Todo
|
79
|
+
PollingInterval: Intervalo de Sondeo
|
80
|
+
Plugins: Plugins
|
81
|
+
NotYetEnqueued: Aún no en cola
|
82
|
+
CreatedAt: Creado en
|
83
|
+
BackToApp: Volver a la Aplicación
|
70
84
|
Latency: Latencia
|
85
|
+
Pause: Pausar
|
86
|
+
Unpause: Reanudar
|
data/web/locales/fr.yml
CHANGED
@@ -7,6 +7,7 @@ fr:
|
|
7
7
|
Realtime: Temps réel
|
8
8
|
History: Historique
|
9
9
|
Busy: En cours
|
10
|
+
Utilization: Utilisation
|
10
11
|
Processed: Traitées
|
11
12
|
Failed: Échouées
|
12
13
|
Scheduled: Planifiées
|
@@ -39,6 +40,7 @@ fr:
|
|
39
40
|
AreYouSure: Êtes-vous certain ?
|
40
41
|
DeleteAll: Tout supprimer
|
41
42
|
RetryAll: Tout réessayer
|
43
|
+
KillAll: Tout tuer
|
42
44
|
NoRetriesFound: Aucune tâche à réessayer n’a été trouvée
|
43
45
|
Error: Erreur
|
44
46
|
ErrorClass: Classe d’erreur
|
@@ -63,6 +65,7 @@ fr:
|
|
63
65
|
DeadJobs: Tâches mortes
|
64
66
|
NoDeadJobsFound: Aucune tâche morte n'a été trouvée
|
65
67
|
Dead: Mortes
|
68
|
+
Process: Processus
|
66
69
|
Processes: Processus
|
67
70
|
Thread: Thread
|
68
71
|
Threads: Threads
|
@@ -72,7 +75,11 @@ fr:
|
|
72
75
|
Quiet: Clore
|
73
76
|
StopAll: Tout arrêter
|
74
77
|
QuietAll: Tout clore
|
75
|
-
PollingInterval:
|
78
|
+
PollingInterval: Intervalle de rafraîchissement
|
76
79
|
Plugins: Plugins
|
77
80
|
NotYetEnqueued: Pas encore en file d'attente
|
78
81
|
CreatedAt: Créée le
|
82
|
+
Back to App: Retour à l'application
|
83
|
+
Latency: Latence
|
84
|
+
Pause: Pause
|
85
|
+
Unpause: Unpause
|
data/web/locales/ja.yml
CHANGED
@@ -7,6 +7,7 @@ ja:
|
|
7
7
|
Realtime: リアルタイム
|
8
8
|
History: 履歴
|
9
9
|
Busy: 実行中
|
10
|
+
Utilization: 使用率
|
10
11
|
Processed: 完了
|
11
12
|
Failed: 失敗
|
12
13
|
Scheduled: 予定
|
@@ -64,7 +65,9 @@ ja:
|
|
64
65
|
DeadJobs: デッドジョブ
|
65
66
|
NoDeadJobsFound: デッドジョブはありません
|
66
67
|
Dead: デッド
|
68
|
+
Process: プロセス
|
67
69
|
Processes: プロセス
|
70
|
+
Name: 名前
|
68
71
|
Thread: スレッド
|
69
72
|
Threads: スレッド
|
70
73
|
Jobs: ジョブ
|
data/web/locales/lt.yml
CHANGED
data/web/locales/pt-br.yml
CHANGED
@@ -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
|
62
|
-
DeadJobs
|
63
|
-
NoDeadJobsFound
|
64
|
-
Dead
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
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/views/_footer.erb
CHANGED
@@ -9,7 +9,7 @@
|
|
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 server-utc-time"><%= server_utc_time %></p>
|
12
|
+
<p id="serverUtcTime" class="navbar-text server-utc-time"><%= server_utc_time %></p>
|
13
13
|
</li>
|
14
14
|
<li>
|
15
15
|
<p class="navbar-text"><a style="color: gray;" href="https://github.com/mperham/sidekiq/wiki">docs</a></p>
|
data/web/views/_job_info.erb
CHANGED
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="
|
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>
|
data/web/views/_poll_link.erb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
1
|
<% if current_path != '' %>
|
2
|
-
|
3
|
-
<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 %>
|
data/web/views/_summary.erb
CHANGED
@@ -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(
|
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,8 +1,39 @@
|
|
1
1
|
<div class="row header">
|
2
|
-
<div class="col-sm-
|
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-
|
36
|
+
<div class="col-sm-3 pull-right flip">
|
6
37
|
<form method="POST" class="warning-messages">
|
7
38
|
<%= csrf_tag %>
|
8
39
|
<div class="btn-group pull-right flip">
|
@@ -12,18 +43,18 @@
|
|
12
43
|
</form>
|
13
44
|
</div>
|
14
45
|
</div>
|
15
|
-
|
16
46
|
<div class="table_container">
|
17
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('
|
22
|
-
<th><%= t('
|
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> </th>
|
24
55
|
</thead>
|
25
56
|
<% lead = processes.leader %>
|
26
|
-
<%
|
57
|
+
<% sorted_processes.each do |process| %>
|
27
58
|
<tr>
|
28
59
|
<td class="box">
|
29
60
|
<%= "#{process['hostname']}:#{process['pid']}" %>
|
@@ -39,22 +70,22 @@
|
|
39
70
|
<% end %>
|
40
71
|
<br>
|
41
72
|
<b><%= "#{t('Queues')}: " %></b>
|
42
|
-
<%= process
|
73
|
+
<%= process.queues.join(", ") %>
|
43
74
|
</td>
|
44
75
|
<td><%= relative_time(Time.at(process['started_at'])) %></td>
|
76
|
+
<td><%= format_memory(process['rss'].to_i) %></td>
|
45
77
|
<td><%= process['concurrency'] %></td>
|
46
78
|
<td><%= process['busy'] %></td>
|
47
79
|
<td>
|
48
|
-
<
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
</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>
|
58
89
|
</td>
|
59
90
|
</tr>
|
60
91
|
<% end %>
|
@@ -78,8 +109,8 @@
|
|
78
109
|
<th><%= t('Arguments') %></th>
|
79
110
|
<th><%= t('Started') %></th>
|
80
111
|
</thead>
|
81
|
-
<%
|
82
|
-
<% job = Sidekiq::
|
112
|
+
<% workset.each do |process, thread, msg| %>
|
113
|
+
<% job = Sidekiq::JobRecord.new(msg['payload']) %>
|
83
114
|
<tr>
|
84
115
|
<td><%= process %></td>
|
85
116
|
<td><%= thread %></td>
|
data/web/views/dashboard.erb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
+
<script type="text/javascript" src="<%= root_path %>javascripts/graph.js"></script>
|
1
2
|
<script type="text/javascript" src="<%= root_path %>javascripts/dashboard.js"></script>
|
2
3
|
<div class= "dashboard clearfix">
|
3
4
|
<h3 >
|
4
5
|
<%= t('Dashboard') %>
|
5
|
-
<span class="beacon">
|
6
|
+
<span id="beacon" class="beacon">
|
6
7
|
<span class="ring"></span>
|
7
8
|
<span class="dot"></span>
|
8
9
|
</span>
|
9
10
|
</h3>
|
10
11
|
<div class="interval-slider ltr">
|
11
12
|
<span class="interval-slider-label"><%= t('PollingInterval') %>:</span>
|
12
|
-
<span class="current-interval">5 sec</span>
|
13
|
+
<span id="sldr-text" class="current-interval">5 sec</span>
|
13
14
|
<br/>
|
14
|
-
<input type="range" min="2000" max="20000" step="1000" value="5000"/>
|
15
|
+
<input id="sldr" type="range" min="2000" max="20000" step="1000" value="5000"/>
|
15
16
|
</div>
|
16
17
|
</div>
|
17
18
|
|
@@ -20,54 +21,62 @@
|
|
20
21
|
<div id="realtime-legend"></div>
|
21
22
|
</div>
|
22
23
|
|
23
|
-
<div class="row
|
24
|
-
|
25
|
-
|
24
|
+
<div class="row header">
|
25
|
+
<div class="col-sm-4 pull-left flip">
|
26
|
+
<h3><%= t('History') %></h3>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<div class="row chart">
|
30
|
+
<div>
|
26
31
|
<a href="<%= root_path %>?days=7" class="history-graph <%= "active" if params[:days] == "7" %>"><%= t('OneWeek') %></a>
|
27
32
|
<a href="<%= root_path %>" class="history-graph <%= "active" if params[:days].nil? || params[:days] == "30" %>"><%= t('OneMonth') %></a>
|
28
33
|
<a href="<%= root_path %>?days=90" class="history-graph <%= "active" if params[:days] == "90" %>"><%= t('ThreeMonths') %></a>
|
29
34
|
<a href="<%= root_path %>?days=180" class="history-graph <%= "active" if params[:days] == "180" %>"><%= t('SixMonths') %></a>
|
30
|
-
</
|
35
|
+
</div>
|
31
36
|
|
32
37
|
<div id="history" data-processed-label="<%= t('Processed') %>" data-failed-label="<%= t('Failed') %>" data-processed="<%= h Sidekiq.dump_json(@processed_history) %>" data-failed="<%= h Sidekiq.dump_json(@failed_history) %>" data-update-url="<%= root_path %>stats"></div>
|
33
38
|
<div id="history-legend"></div>
|
34
39
|
</div>
|
35
40
|
|
36
41
|
<br/>
|
37
|
-
<
|
38
|
-
<div class="
|
42
|
+
<div class="row header">
|
43
|
+
<div class="col-sm-4 pull-left flip">
|
44
|
+
<h3>Redis</h3>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
<div class="stats-wrapper">
|
39
48
|
<div class="stats-container">
|
40
49
|
<% if @redis_info.fetch("redis_version", nil) %>
|
41
50
|
<div class="stat">
|
42
|
-
<h3
|
51
|
+
<h3 id="redis_version"><%= @redis_info.fetch("redis_version") %></h3>
|
43
52
|
<p><%= t('Version') %></p>
|
44
53
|
</div>
|
45
54
|
<% end %>
|
46
55
|
|
47
56
|
<% if @redis_info.fetch("uptime_in_days", nil) %>
|
48
57
|
<div class="stat">
|
49
|
-
<h3
|
58
|
+
<h3 id="uptime_in_days"><%= @redis_info.fetch("uptime_in_days") %></h3>
|
50
59
|
<p><%= t('Uptime') %></p>
|
51
60
|
</div>
|
52
61
|
<% end %>
|
53
62
|
|
54
63
|
<% if @redis_info.fetch("connected_clients", nil) %>
|
55
64
|
<div class="stat">
|
56
|
-
<h3
|
65
|
+
<h3 id="connected_clients"><%= @redis_info.fetch("connected_clients") %></h3>
|
57
66
|
<p><%= t('Connections') %></p>
|
58
67
|
</div>
|
59
68
|
<% end %>
|
60
69
|
|
61
70
|
<% if @redis_info.fetch("used_memory_human", nil) %>
|
62
71
|
<div class="stat">
|
63
|
-
<h3
|
72
|
+
<h3 id="used_memory_human"><%= @redis_info.fetch("used_memory_human") %></h3>
|
64
73
|
<p><%= t('MemoryUsage') %></p>
|
65
74
|
</div>
|
66
75
|
<% end %>
|
67
76
|
|
68
77
|
<% if @redis_info.fetch("used_memory_peak_human", nil) %>
|
69
78
|
<div class="stat">
|
70
|
-
<h3
|
79
|
+
<h3 id="used_memory_peak_human"><%= @redis_info.fetch("used_memory_peak_human") %></h3>
|
71
80
|
<p><%= t('PeakMemoryUsage') %></p>
|
72
81
|
</div>
|
73
82
|
<% end %>
|
data/web/views/dead.erb
CHANGED
data/web/views/layout.erb
CHANGED
@@ -16,12 +16,13 @@
|
|
16
16
|
<link href="<%= root_path %>stylesheets/application-rtl.css" media="screen" rel="stylesheet" type="text/css" />
|
17
17
|
<% end %>
|
18
18
|
|
19
|
+
<link rel="apple-touch-icon" href="<%= root_path %>images/apple-touch-icon.png">
|
19
20
|
<link rel="shortcut icon" type="image/ico" href="<%= root_path %>images/favicon.ico" />
|
20
21
|
<script type="text/javascript" src="<%= root_path %>javascripts/application.js"></script>
|
21
22
|
<meta name="google" content="notranslate" />
|
22
23
|
<%= display_custom_head %>
|
23
24
|
</head>
|
24
|
-
<body class="admin" data-
|
25
|
+
<body class="admin" data-locale="<%= locale %>">
|
25
26
|
<%= erb :_nav %>
|
26
27
|
<div id="page">
|
27
28
|
<div class="container">
|