Textual representations of event codes in flight recorder dump (#21489)
This commit is contained in:
parent
c32ee33a11
commit
8e97ecee8f
3 changed files with 54 additions and 3 deletions
|
|
@ -489,6 +489,7 @@ private[remote] class ArteryTransport(_system: ExtendedActorSystem, _provider: R
|
|||
try {
|
||||
if (settings.Advanced.DeleteAeronDirectory) {
|
||||
IoUtil.delete(new File(driver.aeronDirectoryName), false)
|
||||
topLevelFREvents.loFreq(Transport_MediaFileDeleted, NoMetaData)
|
||||
}
|
||||
} catch {
|
||||
case NonFatal(e) ⇒
|
||||
|
|
@ -766,7 +767,7 @@ private[remote] class ArteryTransport(_system: ExtendedActorSystem, _provider: R
|
|||
if (areonErrorLog != null) areonErrorLog.close()
|
||||
if (mediaDriver.get.isDefined) {
|
||||
stopMediaDriver()
|
||||
topLevelFREvents.loFreq(Transport_MediaFileDeleted, NoMetaData)
|
||||
|
||||
}
|
||||
topLevelFREvents.loFreq(Transport_FlightRecorderClose, NoMetaData)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package akka.remote.artery
|
|||
|
||||
object FlightRecorderEvents {
|
||||
|
||||
// Note: Remember to update dictionary when adding new events!
|
||||
|
||||
val NoMetaData = Array.empty[Byte]
|
||||
|
||||
// Top level remoting events
|
||||
|
|
@ -44,4 +46,45 @@ object FlightRecorderEvents {
|
|||
val Compression_CompressedManifest = 91
|
||||
val Compression_AllocatedManifestCompressionId = 92
|
||||
|
||||
// Used for presentation of the entries in the flight recorder
|
||||
lazy val eventDictionary = Map(
|
||||
Transport_MediaDriverStarted → "Transport: Media driver started",
|
||||
Transport_AeronStarted → "Transport: Aeron started",
|
||||
Transport_AeronErrorLogStarted → "Transport: Aeron error log started",
|
||||
Transport_TaskRunnerStarted → "Transport: Task runner started",
|
||||
Transport_UniqueAddressSet → "Transport: Unique address set",
|
||||
Transport_MaterializerStarted → "Transport: Materializer started",
|
||||
Transport_StartupFinished → "Transport: Startup finished",
|
||||
Transport_OnAvailableImage → "Transport: onAvailableImage",
|
||||
Transport_KillSwitchPulled → "Transport: KillSwitch pulled",
|
||||
Transport_Stopped → "Transport: Stopped",
|
||||
Transport_AeronErrorLogTaskStopped → "Transport: Aeron errorLog task stopped",
|
||||
Transport_MediaFileDeleted → "Transport: Media file deleted",
|
||||
Transport_FlightRecorderClose → "Transport: Flight recorder closed",
|
||||
Transport_SendQueueOverflow → "Transport: Send queue overflow",
|
||||
|
||||
// Aeron Sink events
|
||||
AeronSink_Started → "AeronSink: Started",
|
||||
AeronSink_TaskRunnerRemoved → "AeronSink: Task runner removed",
|
||||
AeronSink_PublicationClosed → "AeronSink: Publication closed",
|
||||
AeronSink_Stopped → "AeronSink: Stopped",
|
||||
AeronSink_EnvelopeGrabbed → "AeronSink: Envelope grabbed",
|
||||
AeronSink_EnvelopeOffered → "AeronSink: Envelope offered",
|
||||
AeronSink_GaveUpEnvelope → "AeronSink: Gave up envelope",
|
||||
AeronSink_DelegateToTaskRunner → "AeronSink: Delegate to task runner",
|
||||
AeronSink_ReturnFromTaskRunner → "AeronSink: Return from task runner",
|
||||
|
||||
// Aeron Source events
|
||||
AeronSource_Started → "AeronSource: Started",
|
||||
AeronSource_Stopped → "AeronSource: Stopped",
|
||||
AeronSource_Received → "AeronSource: Received",
|
||||
AeronSource_DelegateToTaskRunner → "AeronSource: Delegate to task runner",
|
||||
AeronSource_ReturnFromTaskRunner → "AeronSource: Return from task runner",
|
||||
|
||||
// Compression events
|
||||
Compression_CompressedActorRef → "Compression: Compressed ActorRef",
|
||||
Compression_AllocatedActorRefCompressionId → "Compression: Allocated ActorRef compression id",
|
||||
Compression_CompressedManifest → "Compression: Compressed manifest",
|
||||
Compression_AllocatedManifestCompressionId → "Compression: Allocated manifest compression id"
|
||||
).map { case (int, str) ⇒ int.toLong → str }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,11 +197,18 @@ private[akka] final class FlightRecorderReader(fileChannel: FileChannel) {
|
|||
}
|
||||
|
||||
case class RichEntry(timeStamp: Instant, dirty: Boolean, code: Long, metadata: Array[Byte]) {
|
||||
override def toString: String = s"[$timeStamp] ${if (dirty) "#" else ""} \t $code | ${metadata.mkString(",")}"
|
||||
override def toString: String = {
|
||||
val textualCode = FlightRecorderEvents.eventDictionary.getOrElse(code, "").take(34)
|
||||
val metadataString = new String(metadata, "UTF-8")
|
||||
f"[$timeStamp] ${if (dirty) "#" else ""} $code%3s $textualCode%-34s | $metadataString"
|
||||
}
|
||||
}
|
||||
|
||||
case class CompactEntry(timeStamp: Instant, dirty: Boolean, code: Long, param: Long) {
|
||||
override def toString: String = s"[$timeStamp] ${if (dirty) "#" else ""} \t $code | $param"
|
||||
override def toString: String = {
|
||||
val textualCode = FlightRecorderEvents.eventDictionary.getOrElse(code, "").take(34)
|
||||
f"[$timeStamp] ${if (dirty) "#" else ""} $code%3s $textualCode%-34s | $param"
|
||||
}
|
||||
}
|
||||
|
||||
private val fileBuffer = new MappedResizeableBuffer(fileChannel, 0, TotalSize)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue