sumologic-labs / killer-queen-collector Goto Github PK
View Code? Open in Web Editor NEWData collector for Killer Queen
License: Apache License 2.0
Data collector for Killer Queen
License: Apache License 2.0
We've hardcoded estimates in XYConstants.LeftGoalX
. We'll want to improve these by measuring exact pixels.
Christopher Corley [7:35 PM]
You can also ask the cab for goldonleft
Send a k=get v=goldonleft
Old note from Main.scala - the issue is that our spin loop is too aggressive and isn't handling some failure messages (as far as I can tell):
// FIXME: When connecting, there are DLA issues at times. Here's some logs to debug with:
//2018-09-18 17:11:59,102 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Connecting to KQ cabinet
//2018-09-18 17:11:59,103 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Attempt to start connection to cabinet done. Waiting.
//2018-09-18 17:11:59,103 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Closed connection to cabinet. Retrying connection
//[INFO] [09/18/2018 17:11:59.103] [default-akka.actor.default-dispatcher-4] [akka://default/system/StreamSupervisor-0/flow-7-1-actorRefSource] Message [akka.http.scaladsl.model.ws.TextMessage$Strict] without sender to Actor[akka://default/system/StreamSupervisor-0/flow-7-1-actorRefSource#1227979493] was not delivered. [6] dead letters encountered. If this is not an expected behavior, then [Actor[akka://default/system/StreamSupervisor-0/flow-7-1-actorRefSource#1227979493]] may have terminated unexpectedly, This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
//2018-09-18 17:11:59,114 -0700 [default-akka.actor.default-dispatcher-6] DEBUG com.sumologic.hackathon.state.StateMachine - Reset state machine
//2018-09-18 17:11:59,161 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Connecting to KQ cabinet
//2018-09-18 17:11:59,161 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Attempt to start connection to cabinet done. Waiting.
//2018-09-18 17:11:59,161 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Closed connection to cabinet. Retrying connection
//[INFO] [09/18/2018 17:11:59.161] [default-akka.actor.default-dispatcher-3] [akka://default/system/StreamSupervisor-0/flow-8-1-actorRefSource] Message [akka.http.scaladsl.model.ws.TextMessage$Strict] without sender to Actor[akka://default/system/StreamSupervisor-0/flow-8-1-actorRefSource#1701609517] was not delivered. [7] dead letters encountered. If this is not an expected behavior, then [Actor[akka://default/system/StreamSupervisor-0/flow-8-1-actorRefSource#1701609517]] may have terminated unexpectedly, This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
//2018-09-18 17:11:59,180 -0700 [default-akka.actor.default-dispatcher-6] DEBUG com.sumologic.hackathon.state.StateMachine - Reset state machine
//2018-09-18 17:11:59,274 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Connecting to KQ cabinet
//2018-09-18 17:11:59,274 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Attempt to start connection to cabinet done. Waiting.
//2018-09-18 17:11:59,274 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Closed connection to cabinet. Retrying connection
//[INFO] [09/18/2018 17:11:59.274] [default-akka.actor.default-dispatcher-12] [akka://default/system/StreamSupervisor-0/flow-9-1-actorRefSource] Message [akka.http.scaladsl.model.ws.TextMessage$Strict] without sender to Actor[akka://default/system/StreamSupervisor-0/flow-9-1-actorRefSource#2007154941] was not delivered. [8] dead letters encountered. If this is not an expected behavior, then [Actor[akka://default/system/StreamSupervisor-0/flow-9-1-actorRefSource#2007154941]] may have terminated unexpectedly, This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
//2018-09-18 17:11:59,282 -0700 [default-akka.actor.default-dispatcher-6] DEBUG com.sumologic.hackathon.state.StateMachine - Reset state machine
//2018-09-18 17:11:59,283 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Connecting to KQ cabinet
//2018-09-18 17:11:59,283 -0700 [default-akka.actor.default-dispatcher-6] INFO com.sumologic.hackathon.Main$ - Attempt to start connection to cabinet done. Waiting.
//2018-09-18 17:11:59,283 -0700 [default-akka.actor.default-dispatcher-12] INFO com.sumologic.hackathon.Main$ - Closed connection to cabinet. Retrying connection
//[INFO] [09/18/2018 17:11:59.284] [default-akka.actor.default-dispatcher-13] [akka://default/system/StreamSupervisor-0/flow-10-1-actorRefSource] Message [akka.http.scaladsl.model.ws.TextMessage$Strict] without sender to Actor[akka://default/system/StreamSupervisor-0/flow-10-1-actorRefSource#-1540068731] was not delivered. [9] dead letters encountered. If this is not an expected behavior, then [Actor[akka://default/system/StreamSupervisor-0/flow-10-1-actorRefSource#-1540068731]] may have terminated unexpectedly, This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
//2018-09-18 17:11:59,318 -0700 [default-akka.actor.default-dispatcher-12] DEBUG com.sumologic.hackathon.state.StateMachine - Reset state machine
//2018-09-18 17:11:59,319 -0700 [default-akka.actor.default-dispatcher-12] INFO com.sumologic.hackathon.Main$ - Connecting to KQ cabinet
//2018-09-18 17:11:59,320 -0700 [default-akka.actor.default-dispatcher-12] INFO com.sumologic.hackathon.Main$ - Attempt to start connection to cabinet done. Waiting.
//2018-09-18 17:11:59,320 -0700 [default-akka.actor.default-dispatcher-13] INFO com.sumologic.hackathon.Main$ - Closed connection to cabinet. Retrying connection
//[INFO] [09/18/2018 17:11:59.320] [default-akka.actor.default-dispatcher-3] [akka://default/system/StreamSupervisor-0/flow-11-1-actorRefSource] Message [akka.http.scaladsl.model.ws.TextMessage$Strict] without sender to Actor[akka://default/system/StreamSupervisor-0/flow-11-1-actorRefSource#1949080542] was not delivered. [10] dead letters encountered, no more dead letters will be logged. If this is not an expected behavior, then [Actor[akka://default/system/StreamSupervisor-0/flow-11-1-actorRefSource#1949080542]] may have terminated unexpectedly, This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
Found one Java-level deadlock:
=============================
"default-akka.actor.default-dispatcher-16":
waiting to lock monitor 0x00007ff8a317e458 (object 0x00000006c1535e38, a com.sumologic.http.queue.BufferWithFifoEviction),
which is held by "default-akka.actor.default-dispatcher-11"
"default-akka.actor.default-dispatcher-11":
waiting to lock monitor 0x00007ff8a317fbb8 (object 0x00000006c15768e8, a com.sumologic.http.queue.BufferWithFifoEviction),
which is held by "default-akka.actor.default-dispatcher-16"
Java stack information for the threads listed above:
===================================================
"default-akka.actor.default-dispatcher-16":
at com.sumologic.http.queue.BufferWithFifoEviction.add(BufferWithFifoEviction.java:101)
- waiting to lock <0x00000006c1535e38> (a com.sumologic.http.queue.BufferWithFifoEviction)
at com.sumologic.log4j.SumoLogicAppender.append(SumoLogicAppender.java:171)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:464)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:448)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:431)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406)
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2170)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2125)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2108)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2002)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1974)
at org.apache.logging.log4j.spi.AbstractLogger.warn(AbstractLogger.java:2624)
at com.sumologic.http.queue.BufferWithFifoEviction.evict(BufferWithFifoEviction.java:83)
at com.sumologic.http.queue.BufferWithFifoEviction.add(BufferWithFifoEviction.java:103)
- locked <0x00000006c15768e8> (a com.sumologic.http.queue.BufferWithFifoEviction)
at com.sumologic.log4j.SumoLogicAppender.append(SumoLogicAppender.java:171)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:464)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:448)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:431)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406)
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2170)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2125)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2108)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2002)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1974)
at org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1311)
at com.sumologic.killerqueen.Logging.info(Logging.scala:37)
at com.sumologic.killerqueen.Logging.info$(Logging.scala:35)
at com.sumologic.killerqueen.Main$.info(Main.scala:23)
at com.sumologic.killerqueen.Main$.$anonfun$connectToCabinet$4(Main.scala:124)
at com.sumologic.killerqueen.Main$.$anonfun$connectToCabinet$4$adapted(Main.scala:123)
at com.sumologic.killerqueen.Main$$$Lambda$601/2094918322.apply(Unknown Source)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:92)
at akka.dispatch.BatchingExecutor$BlockableBatch$$Lambda$552/846785519.apply$mcV$sp(Unknown Source)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:85)
at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:92)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-akka.actor.default-dispatcher-11":
at com.sumologic.http.queue.BufferWithFifoEviction.add(BufferWithFifoEviction.java:101)
- waiting to lock <0x00000006c15768e8> (a com.sumologic.http.queue.BufferWithFifoEviction)
at com.sumologic.log4j.SumoLogicAppender.append(SumoLogicAppender.java:171)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:464)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:448)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:431)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406)
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2170)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2125)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2108)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2002)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1974)
at org.apache.logging.log4j.spi.AbstractLogger.warn(AbstractLogger.java:2624)
at com.sumologic.http.queue.BufferWithFifoEviction.evict(BufferWithFifoEviction.java:83)
at com.sumologic.http.queue.BufferWithFifoEviction.add(BufferWithFifoEviction.java:103)
- locked <0x00000006c1535e38> (a com.sumologic.http.queue.BufferWithFifoEviction)
at com.sumologic.log4j.SumoLogicAppender.append(SumoLogicAppender.java:171)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:464)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:448)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:431)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406)
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2170)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2125)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2108)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2002)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1974)
at org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1311)
at com.sumologic.killerqueen.Logging.info(Logging.scala:37)
at com.sumologic.killerqueen.Logging.info$(Logging.scala:35)
at com.sumologic.killerqueen.Main$.info(Main.scala:23)
at com.sumologic.killerqueen.Main$.connectToCabinet(Main.scala:128)
at com.sumologic.killerqueen.Main$.$anonfun$connectToCabinet$4(Main.scala:125)
at com.sumologic.killerqueen.Main$.$anonfun$connectToCabinet$4$adapted(Main.scala:123)
at com.sumologic.killerqueen.Main$$$Lambda$601/2094918322.apply(Unknown Source)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:92)
at akka.dispatch.BatchingExecutor$BlockableBatch$$Lambda$552/846785519.apply$mcV$sp(Unknown Source)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:85)
at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:92)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:49)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Found 1 deadlock.
The KQ game allows flipping blue and gold sides. Right now we have gold hardcoded on the left and blue on the right.
Instead, we should leverage XYConstants.LeftTeam
Given its beta nature, we currently do not support the snail map. We should consider supporting that.
One specific location that'll need addressing is that we only support a single Left/Right X coordinate when calculating snail driven distance at game end.
(Paraphrased quotes)
Matt Abdou
In the gamestart and gamend events, there are four parameters in the message - `![k[gamestart],v[map_day,True,0,False]]!` - can anyone tell me what the `True,0,False` values represent?
Kyle Gustafson [MKE] [7:23 PM]
in case you're still wondering about this, the 1st boolean is whether blue/gold sides are swapped, 2nd boolean is related to being in attract mode
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.