Why in the case of Aeron Archive I am unable to specify directory for media driver?

I am trying to setup a standalone aeron archive media driver. This will be used by my publisher clients as well as subscribers. I intend to have two directional publish/subscribe agents per process that will connect to aeron.

While, setting up the mediadriver, if I let the mediadriver choose default directory (note: I am running locally on mac). It works fine. I am able to specify archive directory and that works.

Here is the code that works:

    public void init() {
        final String controlChannel = AERON_UDP_ENDPOINT + config.getHost() + ":" + config.getControlPort();
        final String replicationChannel = AERON_UDP_ENDPOINT + config.getHost() + ":" + config.getReplicationPort();
        final String recordingEventsChannel =
                "aeron:udp?control-mode=dynamic|control=" + config.getHost() + ":" + config.getEventsPort();

        LOGGER.info("Starting MediaDriver with control channel: {}, replication channel: {}, recording events channel: {}",
                controlChannel, replicationChannel, recordingEventsChannel);

        final var archiveContext = new Archive.Context()
                .deleteArchiveOnStart(true)
                .errorHandler(ArchieveMediaDriverService::errorHandler)
                .controlChannel(controlChannel)
                .replicationChannel(replicationChannel)
                .recordingEventsChannel(recordingEventsChannel)
                .idleStrategySupplier(SleepingMillisIdleStrategy::new)
                .threadingMode(ArchiveThreadingMode.SHARED)
                .archiveDir(new File(config.getAeronDirectoryName()));

        final var mediaDriverContext = new MediaDriver.Context()
                .spiesSimulateConnection(true)
                .errorHandler(ArchieveMediaDriverService::errorHandler)
                .threadingMode(ThreadingMode.SHARED)
                .sharedIdleStrategy(new SleepingMillisIdleStrategy())
                .dirDeleteOnStart(true);

        ArchivingMediaDriver.launch(mediaDriverContext, archiveContext);
        LOGGER.info("Media driver is ready.");

        aeron = Aeron.connect();
        LOGGER.info("Connected to Aeron {}", aeron.context());

        // Connect to AeronArchive
        aeronArchive = AeronArchive.connect(
                new AeronArchive.Context()
                        .aeron(aeron)
                        .controlRequestChannel(controlChannel)
                        .controlResponseChannel(replicationChannel)
        );
        LOGGER.info("MediaDriver is up and running");

        // Keep the MediaDriver running until the application is stopped
        Runtime.getRuntime().addShutdownHook(new Thread(this::stop));
    }

But if we set the directory to the same one as aeron archive directory, it gives a FATAL error saying cannot create CnC file.

        final var mediaDriverContext = new MediaDriver.Context()
                .spiesSimulateConnection(true)
                .aeronDirectoryName(config.getAeronDirectoryName())
                .errorHandler(ArchieveMediaDriverService::errorHandler)
                .threadingMode(ThreadingMode.SHARED)
                .sharedIdleStrategy(new SleepingMillisIdleStrategy())
                .dirDeleteOnStart(true);

The driver would timeout giving error:
Caused by: io.aeron.exceptions.DriverTimeoutException: FATAL – CnC file not created: /Users/user/dev/optradex/optradex-engine/resources/archiveDataFolder/cnc.dat

However, if I change the directory to a different directory than the archive folder, it works. But there is a FATAL error. It turns out to be a warning as the system works.

Here is the exception:

Caused by: io.aeron.exceptions.DriverTimeoutException: FATAL - no driver heartbeat detected
    at io.aeron.Aeron$Context.connectToDriver(Aeron.java:1563) ~[aeron-all-1.37.0.jar:1.37.0]
    at io.aeron.Aeron$Context.conclude(Aeron.java:790) ~[aeron-all-1.37.0.jar:1.37.0]
    at io.aeron.Aeron.<init>(Aeron.java:83) ~[aeron-all-1.37.0.jar:1.37.0]
    at io.aeron.Aeron.connect(Aeron.java:139) ~[aeron-all-1.37.0.jar:1.37.0]
    at io.aeron.Aeron.connect(Aeron.java:121) ~[aeron-all-1.37.0.jar:1.37.0]
    at com.xac.archivemediadriver.service.ArchieveMediaDriverService.init(ArchieveMediaDriverService.java:71) ~[main/:na]
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMethod.invoke(InitDestroyAnnotationBeanPostProcessor.java:457) ~[spring-beans-6.0.17.jar:6.0.17]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:401) ~[spring-beans-6.0.17.jar:6.0.17]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:219) ~[spring-beans-6.0.17.jar:6.0.17]
    ... 17 common frames omitted

I am trying to configure the archive directory as well as the mediadriver cnc file directory. Normally, mediadriver allows me when it is not an archive instance. I am assuming I am missing some documentation here. Hence raising this question.

New contributor

Diptaneal Roy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật