2

I cannot setup new Threadfactory() in the LowLatencyMediaDriver sample for Aeron. See below code and snapshot for thread names in VisualVM.

public class LowLatencyMediaDriver {
    public static void main(final String[] args) {
        loadPropertiesFiles(args);

        ThreadFactory conductorThreadFactory = new ThreadFactoryBuilder().setNameFormat(LowLatencyMediaDriver.class.getName()+"-Conductor-%d").setDaemon(true).build();
        ThreadFactory receiverThreadFactory = new ThreadFactoryBuilder().setNameFormat(LowLatencyMediaDriver.class.getName()+"-Receiver-%d").setDaemon(true).build();
        ThreadFactory senderThreadFactory = new ThreadFactoryBuilder().setNameFormat(LowLatencyMediaDriver.class.getName()+"-Sender-%d").setDaemon(true).build();

        final MediaDriver.Context ctx = new MediaDriver.Context()
            .termBufferSparseFile(false)
            .threadingMode(ThreadingMode.DEDICATED)
            .conductorThreadFactory(conductorThreadFactory)
            .receiverThreadFactory(receiverThreadFactory)
            .senderThreadFactory(senderThreadFactory)
            .conductorIdleStrategy(new BusySpinIdleStrategy())
            .receiverIdleStrategy(new BusySpinIdleStrategy())
            .senderIdleStrategy(new BusySpinIdleStrategy());

        try (MediaDriver ignored = MediaDriver.launch(ctx)) {
            new ShutdownSignalBarrier().await();
            System.out.println("Shutdown Driver...");
        }
    }
}

enter image description here

Martin Thompson
  • 1,341
  • 8
  • 11
Sam
  • 61
  • 6

1 Answers1

1

The AgentRunner class auto-renames the thread and does not preserve the name given via ThreadFactory().

https://github.com/real-logic/agrona/blob/master/agrona/src/main/java/org/agrona/concurrent/AgentRunner.java#L94

Sam
  • 61
  • 6