Fix the query.

Missing the where clause to join the two tables.... OOPS
This commit is contained in:
Rebecca Law
2019-11-07 10:57:31 +00:00
parent 43c0122dd0
commit 559faf3034
3 changed files with 19 additions and 11 deletions

View File

@@ -245,5 +245,5 @@ def check_for_missing_rows_in_completed_jobs():
recipient_csv, template = get_recipient_csv_and_template(job) recipient_csv, template = get_recipient_csv_and_template(job)
for row in recipient_csv.get_rows(): for row in recipient_csv.get_rows():
if row.index == row_to_process.missing_row: if row.index == row_to_process.missing_row:
current_app.logger.info("Processing row: {} for job: {}") current_app.logger.info("Processing missing row: {} for job: {}")
process_row(row, template, job, job.service) process_row(row, template, job, job.service)

View File

@@ -195,11 +195,12 @@ def find_jobs_with_missing_rows():
# Using 10 minutes as a condition seems reasonable. # Using 10 minutes as a condition seems reasonable.
ten_minutes_ago = datetime.utcnow() - timedelta(minutes=10) ten_minutes_ago = datetime.utcnow() - timedelta(minutes=10)
jobs_with_rows_missing = db.session.query( jobs_with_rows_missing = db.session.query(
func.count(Notification.id).label('count_notifications'), func.count(Notification.id).label('actual_count'),
Job Job
).filter( ).filter(
Job.job_status == JOB_STATUS_FINISHED, Job.job_status == JOB_STATUS_FINISHED,
Job.processing_finished < ten_minutes_ago Job.processing_finished < ten_minutes_ago,
Job.id == Notification.job_id
).group_by( ).group_by(
Job Job
).having( ).having(

View File

@@ -416,19 +416,26 @@ def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_notifica
def test_find_jobs_with_missing_rows(sample_email_template): def test_find_jobs_with_missing_rows(sample_email_template):
job = create_job(template=sample_email_template, healthy_job = create_job(template=sample_email_template,
notification_count=3,
job_status=JOB_STATUS_FINISHED,
processing_finished=datetime.utcnow() - timedelta(minutes=11)
)
for i in range(0, 3):
create_notification(job=healthy_job, job_row_number=i)
job_with_missing_rows = create_job(template=sample_email_template,
notification_count=5, notification_count=5,
job_status=JOB_STATUS_FINISHED, job_status=JOB_STATUS_FINISHED,
processing_finished=datetime.utcnow() - timedelta(minutes=11) processing_finished=datetime.utcnow() - timedelta(minutes=11)
) )
for i in range(0, 4): for i in range(0, 4):
create_notification(job=job, job_row_number=i) create_notification(job=job_with_missing_rows, job_row_number=i)
results = find_jobs_with_missing_rows() results = find_jobs_with_missing_rows()
assert len(results) == 1 assert len(results) == 1
assert results[0][0] == 4 assert results[0].actual_count == 4
assert results[0][1] == job assert results[0][1] == job_with_missing_rows
def test_find_jobs_with_missing_rows_returns_nothing_for_a_job_completed_less_than_10_minutes_ago( def test_find_jobs_with_missing_rows_returns_nothing_for_a_job_completed_less_than_10_minutes_ago(