public STORunner(int numInstances, int systemId, int start, int?end, bool noKill) { this.numInstances = numInstances; this.systemId = systemId; this.start = start; this.noKill = noKill; details = SystemDetailsTable.DETAILS.details(systemId); this.end = end.HasValue ? end.Value : details.lastRunNumber(); writer = new STOMetricsWriter(details, false); STO.populateSymbolsPortfolios(details, out symbols, out portfolios); runner = new EC2Runner(systemId + "-" + Dates.yyyyMmDdHhMmSsNoSeparator(Dates.now())); LogC.info("checking for completed runs"); existingRuns = completedRuns(); var allRunsComplete = true; for (var i = this.start; i <= this.end; i++) { if (!existingRuns.Contains(i)) { allRunsComplete = false; break; } } if (allRunsComplete) { this.numInstances = 0; } unhandledExceptionProcessor = ((sender, args) => killRun(LogC.errMessage("unhandled exception", (Exception)args.ExceptionObject))); }
public static void Main(string[] args) { Directory.CreateDirectory(@"E:\logs"); LogC.setOut("STOServer", @"E:\logs\STOServer." + processId() + ".log", true); LogC.setErr(@"E:\logs\STOServer." + processId() + ".error.log"); AppDomain.CurrentDomain.UnhandledException += handleUncaughtExceptions; S3Cache.setDefaultSqsDbMode(true); if (!(hostname().StartsWith("NY") || hostname().StartsWith("LN"))) { QHttpClient.turnOffProxy(); } var runner = EC2Runner.fromUserData(); S3Cache.setS3Cache(runner.s3Cache()); var lastRunTime = 120; while (trueDat()) { info("lastRunTime: " + lastRunTime); STORequest request = null; try { lastRunTime = processNextMessage(runner, lastRunTime, out request); } catch (Exception e) { LogC.err("failed " + request, e); LogC.info("failed " + request, e); continue; } info("finished " + request); } }
public static void Main(string[] args) { var userData = EC2Runner.userData(); var q = new SqsQ((string) userData.get("requestQueue")); while(trueDat()) { var messages = q.messagesBlocking(); each<Message>(messages, message => { var request = (TestEC2.TestRequest) message.@object(); request.sendResponse(); message.delete(); }); } }
protected override void OnStart(string[] args) { var timeSync = Process.Start(@"C:\WINDOWS\system32\w32tm.exe", "/resync"); if (timeSync == null) { throw Bomb.toss("unable to start time sync process"); } timeSync.WaitForExit(); var userData = EC2Runner.userData(); var nProcs = int.Parse((string)userData.get("numProcs")); var command = (string)userData.get("command"); new EC2Runner((string)userData.get("requestQueue")).downloadJarsAndQRunFromS3(new QDirectory("E:/svn")); Environment.SetEnvironmentVariable("MAIN", @"E:\svn"); O.zeroTo(nProcs, i => startProcess(command)); }
static int processNextMessage(EC2Runner runner, int lastRunTime, out STORequest request) { var message = runner.nextMessage(Math.Min(7200, 2 * lastRunTime)); var start = now(); request = new STORequest(message.@object()); info("received " + request); if (symbols == null || barData == null) { cacheSymbolData(request); } else { request.requireMatch(symbols); } var simulator = new Simulator.Simulator(new SystemArguments(symbols, request.portfolios, request.parameters), barData, "QUEDGE"); simulator.processBars(); simulator.shutdown(); lastRunTime = Math.Max((int)now().Subtract(start).TotalSeconds, 10); runner.responseQueue().send(request.response(EC2Runner.instanceId(), start, now(), processId())); message.delete(); return(lastRunTime); }