Commit Graph

2927 Commits

Author SHA1 Message Date
Douwe Maan 0e1e42885a Merge branch 'sidekiq-job-throttling' into 'master'
Allow certain Sidekiq jobs to be throttled

## What does this MR do?

Allows certain slow running Sidekiq jobs to be throttled. It is disabled by default and can be enabled via the Application Settings. 

![Screen_Shot_2016-11-04_at_4.51.24_PM](/uploads/a1f1d24c693fcdb278602765cd404d94/Screen_Shot_2016-11-04_at_4.51.24_PM.png)

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG.md) entry added
- [x] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing

## What are the relevant issue numbers?

Related to #23352

See merge request !7292
2016-11-11 18:32:40 +00:00
Patricio Cano e840749b84 Refactored Sidekiq Throttler and updated documentation 2016-11-11 11:14:58 -06:00
Sean McGivern 0c7c0edfe2 Merge branch 'adam-fix-collapsed-diff-symlink-file-conversion' into 'master'
Fix the collapsed diff  when converting a symlink to a regular file

#21610 
!6828

See merge request !6953
2016-11-11 11:19:50 +00:00
Patricio Cano 208530494e Refactored initializer code to its own class and added tests 2016-11-10 11:38:11 -06:00
Patricio Cano b95216aaba Allow the Sidekiq queues to throttle and the factor by which to throttle them to be configurable 2016-11-10 11:38:11 -06:00
Patricio Cano 9e2964c15a Allow certain Sidekiq jobs to be throttled 2016-11-10 11:38:10 -06:00
Adam Niedzielski 3fa265d195 Fix expanding a collapsed diff when converting a symlink to a regular file
In this case comparing old_path and new_path is not enough because there
are two entires that match.
2016-11-10 18:24:12 +01:00
Rémy Coutable 88edbd11a9
Improve EeCompatCheck, cache EE repo and keep artifacts for the ee_compat_check task
Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-11-10 10:40:47 +01:00
Sean McGivern de8c2b79c0 Merge branch 'ldap_check_bind' into 'master'
Improve ldap:check errors

Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/21621. 

See merge request !6601
2016-11-09 15:37:23 +00:00
Robert Speicher b0088b527e
Merge branch '23403-fix-events-for-private-project-features' into 'security'
Respect project visibility settings in the contributions calendar

This MR fixes a number of bugs relating to access controls and date selection of events for the contributions calendar

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/23403

See merge request !2019

Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-11-09 12:27:41 +01:00
Douwe Maan b0bf92140f
Merge branch 'fix-unathorized-cloning' into 'security'
Ensure external users are not able to clone disabled repositories.

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/23788

See merge request !2017

Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-11-09 12:27:17 +01:00
Drew Blessing dc30783057 Introduce better credential and error checking to `rake gitlab:ldap:check`
It was previously possible for invalid credential errors to go unnoticed
in this task. Users would believe everything was configured correctly and
then sign in would fail with 'invalid credentials'. This adds a specific
bind check, plus catches errors connecting to the server. Also, specs :)
2016-11-08 15:46:10 -06:00
Sean McGivern 0108387053 Merge branch 'faster_project_search' into 'master'
Faster search inside Project

See merge request !7353
2016-11-08 15:29:56 +00:00
Sean McGivern 7be41074bb Merge branch 'dz-refactor-namespace-regex' into 'master'
Refactor namespace regex

Reuse existing namespace regex constant in routing

See merge request !7336
2016-11-08 12:51:51 +00:00
Valery Sizov 869696bca3 Faster search 2016-11-08 14:21:19 +02:00
Douwe Maan 9c3f3e9e35 Merge branch 'use-separate-token-for-incoming-email' into 'master'
Use separate email-friendly token for incoming email

See merge request !5914
2016-11-08 10:47:45 +00:00
Dmitriy Zaporozhets 7061131676
Refactor namespace regex
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
2016-11-07 18:40:57 +02:00
tiagonbotelho 011e561bfa implements reset incoming email token on issues modal and account page,
reactivates all tests and writes more tests for it
2016-11-07 15:56:18 +00:00
Douwe Maan 9d51421346 Use separate email-friendly token for incoming email and let incoming
email token be reset
2016-11-07 15:55:42 +00:00
Douwe Maan 76ff9fffcc Merge branch 'jacobvosmaer-gitlab/gitlab-ce-git-gc-improvements' into 'master'
Use more than one kind of Git garbage collection

Replaces https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6588 by @jacobvosmaer to get the builds to pass :)

Closes #22729

See merge request !7321
2016-11-07 12:13:02 +00:00
Ahmad Sherif eaa0303b3d Cache imported GH labels no matter what 2016-11-04 15:59:53 +02:00
Ahmad Sherif 6a9fb20fe1 Fix applying GitHub-imported labels when importing job is interrupted
Closes #24075
2016-11-04 15:59:53 +02:00
Jacob Vosmaer 6bcc52a536 Refine Git garbage collection 2016-11-04 14:30:11 +01:00
Lukas Erlacher e900e53aa5 Show log corresponding to env in admin/logs
No matter which environment Gitlab was running as, the admin/logs view
always showed production.log. This commit selects the logfile based
on Rails.env.

- Rename ProductionLogger to EnvironmentLogger
- Make EnvironmentLogger logfile depend on env
- Update spinach test for log tabs
2016-11-03 22:02:47 +01:00
Douwe Maan dc9b3db8b0 Merge branch 'fix/import-export-symlink-vulnerability' into 'security'
Fix symlink vulnerability in Import/Export

Replaces https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2018 made by @james

Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/23822

See merge request !2022

Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-11-03 16:04:18 +01:00
Douwe Maan cfb511ea69 Merge branch 'fix/import-projectmember-security' into 'security'
Fix Import/Export foreign key issue to do with project members

Cleans-up any foreign keys in `ProjectMember` - same as we do with the rest of the models when importing.

Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/23837 and https://gitlab.com/gitlab-org/gitlab-ce/issues/23739

See merge request !2020

Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-11-03 16:04:18 +01:00
Felipe Artur f4e31b820e Fix project features default values 2016-11-01 11:03:56 -02:00
Alejandro Rodríguez fa3bbd449e Fix lightweight tags not processed correctly by GitTagPushService
When we updated gitlab_git to 10.4.1, `tag.target` changed from pointing
to the sha of the tag to the sha of the commit the tag points to. The
problem is that only annotated tags have `object_sha`s, lightweight tags
don't (it's nil), so (only) in their case we still need to use
`tag.target`.
2016-10-28 13:53:18 -03:00
Douwe Maan 44cbfeaba8 Merge branch 'adam-fix-labels-find-or-create' into 'master'
Pass user instance to Labels::FindOrCreateService or skip_authorization: true

## What does this MR do?

It fixes a bug described in #23694 when `project.owner` was passed to `Labels::FindOrCreateService`. `Labels::FindOrCreateService` expected a user instance and `project.owner` may return a group as well. This MR makes sure that we either pass a user instance or `skip_authorization: true`.

## Are there points in the code the reviewer needs to double check?

- places where we pass `skip_authorization: true`

## Does this MR meet the acceptance criteria?

- Tests
  - [x] Added for this feature/bug
  - [ ] All builds are passing
- [ ] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if it does - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

## What are the relevant issue numbers?

Fixes #23694

See merge request !7093
2016-10-28 15:01:59 +00:00
Stan Hu d306b0d7c2 Merge branch 'use-optimistic-locking' into 'master'
Use optimistic locking

## What does this MR do?
Removes the usage of pessimistic locking in favor of optimistic which is way cheaper and doesn't block database operation.

Since this is very simple change it should be safe. If we receive `StaleObjectError` message we will reload object a retry operations in lock.

However, I still believe that we need this one: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7005 as this will reduce a load on Database and FS.
This changes a behavior from:

### Pesimistic locking (previous behavior)

#### For updating
1. SELECT * FOR UPDATE (other updates wait on this)
2. we update ci_pipeline
3. latest_build_status
4. enqueue: (use: transition :created -> :pending)
5. [state_machine] we are in  state created, we can go to pending
6. [state_machine] ci_pipeline.status = created
7. [state_machine] ci_pipeline.save
8. [state_machine] after_transition: (if for success): PipelineSuccessWorker on Sidekiq
9. release DB lock

#### If no update is required
1. SELECT * FOR UPDATE (other updates wait on this)
2. we update ci_pipeline
3. latest_build_status
4. we are in pending, we can't transition to pending, because it's forbidden
5. release DB lock

### Optimistic locking (implemented by this MR)

#### For updating
1. latest_build_status
2. enqueue: (use `transition :created -> :pending`)
3. [state_machine] we are in state created, we can go to pending
4. [state_machine] ci_pipeline.status = created
5. [state_machine] ci_pipeline.save
6. [state_machine] [save] where(lock_version: ci_pipeline.lock_version).update_all(status: :created, updated_at: Time.now)
7. [state_machine] [save] unless we_updated_row then raise ObjectInconsistentError

#### If no update is required
1. we update ci_pipeline
2. latest_build_status
3. we are in pending, we can't transition to pending, because it's forbidden

## Why was this MR needed?
We have been seeing a number of problems when we migrated Pipeline/Build processing to Sidekiq. Especially we started seeing a lot of blocking queries.

We used a pessimistic locking which doesn't seem to be required. This effectively allows us to fix our issues with blocked queries by using more efficient method of operation.

## What are the relevant issue numbers?
Issues: https://gitlab.com/gitlab-com/infrastructure/issues/623 and https://gitlab.com/gitlab-com/infrastructure/issues/584, but also there's a bunch of Merge Requests that try to improve behavior of scheduled jobs.

cc @pcarranza @yorickpeterse @stanhu

See merge request !7040
2016-10-28 14:41:24 +00:00
Adam Niedzielski e2c603696a Pass user instance to Labels::FindOrCreateService or skip_authorization: true
Do not pass project.owner because it may return a group and Labels::FindOrCreateService
throws an error in this case.
Fixes #23694.
2016-10-28 11:31:45 +02:00
Ahmad Sherif f68d9261b0 Fix typos 2016-10-28 11:30:20 +02:00
Ahmad Sherif 07275dd79c Abstract the use of imported[!?] and {current,increment}_page in GitHub importer 2016-10-28 11:30:20 +02:00
Ahmad Sherif bc6302b942 Use public_send instead of send 2016-10-28 11:30:20 +02:00
Ahmad Sherif 14fbd25d06 Modify GitHub importer to be retryable 2016-10-28 11:30:20 +02:00
Sean McGivern 66870960af Merge branch 'fix/gh-import-bugs' into 'master'
Fix couple of GitHub importing bugs

Fix a bug in GH comment importing and label applying for imported MRs.

See merge request !7139
2016-10-28 08:48:08 +00:00
Douwe Maan e5950e687c Merge branch '21645-mail_room_sentinel' 2016-10-27 15:51:34 +01:00
Ahmad Sherif ce38ae8ca1 Fix importing MR comments from GitHub 2016-10-27 15:42:29 +02:00
Ahmad Sherif 4259334fb6 Fix applying labels for GitHub-imported MRs 2016-10-27 15:42:28 +02:00
Kamil Trzcinski 2822526e7b Make retry_lock to not be infinite 2016-10-27 12:34:35 +01:00
Kamil Trzcinski 47b2add4f6 Add tests for optimistic locking 2016-10-26 11:37:23 +02:00
Kamil Trzcinski 5d7ee7a1b6 Use optimistic locking 2016-10-26 11:37:23 +02:00
Gabriel Mazetto f9126fbe0a Updated mail_room and added sentinel support to Reply by Email 2016-10-26 05:02:47 +02:00
Yorick Peterse 3b4af59a5f
Don't schedule ProjectCacheWorker unless needed
This changes ProjectCacheWorker.perform_async so it only schedules a job
when no lease for the given project is present. This ensures we don't
end up scheduling hundreds of jobs when they won't be executed anyway.
2016-10-25 16:02:36 +02:00
Robert Speicher ea8aa34b55 Merge branch '23372-fix-ce-to-ee-merge-check-task' into 'master'
Change the approach to check if patches apply cleanly

Closes #23372

See merge request !6949
2016-10-25 11:23:16 +00:00
Rémy Coutable d38d4a9e8e
Disable Rails/Output cop since it makes no sense here
Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-10-24 21:19:46 +02:00
Rémy Coutable 402dcab4f1
Use File.write instead of File.open + File#write
Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-10-24 20:47:50 +02:00
Rémy Coutable c7af4cf830
Don't print out implementation detail step
Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-10-24 20:29:00 +02:00
Stan Hu 0890aeb61a Fix error in generating labels
Attempting to generate default set of labels would result in
an error:

ArgumentError: wrong number of arguments (given 1, expected 0)

Closes #23649
2016-10-22 02:16:21 -07:00
Rémy Coutable af669cbea3
Change the approach to check if patches apply cleanly
Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-10-21 19:16:56 +02:00