Adjusted background task time
This commit is contained in:
parent
783b94cd4d
commit
02c40f5cea
|
@ -110,7 +110,7 @@ matrix:
|
||||||
before_install:
|
before_install:
|
||||||
- mysql -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME}"
|
- mysql -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME}"
|
||||||
- sed -i '/psycopg2/d' $WEB/requirements.txt
|
- sed -i '/psycopg2/d' $WEB/requirements.txt
|
||||||
- sed -i 's/^RUN_EVERY =.*$/RUN_EVERY = 60/' $WEB/website/settings/constants.py
|
- sed -i 's/^RUN_EVERY =.*$/RUN_EVERY = 180/' $WEB/website/settings/constants.py
|
||||||
script:
|
script:
|
||||||
- cd $WEB && python manage.py runserver 0.0.0.0:8000 &
|
- cd $WEB && python manage.py runserver 0.0.0.0:8000 &
|
||||||
- sleep 10 && cd $DRIVER && fab integration_tests
|
- sleep 10 && cd $DRIVER && fab integration_tests
|
||||||
|
@ -128,7 +128,7 @@ matrix:
|
||||||
before_install:
|
before_install:
|
||||||
- psql -U postgres -c "CREATE DATABASE ${DB_NAME}"
|
- psql -U postgres -c "CREATE DATABASE ${DB_NAME}"
|
||||||
- sed -i '/mysqlclient/d' $WEB/requirements.txt
|
- sed -i '/mysqlclient/d' $WEB/requirements.txt
|
||||||
- sed -i 's/^RUN_EVERY =.*$/RUN_EVERY = 60/' $WEB/website/settings/constants.py
|
- sed -i 's/^RUN_EVERY =.*$/RUN_EVERY = 180/' $WEB/website/settings/constants.py
|
||||||
script:
|
script:
|
||||||
- cd $WEB && python manage.py runserver 0.0.0.0:8000 &
|
- cd $WEB && python manage.py runserver 0.0.0.0:8000 &
|
||||||
- sleep 10 && cd $DRIVER && fab integration_tests
|
- sleep 10 && cd $DRIVER && fab integration_tests
|
||||||
|
|
|
@ -110,6 +110,12 @@ class ConfigurationRecommendation(UpdateTask): # pylint: disable=abstract-metho
|
||||||
result_id = retval['result_id']
|
result_id = retval['result_id']
|
||||||
result = Result.objects.get(pk=result_id)
|
result = Result.objects.get(pk=result_id)
|
||||||
|
|
||||||
|
# Create next configuration to try
|
||||||
|
config = db.parser.create_knob_configuration(result.dbms.pk, retval['recommendation'])
|
||||||
|
retval['recommendation'] = config
|
||||||
|
result.next_configuration = JSONUtil.dumps(retval)
|
||||||
|
result.save()
|
||||||
|
|
||||||
# Replace result with formatted result
|
# Replace result with formatted result
|
||||||
formatted_params = db.parser.format_dbms_knobs(result.dbms.pk, retval['recommendation'])
|
formatted_params = db.parser.format_dbms_knobs(result.dbms.pk, retval['recommendation'])
|
||||||
task_meta = TaskMeta.objects.get(task_id=task_id)
|
task_meta = TaskMeta.objects.get(task_id=task_id)
|
||||||
|
@ -117,12 +123,6 @@ class ConfigurationRecommendation(UpdateTask): # pylint: disable=abstract-metho
|
||||||
task_meta.result = retval
|
task_meta.result = retval
|
||||||
task_meta.save()
|
task_meta.save()
|
||||||
|
|
||||||
# Create next configuration to try
|
|
||||||
config = db.parser.create_knob_configuration(result.dbms.pk, retval['recommendation'])
|
|
||||||
retval['recommendation'] = config
|
|
||||||
result.next_configuration = JSONUtil.dumps(retval)
|
|
||||||
result.save()
|
|
||||||
|
|
||||||
|
|
||||||
def clean_knob_data(knob_matrix, knob_labels, session):
|
def clean_knob_data(knob_matrix, knob_labels, session):
|
||||||
# Makes sure that all knobs in the dbms are included in the knob_matrix and knob_labels
|
# Makes sure that all knobs in the dbms are included in the knob_matrix and knob_labels
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
import logging
|
import logging
|
||||||
import datetime
|
import datetime
|
||||||
import re
|
import re
|
||||||
|
import time
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from django.contrib.auth import authenticate, login, logout
|
from django.contrib.auth import authenticate, login, logout
|
||||||
|
@ -1079,16 +1080,22 @@ def give_result(request, upload_code): # pylint: disable=unused-argument
|
||||||
overall_status, num_completed = TaskUtil.get_task_status(tasks)
|
overall_status, num_completed = TaskUtil.get_task_status(tasks)
|
||||||
|
|
||||||
if overall_status == 'SUCCESS':
|
if overall_status == 'SUCCESS':
|
||||||
if not latest_result.next_configuration:
|
# The task status is set to SUCCESS before the next config is saved in
|
||||||
# If the task status was incomplete when we first queried latest_result
|
# the latest result so we must wait for it to be updated
|
||||||
# but succeeded before the call to TaskUtil.get_task_status() finished
|
max_wait_sec = 20
|
||||||
# then latest_result is stale and must be updated.
|
elapsed_sec = 0
|
||||||
LOG.debug("Updating stale result (pk=%s)", latest_result.pk)
|
while not latest_result.next_configuration and elapsed_sec <= max_wait_sec:
|
||||||
|
time.sleep(5)
|
||||||
|
elapsed_sec += 5
|
||||||
latest_result = Result.objects.get(id=latest_result.pk)
|
latest_result = Result.objects.get(id=latest_result.pk)
|
||||||
|
LOG.debug("Waiting for the next config for result %s to be updated... "
|
||||||
|
"(elapsed: %ss): %s", latest_result.pk, elapsed_sec,
|
||||||
|
model_to_dict(latest_result))
|
||||||
|
|
||||||
if not latest_result.next_configuration:
|
if not latest_result.next_configuration:
|
||||||
LOG.warning("Failed to get the next configuration from the latest result: %s",
|
LOG.warning(
|
||||||
model_to_dict(latest_result))
|
"Failed to get the next configuration from the latest result after %ss: %s",
|
||||||
|
elapsed_sec, model_to_dict(latest_result))
|
||||||
overall_status = 'FAILURE'
|
overall_status = 'FAILURE'
|
||||||
response = _failed_response(latest_result, tasks, num_completed, overall_status,
|
response = _failed_response(latest_result, tasks, num_completed, overall_status,
|
||||||
'Failed to get the next configuration.')
|
'Failed to get the next configuration.')
|
||||||
|
|
Loading…
Reference in New Issue