diff options
author | Robert Speicher <robert@gitlab.com> | 2018-01-30 23:47:23 +0300 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2018-01-30 23:47:23 +0300 |
commit | 95b4f7ea37d641c7c30e9903dd3390a7d04a6e67 (patch) | |
tree | 9abac8cc851f8249a0b0279f1406d8f6fe9cdaad /lib | |
parent | a20e02a5bc2e52f679ee220f61abeb9ecfff1ec9 (diff) | |
parent | fa9d47f221fff4d75e3c50670aeeac7a3d675f7a (diff) |
Merge branch 'feature/migrate-wiki-page-formatted-data-to-gitaly' into 'master'
Migrate fetching wiki page formatted content to Gitaly
Closes gitaly#958
See merge request gitlab-org/gitlab-ce!16716
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/git/wiki.rb | 14 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/wiki_service.rb | 12 |
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/gitlab/git/wiki.rb b/lib/gitlab/git/wiki.rb index d4a53d32c28..ccdb8975342 100644 --- a/lib/gitlab/git/wiki.rb +++ b/lib/gitlab/git/wiki.rb @@ -117,6 +117,20 @@ module Gitlab page.url_path end + def page_formatted_data(title:, dir: nil, version: nil) + version = version&.id + + @repository.gitaly_migrate(:wiki_page_formatted_data) do |is_enabled| + if is_enabled + gitaly_wiki_client.get_formatted_data(title: title, dir: dir, version: version) + else + # We don't use #page because if wiki_find_page feature is enabled, we would + # get a page without formatted_data. + gollum_find_page(title: title, dir: dir, version: version)&.formatted_data + end + end + end + private # options: diff --git a/lib/gitlab/gitaly_client/wiki_service.rb b/lib/gitlab/gitaly_client/wiki_service.rb index 5c5b170a3e0..8e87a8cc36f 100644 --- a/lib/gitlab/gitaly_client/wiki_service.rb +++ b/lib/gitlab/gitaly_client/wiki_service.rb @@ -127,6 +127,18 @@ module Gitlab wiki_file end + def get_formatted_data(title:, dir: nil, version: nil) + request = Gitaly::WikiGetFormattedDataRequest.new( + repository: @gitaly_repo, + title: encode_binary(title), + revision: encode_binary(version), + directory: encode_binary(dir) + ) + + response = GitalyClient.call(@repository.storage, :wiki_service, :wiki_get_formatted_data, request) + response.reduce("") { |memo, msg| memo << msg.data } + end + private # If a block is given and the yielded value is true, iteration will be |