summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>2017-11-02 15:08:39 +0100
committerKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>2017-11-08 02:53:51 +0100
commit5da298dc62297e25b2c5f3af12cd232a9ea10dd7 (patch)
treee3982c64b756adbc68dddd48805fe831c7707a36
parent50f3250cf1f07b55f5120ab2ead5f661e350a128 (diff)
downloadgitlab-ce-gitaly-700-wiki-update-page.tar.gz
Migrate GitLab::Git::Wiki.update_page to Gitalygitaly-700-wiki-update-page
-rw-r--r--GITALY_SERVER_VERSION2
-rw-r--r--lib/gitlab/git/wiki.rb25
-rw-r--r--lib/gitlab/gitaly_client/wiki_service.rb24
3 files changed, 45 insertions, 6 deletions
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION
index c5d4cee36a1..4f9b378b40f 100644
--- a/GITALY_SERVER_VERSION
+++ b/GITALY_SERVER_VERSION
@@ -1 +1 @@
-0.51.0
+0.52.0
diff --git a/lib/gitlab/git/wiki.rb b/lib/gitlab/git/wiki.rb
index 45362ac438b..97dc7772cef 100644
--- a/lib/gitlab/git/wiki.rb
+++ b/lib/gitlab/git/wiki.rb
@@ -46,11 +46,14 @@ module Gitlab
end
def update_page(page_path, title, format, content, commit_details)
- assert_type!(format, Symbol)
- assert_type!(commit_details, CommitDetails)
-
- gollum_wiki.update_page(gollum_page_by_path(page_path), title, format, content, commit_details.to_h)
- nil
+ @repository.gitaly_migrate(:wiki_update_page) do |is_enabled|
+ if is_enabled
+ gitaly_update_page(page_path, title, format, content, commit_details)
+ gollum_wiki.clear_cache
+ else
+ gollum_update_page(page_path, title, format, content, commit_details)
+ end
+ end
end
def pages
@@ -147,6 +150,14 @@ module Gitlab
nil
end
+ def gollum_update_page(page_path, title, format, content, commit_details)
+ assert_type!(format, Symbol)
+ assert_type!(commit_details, CommitDetails)
+
+ gollum_wiki.update_page(gollum_page_by_path(page_path), title, format, content, commit_details.to_h)
+ nil
+ end
+
def gollum_find_page(title:, version: nil, dir: nil)
if version
version = Gitlab::Git::Commit.find(@repository, version).id
@@ -170,6 +181,10 @@ module Gitlab
gitaly_wiki_client.write_page(name, format, content, commit_details)
end
+ def gitaly_update_page(page_path, title, format, content, commit_details)
+ gitaly_wiki_client.update_page(page_path, title, format, content, commit_details)
+ end
+
def gitaly_delete_page(page_path, commit_details)
gitaly_wiki_client.delete_page(page_path, commit_details)
end
diff --git a/lib/gitlab/gitaly_client/wiki_service.rb b/lib/gitlab/gitaly_client/wiki_service.rb
index 15f0f30d303..9161349eec6 100644
--- a/lib/gitlab/gitaly_client/wiki_service.rb
+++ b/lib/gitlab/gitaly_client/wiki_service.rb
@@ -37,6 +37,30 @@ module Gitlab
end
end
+ def update_page(page_path, title, format, content, commit_details)
+ request = Gitaly::WikiUpdatePageRequest.new(
+ repository: @gitaly_repo,
+ name: GitalyClient.encode(name),
+ format: format.to_s,
+ commit_details: gitaly_commit_details(commit_details)
+ )
+
+ strio = StringIO.new(content)
+
+ enum = Enumerator.new do |y|
+ until strio.eof?
+ chunk = strio.read(MAX_MSG_SIZE)
+ request.content = GitalyClient.encode(chunk)
+
+ y.yield request
+
+ request = Gitaly::WikiUpdatePageRequest.new
+ end
+ end
+
+ GitalyClient.call(@repository.storage, :wiki_service, :wiki_update_page, enum)
+ end
+
def delete_page(page_path, commit_details)
request = Gitaly::WikiDeletePageRequest.new(
repository: @gitaly_repo,