4898794edd81be5285ea6e544acbedeaeb31bf78
max
  Tue Nov 23 08:10:57 2021 -0800
Fixing pointers to README file for license in all source code files. refs #27614

diff --git src/hg/encode3/encodeDataWarehouse/edwRetryJob/edwRetryJob.c src/hg/encode3/encodeDataWarehouse/edwRetryJob/edwRetryJob.c
index 4d4b141..969ec56 100644
--- src/hg/encode3/encodeDataWarehouse/edwRetryJob/edwRetryJob.c
+++ src/hg/encode3/encodeDataWarehouse/edwRetryJob/edwRetryJob.c
@@ -1,100 +1,100 @@
 /* edwRetryJob - Add jobs that failed back to a edwJob format queue.. */
 
 /* Copyright (C) 2014 The Regents of the University of California 
- * See README in this or parent directory for licensing information. */
+ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
 #include "common.h"
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "jksql.h"
 #include "encodeDataWarehouse.h"
 #include "edwLib.h"
 
 /* Variables that are set from command line. */
 boolean dry = FALSE;
 int minId = 0;
 double maxTime = 1.0;
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "edwRetryJob - Add jobs that failed back to a edwJob format queue.\n"
   "usage:\n"
   "   edwRetryJob database jobTable\n"
   "options:\n"
   "   -dry - dry run, just print jobs that would rerun\n"
   "   -minId=minimum ID of job to retry, default %d\n"
   "   -maxTime=N.N - Maximum time (in days) for a job to succeed. Default %2.1g\n"
   , minId, maxTime
   );
 }
 
 /* Command line validation table. */
 static struct optionSpec options[] = {
    {"dry", OPTION_BOOLEAN},
    {"minId", OPTION_DOUBLE},
    {"maxTime", OPTION_DOUBLE},
    {NULL, 0},
 };
 
 void edwRetryJob(char *database, char *jobTable)
 /* edwRetryJob - Add jobs that failed back to a edwJob format queue.. */
 {
 /* Figure out thresholds for age. */
 long long now = edwNow();
 long long maxTimeThreshold = now - 24*3600 * maxTime;
 
 /* Get list of all jobs ordered by ID with most recent job first. */
 struct sqlConnection *conn = sqlConnect(database);
 char query[512];
 sqlSafef(query, sizeof(query), "select * from %s order by id desc", jobTable);
 struct edwJob *job, *jobList = edwJobLoadByQuery(conn, query);
 
 /* Loop through job list looking for commandLines that failed or timed out  in their
  * most recent attempt. */
 struct hash *jobHash = hashNew(0);
 struct slRef *failRef, *failRefList = NULL;
 for (job = jobList; job != NULL; job = job->next)
     {
     if (hashLookup(jobHash, job->commandLine) == NULL)
         {
 	hashAdd(jobHash, job->commandLine, job);
 	if (job->id >= minId && job->startTime != 0)
 	    {
 	    boolean timedOut = (job->startTime < maxTimeThreshold && job->endTime == 0);
 	    if (job->returnCode != 0 || timedOut)
 	        {
 		refAdd(&failRefList, job);
 		}
 	    }
 	}
     }
 
 /* Loop through failed list printing or retrying */
 for (failRef = failRefList; failRef != NULL; failRef = failRef->next)
     {
     job = failRef->val;
     if (dry)
 	printf("%s\n", job->commandLine);
     else
 	{
 	sqlSafef(query, sizeof(query), 
 	    "insert into %s (commandLine) values ('%s')",  jobTable, job->commandLine);
 	sqlUpdate(conn, query);
 	}
     } 
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
 if (argc != 3)
     usage();
 dry = optionExists("dry");
 minId = optionInt("minId", minId);
 maxTime = optionDouble("maxTime", maxTime);
 edwRetryJob(argv[1], argv[2]);
 return 0;
 }