Commit Graph

191 Commits

Author SHA1 Message Date
GitLab Bot 05003789d9 Add latest changes from gitlab-org/gitlab@master 2021-04-01 15:08:54 +00:00
GitLab Bot 099333e261 Add latest changes from gitlab-org/gitlab@master 2021-03-18 00:08:58 +00:00
GitLab Bot e2999d09ec Add latest changes from gitlab-org/gitlab@master 2021-03-16 12:11:31 +00:00
GitLab Bot 9d195600e6 Add latest changes from gitlab-org/gitlab@master 2021-03-11 18:09:23 +00:00
GitLab Bot d2091d1e92 Add latest changes from gitlab-org/gitlab@master 2021-03-10 15:09:11 +00:00
GitLab Bot b2452a3692 Add latest changes from gitlab-org/gitlab@master 2021-02-25 12:11:01 +00:00
GitLab Bot 4046c3447e Add latest changes from gitlab-org/gitlab@master 2021-02-05 15:09:28 +00:00
GitLab Bot 315243f877 Add latest changes from gitlab-org/gitlab@master 2021-02-05 09:09:10 +00:00
GitLab Bot 2eaa60e455 Add latest changes from gitlab-org/gitlab@master 2020-11-26 15:09:30 +00:00
GitLab Bot 4fc6f62c16 Add latest changes from gitlab-org/gitlab@master 2020-11-25 00:09:24 +00:00
GitLab Bot a683d38a36 Add latest changes from gitlab-org/gitlab@master 2020-10-26 18:08:27 +00:00
GitLab Bot 9c72b346ac Add latest changes from gitlab-org/gitlab@master 2020-10-15 09:08:41 +00:00
GitLab Bot 7dc8bd3c16 Add latest changes from gitlab-org/gitlab@master 2020-09-15 21:09:35 +00:00
GitLab Bot 06c127aa72 Add latest changes from gitlab-org/gitlab@master 2020-09-15 15:10:08 +00:00
GitLab Bot 825e4190a3 Add latest changes from gitlab-org/gitlab@master 2020-09-09 15:08:47 +00:00
GitLab Bot 71da5de44f Add latest changes from gitlab-org/gitlab@master 2020-08-05 15:09:59 +00:00
GitLab Bot 448ff1fb83 Add latest changes from gitlab-org/gitlab@master 2020-07-22 03:09:40 +00:00
GitLab Bot 3a9076e0a4 Add latest changes from gitlab-org/gitlab@master 2020-07-16 18:09:35 +00:00
GitLab Bot 35c9eaced5 Add latest changes from gitlab-org/gitlab@master 2020-06-17 00:16:40 +00:00
GitLab Bot 711f859532 Add latest changes from gitlab-org/gitlab@master 2020-06-01 15:08:16 +00:00
GitLab Bot 374cf04cf2 Add latest changes from gitlab-org/gitlab@master 2020-05-20 12:07:52 +00:00
GitLab Bot 59accb4c47 Add latest changes from gitlab-org/gitlab@master 2020-05-20 00:08:20 +00:00
GitLab Bot 553a22402b Add latest changes from gitlab-org/gitlab@master 2020-05-19 12:08:21 +00:00
GitLab Bot bc692af988 Add latest changes from gitlab-org/gitlab@master 2020-05-09 00:09:39 +00:00
GitLab Bot 3795b229ab Add latest changes from gitlab-org/gitlab@master 2020-05-01 00:09:59 +00:00
GitLab Bot e33f87ac0f Add latest changes from gitlab-org/gitlab@master 2020-04-21 15:21:10 +00:00
GitLab Bot 874ead9c3a Add latest changes from gitlab-org/gitlab@master 2020-04-14 15:09:44 +00:00
GitLab Bot 8a7efa45c3 Add latest changes from gitlab-org/gitlab@master 2020-04-02 18:08:11 +00:00
GitLab Bot abae8f34f3 Add latest changes from gitlab-org/gitlab@master 2020-03-31 21:08:05 +00:00
GitLab Bot dddde902ac Add latest changes from gitlab-org/gitlab@master 2020-03-26 03:07:43 +00:00
GitLab Bot 074d013e1e Add latest changes from gitlab-org/gitlab@master 2020-03-23 15:09:36 +00:00
GitLab Bot d43aaf286f Add latest changes from gitlab-org/gitlab@master 2020-03-17 00:09:12 +00:00
GitLab Bot 1fa79760ad Add latest changes from gitlab-org/gitlab@master 2020-03-10 12:08:16 +00:00
GitLab Bot 7ebcead8cf Add latest changes from gitlab-org/gitlab@master 2020-03-09 18:07:59 +00:00
GitLab Bot 7b52c7cb63 Add latest changes from gitlab-org/gitlab@master 2020-03-02 18:07:42 +00:00
GitLab Bot e0fa0638a4 Add latest changes from gitlab-org/gitlab@master 2020-02-27 18:09:21 +00:00
GitLab Bot 951616a26a Add latest changes from gitlab-org/gitlab@master 2020-02-25 18:09:02 +00:00
GitLab Bot b042382bbf Add latest changes from gitlab-org/gitlab@master 2020-02-05 18:09:06 +00:00
GitLab Bot ca05512007 Add latest changes from gitlab-org/gitlab@master 2020-02-04 18:08:50 +00:00
GitLab Bot 88a0824944 Add latest changes from gitlab-org/gitlab@master 2020-02-04 12:09:00 +00:00
GitLab Bot fd3a95f07a Add latest changes from gitlab-org/gitlab@master 2020-01-31 09:08:53 +00:00
GitLab Bot 2c2dd5e36c Add latest changes from gitlab-org/gitlab@master 2020-01-24 12:09:01 +00:00
GitLab Bot 3f9e1b2611 Add latest changes from gitlab-org/gitlab@master 2020-01-23 15:08:46 +00:00
GitLab Bot aa0f0e9921 Add latest changes from gitlab-org/gitlab@master 2020-01-16 18:08:46 +00:00
GitLab Bot 511e761b41 Add latest changes from gitlab-org/gitlab@master 2020-01-03 15:08:33 +00:00
GitLab Bot ea4762d464 Add latest changes from gitlab-org/gitlab@master 2019-11-22 18:06:00 +00:00
GitLab Bot a92d6b36c2 Add latest changes from gitlab-org/gitlab@master 2019-11-05 09:21:54 +00:00
GitLab Bot 7b25b12016 Add latest changes from gitlab-org/gitlab@master 2019-11-04 18:06:28 +00:00
GitLab Bot a77db6bc47 Add latest changes from gitlab-org/gitlab@master 2019-10-28 15:05:58 +00:00
GitLab Bot 09ffaae132 Add latest changes from gitlab-org/gitlab@master 2019-10-23 12:06:18 +00:00
GitLab Bot b1bcdba89b Add latest changes from gitlab-org/gitlab@master 2019-10-22 12:06:20 +00:00
GitLab Bot c157f963db Add latest changes from gitlab-org/gitlab@master 2019-10-10 09:06:08 +00:00
GitLab Bot b082790134 Add latest changes from gitlab-org/gitlab@master 2019-09-18 18:06:14 +00:00
Qingyu Zhao eeeaebe608 Change Sidekiq monitor namespace
Move Gitlab::SidekiqMonitor to namespace Gitlab::SidekiqDaemon::Monitor
 - Class name and file name change
 - File path change to lib/gitlab/sidekiq_daemon/monitor.rb
 - Update class usage/reference in other files, including documentation
2019-09-11 00:11:54 +10:00
Andrew Newdigate 18e5362e87 Fix for histogram corruption in Sidekiq
This fixes a bug in which sidekiq histograms contain invalid labels.

See https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/7729
for more details.
2019-08-30 14:04:45 +00:00
Kamil Trzciński dbd88c02d6 Put cancelled job in DeadSet
This replicates Sidekiq behavior
of pushing dead job into DeadSet.
2019-08-21 21:15:03 +02:00
Kamil Trzciński 8d17c4dae6 Properly handle `sidekiq` skip
Transform `CancelledError` into `JobRetry::Skip`
2019-08-21 13:21:55 +02:00
Kamil Trzciński c2cbfc5c4a Rework `Sidekiq::JobsThreads` into `Monitor`
This makes:
- very shallow `Middleware::Monitor` to only request tracking
  of sidekiq jobs,
- `SidekiqStatus::Monitor` to be responsible to maintain persistent
  connection to receive messages,
- `SidekiqStatus::Monitor` to always use structured logging
  and instance variables
2019-08-21 12:05:30 +02:00
Kamil Trzciński 75e2302d01 Allow to interrupt running jobs
This adds a middleware to track all threads
for running jobs.

This makes sidekiq to watch for redis-delivered notifications.

This makes be able to send notification to interrupt
running sidekiq jobs.

This does not take into account any native code,
as `Thread.raise` generates exception once the control gets
back to Ruby.

The separate measure should be taken to interrupt gRPC, shellouts,
or anything else that escapes Ruby.
2019-08-21 18:50:46 +10:00
Andrew Newdigate 790f64561a Allow measurement for Sidekiq jobs taking > 2.5s
Fix for https://gitlab.com/gitlab-org/gitlab-ce/issues/66319.
2019-08-20 13:52:25 +00:00
Stan Hu a74396dcc5 Add Gitaly and Rugged call timing in Sidekiq logs
This will help identify Sidekiq jobs that invoke excessive number of
filesystem access.

The timing data is stored in `RequestStore`, but this is only active
within the middleware and is not directly accessible to the Sidekiq
logger. However, it is possible for the middleware to modify the job
hash to pass this data along to the logger.
2019-08-09 01:08:32 -07:00
Shinya Maeda 8f14d3c140 Fix sidekiq memory killer warning message 2019-07-30 13:47:13 +07:00
Ryan Cobb cfea48dffd Adds direct monitoring for sidekiq metrics
This adds diirect monitoring for sidekiq metrics. This is done via
sidekiq middleware and a sampler to pull from sidekiqs api.
2019-07-29 11:53:12 +00:00
Shinya Maeda ad7acfaad0 Logging sidekiq worker class name in SidekiqMemoryKiller
Currently, SidekiqMemoryKiller does not feed worker class name in the
json structured logging. This commit extends the json parameter.
2019-07-25 17:49:10 +07:00
Andrew Newdigate 4f4de36cac Migrate correlation and tracing code to LabKit
This change is a fairly straightforward refactor to extract the tracing
and correlation-id code from the gitlab rails codebase into the new
LabKit-Ruby project.

The corresponding import into LabKit-Ruby was in
https://gitlab.com/gitlab-org/labkit-ruby/merge_requests/1

The code itself remains very similar for now.

Extracting it allows us to reuse it in other projects, such as
Gitaly-Ruby. This will give us the advantages of correlation-ids and
distributed tracing in that project too.
2019-04-18 09:57:16 +02:00
Nick Thomas 452f508143
Fix the last-ditch memory killer pgroup SIGKILL 2019-03-09 13:34:06 +00:00
Nick Thomas f0c52df5e5 sidekiq: terminate child processes at shutdown
Sidekiq jobs frequently spawn long-lived child processes to do work.
In some circumstances, these can be reparented to init when sidekiq is
terminated, leading to duplication of work and strange concurrency
problems.

This commit changes sidekiq so that, if run as a process group leader,
it will forward `INT` and `TERM` signals to the whole process group. If
the memory killer is active, it will also use the process group when
resorting to `kill -9` to shut down.

These changes mean that a naive `kill <pid-of-sidekiq>` will now do the
right thing, killing any child processes spawned by sidekiq, as long as
the process supervisor placed it in its own process group.

If sidekiq isn't a process group leader, this new code is skipped.
2019-03-04 09:06:41 -08:00
Nick Thomas adddbf437d
SIGSTP should be SIGTSTP 2019-03-01 10:38:38 +00:00
Nick Thomas ff431fe076
Revert "Restart Unicorn and Sidekiq when GRPC throws 14:Endpoint read failed"
This reverts commit 006753110a.
2019-02-28 14:45:20 +00:00
Kamil Trzciński 39c1731a53 Log and pass correlation-id between Unicorn, Sidekiq and Gitaly
The Correlation ID is taken or generated from received X-Request-ID.
Then it is being passed to all executed services (sidekiq workers
or gitaly calls).

The Correlation ID is logged in all structured logs as `correlation_id`.
2018-12-06 20:46:14 +01:00
Douwe Maan 1b8a791829 Clear BatchLoader context between Sidekiq jobs 2018-11-22 09:22:12 -08:00
gfyoung f93f8f569d Enable even more frozen string for lib/gitlab
Enables frozen string for the following:

* lib/gitlab/patch/**/*.rb
* lib/gitlab/popen/**/*.rb
* lib/gitlab/profiler/**/*.rb
* lib/gitlab/project_authorizations/**/*.rb
* lib/gitlab/prometheus/**/*.rb
* lib/gitlab/query_limiting/**/*.rb
* lib/gitlab/quick_actions/**/*.rb
* lib/gitlab/redis/**/*.rb
* lib/gitlab/request_profiler/**/*.rb
* lib/gitlab/search/**/*.rb
* lib/gitlab/sherlock/**/*.rb
* lib/gitlab/sidekiq_middleware/**/*.rb
* lib/gitlab/slash_commands/**/*.rb
* lib/gitlab/sql/**/*.rb
* lib/gitlab/template/**/*.rb
* lib/gitlab/testing/**/*.rb
* lib/gitlab/utils/**/*.rb
* lib/gitlab/webpack/**/*.rb

Partially addresses gitlab-org/gitlab-ce#47424.
2018-11-19 18:24:22 -08:00
🙈 jacopo beschi 🙉 c6b1043e9d Resolve "Make a Rubocop that forbids returning from a block" 2018-04-18 09:19:40 +00:00
Jacob Vosmaer (GitLab) 006753110a Restart Unicorn and Sidekiq when GRPC throws 14:Endpoint read failed 2018-02-26 09:54:20 +00:00
Douwe Maan 876854285f Explicitly set cwd in Sidekiq memory killer instead of depending on getcwd 2018-02-06 11:14:45 -06:00
Douwe Maan ccb5bad6b8 Send SIGSTP before SIGTERM to actually give Sidekiq jobs 30s to finish when the memory killer kicks in 2017-11-02 15:33:19 +01:00
Benjamin Drung 74846409ce Sidekiq::MemoryKiller: Add missing space in log message
The sidekiq memory killer prints warnings like

gitlab-sidekiq[8245]: 2017-09-27T11:31:43.192Z 8245 TID-ov9l6b4e0 WARN:
this thread will shut down PID 8245 - Worker ProjectWebHookWorker -
JID-dd3b1c23a653deec5e575ab4in 900 seconds

There is a space missing between the JID and 'in'.
2017-10-04 10:50:43 +02:00
Rémy Coutable 8d333c87f1 Merge branch 'aiionx_sidekiq_log_patch' into 'master'
Log sidekiq arguments as json

Logging the sidekiq job arguments as a ruby literal structure 
is akward. Specially when parsing the logs.

JSON is a standar format.



See merge request !3735
2016-10-03 14:20:18 +00:00
Stan Hu f4aac77389 Add support for using RequestStore within Sidekiq tasks via SIDEKIQ_REQUEST_STORE env variable
This significantly reduces the DB churn in the PostReceive task when it
performs reference extraction.

See #18663
2016-07-25 17:59:09 -07:00
James Lopez 95f630daeb even more debug 2016-07-06 10:29:31 +02:00
James Lopez a7b1b51226 better debugging for memory killer middleware 2016-06-27 12:11:01 +02:00
Jacob Vosmaer 103c405339 Use SIGTERM during Sidekiq memory shutdown
This makes the memory killer behave more like 'sidekiqctl stop'.
2016-04-21 14:49:15 +02:00
David dc20dd275f aiionx_sidekiq_log_patch 2016-04-15 02:18:46 +00:00
Jacob Vosmaer c291ff9c6f Use SIGKILL by default in Sidekiq::MemoryKiller
This makes the memory growth-triggered Sidekiq restarts more reliable by
reducing the chance that Sidekiq ends up in a state where it is not
accepting new jobs but also not shutting down: SIGKILL is more likely to
work than SIGTERM.
2015-05-13 17:09:12 +02:00
Jacob Vosmaer 1c1f18b416 Add SIDEKIQ_MEMORY_KILLER_SHUTDOWN_SIGNAL env var
It looks like SIGTERM may not be enough to shut down a Sidekiq process
when its RSS has gotten too big. This change will allow us to experiment
with sending SIGKILL instead of SIGTERM to Sidekiq processes on
gitlab.com.
2015-05-07 18:47:03 +02:00
Jacob Vosmaer 2fcef3278c Fix typo 2014-12-08 13:39:18 +01:00
Jacob Vosmaer 3dd86b83ba Use constants instead of getters 2014-12-08 13:19:31 +01:00
Jacob Vosmaer 4f9a14061b Wait 15 minutes before Sidekiq MemoryKiller action 2014-12-05 17:29:34 +01:00
Jacob Vosmaer d336127a20 Add comments to the MemoryKiller middleware 2014-11-28 15:19:03 +01:00
Jacob Vosmaer 64ab6c9ed5 Add 'MemoryKiller' Sidekiq middleware
When enabled, this middleware allows Sidekiq to detect that its RSS has
exceeded a maximum value, triggering a graceful shutdown. This
middleware should be combined with external process supervision that
will restart Sidekiq after the graceful shutdown, such as Runit.
2014-11-28 15:01:41 +01:00
Jacob Vosmaer 03ae6b89bd Log Sidekiq arguments 2014-07-28 16:46:36 +02:00