Невозможно использовать постоянство Apache Ignite в OpenDaylight - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь заменить LevelDB по умолчанию в OpenDaylight на Apache Ignite, что я не могу сделать после внесения изменений в файл akka.conf и развертывания jar akka-persistence-ignite, который я нашел здесь. https://github.com/Romeh/akka-persistance-ignite

Я просматриваю исходный код ODL и помещаю несколько операторов Log.debug / print в некоторые классы модуля sal-distrib-datastore.

Показанный ниже пример является частью результата, который я получил после помещения оператора print в конструктор класса ActorSystemProviderImpl, находящегося в org / opendaylight / controller / config / yang / config / actor_system_provider / impl. Я распечатал содержимое объекта config с помощью config.entrySet ().

akka.persistence.snapshot.ignite.class=Quoted("akka.persistence.
ignite.snapshot.IgniteSnapshotStore"),

akka.persistence.snapshot -   store.local.class=Quoted("org.opendaylight.controller.cluster.persistence.Loca
lSnapshotStore"),  

akka.persistence.journal.ignite.cache-prefix=Quoted("akka-

journal"), ignite.peerClassLoadingEnabled=ConfigBoolean(false),  

akka.akka.persistence.snapshot-

store.plugin=Quoted("akka.persistence.snapshot.ignite"), 

akka.persistence.journal.ignite.cache-backups=ConfigInt(1), 

akka.persistence.snapshot.ignite.cache-prefix=Quoted("akka-snapshot"),                                    

akka.persistence.journal.ignite.plugin-dispatcher=Quoted("ignite-dispatcher"),
akka.persistence.journal.ignite.class=Quoted("akka.persistence.ignite.journal.IgniteWriteJournal")

Я хотел бы знать, почему класс akka.persistence.ignite.journal.IgniteWriteJournal нигде не вызывается. В какой части исходного кода ODL создаются объекты журнала и моментального снимка? Где именно выбран журнал LevelDB? Это как-то связано с
Метод ActorSystem.create (), используемый в классе ActorSystemProviderImpl?

1 Ответ

0 голосов
/ 04 июля 2018

ODL не создает экземпляры журнала и моментального снимка - это делается akka внутренне в какой-то момент во время запуска системы актора на основе конфигурации в akka.conf. На самом деле ODL даже не знает о бэкэнде персистентности - akka скрывает это через абстракции API.

Я предполагаю, что запуск осколков ODL был успешным, и в этом случае должен быть настроен и создан экземпляр некоторого персистентного бэкэнда. Если используется LevelDB по умолчанию, то в корневом каталоге karaf будут созданы каталоги «journal» и «snapshots». Таким образом, если вы не видите эти каталоги, созданные после успешного запуска ODL, то он не использует LevelDB. Если это так, то предположим, что он использует ignite - почему он не регистрирует ваши операторы печати в конструкторах - может быть, вы неправильно развернули восстановленную библиотеку со своими изменениями? Я вообще не знаком с ignite, но разве не должно быть какого-то внешнего артефакта, который указывает, что ODL использует ignite, например, файл, таблица базы данных?

...