From 39ec4d1c2824dafccc0d59bd0cfa3abce7d9154c Mon Sep 17 00:00:00 2001 From: Mario de la Ossa Date: Tue, 11 Jun 2019 22:35:19 -0600 Subject: Backport of 12014-incremental-es-wiki-updates Bringing in the DB migration and some light changes for CE classes --- app/services/git/wiki_push_service.rb | 9 +++++++++ app/workers/post_receive.rb | 23 ++++++++++++++-------- ...90607205656_add_wiki_columns_to_index_status.rb | 12 +++++++++++ db/schema.rb | 2 ++ 4 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 app/services/git/wiki_push_service.rb create mode 100644 db/migrate/20190607205656_add_wiki_columns_to_index_status.rb diff --git a/app/services/git/wiki_push_service.rb b/app/services/git/wiki_push_service.rb new file mode 100644 index 00000000000..a053f133016 --- /dev/null +++ b/app/services/git/wiki_push_service.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Git + class WikiPushService < ::BaseService + def execute + # This is used in EE + end + end +end diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb index 3f1639ec2ed..dba7837bd12 100644 --- a/app/workers/post_receive.rb +++ b/app/workers/post_receive.rb @@ -30,15 +30,17 @@ class PostReceive private + def identify_user(post_received) + post_received.identify.tap do |user| + log("Triggered hook for non-existing user \"#{post_received.identifier}\"") unless user + end + end + def process_project_changes(post_received) changes = [] refs = Set.new - @user = post_received.identify - - unless @user - log("Triggered hook for non-existing user \"#{post_received.identifier}\"") - return false - end + user = identify_user(post_received) + return false unless user post_received.enum_for(:changes_refs).with_index do |(oldrev, newrev, ref), index| service_klass = @@ -51,7 +53,7 @@ class PostReceive if service_klass service_klass.new( post_received.project, - @user, + user, oldrev: oldrev, newrev: newrev, ref: ref, @@ -64,7 +66,7 @@ class PostReceive refs << ref end - after_project_changes_hooks(post_received, @user, refs.to_a, changes) + after_project_changes_hooks(post_received, user, refs.to_a, changes) end def after_project_changes_hooks(post_received, user, refs, changes) @@ -76,6 +78,11 @@ class PostReceive post_received.project.touch(:last_activity_at, :last_repository_updated_at) post_received.project.wiki.repository.expire_statistics_caches ProjectCacheWorker.perform_async(post_received.project.id, [], [:wiki_size]) + + user = identify_user(post_received) + return false unless user + + ::Git::WikiPushService.new(post_received.project, user, changes: post_received.enum_for(:changes_refs)).execute end def log(message) diff --git a/db/migrate/20190607205656_add_wiki_columns_to_index_status.rb b/db/migrate/20190607205656_add_wiki_columns_to_index_status.rb new file mode 100644 index 00000000000..0910d425212 --- /dev/null +++ b/db/migrate/20190607205656_add_wiki_columns_to_index_status.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class AddWikiColumnsToIndexStatus < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column :index_statuses, :last_wiki_commit, :binary + add_column :index_statuses, :wiki_indexed_at, :datetime_with_timezone + end +end diff --git a/db/schema.rb b/db/schema.rb index a9643d70966..7a7319c132e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1572,6 +1572,8 @@ ActiveRecord::Schema.define(version: 20190613030606) do t.string "last_commit" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.binary "last_wiki_commit" + t.datetime_with_timezone "wiki_indexed_at" t.index ["project_id"], name: "index_index_statuses_on_project_id", unique: true, using: :btree end -- cgit v1.2.1