Example #1
0
def check_active_requests():
    """Check for any requests with status='waiting'. If there are
        some, check if the files are ready for download.
    """

    active_requests = jobtracker.query("SELECT * FROM requests " \
                                       "WHERE status='waiting'")
    for request in active_requests:

	# Check requested status 
	if DownloaderSPAN512.check_request_done(request):
	    dlm_cout.outs("Restore (GUID: %s) has succeeded. Will create file entries.\n" % request['guid'])
	    create_file_entries(request)

	else:
#	    dlm_cout.outs("Request (GUID: %s) has failed.\n" \
#	             "\tDatabase failed to report the data as restored." % request['guid'])
#	    jobtracker.query("UPDATE requests SET status='failed', " \
#                     "details='Request failed. Why ?', " \
#                     "updated_at='%s' " \
#                     "WHERE guid='%s'" % (jobtracker.nowstr(), request['guid']))

            query = "SELECT (TO_SECONDS('%s')-TO_SECONDS(created_at)) " \
                        "AS deltaT_seconds " \
                    "FROM requests " \
                    "WHERE guid='%s'" % \
                        (jobtracker.nowstr(), request['guid'])
            row = jobtracker.query(query, fetchone=True)
            #if row['deltaT_seconds']/3600. > config.download.request_timeout:
            if row/3600. > config.download.request_timeout:
                dlm_cout.outs("Restore (GUID: %s) is over %d hr old " \
                                "and still not ready. Marking " \
                                "it as failed." % \
                        (request['guid'], config.download.request_timeout))
                jobtracker.query("UPDATE requests " \
                                 "SET status='failed', " \
                                    "details='Request took too long (> %d hr)', " \
                                    "updated_at='%s' " \
                                 "WHERE guid='%s'" % \
                    (config.download.request_timeout, jobtracker.nowstr(), \
                            request['guid']))