Skip to content

Commit

Permalink
Revert "Stuck-Jobs-FY24Q1s6_prodtest"
Browse files Browse the repository at this point in the history
  • Loading branch information
nkutub authored Dec 20, 2023
1 parent b4c2cea commit b802796
Show file tree
Hide file tree
Showing 23 changed files with 150 additions and 1,030 deletions.
118 changes: 42 additions & 76 deletions app/jobs/bgs_share_error_fix_job.rb
Original file line number Diff line number Diff line change
@@ -1,112 +1,78 @@
# frozen_string_literal: true

require_relative "../../lib/helpers/master_scheduler_interface.rb"
class BgsShareErrorFixJob < CaseflowJob
include MasterSchedulerInterface

def initialize
@stuck_job_report_service = StuckJobReportService.new
@start_time = nil
@end_time = nil
super
end

def error_text
"ShareError"
end
ERROR_TEXT = "ShareError"
STUCK_JOB_REPORT_SERVICE = StuckJobReportService.new

def perform
start_time

clear_hlr_errors if hlrs_with_errors.present?
clear_rius_errors if rius_with_errors.present?
clear_bge_errors if bges_with_errors.present?

@stuck_job_report_service.write_log_report(error_text)
end_time
log_processing_time
STUCK_JOB_REPORT_SERVICE.write_log_report(ERROR_TEXT)
end

def loop_through_and_call_process_records(records)
@stuck_job_report_service.append_record_count(records.count, error_text)

records.each do |record|
epe = find_end_product_establishment(record)
def clear_rius_errors
STUCK_JOB_REPORT_SERVICE.append_record_count(rius_with_errors.count, ERROR_TEXT)
rius_with_errors.each do |riu|
epe = EndProductEstablishment.find_by(
id: riu.review_id
)
next if epe.established_at.blank?

process_records(record)
@stuck_job_report_service.append_single_record(record.class.name, record.id)
end

@stuck_job_report_service.append_record_count(records.count, error_text)
end

# :reek:FeatureEnvy
def process_records(object_type)
ActiveRecord::Base.transaction do
object_type.clear_error!
rescue StandardError => error
log_error(error)
@stuck_job_report_service.append_errors(object_type.class.name, object_type.id, error)
resolve_error_on_records(riu)
STUCK_JOB_REPORT_SERVICE.append_single_record(riu.class.name, riu.id)
end
STUCK_JOB_REPORT_SERVICE.append_record_count(rius_with_errors.count, ERROR_TEXT)
end

def clear_hlr_errors
loop_through_and_call_process_records(hlrs_with_errors)
end
STUCK_JOB_REPORT_SERVICE.append_record_count(hlrs_with_errors.count, ERROR_TEXT)

def clear_rius_errors
loop_through_and_call_process_records(rius_with_errors)
hlrs_with_errors.each do |hlr|
epe = EndProductEstablishment.find_by(
veteran_file_number: hlr.veteran_file_number
)
next if epe.established_at.blank?

resolve_error_on_records(hlr)
STUCK_JOB_REPORT_SERVICE.append_single_record(hlr.class.name, hlr.id)
end
STUCK_JOB_REPORT_SERVICE.append_record_count(hlrs_with_errors.count, ERROR_TEXT)
end

def clear_bge_errors
loop_through_and_call_process_records(bges_with_errors)
STUCK_JOB_REPORT_SERVICE.append_record_count(bges_with_errors.count, ERROR_TEXT)

bges_with_errors.each do |bge|
next if bge.end_product_establishment.established_at.blank?

resolve_error_on_records(bge)
STUCK_JOB_REPORT_SERVICE.append_single_record(bge.class.name, bge.id)
end
STUCK_JOB_REPORT_SERVICE.append_record_count(bges_with_errors.count, ERROR_TEXT)
end

def hlrs_with_errors
HigherLevelReview.where("establishment_error ILIKE?", "%#{error_text}%")
HigherLevelReview.where("establishment_error ILIKE?", "%#{ERROR_TEXT}%")
end

def rius_with_errors
RequestIssuesUpdate.where("error ILIKE?", "%#{error_text}%")
RequestIssuesUpdate.where("error ILIKE?", "%#{ERROR_TEXT}%")
end

def bges_with_errors
BoardGrantEffectuation.where("decision_sync_error ILIKE?", "%#{error_text}%")
end

def records_with_errors
hlrs = hlrs_with_errors
rius = rius_with_errors
bges = bges_with_errors

all_records_with_errors = hlrs + rius + bges

all_records_with_errors
end

def log_processing_time
(@end_time && @start_time) ? @end_time - @start_time : 0
end

def start_time
@start_time ||= Time.zone.now
end

def end_time
@end_time ||= Time.zone.now
BoardGrantEffectuation.where("decision_sync_error ILIKE?", "%#{ERROR_TEXT}%")
end

private

def find_end_product_establishment(record)
case record.class.name
when "RequestIssuesUpdate"
EndProductEstablishment.find_by(id: record.review_id)
when "HigherLevelReview"
EndProductEstablishment.find_by(veteran_file_number: record.veteran_file_number)
when "BoardGrantEffectuation"
record.end_product_establishment
# :reek:FeatureEnvy
def resolve_error_on_records(object_type)
ActiveRecord::Base.transaction do
object_type.clear_error!
rescue StandardError => error
log_error(error)
STUCK_JOB_REPORT_SERVICE.append_errors(object_type.class.name, object_type.id, error)
end
end
end
52 changes: 16 additions & 36 deletions app/jobs/claim_date_dt_fix_job.rb
Original file line number Diff line number Diff line change
@@ -1,40 +1,32 @@
# frozen_string_literal: true

class ClaimDateDtFixJob < CaseflowJob
ERROR_TEXT = "ClaimDateDt"

attr_reader :stuck_job_report_service

def initialize
@stuck_job_report_service = StuckJobReportService.new
@start_time = nil
@end_time = nil
super
end

def perform
start_time

loop_through_and_call_process_records

end_time
log_processing_time
end

def error_text
"ClaimDateDt"
process_decision_documents
end

def loop_through_and_call_process_records
return if records_with_errors.blank?
def process_decision_documents
return if decision_docs_with_errors.blank?

@stuck_job_report_service.append_record_count(records_with_errors.count, error_text)
stuck_job_report_service.append_record_count(decision_docs_with_errors.count, ERROR_TEXT)

records_with_errors.each do |single_decision_document|
decision_docs_with_errors.each do |single_decision_document|
next unless valid_decision_document?(single_decision_document)

process_records(single_decision_document)
process_decision_document(single_decision_document)
end

@stuck_job_report_service.append_record_count(records_with_errors.count, error_text)
stuck_job_report_service.append_record_count(decision_docs_with_errors.count, ERROR_TEXT)

@stuck_job_report_service.write_log_report(error_text)
stuck_job_report_service.write_log_report(ERROR_TEXT)
end

def valid_decision_document?(decision_document)
Expand All @@ -43,28 +35,16 @@ def valid_decision_document?(decision_document)
end

# :reek:FeatureEnvy
def process_records(decision_document)
def process_decision_document(decision_document)
ActiveRecord::Base.transaction do
decision_document.clear_error!
rescue StandardError => error
log_error(error)
@stuck_job_report_service.append_errors(decision_document.class.name, decision_document.id, error)
stuck_job_report_service.append_errors(decision_document.class.name, decision_document.id, error)
end
end

def records_with_errors
DecisionDocument.where("error ILIKE ?", "%#{error_text}%")
end

def log_processing_time
(@end_time && @start_time) ? @end_time - @start_time : 0
end

def start_time
@start_time ||= Time.zone.now
end

def end_time
@end_time ||= Time.zone.now
def decision_docs_with_errors
DecisionDocument.where("error ILIKE ?", "%#{ERROR_TEXT}%")
end
end
59 changes: 19 additions & 40 deletions app/jobs/claim_not_established_fix_job.rb
Original file line number Diff line number Diff line change
@@ -1,75 +1,54 @@
# frozen_string_literal: true

class ClaimNotEstablishedFixJob < CaseflowJob
ERROR_TEXT = "Claim not established."
EPECODES = %w[030 040 930 682].freeze

attr_reader :stuck_job_report_service

def initialize
@stuck_job_report_service = StuckJobReportService.new
@start_time = nil
@end_time = nil
super
end

def error_text
"Claim not established."
end

def perform
start_time
return if records_with_errors.blank?
return if decision_docs_with_errors.blank?

@stuck_job_report_service.append_record_count(records_with_errors.count, error_text)
stuck_job_report_service.append_record_count(decision_docs_with_errors.count, ERROR_TEXT)

loop_through_and_call_process_records

@stuck_job_report_service.append_record_count(records_with_errors.count, error_text)
@stuck_job_report_service.write_log_report(error_text)
end_time
log_processing_time
end

def loop_through_and_call_process_records
records_with_errors.each do |single_decision_document|
decision_docs_with_errors.each do |single_decision_document|
file_number = single_decision_document.veteran.file_number
epe_array = EndProductEstablishment.where(veteran_file_number: file_number)
validated_epes = epe_array.map { |epe| validate_epe(epe) }

@stuck_job_report_service.append_single_record(single_decision_document.class.name, single_decision_document.id)
stuck_job_report_service.append_single_record(single_decision_document.class.name, single_decision_document.id)

process_records(single_decision_document, validated_epes)
resolve_error_on_records(single_decision_document, validated_epes)
end

stuck_job_report_service.append_record_count(decision_docs_with_errors.count, ERROR_TEXT)
stuck_job_report_service.write_log_report(ERROR_TEXT)
end

def decision_docs_with_errors
DecisionDocument.where("error ILIKE ?", "%#{ERROR_TEXT}%")
end

def validate_epe(epe)
epe_code = epe&.code&.slice(0, 3)
EPECODES.include?(epe_code) && epe&.established_at.present?
end

private

# :reek:FeatureEnvy
def process_records(object_type, epes_array)
def resolve_error_on_records(object_type, epes_array)
ActiveRecord::Base.transaction do
if !epes_array.include?(false)
object_type.clear_error!
end
rescue StandardError => error
log_error(error)
@stuck_job_report_service.append_errors(object_type.class.name, object_type.id, error)
stuck_job_report_service.append_errors(object_type.class.name, object_type.id, error)
end
end

def records_with_errors
DecisionDocument.where("error ILIKE ?", "%#{error_text}%")
end

def log_processing_time
(@end_time && @start_time) ? @end_time - @start_time : 0
end

def start_time
@start_time ||= Time.zone.now
end

def end_time
@end_time ||= Time.zone.now
end
end
Loading

0 comments on commit b802796

Please sign in to comment.