Merge requests accepted via the API do not close associated todos
Summary
Accepting an MR assigned to yourself in the UI will close any associated todo items related to that MR. But accepting the MR via the API will leave the todos open.
Steps to reproduce
Assuming a project with a branch "master" and a branch "branch1" that can be cleanly merged into master. Also assuming a private access token is set up and stored in $PRIVATE_TOKEN.
# get your numeric user ID, here I use root. Use the returned ID as the assignee_id below
curl -H "PRIVATE_TOKEN: $PRIVATE_TOKEN" -XGET 'http://server/api/v3/users?username=root'
# create a new merge request and assign it to that user ID
curl -H "PRIVATE_TOKEN: $PRIVATE_TOKEN" -XPOST 'http://server/api/v3/projects/root%2Fapi-test-project/merge_requests?source_branch=branch1&target_branch=master&assignee_id=1&title=TestMR'
# make a note of the returned MR ID and use it in the next request - here it is 43
Now confirm in the UI that there is a new todo item related to the new MR.
curl -H "PRIVATE_TOKEN: $PRIVATE_TOKEN" -XPUT 'http://server/api/v3/projects/root%2Fapi-test-project/merge_requests/43/merge'
Confirm in the response that it returns "state": "merged".
Expected behavior
The todo item associated with the MR should be closed, iff the user performing the API action is also the user to whom the MR is assigned. Otherwise the todo item might need to stay open for the user to see, since he/she may not have reviewed the MR yet.
Actual behavior
The todo item remains open, showing that the MR is merged. If the API is performing a lot of these, the todo items tend to pile up and need to be manually completed.
Relevant logs and/or screenshots
Here is the output from development.log for the PUT request (this is a gitlab-development-kit installation but I have also confirmed it on an omnibus install).
Started PUT "/api/v3/projects/root%2Fapi-test-project/merge_requests/50/merge" for 127.0.0.1 at 2016-09-22 16:07:23 -0400
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."authentication_token" = $1 ORDER BY "users"."id" DESC LIMIT 1 [["authentication_token", "REDACTED"]]
PersonalAccessToken Load (0.2ms) SELECT "personal_access_tokens".* FROM "personal_access_tokens" WHERE "personal_access_tokens"."revoked" = $1 AND (expires_at >= NOW() OR expires_at IS NULL) AND "personal_access_tokens"."token" = $2 LIMIT 1 [["revoked", "f"], ["token", "REDACTED"]]
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" DESC LIMIT 1 [["id", 1]]
Project Load (0.2ms) SELECT "projects".* FROM "projects" INNER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id" AND "namespaces"."deleted_at" IS NULL WHERE "projects"."pending_delete" = $1 AND ((
(namespaces.path = 'root'
AND projects.path = 'api-test-project')
OR (
LOWER(namespaces.path) = LOWER('root')
AND LOWER(projects.path) = LOWER('api-test-project')
)
)) ORDER BY (CASE WHEN namespaces.path = 'root' AND projects.path = 'api-test-project' THEN 0 ELSE 1 END) LIMIT 1 [["pending_delete", "f"]]
ProjectFeature Load (0.1ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
(0.1ms) SELECT "members"."user_id", "members"."access_level" FROM "members" LEFT OUTER JOIN "users" ON "users"."id" = "members"."user_id" WHERE "members"."source_type" = $1 AND "members"."type" IN ('ProjectMember') AND "members"."source_id" = $2 AND "members"."source_type" = $3 AND "members"."type" IN ('ProjectMember') AND "members"."requested_at" IS NULL AND "members"."user_id" = 1 AND ("members"."user_id" IS NULL AND "members"."invite_token" IS NOT NULL OR "users"."state" = 'active') AND "members"."requested_at" IS NULL AND (access_level > 0) ORDER BY "members"."id" DESC [["source_type", "Project"], ["source_id", 9], ["source_type", "Project"]]
Group Load (0.1ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."type" IN ('Group') AND "namespaces"."id" = $1 AND "namespaces"."type" IN ('Group') AND "namespaces"."type" = $2 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1], ["type", "Group"]]
Group Exists (0.7ms) SELECT 1 AS one FROM "namespaces" INNER JOIN "project_group_links" ON "namespaces"."id" = "project_group_links"."group_id" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."type" IN ('Group') AND "project_group_links"."project_id" = $1 LIMIT 1 [["project_id", 9]]
MergeRequest Load (0.6ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = $1 AND "merge_requests"."id" = $2 ORDER BY "merge_requests"."id" DESC LIMIT 1 [["target_project_id", 9], ["id", 50]]
Project Load (0.1ms) SELECT "projects".* FROM "projects" WHERE "projects"."pending_delete" = $1 AND "projects"."id" = $2 ORDER BY "projects"."id" DESC LIMIT 1 [["pending_delete", "f"], ["id", 9]]
CACHE (0.0ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
Namespace Load (0.2ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."id" = $1 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1]]
ProtectedBranch Load (0.2ms) SELECT "protected_branches".* FROM "protected_branches" WHERE "protected_branches"."project_id" = $1 [["project_id", 9]]
CACHE (0.0ms) SELECT "protected_branches".* FROM "protected_branches" WHERE "protected_branches"."project_id" = $1 [["project_id", 9]]
ProtectedBranch::PushAccessLevel Load (0.1ms) SELECT "protected_branch_push_access_levels".* FROM "protected_branch_push_access_levels" WHERE "protected_branch_push_access_levels"."protected_branch_id" = $1 [["protected_branch_id", 1]]
MergeRequestDiff Load (0.1ms) SELECT "merge_request_diffs".* FROM "merge_request_diffs" WHERE "merge_request_diffs"."merge_request_id" = $1 ORDER BY "merge_request_diffs"."id" DESC, merge_request_diffs.id DESC LIMIT 1 [["merge_request_id", 50]]
MergeRequest Load (0.1ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."id" = $1 ORDER BY "merge_requests"."id" DESC LIMIT 1 [["id", 50]]
CACHE (0.0ms) SELECT "projects".* FROM "projects" WHERE "projects"."pending_delete" = $1 AND "projects"."id" = $2 ORDER BY "projects"."id" DESC LIMIT 1 [["pending_delete", false], ["id", 9]]
CACHE (0.0ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
CACHE (0.0ms) SELECT "projects".* FROM "projects" WHERE "projects"."pending_delete" = $1 AND "projects"."id" = $2 ORDER BY "projects"."id" DESC LIMIT 1 [["pending_delete", false], ["id", 9]]
CACHE (0.0ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
CACHE (0.0ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."id" = $1 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1]]
CACHE (0.0ms) SELECT "projects".* FROM "projects" WHERE "projects"."pending_delete" = $1 AND "projects"."id" = $2 ORDER BY "projects"."id" DESC LIMIT 1 [["pending_delete", false], ["id", 9]]
CACHE (0.0ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
CACHE (0.0ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."id" = $1 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1]]
(0.1ms) BEGIN
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" DESC LIMIT 1 [["id", 1]]
(0.3ms) SELECT COUNT(*) FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = $1 AND "merge_requests"."source_branch" = $2 AND "merge_requests"."target_branch" = $3 AND "merge_requests"."source_project_id" = $4 AND ("merge_requests"."state" IN ('opened','reopened')) AND (id not in (50)) [["target_project_id", 9], ["source_branch", "branch1"], ["target_branch", "master"], ["source_project_id", 9]]
SQL (0.2ms) UPDATE "merge_requests" SET "merge_status" = $1 WHERE "merge_requests"."id" = $2 [["merge_status", "can_be_merged"], ["id", 50]]
MergeRequest::Metrics Load (0.1ms) SELECT "merge_request_metrics".* FROM "merge_request_metrics" WHERE "merge_request_metrics"."merge_request_id" = $1 LIMIT 1 [["merge_request_id", 50]]
(1.9ms) COMMIT
(0.1ms) BEGIN
SQL (0.0ms) UPDATE "merge_requests" SET "state" = $1, "updated_at" = $2 WHERE "merge_requests"."id" = $3 [["state", "locked"], ["updated_at", "2016-09-22 20:07:23.151555"], ["id", 50]]
SQL (0.9ms) UPDATE "merge_requests" SET "locked_at" = $1, "updated_at" = $2 WHERE "merge_requests"."id" = $3 [["locked_at", "2016-09-22 20:07:23.153846"], ["updated_at", "2016-09-22 20:07:23.154594"], ["id", 50]]
(1.2ms) COMMIT
(0.1ms) BEGIN
SQL (0.2ms) UPDATE "merge_requests" SET "in_progress_merge_commit_sha" = $1, "updated_at" = $2 WHERE "merge_requests"."id" = $3 [["in_progress_merge_commit_sha", "77799978245ada1517906ab32f06b51cfc38a96a"], ["updated_at", "2016-09-22 20:07:23.161576"], ["id", 50]]
(0.7ms) COMMIT
Started POST "/api/v3/internal/allowed" for 127.0.0.1 at 2016-09-22 16:07:23 -0400
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" DESC LIMIT 1 [["id", 1]]
Project Load (0.2ms) SELECT "projects".* FROM "projects" INNER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id" AND "namespaces"."deleted_at" IS NULL WHERE "projects"."pending_delete" = $1 AND ((
(namespaces.path = 'root'
AND projects.path = 'api-test-project')
OR (
LOWER(namespaces.path) = LOWER('root')
AND LOWER(projects.path) = LOWER('api-test-project')
)
)) ORDER BY (CASE WHEN namespaces.path = 'root' AND projects.path = 'api-test-project' THEN 0 ELSE 1 END) LIMIT 1 [["pending_delete", "f"]]
ProjectFeature Load (0.1ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
(0.2ms) SELECT "members"."user_id", "members"."access_level" FROM "members" LEFT OUTER JOIN "users" ON "users"."id" = "members"."user_id" WHERE "members"."source_type" = $1 AND "members"."type" IN ('ProjectMember') AND "members"."source_id" = $2 AND "members"."source_type" = $3 AND "members"."type" IN ('ProjectMember') AND "members"."requested_at" IS NULL AND "members"."user_id" = 1 AND ("members"."user_id" IS NULL AND "members"."invite_token" IS NOT NULL OR "users"."state" = 'active') AND "members"."requested_at" IS NULL AND (access_level > 0) ORDER BY "members"."id" DESC [["source_type", "Project"], ["source_id", 9], ["source_type", "Project"]]
Group Load (0.1ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."type" IN ('Group') AND "namespaces"."id" = $1 AND "namespaces"."type" IN ('Group') AND "namespaces"."type" = $2 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1], ["type", "Group"]]
Group Exists (0.1ms) SELECT 1 AS one FROM "namespaces" INNER JOIN "project_group_links" ON "namespaces"."id" = "project_group_links"."group_id" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."type" IN ('Group') AND "project_group_links"."project_id" = $1 LIMIT 1 [["project_id", 9]]
Namespace Load (0.1ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."id" = $1 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1]]
ProtectedBranch Load (0.2ms) SELECT "protected_branches".* FROM "protected_branches" WHERE "protected_branches"."project_id" = $1 [["project_id", 9]]
MergeRequest Exists (0.2ms) SELECT 1 AS one FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = $1 AND ("merge_requests"."state" IN ('locked')) AND "merge_requests"."in_progress_merge_commit_sha" = $2 AND "merge_requests"."target_branch" = $3 LIMIT 1 [["target_project_id", 9], ["in_progress_merge_commit_sha", "77799978245ada1517906ab32f06b51cfc38a96a"], ["target_branch", "master"]]
CACHE (0.0ms) SELECT "protected_branches".* FROM "protected_branches" WHERE "protected_branches"."project_id" = $1 [["project_id", 9]]
ProtectedBranch::MergeAccessLevel Load (0.2ms) SELECT "protected_branch_merge_access_levels".* FROM "protected_branch_merge_access_levels" WHERE "protected_branch_merge_access_levels"."protected_branch_id" = $1 [["protected_branch_id", 1]]
Project Load (0.3ms) SELECT "projects".* FROM "projects" INNER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id" AND "namespaces"."deleted_at" IS NULL WHERE "projects"."pending_delete" = $1 AND ((
(namespaces.path = 'root'
AND projects.path = 'api-test-project')
OR (
LOWER(namespaces.path) = LOWER('root')
AND LOWER(projects.path) = LOWER('api-test-project')
)
)) ORDER BY (CASE WHEN namespaces.path = 'root' AND projects.path = 'api-test-project' THEN 0 ELSE 1 END) LIMIT 1 [["pending_delete", "f"]]
ProjectFeature Load (0.3ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" DESC LIMIT 1 [["id", 1]]
Namespace Load (0.2ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."id" = $1 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1]]
Started GET "/api/v3/internal/broadcast_message" for 127.0.0.1 at 2016-09-22 16:07:23 -0400
GitlabIssueTrackerService Load (0.3ms) SELECT "services".* FROM "services" WHERE "services"."type" IN ('GitlabIssueTrackerService') AND "services"."project_id" = $1 ORDER BY "services"."id" DESC LIMIT 1 [["project_id", 9]]
User Load (4.8ms) SELECT *
FROM users
WHERE id IN (
SELECT id FROM users WHERE email = 'tonygambone@gmail.com'
UNION
SELECT emails.user_id FROM emails WHERE email = 'tonygambone@gmail.com'
)
LIMIT 1;
MergeRequest Load (0.4ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND 1=0 ORDER BY "merge_requests"."id" DESC
SQL (0.2ms) UPDATE "issue_metrics" SET "first_mentioned_in_commit_at" = '2016-09-22 20:06:55.000000' WHERE 1=0 AND "issue_metrics"."first_mentioned_in_commit_at" IS NULL
User Load (0.7ms) SELECT *
FROM users
WHERE id IN (
SELECT id FROM users WHERE email = 'admin@example.com'
UNION
SELECT emails.user_id FROM emails WHERE email = 'admin@example.com'
)
LIMIT 1;
MergeRequest Load (0.3ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = $1 AND "merge_requests"."iid" = $2 ORDER BY "merge_requests"."id" DESC LIMIT 1 [["target_project_id", 9], ["iid", 8]]
Project Load (2.0ms) SELECT "projects".* FROM "projects" WHERE "projects"."pending_delete" = $1 AND "projects"."id" = $2 ORDER BY "projects"."id" DESC LIMIT 1 [["pending_delete", "f"], ["id", 9]]
Started GET "/api/v3/internal/merge_request_urls?project=root/api-test-project&changes=3f0cc4aae7175e7b29e939afa3487fbb5e1f34a3%2077799978245ada1517906ab32f06b51cfc38a96a%20refs/heads/master%0A" for 127.0.0.1 at 2016-09-22 16:07:23 -0400
ProjectFeature Load (2.5ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
MergeRequest Load (2.2ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."id" = 50 ORDER BY "merge_requests"."id" DESC
User Load (4.0ms) SELECT "users".* FROM "users" WHERE "users"."id" IN (1) ORDER BY "users"."id" DESC
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" IN (1) ORDER BY "users"."id" DESC
Project Load (4.5ms) SELECT "projects".* FROM "projects" WHERE "projects"."pending_delete" = $1 AND "projects"."id" IN (9) ORDER BY "projects"."id" DESC [["pending_delete", "f"]]
ProjectFeature Load (0.2ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
(0.2ms) SELECT COUNT(*) FROM "notes" WHERE "notes"."system" = $1 AND "notes"."noteable_type" = 'MergeRequest' AND "notes"."noteable_id" = $2 AND (note LIKE 'Mentioned in %77799978245ada1517906ab32f06b51cfc38a96a') [["system", "t"], ["noteable_id", 50]]
(0.1ms) BEGIN
ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
Project Load (0.3ms) SELECT "projects".* FROM "projects" INNER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id" AND "namespaces"."deleted_at" IS NULL WHERE "projects"."pending_delete" = $1 AND ((
(namespaces.path = 'root'
AND projects.path = 'api-test-project')
OR (
LOWER(namespaces.path) = LOWER('root')
AND LOWER(projects.path) = LOWER('api-test-project')
)
)) ORDER BY (CASE WHEN namespaces.path = 'root' AND projects.path = 'api-test-project' THEN 0 ELSE 1 END) LIMIT 1 [["pending_delete", "f"]]
ProjectFeature Load (0.2ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
Namespace Load (0.1ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."id" = $1 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1]]
MergeRequest Load (0.2ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."source_project_id" = $1 AND ("merge_requests"."state" IN ('opened','reopened')) AND 1=0 ORDER BY "merge_requests"."id" DESC [["source_project_id", 9]]
SQL (0.8ms) INSERT INTO "notes" ("project_id", "author_id", "note", "noteable_id", "noteable_type", "system", "discussion_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id" [["project_id", 9], ["author_id", 1], ["note", "Mentioned in commit 77799978245ada1517906ab32f06b51cfc38a96a"], ["noteable_id", 50], ["noteable_type", "MergeRequest"], ["system", "t"], ["discussion_id", "2a7d8f4d9db37e5be9455f3b6fec0300e9c70099"], ["created_at", "2016-09-22 20:07:23.659392"], ["updated_at", "2016-09-22 20:07:23.659392"]]
SQL (0.1ms) UPDATE "merge_requests" SET "updated_at" = '2016-09-22 20:07:23.668265' WHERE "merge_requests"."id" = $1 [["id", 50]]
(0.2ms) BEGIN
Namespace Load (4.5ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."id" = $1 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1]]
SQL (13.3ms) UPDATE "merge_requests" SET "merge_commit_sha" = $1, "updated_at" = $2 WHERE "merge_requests"."id" = $3 [["merge_commit_sha", "77799978245ada1517906ab32f06b51cfc38a96a"], ["updated_at", "2016-09-22 20:07:23.676254"], ["id", 50]]
(14.0ms) COMMIT
(0.8ms) COMMIT
(0.1ms) BEGIN
SQL (1.1ms) UPDATE "issue_metrics" SET "first_mentioned_in_commit_at" = '2016-09-22 20:07:23.000000' WHERE 1=0 AND "issue_metrics"."first_mentioned_in_commit_at" IS NULL
SQL (0.8ms) UPDATE "merge_requests" SET "in_progress_merge_commit_sha" = $1, "updated_at" = $2 WHERE "merge_requests"."id" = $3 [["in_progress_merge_commit_sha", nil], ["updated_at", "2016-09-22 20:07:23.695503"], ["id", 50]]
(1.5ms) COMMIT
MergeRequest Load (1.3ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = $1 AND ("merge_requests"."state" IN ('opened','reopened')) AND "merge_requests"."target_branch" = $2 ORDER BY "merge_requests"."id" DESC [["target_project_id", 9], ["target_branch", "master"]]
MergeRequest Load (1.9ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = $1 AND ("merge_requests"."state" IN ('opened','reopened')) AND ((source_branch LIKE 'master') OR (target_branch LIKE 'master')) ORDER BY "merge_requests"."id" DESC [["target_project_id", 9]]
GitlabIssueTrackerService Load (1.9ms) SELECT "services".* FROM "services" WHERE "services"."type" IN ('GitlabIssueTrackerService') AND "services"."project_id" = $1 ORDER BY "services"."id" DESC LIMIT 1 [["project_id", 9]]
MergeRequest Load (0.7ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."source_project_id" = $1 AND ("merge_requests"."state" IN ('opened','reopened')) AND ((source_branch LIKE 'master') OR (target_branch LIKE 'master')) ORDER BY "merge_requests"."id" DESC [["source_project_id", 9]]
MergeRequest Load (3.0ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = $1 AND "merge_requests"."source_project_id" = $2 AND ("merge_requests"."state" IN ('opened','reopened')) AND "merge_requests"."source_branch" = $3 ORDER BY "merge_requests"."id" DESC [["target_project_id", 9], ["source_project_id", 9], ["source_branch", "master"]]
MergeRequest Load (0.3ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."source_project_id" = $1 AND ("merge_requests"."state" IN ('opened','reopened')) AND "merge_requests"."source_branch" = $2 ORDER BY "merge_requests"."id" DESC [["source_project_id", 9], ["source_branch", "master"]]
MergeRequest Load (0.2ms) SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = $1 AND "merge_requests"."source_branch" = $2 ORDER BY "merge_requests"."id" DESC [["target_project_id", 9], ["source_branch", "master"]]
(0.7ms) BEGIN
SQL (2.5ms) UPDATE "merge_requests" SET "state" = $1, "updated_at" = $2 WHERE "merge_requests"."id" = $3 [["state", "merged"], ["updated_at", "2016-09-22 20:07:23.714257"], ["id", 50]]
SQL (0.2ms) UPDATE "merge_request_metrics" SET "merged_at" = $1, "updated_at" = $2 WHERE "merge_request_metrics"."id" = $3 [["merged_at", "2016-09-22 20:07:23.717883"], ["updated_at", "2016-09-22 20:07:23.718135"], ["id", 50]]
SQL (0.9ms) UPDATE "merge_requests" SET "locked_at" = $1, "updated_at" = $2 WHERE "merge_requests"."id" = $3 [["locked_at", nil], ["updated_at", "2016-09-22 20:07:23.723444"], ["id", 50]]
(0.1ms) BEGIN
(3.0ms) COMMIT
(0.1ms) BEGIN
SQL (0.2ms) INSERT INTO "events" ("target_id", "target_type", "project_id", "action", "author_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["target_id", 50], ["target_type", "MergeRequest"], ["project_id", 9], ["action", 7], ["author_id", 1], ["created_at", "2016-09-22 20:07:23.730157"], ["updated_at", "2016-09-22 20:07:23.730157"]]
(0.7ms) COMMIT
(0.1ms) BEGIN
SQL (0.5ms) INSERT INTO "events" ("project_id", "action", "author_id", "data", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["project_id", 9], ["action", 5], ["author_id", 1], ["data", "---\n:object_kind: push\n:event_name: push\n:before: 3f0cc4aae7175e7b29e939afa3487fbb5e1f34a3\n:after: 77799978245ada1517906ab32f06b51cfc38a96a\n:ref: refs/heads/master\n:checkout_sha: 77799978245ada1517906ab32f06b51cfc38a96a\n:message: \n:user_id: 1\n:user_name: Administrator\n:user_email: admin@example.com\n:user_avatar: http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon\n:project_id: 9\n:project:\n :name: api-test-project\n :description: For testing the GitLab API.\n :web_url: http://localhost:3000/root/api-test-project\n :avatar_url: \n :git_ssh_url: ssh://tony@localhost:2222/root/api-test-project.git\n :git_http_url: http://localhost:3000/root/api-test-project.git\n :namespace: root\n :visibility_level: 0\n :path_with_namespace: root/api-test-project\n :default_branch: master\n :homepage: http://localhost:3000/root/api-test-project\n :url: ssh://tony@localhost:2222/root/api-test-project.git\n :ssh_url: ssh://tony@localhost:2222/root/api-test-project.git\n :http_url: http://localhost:3000/root/api-test-project.git\n:commits:\n- :id: 2ed32d0316af9b7096c2ac76e34bd165e17fb4e0\n :message: 'Add\n\n'\n :timestamp: '2016-09-22T16:06:55-04:00'\n :url: http://localhost:3000/root/api-test-project/commit/2ed32d0316af9b7096c2ac76e34bd165e17fb4e0\n :author:\n :name: Tony Gambone\n :email: tonygambone@gmail.com\n :added: []\n :modified:\n - second.txt\n :removed: []\n- :id: 77799978245ada1517906ab32f06b51cfc38a96a\n :message: |-\n Merge branch 'branch1' into 'master'\n\n TestMR\n\n\n\n See merge request !8\n :timestamp: '2016-09-22T16:07:23-04:00'\n :url: http://localhost:3000/root/api-test-project/commit/77799978245ada1517906ab32f06b51cfc38a96a\n :author:\n :name: Administrator\n :email: admin@example.com\n :added: []\n :modified:\n - second.txt\n :removed: []\n:total_commits_count: 2\n:repository:\n :name: api-test-project\n :url: ssh://tony@localhost:2222/root/api-test-project.git\n :description: For testing the GitLab API.\n :homepage: http://localhost:3000/root/api-test-project\n :git_http_url: http://localhost:3000/root/api-test-project.git\n :git_ssh_url: ssh://tony@localhost:2222/root/api-test-project.git\n :visibility_level: 0\n"], ["created_at", "2016-09-22 20:07:23.728701"], ["updated_at", "2016-09-22 20:07:23.728701"]]
(5.2ms) COMMIT
SystemHook Load (0.3ms) SELECT "web_hooks".* FROM "web_hooks" WHERE "web_hooks"."type" IN ('SystemHook') AND "web_hooks"."push_events" = $1 ORDER BY "web_hooks"."id" DESC [["push_events", "t"]]
ProjectHook Load (2.6ms) SELECT "web_hooks".* FROM "web_hooks" WHERE "web_hooks"."type" IN ('ProjectHook') AND "web_hooks"."project_id" = $1 AND "web_hooks"."push_events" = $2 ORDER BY "web_hooks"."id" DESC [["project_id", 9], ["push_events", "t"]]
Service Load (0.1ms) SELECT "services".* FROM "services" WHERE "services"."project_id" = $1 AND "services"."push_events" = $2 AND "services"."active" = $3 ORDER BY "services"."id" DESC [["project_id", 9], ["push_events", "t"], ["active", "t"]]
ActiveRecord::SchemaMigration Load (0.4ms) SELECT "schema_migrations".* FROM "schema_migrations"
(0.4ms) SELECT "members"."user_id", "members"."access_level" FROM "members" LEFT OUTER JOIN "users" ON "users"."id" = "members"."user_id" WHERE "members"."source_type" = $1 AND "members"."type" IN ('ProjectMember') AND "members"."source_id" = $2 AND "members"."source_type" = $3 AND "members"."type" IN ('ProjectMember') AND "members"."requested_at" IS NULL AND "members"."user_id" = 1 AND ("members"."user_id" IS NULL AND "members"."invite_token" IS NOT NULL OR "users"."state" = 'active') AND "members"."requested_at" IS NULL AND (access_level > 0) ORDER BY "members"."id" DESC [["source_type", "Project"], ["source_id", 9], ["source_type", "Project"]]
Group Load (2.4ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."type" IN ('Group') AND "namespaces"."id" = $1 AND "namespaces"."type" IN ('Group') AND "namespaces"."type" = $2 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1], ["type", "Group"]]
Group Exists (2.4ms) SELECT 1 AS one FROM "namespaces" INNER JOIN "project_group_links" ON "namespaces"."id" = "project_group_links"."group_id" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."type" IN ('Group') AND "project_group_links"."project_id" = $1 LIMIT 1 [["project_id", 9]]
SQL (0.7ms) INSERT INTO "notes" ("noteable_id", "noteable_type", "project_id", "author_id", "note", "system", "discussion_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id" [["noteable_id", 50], ["noteable_type", "MergeRequest"], ["project_id", 9], ["author_id", 1], ["note", "Status changed to merged"], ["system", "t"], ["discussion_id", "29060041550171b56cde1ea31a76743d84c81599"], ["created_at", "2016-09-22 20:07:23.773009"], ["updated_at", "2016-09-22 20:07:23.773009"]]
Project Load (0.4ms) SELECT "projects".* FROM "projects" WHERE "projects"."pending_delete" = $1 AND "projects"."id" = $2 ORDER BY "projects"."id" DESC LIMIT 1 [["pending_delete", "f"], ["id", 9]]
ProjectFeature Load (0.1ms) SELECT "project_features".* FROM "project_features" WHERE "project_features"."project_id" = $1 LIMIT 1 [["project_id", 9]]
Namespace Load (0.7ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."id" = $1 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1]]
SQL (0.2ms) UPDATE "merge_requests" SET "updated_at" = '2016-09-22 20:07:23.775694' WHERE "merge_requests"."id" = $1 [["id", 50]]
(0.7ms) COMMIT
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" DESC LIMIT 1 [["id", 1]]
Note Load (2.4ms) SELECT "notes".* FROM "notes" WHERE "notes"."noteable_id" = $1 AND "notes"."noteable_type" = $2 [["noteable_id", 50], ["noteable_type", "MergeRequest"]]
(0.1ms) BEGIN
SQL (0.3ms) UPDATE "projects" SET "repository_size" = $1, "updated_at" = $2 WHERE "projects"."id" = $3 [["repository_size", 0.5], ["updated_at", "2016-09-22 20:07:23.791961"], ["id", 9]]
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" IN (1) ORDER BY "users"."id" DESC
(1.5ms) COMMIT
(0.1ms) BEGIN
SQL (0.4ms) UPDATE "projects" SET "commit_count" = $1, "updated_at" = $2 WHERE "projects"."id" = $3 [["commit_count", 17], ["updated_at", "2016-09-22 20:07:23.802035"], ["id", 9]]
AwardEmoji Load (7.2ms) SELECT "award_emoji".* FROM "award_emoji" WHERE "award_emoji"."awardable_type" = 'Note' AND "award_emoji"."awardable_id" IN (1065, 1064) ORDER BY "award_emoji"."id" ASC
(1.4ms) COMMIT
AwardEmoji Load (2.3ms) SELECT "award_emoji".* FROM "award_emoji" WHERE "award_emoji"."awardable_id" = $1 AND "award_emoji"."awardable_type" = $2 ORDER BY "award_emoji"."id" ASC [["awardable_id", 50], ["awardable_type", "MergeRequest"]]
(0.2ms) SELECT "notification_settings"."user_id" FROM "notification_settings" WHERE "notification_settings"."source_id" = $1 AND "notification_settings"."source_type" = $2 [["source_id", 9], ["source_type", "Project"]]
NotificationSetting Load (0.2ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."source_id" = $1 AND "notification_settings"."source_type" = $2 AND "notification_settings"."level" = $3 [["source_id", 9], ["source_type", "Project"], ["level", 3]]
Group Load (0.1ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."deleted_at" IS NULL AND "namespaces"."type" IN ('Group') AND "namespaces"."id" = $1 AND "namespaces"."type" IN ('Group') AND "namespaces"."type" = $2 ORDER BY "namespaces"."id" DESC LIMIT 1 [["id", 1], ["type", "Group"]]
(0.1ms) SELECT "notification_settings"."user_id" FROM "notification_settings" WHERE "notification_settings"."level" = $1 AND "notification_settings"."user_id" = 1 AND "notification_settings"."source_type" IS NULL [["level", 2]]
NotificationSetting Load (0.1ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."source_id" = $1 AND "notification_settings"."source_type" = $2 AND "notification_settings"."level" = $3 [["source_id", 9], ["source_type", "Project"], ["level", 2]]
CACHE (0.0ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."source_id" = $1 AND "notification_settings"."source_type" = $2 AND "notification_settings"."level" = $3 [["source_id", 9], ["source_type", "Project"], ["level", 2]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE 1=0 ORDER BY "users"."id" DESC
NotificationSetting Load (0.1ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."source_id" = $1 AND "notification_settings"."source_type" = $2 AND "notification_settings"."level" = $3 [["source_id", 9], ["source_type", "Project"], ["level", 5]]
CACHE (0.0ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."source_id" = $1 AND "notification_settings"."source_type" = $2 AND "notification_settings"."level" = $3 [["source_id", 9], ["source_type", "Project"], ["level", 3]]
NotificationSetting Load (0.1ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."level" = $1 AND "notification_settings"."user_id" = 1 AND "notification_settings"."source_type" IS NULL [["level", 5]]
NotificationSetting Load (0.1ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."user_id" = $1 AND "notification_settings"."source_id" IS NULL LIMIT 1 [["user_id", 1]]
NotificationSetting Load (0.1ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."user_id" = $1 AND "notification_settings"."source_type" = 'Project' AND "notification_settings"."source_id" = 9 LIMIT 1 [["user_id", 1]]
CACHE (0.0ms) SELECT "notification_settings".* FROM "notification_settings" WHERE "notification_settings"."user_id" = $1 AND "notification_settings"."source_type" = 'Project' AND "notification_settings"."source_id" = 9 LIMIT 1 [["user_id", 1]]
Subscription Load (0.1ms) SELECT "subscriptions".* FROM "subscriptions" WHERE "subscriptions"."subscribable_id" = $1 AND "subscriptions"."subscribable_type" = $2 AND "subscriptions"."subscribed" = $3 [["subscribable_id", 50], ["subscribable_type", "MergeRequest"], ["subscribed", "t"]]
Subscription Load (0.1ms) SELECT "subscriptions".* FROM "subscriptions" WHERE "subscriptions"."subscribable_id" = $1 AND "subscriptions"."subscribable_type" = $2 AND "subscriptions"."user_id" = $3 LIMIT 1 [["subscribable_id", 50], ["subscribable_type", "MergeRequest"], ["user_id", 1]]
ProjectHook Load (0.3ms) SELECT "web_hooks".* FROM "web_hooks" WHERE "web_hooks"."type" IN ('ProjectHook') AND "web_hooks"."project_id" = $1 AND "web_hooks"."merge_requests_events" = $2 ORDER BY "web_hooks"."id" DESC [["project_id", 9], ["merge_requests_events", "t"]]
Service Load (0.2ms) SELECT "services".* FROM "services" WHERE "services"."project_id" = $1 AND "services"."merge_requests_events" = $2 AND "services"."active" = $3 ORDER BY "services"."id" DESC [["project_id", 9], ["merge_requests_events", "t"], ["active", "t"]]
(0.2ms) SELECT COUNT(*) FROM "award_emoji" WHERE "award_emoji"."awardable_id" = $1 AND "award_emoji"."awardable_type" = $2 AND "award_emoji"."name" = $3 [["awardable_id", 50], ["awardable_type", "MergeRequest"], ["name", "thumbsup"]]
(0.1ms) SELECT COUNT(*) FROM "award_emoji" WHERE "award_emoji"."awardable_id" = $1 AND "award_emoji"."awardable_type" = $2 AND "award_emoji"."name" = $3 [["awardable_id", 50], ["awardable_type", "MergeRequest"], ["name", "thumbsdown"]]
(0.2ms) SELECT "labels"."title" FROM "labels" INNER JOIN "label_links" ON "labels"."id" = "label_links"."label_id" WHERE "label_links"."target_id" = $1 AND "label_links"."target_type" = $2 ORDER BY "labels"."title" ASC, title ASC [["target_id", 50], ["target_type", "MergeRequest"]]
CACHE (0.0ms) SELECT "subscriptions".* FROM "subscriptions" WHERE "subscriptions"."subscribable_id" = $1 AND "subscriptions"."subscribable_type" = $2 AND "subscriptions"."user_id" = $3 LIMIT 1 [["subscribable_id", 50], ["subscribable_type", "MergeRequest"], ["user_id", 1]]
(0.2ms) SELECT COUNT(*) FROM "notes" WHERE "notes"."noteable_id" = $1 AND "notes"."noteable_type" = $2 AND "notes"."system" = $3 [["noteable_id", 50], ["noteable_type", "MergeRequest"], ["system", "f"]]
Output of checks
Results of GitLab application Check
This is a gitlab-development-kit installation so I ran:
bundle exec rake gitlab:check RAILS_ENV=development SANITIZE=true
My development user is "tony".
Checking GitLab Shell ...
GitLab Shell version >= 3.6.0 ? ... OK (3.6.0)
Repo base directory exists?
default... yes
Repo storage directories are symlinks?
default... no
Repo paths owned by tony:tony?
default... yes
Repo paths access is drwxrws---?
default... yes
hooks directories in repos are links: ...
2/1 ... ok
3/2 ... ok
3/3 ... ok
3/4 ... ok
3/5 ... ok
4/6 ... ok
4/7 ... ok
5/8 ... ok
1/9 ... ok
Running /home/tony/gitlab-development-kit/gitlab-shell/bin/check
Check GitLab API access: OK
Access to /home/tony/gitlab-development-kit/.ssh/authorized_keys: OK
Send ping to redis server: OK
gitlab-shell self-check successful
Checking GitLab Shell ... Finished
Checking Sidekiq ...
Running? ... yes
Number of Sidekiq processes ... 1
Checking Sidekiq ... Finished
Checking Reply by email ...
Reply by email is disabled in config/gitlab.yml
Checking Reply by email ... Finished
Checking LDAP ...
LDAP is disabled in config/gitlab.yml
Checking LDAP ... Finished
Checking GitLab ...
Git configured with autocrlf=input? ... yes
Database config exists? ... yes
All migrations up? ... yes
Database contains orphaned GroupMembers? ... no
GitLab config exists? ... yes
GitLab config outdated? ... no
Log directory writable? ... yes
Tmp directory writable? ... yes
Uploads directory setup correctly? ... skipped (no tmp uploads folder yet)
Init script exists? ... no
Try fixing it:
Install the init script
For more information see:
doc/install/installation.md in section "Install Init Script"
Please fix the error above and rerun the checks.
Init script up-to-date? ... can't check because of previous errors
projects have namespace: ...
2/1 ... yes
3/2 ... yes
3/3 ... yes
3/4 ... yes
3/5 ... yes
4/6 ... yes
4/7 ... yes
5/8 ... yes
1/9 ... yes
Redis version >= 2.8.0? ... yes
Ruby version >= 2.1.0 ? ... yes (2.3.1)
Your git bin path is "/usr/bin/git"
Git version >= 2.7.3 ? ... yes (2.7.4)
Active users: 26
Checking GitLab ... Finished
Results of GitLab environment info
bundle exec rake gitlab:env:info RAILS_ENV=development
System information
System: Ubuntu 16.04
Current User: tony
Using RVM: no
Ruby Version: 2.3.1p112
Gem Version: 2.5.1
Bundler Version:1.13.1
Rake Version: 10.5.0
Sidekiq Version:4.2.1
GitLab information
Version: 8.13.0-pre
Revision: a2760ee
Directory: /home/tony/gitlab-development-kit/gitlab
DB Adapter: postgresql
URL: http://localhost:3000
HTTP Clone URL: http://localhost:3000/some-group/some-project.git
SSH Clone URL: ssh://tony@localhost:2222/some-group/some-project.git
Using LDAP: no
Using Omniauth: no
GitLab Shell
Version: 3.6.0
Repository storage paths:
- default: /home/tony/gitlab-development-kit/repositories/
Hooks: /home/tony/gitlab-development-kit/gitlab-shell/hooks/
Git: /usr/bin/git
Possible fixes
No info currently.