6f949e90b1ba3de976455fbcf9da21897761d134 markd Fri Oct 29 16:11:58 2021 -0700 add timeout option to pipeline to allow kill long-running pipelines, especially ones run from CGIs diff --git src/hg/hgc/rnaFoldClick.c src/hg/hgc/rnaFoldClick.c index b900ea8..79b9860 100644 --- src/hg/hgc/rnaFoldClick.c +++ src/hg/hgc/rnaFoldClick.c @@ -377,49 +377,49 @@ struct dnaSeq *seq = hChromSeq(database, item->chrom, item->chromStart, item->chromEnd); touppers(seq->dna); if (item->strand[0] == '-') reverseComplement(seq->dna, seq->size); toRna(seq->dna); // make sure the dna is not longer than the paren string seq->dna[strlen(item->secStr)] = 0; char *rnaPlotPath = cfgOptionDefault("rnaPlotPath", "../cgi-bin/RNAplot"); mkdirTrashDirectory(table); char psName[512]; safef(psName, sizeof(psName), "../trash/%s/%s_%s.ps", table, table, item->name); char *plotCmd[] = {rnaPlotPath, NULL}; -struct pipeline *plStruct = pipelineOpen1(plotCmd, pipelineWrite | pipelineNoAbort, "/dev/null", NULL); +struct pipeline *plStruct = pipelineOpen1(plotCmd, pipelineWrite | pipelineNoAbort, "/dev/null", NULL, 0); FILE *of = pipelineFile(plStruct); if (of != NULL) { fprintf(of, ">%s\n", psName); /* This tells where to put file. */ fprintf(of, "%s\n%s\n", seq->dna, item->secStr); } pipelineClose(&plStruct); char pngName[256]; char *rootName = cloneString(psName); chopSuffix(rootName); safef(pngName, sizeof(pngName), "%s.png", rootName); char outputBuf[1024]; safef(outputBuf, sizeof outputBuf, "-sOutputFile=%s", pngName); char *pipeCmd[] = {"gs", "-sDEVICE=png16m", outputBuf, "-dBATCH","-dNOPAUSE","-q", psName, NULL}; -struct pipeline *pl = pipelineOpen1(pipeCmd, pipelineWrite | pipelineNoAbort, "/dev/null", NULL); +struct pipeline *pl = pipelineOpen1(pipeCmd, pipelineWrite | pipelineNoAbort, "/dev/null", NULL, 0); int sysRet = pipelineWait(pl); if (sysRet != 0) errAbort("System call returned %d for:\n %s", sysRet, pipelineDesc(pl)); printf("Display on PseudoViewer
", seq->dna, item->secStr, start); htmlHorizontalLine(); printf("RNAFold diagram:
"); printf("", pngName); } void htmlPrintSecStrEvofoldDrawing(FILE *f, struct rnaSecStr *item) { char fileName[512]; struct dnaSeq *seq; seq = hChromSeq(database, item->chrom, item->chromStart, item->chromEnd);