summaryrefslogtreecommitdiff
path: root/lib/gitlab
Commit message (Collapse)AuthorAgeFilesLines
* Use clock_gettime for all performance timestampsperformance-clock-adjustmentsYorick Peterse2016-06-284-19/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Process.clock_gettime allows getting the real time in nanoseconds as well as allowing one to get a monotonic timestamp. This offers greater accuracy without the overhead of having to allocate a Time instance. In general using Time.now/Time.new is about 2x slower than using Process.clock_gettime(). For example: require 'benchmark/ips' Benchmark.ips do |bench| bench.report 'Time.now' do Time.now.to_f end bench.report 'clock_gettime' do Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond) end bench.compare! end Running this benchmark gives: Calculating ------------------------------------- Time.now 108.052k i/100ms clock_gettime 125.984k i/100ms ------------------------------------------------- Time.now 2.343M (± 7.1%) i/s - 11.670M clock_gettime 4.979M (± 0.8%) i/s - 24.945M Comparison: clock_gettime: 4979393.8 i/s Time.now: 2342986.8 i/s - 2.13x slower Another benefit of using Process.clock_gettime() is that we can simplify the code a bit since it can give timestamps in nanoseconds out of the box.
* Unused got variable with very bad performancePaco Guzman2016-06-281-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In any case if just want the value which is always ‘gitlab’ require 'benchmark/ips' Project.first # To load database things GitlabIssueTrackerService.first # To load database things Benchmark.ips do |x| x.config(:time => 5, :warmup => 2) x.report("current") do Project.new.default_issue_tracker.to_param end x.report("") do 'gitlab' end x.compare! end Calculating ------------------------------------- current 4.000 i/100ms 30.938k i/100ms ------------------------------------------------- current 47.298 (±10.6%) i/s - 232.000 4.366M (±20.9%) i/s - 17.202M Comparison: : 4366456.0 i/s current: 47.3 i/s - 92318.26x slower
* support cgi style options, such as erb?parent=jsonhttp://jneen.net/2016-06-271-3/+3
|
* make #custom_language privatehttp://jneen.net/2016-06-271-8/+8
|
* appease rubocophttp://jneen.net/2016-06-271-2/+1
|
* add custom highlighting via .gitattributeshttp://jneen.net/2016-06-272-6/+25
| | | | paired with @stanhu
* Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce into ↵James Lopez2016-06-2711-49/+150
|\ | | | | | | fix/sidekiq-mem-killer-debug
| * Merge branch 'refactor/ci-config-add-entry-error' into 'master' Rémy Coutable2016-06-279-45/+133
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improve validations and error handling in new CI config entries ## What does this MR do? This MR improves validation in new CI config. ## Why was this MR needed? With that it will be easier to handle errors during validation and post-processing. ## What are the relevant issue numbers? This is a continuation of #15060 See merge request !4560
| | * Merge branch 'master' into refactor/ci-config-add-entry-errorrefactor/ci-config-add-entry-errorGrzegorz Bizon2016-06-2033-85/+1240
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: (345 commits) use rails root join fixed a couple of errors spotted in production Fix RangeError exceptions when referring to issues or merge requests outside of max database values Fix bug in `WikiLinkFilter`. Small frontend code fixes and restore 8a2d88f commit Warn about admin privilege to disable GitHub Webhooks Listing GH Webhooks doesn't stop import process for non GH admin users fixup! updated docs for api endpoint award emoji Update CHANGELOG Ensure Todos counters doesn't count Todos for projects pending delete Add endpoints for award emoji on notes Sort API endpoints and implement feedback Add endpoints for Award Emoji Fixed issue with assignee dropdown not selecting correctly Removed update method Re-structured controller spec Renamed issuable param to issuable_id Fix clibpoard buttons on "Check out branch" modal. Track method call times/counts as a single metric Cache todo counters (pending/done) Fix a 'wrong number of arguments' error Added missing mount point for Sidekiq Metrics API, after it got lost on rebase. ...
| | * | Extract CI entry config hash validation to validatorGrzegorz Bizon2016-06-172-7/+9
| | | |
| | * | Merge branch 'master' into refactor/ci-config-add-entry-errorGrzegorz Bizon2016-06-177-36/+28
| | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: (189 commits) Update CHANGELOG for !4659 Center the header logo for all Devise emails Add previews for all customized Devise emails Customize the Devise `unlock_instructions` email Customize the Devise `reset_password_instructions` email Customize the Devise `password_change` emails Use gitlab-git 10.2.0 Use Git cached counters on project show page Fix indentation scss-lint errors Added title attribute to enties in tree view Closes #18353 Banzai::Filter::ExternalLinkFilter use XPath Reduce queries in IssueReferenceFilter Use gitlab_git 10.1.4 Fixed ordering in Project.find_with_namespace Fix images in emails Banzai::Filter::UploadLinkFilter use XPath Turn Group#owners into a has_many association Make project_id nullable ...
| | * | | Add first custom validator for new ci configGrzegorz Bizon2016-06-173-9/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This follows a standard `ActiveModel` pattern of creating a custom validators. We use `ActiveModel::EachValidator` here that reuses methods provided by `LegacyValidationHelpers`. We will remove `LegacyValidationHelpers` on some point in the future, at the later stages of CI configuration refactoring. It may be possible to rewrite custom validators to use format like: `validates :config, array_of: String`
| | * | | Rename legacy validation helpers for new ci configGrzegorz Bizon2016-06-172-2/+2
| | | | |
| | * | | Improve CI config entries validations prototypeGrzegorz Bizon2016-06-175-14/+17
| | | | |
| | * | | Add prototype of CI config node validatorGrzegorz Bizon2016-06-167-69/+98
| | | | | | | | | | | | | | | | | | | | | | | | | This makes use of `ActiveModel::Validations` encapsulated in a separate class that is accessible from a node object.
| | * | | Add class that encapsulates error in new Ci configGrzegorz Bizon2016-06-156-5/+47
| | | | |
| * | | | Fix tmp file being deleted after the request plus some cleanup and improved ↵James Lopez2016-06-242-4/+17
| | | | | | | | | | | | | | | | | | | | erroring for this situation
* | | | | better debugging for memory killer middlewarefix/sidekiq-mem-killer-debugJames Lopez2016-06-271-2/+2
|/ / / /
* | | | Merge branch 'fix/import-export-gitlab-errors' into 'master' Rémy Coutable2016-06-231-1/+3
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix errors found on importing GitLab CE repo Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/18968 See merge request !4855
| * \ \ \ Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce into ↵James Lopez2016-06-231-1/+1
| |\ \ \ \ | | | | | | | | | | | | | | | | | | fix/import-export-gitlab-errors
| * | | | | fix utc errorJames Lopez2016-06-221-1/+3
| | | | | |
* | | | | | Add Sidekiq queue duration to transaction metrics.Paco Guzman2016-06-231-0/+2
| |/ / / / |/| | | |
* | | | | Merge branch 'fix_saml_signin' into 'master' Robert Speicher2016-06-221-1/+1
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix subsequent SAML sign ins Fixes a bug when `auto_link_ldap_user` is `true` that causes SAML users to be unable to sign in a second time. Fix the problem for https://gitlab.zendesk.com/agent/tickets/22546 See merge request !4718
| * | | | Fix subsequent SAML sign insDrew Blessing2016-06-221-1/+1
| | | | |
* | | | | Merge branch ↵Douwe Maan2016-06-221-0/+2
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | '18755-fix-destroy-project-causes-post_decline_request-to-be-executed' into 'master' Resolve "Destroying a project causes post_decline_request to be executed" ## What does this MR do? Ensure we don't send "access request declined" to access requesters when a project is deleted. ## Are there points in the code the reviewer needs to double check? I've created a service to decouple the notification sending from the AR model. ## Why was this MR needed? Because there was an issue. ## What are the relevant issue numbers? Fixes #18755, #18750. ## Does this MR meet the acceptance criteria? - [x] No CHANGELOG needed. - [x] Tests - [x] Added for this feature/bug - [x] All builds are passing - [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 you do - rebase it please) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) See merge request !4744
| * | | | | Raise a new Gitlab::Access::AccessDeniedError when permission is not enough ↵Rémy Coutable2016-06-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to destroy a member This is a try for a new approach to put the access checks at the service level. Signed-off-by: Rémy Coutable <remy@rymai.me>
* | | | | | Merge branch 'ci-lfs-fetch' into 'master' Rémy Coutable2016-06-213-6/+10
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow to fetch LFS from CI ## What does this MR do? This adds support for fetching LFS object from CI jobs (mostly it's made for supporting GitLab CI). ## What is left? - [x] Write tests covering a new authorization mechanism cc @grzesiek @marin See merge request !4465
| * | | | | | Add test coverage to LFS fetchingci-lfs-fetchKamil Trzcinski2016-06-211-0/+2
| | | | | | |
| * | | | | | Merge remote-tracking branch 'origin/master' into ci-lfs-fetchKamil Trzcinski2016-06-2148-146/+1643
| |\ \ \ \ \ \ | | | |_|_|_|/ | | |/| | | |
| * | | | | | Merge remote-tracking branch 'origin/master' into ci-lfs-fetchKamil Trzcinski2016-06-1026-131/+454
| |\ \ \ \ \ \
| * | | | | | | WIPKamil Trzcinski2016-06-033-6/+8
| | | | | | | |
* | | | | | | | fixup! override content methodZ.J. van de Weg2016-06-202-15/+18
| | | | | | | |
* | | | | | | | Incorporate reviewZ.J. van de Weg2016-06-202-2/+4
| | | | | | | |
* | | | | | | | Add changelog item, fix rubocop issueZ.J. van de Weg2016-06-201-1/+1
| | | | | | | |
* | | | | | | | Implement backend gitlab ci dropdownZ.J. van de Weg2016-06-203-14/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit builds on the groundwork in ee008e300b1ec0abcc90e6a30816ec0754cea0dd, which refactored the backend so the same code could be used for new dropdowns. In this commit its used for templates for the `.gitlab-ci.yml` files.
* | | | | | | | Refactor Gitlab::GitignoresZJ van de Weg2016-06-203-56/+77
| | | | | | | |
* | | | | | | | Merge branch 'limit-email-diff-size' into 'master' Robert Speicher2016-06-201-1/+1
|\ \ \ \ \ \ \ \ | |_|_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Limit push email diff size Restrict the size of diffs in push emails to 30 lines / 150 KB (whichever is smaller), following https://gitlab.com/gitlab-org/gitlab_git/merge_requests/85. Emails on push can get very large if they contain a lot of files that sneak under the single-file limit. https://gitlab.com/gitlab-org/gitlab-ee/issues/490 See merge request !4566
| * | | | | | | Limit push email diff sizelimit-email-diff-sizeSean McGivern2016-06-171-1/+1
| | |_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | Limit push email diff size to 30 files or 150 KB, whichever comes first.
* | | | | | | use rails root joinJames Lopez2016-06-201-1/+1
| | | | | | |
* | | | | | | fixed a couple of errors spotted in productionJames Lopez2016-06-201-1/+1
| |_|_|_|/ / |/| | | | |
* | | | | | Fix RangeError exceptions when referring to issues or merge requests outside ↵Stan Hu2016-06-181-0/+5
| |_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of max database values When using #XYZ in Markdown text, if XYZ exceeds the maximum value of a signed 32-bit integer, we get an exception when the Markdown render attempts to run `where(iids: XYZ)`. Introduce a method that will throw out out-of-bounds values. Closes #18777
* | | | | Listing GH Webhooks doesn't stop import process for non GH admin usersDouglas Barbosa Alexandre2016-06-171-5/+18
| | | | |
* | | | | Track method call times/counts as a single metricYorick Peterse2016-06-173-22/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we'd create a separate Metric instance for every method call that would exceed the method call threshold. This is problematic because it doesn't provide us with information to accurately get the _total_ execution time of a particular method. For example, if the method "Foo#bar" was called 4 times with a runtime of ~10 milliseconds we'd end up with 4 different Metric instances. If we were to then get the average/95th percentile/etc of the timings this would be roughly 10 milliseconds. However, the _actual_ total time spent in this method would be around 40 milliseconds. To solve this problem we now create a single Metric instance per method. This Metric instance contains the _total_ real/CPU time and the call count for every instrumented method.
* | | | | Merge branch 'secure-request-uris' into 'master' Yorick Peterse2016-06-171-1/+5
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Filter out sensitive parameters of metrics data See merge request !4748
| * | | | | Filter out sensitive parameters of metrics dataPaco Guzman2016-06-171-1/+5
| | | | | |
* | | | | | Merge branch 'update-column-in-batches-where' into 'master' Robert Speicher2016-06-171-52/+67
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow customising of queries used for `update_column_in_batches` This MR makes two changes to `add_column_with_default` and `update_column_in_batches`: 1. `add_column_with_default` no longer wraps the entire set of updates in a single transaction, preventing any locks from sticking around for the duration of the entire transaction 2. `update_column_in_batches` now takes a block which can be used to customise the queries. This uses Arel as messing with raw SQL strings is a total pain In !4381 there's a need for updating existing rows/columns in a table in batches using a custom `WHERE` condition. Without the changes in this MR this would not be possible. See merge request !4680
| * | | | | Fix update_column_in_batches to update all rowsYorick Peterse2016-06-171-23/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes update_column_in_batches to ensure it always updates all rows now. These changes also allow for an extra SELECT query to be removed, nor does it use the row count for determining offsets and the likes; instead it's only used to determine the batch size.
| * | | | | Don't update columns in batches in a transactionYorick Peterse2016-06-151-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This ensures that whatever locks are acquired aren't held onto until the end of the transaction (= after _all_ rows have been updated). Timing wise there's also no difference between using a transaction and not using one.
| * | | | | Customizing of update_column_in_batches queriesYorick Peterse2016-06-151-41/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By passing a block to update_column_in_batches() one can now customize the queries executed. This in turn can be used to only update a specific set of rows instead of simply all the rows in the table.
* | | | | | Merge branch 'feature/project-export' into 'master' Douwe Maan2016-06-1725-5/+1044
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Export project functionality This is a MR for the export functionality of https://gitlab.com/gitlab-org/gitlab-ce/issues/3050, which adds the ability to export single projects. - [x] members - DB data - [x] issues - [x] issue comments - [x] merge requests - [x] merge request diff - [x] merge request comments - [x] labels - [x] milestones - [x] snippets - [x] releases - [x] events - [x] commit statuses - [x] CI builds - File system data - [x] Git repository - [x] wiki - [x] uploads - [ ] ~~CI build traces~~ - [ ] ~~CI build artifacts~~ - [ ] ~~LFS objects~~ - DB configuration - [x] services - [x] web hooks - [x] protected branches - [x] deploy keys - [x] CI variables - [x] CI triggers See merge request !3114