From 90dbe0730a44f0745c56b3ff46f1a16856ea3629 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 17 Feb 2022 10:59:18 +0800 Subject: [PATCH 1/2] fix: job not affect --- app/jobs/cache_async_clear_job.rb | 2 ++ app/models/project.rb | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/jobs/cache_async_clear_job.rb b/app/jobs/cache_async_clear_job.rb index 651dfaf41..1d810781a 100644 --- a/app/jobs/cache_async_clear_job.rb +++ b/app/jobs/cache_async_clear_job.rb @@ -7,6 +7,8 @@ class CacheAsyncClearJob < ApplicationJob Cache::V2::ProjectCommonService.new(id).clear when "owner_common_service" Cache::V2::OwnnerCommonService.new(id).clear + when "project_rank_service" + Cache::V2::ProjectRankService.new(id).clear end end end \ No newline at end of file diff --git a/app/models/project.rb b/app/models/project.rb index e671f0a6e..cfe9adb12 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -129,8 +129,8 @@ class Project < ApplicationRecord has_many :has_pinned_users, through: :pinned_projects, source: :user has_many :webhooks, class_name: "Gitea::Webhook", primary_key: :gpid, foreign_key: :repo_id after_create :incre_user_statistic, :incre_platform_statistic - after_save :check_project_members, :reset_cache_data - before_save :set_invite_code, :reset_unmember_followed, :set_recommend_and_is_pinned + after_save :check_project_members + before_save :set_invite_code, :reset_unmember_followed, :set_recommend_and_is_pinned, :reset_cache_data before_destroy :decre_project_common, :decre_forked_from_project_count after_destroy :decre_user_statistic, :decre_platform_statistic scope :project_statics_select, -> {select(:id,:name, :is_public, :identifier, :status, :project_type, :user_id, :forked_count, :description, :visits, :project_category_id, :project_language_id, :license_id, :ignore_id, :watchers_count, :created_on)} @@ -154,7 +154,7 @@ class Project < ApplicationRecord end def reset_cache_data - CacheAsyncResetJob.perform_later("project_common_service", self.id) + CacheAsyncResetJob.set(wait: 5.seconds).perform_later("project_common_service", self.id) if changes[:user_id].present? CacheAsyncSetJob.perform_later("user_statistic_service", {project_count: -1}, changes[:user_id].first) CacheAsyncSetJob.perform_later("user_statistic_service", {project_count: 1}, changes[:user_id].last) @@ -167,6 +167,11 @@ class Project < ApplicationRecord CacheAsyncSetJob.perform_later("platform_statistic_service", {project_language_count_key: first_language&.name, project_language_count: -1}) CacheAsyncSetJob.perform_later("platform_statistic_service", {project_language_count_key: last_language&.name, project_language_count: 1}) end + if changes[:is_public].present? + if changes[:is_public][0] && !changes[:is_public][1] + CacheAsyncClearJob.perform_later('project_rank_service', self.id) + end + end end def decre_project_common From b11f5fd22869f787ef9137dd36999d228bd19103 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 17 Feb 2022 11:12:50 +0800 Subject: [PATCH 2/2] fix: cache rollback --- app/models/project.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/models/project.rb b/app/models/project.rb index cfe9adb12..2e47c000f 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -171,6 +171,9 @@ class Project < ApplicationRecord if changes[:is_public][0] && !changes[:is_public][1] CacheAsyncClearJob.perform_later('project_rank_service', self.id) end + if !changes[:is_public][0] && changes[:is_public][1] + $redis_cache.srem("v2-project-rank-deleted", self.id) + end end end