summaryrefslogtreecommitdiff
path: root/db
Commit message (Collapse)AuthorAgeFilesLines
* Fix race conditions for AuthorizedProjectsWorkerrefresh-authorizations-fork-joinYorick Peterse2017-01-2514-11/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were two cases that could be problematic: 1. Because sometimes AuthorizedProjectsWorker would be scheduled in a transaction it was possible for a job to run/complete before a COMMIT; resulting in it either producing an error, or producing no new data. 2. When scheduling jobs the code would not wait until completion. This could lead to a user creating a project and then immediately trying to push to it. Usually this will work fine, but given enough load it might take a few seconds before a user has access. The first one is problematic, the second one is mostly just annoying (but annoying enough to warrant a solution). This commit changes two things to deal with this: 1. Sidekiq scheduling now takes places after a COMMIT, this is ensured by scheduling using Rails' after_commit hook instead of doing so in an arbitrary method. 2. When scheduling jobs the calling thread now waits for all jobs to complete. Solution 2 requires tracking of job completions. Sidekiq provides a way to find a job by its ID, but this involves scanning over the entire queue; something that is very in-efficient for large queues. As such a more efficient solution is necessary. There are two main Gems that can do this in a more efficient manner: * sidekiq-status * sidekiq_status No, this is not a joke. Both Gems do a similar thing (but slightly different), and the only difference in their name is a dash vs an underscore. Both Gems however provide far more than just checking if a job has been completed, and both have their problems. sidekiq-status does not appear to be actively maintained, with the last release being in 2015. It also has some issues during testing as API calls are not stubbed in any way. sidekiq_status on the other hand does not appear to be very popular, and introduces a similar amount of code. Because of this I opted to write a simple home grown solution. After all, all we need is storing a job ID somewhere so we can efficiently look it up; we don't need extra web UIs (as provided by sidekiq-status) or complex APIs to update progress, etc. This is where Gitlab::SidekiqStatus comes in handy. This namespace contains some code used for tracking, removing, and looking up job IDs; all without having to scan over an entire queue. Data is removed explicitly, but also expires automatically just in case. Using this API we can now schedule jobs in a fork-join like manner: we schedule the jobs in Sidekiq, process them in parallel, then wait for completion. By using Sidekiq we can leverage all the benefits such as being able to scale across multiple cores and hosts, retrying failed jobs, etc. The one downside is that we need to make sure we can deal with unexpected increases in job processing timings. To deal with this the class Gitlab::JobWaiter (used for waiting for jobs to complete) will only wait a number of seconds (30 by default). Once this timeout is reached it will simply return. For GitLab.com almost all AuthorizedProjectWorker jobs complete in seconds, only very rarely do we spike to job timings of around a minute. These in turn seem to be the result of external factors (e.g. deploys), in which case a user is most likely not able to use the system anyway. In short, this new solution should ensure that jobs are processed properly and that in almost all cases a user has access to their resources whenever they need to have access.
* Add index for ci_runners if they are sharedadd-index-on-ci-buildsKamil Trzcinski2017-01-212-1/+19
|
* Add index for ci_builds that makes shared runners query to run 50x faster.Kamil Trzcinski2017-01-212-1/+19
|
* Rename duplicate migrations and skip them if table/columns are already presentRémy Coutable2017-01-194-68/+35
| | | | | | | | | The time tracking feature was backported from EE to CE, thus the CE migrations should be uniquely named and should skip the actual migration content if the table/columns already exist (that means that the EE migrations were already performed). Signed-off-by: Rémy Coutable <remy@rymai.me>
* Merge branch 'backport-time-tracking-ce' into 'master' Douwe Maan2017-01-183-0/+82
|\ | | | | | | | | Backport timetracking to CE See merge request !8195
| * Backport backend work for time tracking.Ruben Davila2017-01-153-0/+82
| |
* | fix typo, added relevant specfix/rc-migration-typoJames Lopez2017-01-161-1/+1
| |
* | fix typoJames Lopez2017-01-161-1/+1
| |
* | fix var inside loopJames Lopez2017-01-161-1/+3
| |
* | fix bug in loopJames Lopez2017-01-161-6/+2
| |
* | cope with namespace duplicated paths in any storageJames Lopez2017-01-161-14/+18
| |
* | fix nil path errorfix/rc-migration-failureJames Lopez2017-01-161-0/+2
| |
* | Remove rollback and fixed a couple of issuesJames Lopez2017-01-161-11/+8
| |
* | Fix remove dot git migration failing when user has no projectsJames Lopez2017-01-161-10/+29
|/ | | | | | - Fixed typo - Fixed migration when there are no projects and path is nil - Added path rollback that was missing if there was a SQL error
* Add check for new path existenceJames Lopez2017-01-131-4/+11
|
* Merge branch 'fill-authorized-projects' into 'master' Douwe Maan2017-01-121-0/+30
|\ | | | | | | | | | | | | Fill missing authorized projects rows Closes #26194 See merge request !8476
| * Fill missing authorized projects rowsfill-authorized-projectsYorick Peterse2017-01-111-0/+30
| | | | | | | | | | | | | | This ensures that the project_authorizations rows exist for all users for which this data has not yet been populated. Fixes #26194
* | Merge branch 'fix-more-orphans-remove-undeleted-groups' into 'master' Douwe Maan2017-01-121-24/+72
|\ \ | | | | | | | | | | | | | | | | | | Remove more orphans when removing stray namespaces Closes #25146 See merge request !7841
| * | Remove more orphans when removing stray namespacesfix-more-orphans-remove-undeleted-groupsYorick Peterse2017-01-111-24/+72
| |/ | | | | | | Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/25146
* | Add support for PlantUML diagrams in Asciidoc.Horacio Sanson2017-01-123-0/+26
|/ | | | | | | | | | | | | | | | | | | | | This MR enables rendering of PlantUML diagrams in Asciidoc documents. To add a PlantUML diagram all we need is to include a plantuml block like: ``` [plantuml, id="myDiagram", width="100px", height="100px"] -- bob -> alice : ping alice -> bob : pong -- ``` The plantuml block is substituted by an HTML img element with *src* pointing to an external PlantUML server. This MR also add a PlantUML integration section to the Administrator -> Settings page to configure the PlantUML rendering service and to enable/disable it. Closes: #17603
* Merge branch 'remove-project-authorizations-id-column' into 'master' Douwe Maan2017-01-092-3/+15
|\ | | | | | | | | Remove the project_authorizations.id column See merge request !8479
| * Remove the project_authorizations.id columnremove-project-authorizations-id-columnYorick Peterse2017-01-082-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This column used to be a 32 bits integer, allowing for only a maximum of 2 147 483 647 rows. Given enough users one can hit this limit pretty quickly, as was the case for GitLab.com. Changing this type to bigint (= 64 bits) would give us more space, but we'd eventually hit the same limit given enough users and projects. A much more sustainable solution is to simply drop the "id" column. There were only 2 lines of code depending on this column being present, and neither truly required it to be present. Instead the code now uses the "project_id" column combined with the "user_id" column. This means that instead of something like this: DELETE FROM project_authorizations WHERE user_id = X AND id = Y; We now run the following when removing rows: DELETE FROM project_authorizations WHERE user_id = X AND project_id = Y; Since both user_id and project_id are indexed this should not slow down the DELETE query. This commit also removes the "dependent: destroy" clause from the "project_authorizations" relation in the User and Project models. Keeping this prevents Rails from being able to remove data as it relies on an "id" column being present. Since the "project_authorizations" table has proper foreign keys set up (with cascading removals) we don't need to depend on any Rails logic.
* | Merge branch 'track_last_used_date_of_ssh_keys' into 'master' Sean McGivern2017-01-092-0/+10
|\ \ | |/ |/| | | | | Record and show last used date of SSH Keys See merge request !8113
| * Record and show last used date of SSH KeysVincent Wong2017-01-092-0/+10
| | | | | | | | | | | | | | | | Addresses: Issue #13810 1. Adds a last_used_at attribute to the Key table/model 2. Update a key's last_used_at whenever it gets used 3. Display how long ago an ssh key was last used
* | Whitelist next project names: assets, profile, publicDmitriy Zaporozhets2017-01-061-5/+0
| | | | | | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* | Revert MattermostNotificationService and SlackNotificationService to ↵issue_25889Felipe Artur2016-12-282-1/+26
| | | | | | | | MattermostService and SlackService
* | Merge branch 'master' into 'dz-rename-reserved-project-names'Dmitriy Zaporozhets2016-12-276-4/+163
|\ \ | |/ | | | | # Conflicts: # db/schema.rb
| * Merge branch 'feature/1376-allow-write-access-deploy-keys' into 'master' Douwe Maan2016-12-272-0/+15
| |\ | | | | | | | | | | | | | | | | | | Allow to add deploy keys with write-access Closes #1376 See merge request !7383
| | * Merge remote-tracking branch 'upstream/master' into ↵Lin Jen-Shin2016-12-2020-57/+456
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | feature/1376-allow-write-access-deploy-keys * upstream/master: (538 commits) Reject blank environment vcariables in Gitlab::Git::RevList Add online terminal documentation Add changelog entry Add terminal UI and controller actions Fix specs Even out padding on plus button in breadcrumb menu Update font size of detail page header to 14px Update CHANGELOG.md for 8.13.10 Update CHANGELOG.md for 8.14.5 Fix Route#rename_children behavior Remove inline-block styling from status Add terminals to the Kubernetes deployment service Add a ReactiveCaching concern for use in the KubernetesService Add xterm.js 2.1.0 and a wrapper class to the asset pipeline Remove unnecessary hidden svg elements for icons. Fix consistent typo in environment.js Use a block to insert extra check for authenticate_build! Align milestone column header with count number Add Wiki import to BB importer Make CI badge hitboxes better match container ...
| | * \ Merge CSSFilipa Lacerda2016-12-128-6/+150
| | |\ \
| | * \ \ Merge remote-tracking branch 'upstream/master' into ↵Lin Jen-Shin2016-12-0633-62/+299
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | feature/1376-allow-write-access-deploy-keys * upstream/master: (488 commits) Merge branch 'issue_25064' into 'security' It's secret variables, not secure Fix dead links, add example of debug trace output, simplify titles Authorize users into imported GitLab project Document button secondary states. Update icons and color section Remove unused votes.scss Remove unused errors css Fixed MR widget content wrapping for XS viewports NIGNX -> Nginx Use pry-byebug instead byebug Fixed influence from other specs. Accept `issue new` as command to create an issue Update paranoia from 2.1.4 to 2.2.0. Use the pagination helper in the API Added changelog for #25221 Fixed top margin for Builds page status header information Satisfied eslint Fix compatibility with Internet Explorer 11 for merge requests change the date label to match the date used fix gfm doc typo about two spaces for next line transfer ...
| | * \ \ \ Merge remote-tracking branch 'upstream/master' into ↵Lin Jen-Shin2016-11-2213-2/+232
| | |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | feature/1376-allow-write-access-deploy-keys * upstream/master: (497 commits) Use single quote for strings Ue svg from SVGs object Dont trigger CI builds [ci skip] Revert "Test only migrations" Add custom copy for each empty stage Fetch only one revision Highlight nav item on hover Test only migrations Fix migration paths tests Scroll CA stage panel on mobile Fix CSS declaration administer to administrator Move SVGs to JS objects for easy reuse Improve deploy command message No enough data to Not enough data Keep the cookie name as before Fix variable usage Evalute time_ago method instead of printing it Removed button styling from restricted visibility levels and added checkboxes with icons Do not show overview message if there’s already CA data ...
| | * \ \ \ \ Merge remote-tracking branch 'upstream/master' into ↵Lin Jen-Shin2016-11-178-8/+112
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | feature/1376-allow-write-access-deploy-keys * upstream/master: (236 commits) Mention Git strategy none Remove ToC since it's now supported in the docs portal itself Add 8.14 to versions with further additions to review apps Add Limitations sections to environments and review apps docs Add link to environments docs Fix URL to review apps docs Add a prerequisites section, add some links Link to NGINX example project for the time being Get rid most of the irrelevant sections Add note about current limitation in $CI_BUILD_REF_NAME Add an intro and an Overview section for Review Apps WIP review apps Add Review apps link to CI README Add stop environment permissions and remove delete Add note about auto-stopping of environments Update CHANGELOG.md for 8.13.6 Finish "Stopping envs" and "Grouping similar envs" sections Highlight first user autocomplete option Remove ToC and fix headings in Markdown docs Revert "Merge branch '22680-unlabel-limit-autocomplete-to-selected-items' into 'master'" ...
| | * | | | | | Cleanup migrationLin Jen-Shin2016-11-101-19/+6
| | | | | | | |
| | * | | | | | Merge remote-tracking branch 'upstream/master' into ↵Lin Jen-Shin2016-11-1068-684/+2486
| | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | feature/1376-allow-write-access-deploy-keys * upstream/master: (3852 commits) Grapify token API Fix cache for commit status in commits list to respect branches Grapify milestones API Grapify runners API Improve EeCompatCheck, cache EE repo and keep artifacts for the ee_compat_check task Use 'Forking in progress' title when appropriate Fix CHANGELOG after 8.14.0-rc1 tag Update CHANGELOG.md for 8.14.0-rc1 Fix YAML syntax on CHANGELOG entry Remove redundant rescue from repository keep_around Remove redundant space from repository model code Remove order-dependent expectation Minor CHANGELOG.md cleanups Add a link to Git cheatsheet PDF in docs readme Grapify the session API Add 8.13.5, 8.12.9, and 8.11.11 CHANGELOG Merge branch 'unauthenticated-container-registry-access' into 'security' Merge branch '23403-fix-events-for-private-project-features' into 'security' Merge branch 'fix-unathorized-cloning' into 'security' Merge branch 'markdown-xss-fix-option-2.1' into 'security' ...
| | * | | | | | | Allow to add deploy keys with write-accessAli Ibrahim2016-08-172-10/+38
| | | | | | | | |
| * | | | | | | | Merge branch 'dz-rename-invalid-users' into 'master' Douwe Maan2016-12-272-1/+88
| |\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename users with namespace ending with .git See merge request !8309
| | * | | | | | | | Rename users with namespace ending with .gitdz-rename-invalid-usersDmitriy Zaporozhets2016-12-262-1/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
| * | | | | | | | | Disable timeout while removing serviceszj-disable-timeout-migrationZ.J. van de Weg2016-12-271-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On GitLab.com this migration could take about 3 minutes. Disabling the statement we know we have enough time to complete this. Fixes #25976
| * | | | | | | | | Merge branch 'feature/more-storage-statistics' into 'master' Sean McGivern2016-12-263-2/+57
| |\ \ \ \ \ \ \ \ \ | | |/ / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add more storage statistics See merge request !7754
| | * | | | | | | | Add more storage statisticsMarkus Koller2016-12-213-2/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds counters for build artifacts and LFS objects, and moves the preexisting repository_size and commit_count from the projects table into a new project_statistics table. The counters are displayed in the administration area for projects and groups, and also available through the API for admins (on */all) and normal users (on */owned) The statistics are updated through ProjectCacheWorker, which can now do more granular updates with the new :statistics argument.
* | | | | | | | | | Removed return from reserved project migrationYorick Peterse2016-12-241-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This return is redundant as the query now uses "WHERE EXISTS (...)" to filter out projects without a namespace.
* | | | | | | | | | Fix parallel renaming of reserved projectsYorick Peterse2016-12-241-26/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This ensures threads don't re-use the same connection object, and use fewer queries to perform the work.
* | | | | | | | | | Rename projects with reserved path namesDmitriy Zaporozhets2016-12-242-1/+77
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We cant have project with name 'project' or 'tree' anymore. This merge request containts a migration that will find and rename all projects using reserved names by adding N digit to the end of the name. Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* | | | | | | | | Exclude non existent repository storages.Ruben Davila2016-12-211-1/+1
| | | | | | | | |
* | | | | | | | | Remove unused services from the databaseZ.J. van de Weg2016-12-212-1/+14
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a migration to remove unused services, where the properties are empty. As the properties are empty, those do not contain any settings or other information. Fixes #25727
* | | | | | | | Merge branch 'dz-rename-invalid-groups' into 'master' Douwe Maan2016-12-212-2/+84
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename groups with .git in the end of the path Closes #25862 See merge request !8199
| * | | | | | | | Rename groups with .git in the end of the pathDmitriy Zaporozhets2016-12-212-2/+84
| | |_|_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
* | | | | | | | Rename SlackNotificationService back to SlackServiceDouglas Barbosa Alexandre2016-12-202-9/+6
|/ / / / / / /
* | | | | | | Merge remote-tracking branch 'origin/master' into improve-pipeline-fixturesimprove-pipeline-fixturesKamil Trzcinski2016-12-1855-67/+822
|\ \ \ \ \ \ \