-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert "Stuck-Jobs-FY24Q1s6_prodtest"
- Loading branch information
Showing
23 changed files
with
150 additions
and
1,030 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.