74c99d39c800193f07a881ce98ee4b7065cee6dc hiram Fri Sep 13 10:00:57 2019 -0700 get the warning message out of the warning only message to be used elsewhere and add measureTiming printout to hgGateway refs #23217 diff --git src/hg/lib/botDelay.c src/hg/lib/botDelay.c index 9b7d1a9..ce5d2af 100644 --- src/hg/lib/botDelay.c +++ src/hg/lib/botDelay.c @@ -19,54 +19,67 @@ #define defaultWarnMs 10000 /* warning at 10 to 20 second delay */ #define defaultExitMs 20000 /* error 429 Too Many Requests after 20+ second delay */ int botDelayTime(char *host, int port, char *botCheckString) /* Figure out suggested delay time for ip address in * milliseconds. */ { int sd = netMustConnect(host, port); char buf[256]; netSendString(sd, botCheckString); netRecieveString(sd, buf); close(sd); return atoi(buf); } -void botDelayMessage(char *ip, int millis) -/* Print out message saying why you are stalled. */ +char *botDelayWarningMsg(char *ip, int millis) +/* return the string for the default botDelay message + * not all users of botDelay want the message to go to stderr + * return it for their own use case + */ { time_t now = time(NULL); -warn("There is a very high volume of traffic coming from your " +char *delayMsg = needMem(2048); +safef(delayMsg, 2048, + "There is a very high volume of traffic coming from your " "site (IP address %s) as of %s (California time). So that other " "users get a fair share " "of our bandwidth, we are putting in a delay of %3.1f seconds " "before we service your request. This delay will slowly " "decrease over a half hour as activity returns to normal. This " "high volume of traffic is likely due to program-driven rather than " "interactive access, or the submission of queries on a large " "number of sequences. If you are making large batch queries, " "please write to our genome@soe.ucsc.edu public mailing list " "and inquire about more efficient ways to access our data. " "If you are sharing an IP address with someone who is submitting " "large batch queries, we apologize for the " "inconvenience. " "To use the genome browser functionality from a Unix command line, " "please read our FAQ on this topic. " "For further help on how to access our data from a command line, " "or if " "you think this delay is being imposed unfairly, please contact genome-www@soe.ucsc.edu.", - ip, asctime(localtime(&now)), .001*millis); + ip, asctime(localtime(&now)), 0.001*millis); + +return delayMsg; +} /* char *botDelayWarningMsg(char *ip, int millis) */ + +void botDelayMessage(char *ip, int millis) +/* Print out message saying why you are stalled. */ +{ +warn("%s", botDelayWarningMsg(ip, millis)); } void botTerminateMessage(char *ip, int millis) /* Print out message saying why you are terminated. */ { time_t now = time(NULL); hUserAbort("There is an exceedingly high volume of traffic coming from your " "site (IP address %s) as of %s (California time). It looks like " "a web robot is launching queries quickly, and not even waiting for " "the results of one query to finish before launching another query. " "/* We cannot service requests from your IP address under */ these " "conditions. (code %d)" "To use the genome browser functionality from a Unix command line, " "please read our FAQ on this topic. " "For further help on how to access our data from a command line, "