В # 3115 я заметил, что kdb export system
( kdb export system:/
в PR) также экспортирует все в system/elektra/modules
. Это предназначено?
Для конкретных обстоятельств см. Https://github.com/ElektraInitiative/libelektra/pull/3115#issuecomment -559576223.
Конечно, почему нет? Он также экспортирует версию и другие вещи, которые не нужны для импорта. Вы можете добавить --without-elektra
чтобы избежать экспорта этих частей.
Что касается шелл-рекордера, я бы также ожидал, что будет сделана резервная копия и восстановлена только данная часть.
Конечно, почему нет?
Удаляет ли их как-нибудь kdbSet
? Кажется неправильным сериализовать эти ключи, когда они жестко закодированы с помощью специальной части функций get плагина ...
Для получения информации о версии kdbSet проверяет, идентичны ли они, и игнорирует kdbSet, если они идентичны. В противном случае будет сгенерирована ошибка.
Для модулей (iirc) нет kdbSet, поэтому устанавливаемые ключи просто игнорируются. Iirc плагин "constants" имеет такое же поведение. Обычно он монтируется system / info / elektra, а не в system / elektra. Может, нам стоит изменить это, чтобы сделать --without-elektra
более полезным?
Но в любом случае: оба поведения (игнорирование и проверка идентичных ключей) не должны повредить импорту.
Так что для текущей ситуации с довольно нестабильной Elektra это имеет смысл: импорт system / elektra отклоняется, если версия не идентична. Чтобы избежать этой ошибки, можно передать --without-elektra
.
После 1.0 мы можем быть более расслабленными и принимать импорт из Elektra версии 1.0 или выше. ( @mpranj что ты думаешь?)
Затем текст нужно адаптировать, на данный момент это:
kdb import system < sys
Sorry, module kdb issued the error C01320:
Interface: Read only plugin, 'kdbSet' not supported but the key system/elektra/version/constants/KDB_VERSION_MICRO (expected system/elektra/version/constants/KDB_VERSION_MICRO) was tried to be modified to '1' (expected '2')
В любом случае, ваш вопрос дает представление о том, как мы можем улучшить документацию по --without-elektra
. Идея --without-elektra
в контексте импорта / экспорта заключается в следующем:
После 1.0 мы можем быть более расслабленными
Я согласен с предложениями.
Как упомянул @kodebach , как-то странно, что это появилось только сейчас в # 3115 и не появлялось раньше. Хотя добавление --without-elektra
вероятно, должно было быть в первую очередь для резервного копирования и восстановления, все же кажется, что PR несколько изменил поведение.
@kodebach , вы снова активировали кеш для этих тестов? Я бы хотел дождаться завершения остальной части PR, чтобы я мог исправить mmapstorage и кеш. Я видел такие / похожие ошибки ( Postcondition of backend was violated: drop key [...] not belonging to [...]
), когда кеш не был реализован правильно.
вы снова активировали кеш для этих тестов?
Да, кеш полностью включен.
так что я могу исправить mmapstorage и кеш
mmapstorage
уже работает. Оказывается, у меня где-то была key
вместо ukey
.
Кеш, похоже, тоже работает, за исключением проблемы с глобальным тестом размонтирования. В последний раз я проверял, что ошибки не возникало, если кеш не компилировался.
Я изменил части kdbGet
, elektraCacheGet
и связанных функций. Скорее всего, я что-то сломал, но, поскольку вещи, которые я изменил, вероятно, придется менять снова после # 2969, я не думаю, что вам нужно смотреть прямо сейчас.
ОК. Я предлагаю, если кеш + mmapstorage вызывает проблемы, вы просто держите его деактивированным до самого конца, а затем мы активируем его адаптацию.
PR - это довольно фундаментальное изменение, поэтому будет намного проще, если вы не застрянете из-за некоторого сбоя в работе кеша. Когда он в основном будет готов, просто снова активируйте кеш и отправьте мне ping, чтобы я мог посмотреть и исправить остатки.
@mpranj : Я назначил вас, поскольку это связано с кешем.
Ничего подобного воспроизвести на нынешнем мастере не могу. Я не могу там много сделать, если кто-то не знает, как воспроизвести это там, но я подозреваю, что этого нет на мастере.
На ветке от # 3115 получаю ошибки как описано. @kodebach, стоит ли мне пойти туда и попытаться исправить вещи, связанные с кешем, поверх ваших изменений, или еще слишком рано работать над этим? Насколько сложно перебазировать ветку из master в настоящее время (плагин pre-backend)?
Я думаю, что не стоит работать над № 3115 до тех пор, пока № 2969 и связанные PR не будут объединены. После этого сделаю ребаз и попробую доделать пиар. Я хотел бы как можно реже перебазировать, потому что вам в основном нужно проверять все коммиты на предмет всего, что полагается на синтаксис имен ключей, чтобы гарантировать правильное перебазирование.
Если хотите, можете, конечно, поискать ошибку в текущей версии PR. Однако, насколько я помню, я пробовал это на master
перед тем, как создать проблему, так что, возможно, к тому времени она была исправлена.
Я думаю, что не стоит работать над № 3115 до тех пор, пока № 2969 и связанные PR не будут объединены.
Спасибо! Тогда давайте подождем и проверим эту проблему после объединения связанных PR!
Можно ли как-то пометить проблемы, которые ждут каких-то PR? Я пока изменил название.
Мне действительно удалось воспроизвести это на master
сегодня. В частности, я построил scripts/docker/fedora/32/Dockerfile
(технически из # 3447 не из master
, но файл тот же и полностью автономный). Затем я запустил контейнер с
docker run -it -w /home/jenkins elektra-fedora-32:latest
а внутри контейнера выполнялись следующие строки:
git clone https://github.com/ElektraInitiative/libelektra
cd libelektra && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DKDB_DB_SPEC="$PWD/config/spec" -DKDB_DB_SYSTEM="$PWD/config/system" -DKDB_DB_USER="cdbg-1/.config" -DCMAKE_INSTALL_PREFIX="$PWD/install" -DINSTALL_SYSTEM_FILES=OFF -DENABLE_DEBUG=ON -DENABLE_LOGGER=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE -DPLUGINS="ALL;-lua;-ccode;-tcl" -DBINDINGS="ALL" -DCOMMON_FLAGS="-Werror"
make -j 24
bin/kdb export system toml
Результат последней команды был:
elektra.modules.cache = "cache plugin waits for your orders"
elektra.modules.cache.exports = ""
elektra.modules.cache.exports.close = "(binary)"
elektra.modules.cache.exports.get = "(binary)"
elektra.modules.cache.exports.open = "(binary)"
elektra.modules.cache.exports.set = "(binary)"
elektra.modules.cache.infos = "Information about the cache plugin is in keys below"
elektra.modules.cache.infos.author = "Mihael Pranjic <[email protected]>"
elektra.modules.cache.infos.licence = "BSD"
elektra.modules.cache.infos.metadata = ""
elektra.modules.cache.infos.needs = ""
elektra.modules.cache.infos.placements = "pregetcache postgetcache"
elektra.modules.cache.infos.provides = ""
elektra.modules.cache.infos.recommends = ""
elektra.modules.cache.infos.status = "maintained unittest shelltest specific global"
elektra.modules.cache.infos.version = 1
elektra.modules.dump = "dump plugin waits for your orders"
elektra.modules.dump.config.needs.fcrypt.textmode = 0
elektra.modules.dump.exports = ""
elektra.modules.dump.exports.get = "(binary)"
elektra.modules.dump.exports.serialise = "(binary)"
elektra.modules.dump.exports.set = "(binary)"
elektra.modules.dump.exports.unserialise = "(binary)"
elektra.modules.dump.infos = "Information about the dump plugin is in keys below"
elektra.modules.dump.infos.author = "Markus Raab <[email protected]>"
elektra.modules.dump.infos.licence = "BSD"
elektra.modules.dump.infos.metadata = ""
elektra.modules.dump.infos.needs = ""
elektra.modules.dump.infos.placements = "getstorage setstorage"
elektra.modules.dump.infos.provides = "storage/dump storage dump"
elektra.modules.dump.infos.recommends = ""
elektra.modules.dump.infos.status = "productive maintained conformant unittest tested nodep -1000 default"
elektra.modules.dump.infos.version = 1
elektra.modules.list = "list plugin waits for your orders"
elektra.modules.list.exports = ""
elektra.modules.list.exports.addPlugin = "(binary)"
elektra.modules.list.exports.close = "(binary)"
elektra.modules.list.exports.deferredCall = "(binary)"
elektra.modules.list.exports.editPlugin = "(binary)"
elektra.modules.list.exports.error = "(binary)"
elektra.modules.list.exports.findplugin = "(binary)"
elektra.modules.list.exports.get = "(binary)"
elektra.modules.list.exports.mountplugin = "(binary)"
elektra.modules.list.exports.open = "(binary)"
elektra.modules.list.exports.set = "(binary)"
elektra.modules.list.exports.unmountplugin = "(binary)"
elektra.modules.list.infos = "Information about the list plugin is in keys below"
elektra.modules.list.infos.author = "Thomas Waser <[email protected]>"
elektra.modules.list.infos.licence = "BSD"
elektra.modules.list.infos.needs = ""
elektra.modules.list.infos.placements = "pregetstorage procgetstorage postgetstorage postgetcleanup presetstorage presetcleanup precommit postcommit prerollback postrollback"
elektra.modules.list.infos.provides = ""
elektra.modules.list.infos.status = "unittest nodep libc configurable global"
elektra.modules.list.infos.version = 1
elektra.modules.resolver_fm_hpu_b = "resolver_fm_hpu_b plugin waits for your orders"
elektra.modules.resolver_fm_hpu_b.constants = ""
elektra.modules.resolver_fm_hpu_b.constants.ELEKTRA_VARIANT_BASE = "fm"
elektra.modules.resolver_fm_hpu_b.constants.ELEKTRA_VARIANT_SYSTEM = "b"
elektra.modules.resolver_fm_hpu_b.constants.ELEKTRA_VARIANT_USER = "hpu"
elektra.modules.resolver_fm_hpu_b.constants.KDB_DB_DIR = ".dir"
elektra.modules.resolver_fm_hpu_b.constants.KDB_DB_HOME = "/home"
elektra.modules.resolver_fm_hpu_b.constants.KDB_DB_SPEC = "/home/jenkins/libelektra/build/config/spec"
elektra.modules.resolver_fm_hpu_b.constants.KDB_DB_SYSTEM = "/home/jenkins/libelektra/build/config/system"
elektra.modules.resolver_fm_hpu_b.constants.KDB_DB_USER = "cdbg-1/.config"
elektra.modules.resolver_fm_hpu_b.exports = ""
elektra.modules.resolver_fm_hpu_b.exports.checkfile = "(binary)"
elektra.modules.resolver_fm_hpu_b.exports.close = "(binary)"
elektra.modules.resolver_fm_hpu_b.exports.commit = "(binary)"
elektra.modules.resolver_fm_hpu_b.exports.error = "(binary)"
elektra.modules.resolver_fm_hpu_b.exports.filename = "(binary)"
elektra.modules.resolver_fm_hpu_b.exports.freeHandle = "(binary)"
elektra.modules.resolver_fm_hpu_b.exports.get = "(binary)"
elektra.modules.resolver_fm_hpu_b.exports.open = "(binary)"
elektra.modules.resolver_fm_hpu_b.exports.set = "(binary)"
elektra.modules.resolver_fm_hpu_b.infos = "All information you want to know is in keys below"
elektra.modules.resolver_fm_hpu_b.infos.author = "Markus Raab <[email protected]>"
elektra.modules.resolver_fm_hpu_b.infos.licence = "BSD"
elektra.modules.resolver_fm_hpu_b.infos.needs = ""
elektra.modules.resolver_fm_hpu_b.infos.placements = "rollback getresolver setresolver commit"
elektra.modules.resolver_fm_hpu_b.infos.provides = "resolver"
elektra.modules.resolver_fm_hpu_b.infos.status = "productive maintained specific unittest tested libc nodep configurable default"
elektra.modules.resolver_fm_hpu_b.infos.version = 1
elektra.version = "Below are version information of the Elektra Library you are currently using"
elektra.version.constants = ""
elektra.version.constants.KDB_VERSION = "0.9.2"
elektra.version.constants.KDB_VERSION_MAJOR = 0
elektra.version.constants.KDB_VERSION_MINOR = 9
elektra.version.constants.KDB_VERSION_PATCH = 2
elektra.version.constants.SO_VERSION = 4
elektra.version.infos = "All information you want to know"
elektra.version.infos.author = "Markus Raab <[email protected]>"
elektra.version.infos.description = "Information of your Elektra Installation"
elektra.version.infos.licence = "BSD"
elektra.version.infos.version = 1
(ПРИМЕЧАНИЕ: я удалил ключи .description
из вывода, потому что они содержат строку ```
и, следовательно, нарушают форматирование Github Markdown)
ИМО, вывод должен быть пустым, поскольку все ключи получены из конкретной установки Elektra и никогда не должны быть импортированы в какой-либо KDB. Возможно, экспорт ключей version.constants
может иметь смысл, если kdb import
игнорирует их должным образом (другие ключи version
также не должны экспортироваться).
~ Проблемы Postcondition of backend was violated: drop key system:/elektra/modules/cache/infos/licence not belonging to "system:/elektra/modules/cache" with name "modules" but instead to "(null)" with name "(null)" because it is hidden by other mountpoint
возникают только в # 3447 и только для плагина cache
. Так что в # 3447 все еще есть ошибка. Однако исправление этой проблемы kdb export
также устранит проблему. ~
ИСПРАВЛЕНИЕ: проблемы постусловия действительно возникают и в контейнере докеров.
В контейнере сверху я запустил (сразу после всего остального):
ctest -R kdb_global_umount --output-on-failure
После этого любая команда kdb
которая пытается получить доступ к KDB, выдает множество предупреждений postcondition
, например kdb ls system
.
Кроме того, если я попытаюсь запустить kdb rm -r system
, я получу:
Interface: Read only plugin, 'kdbSet' not supported but the key system/elektra/version (value Below are version information of the Elektra Library you are currently using) tried to be removed
Это kdb rm -r system
терпит неудачу намеренно. Что вы ожидали?
Однако я должен признать, что сообщение об ошибке довольно плохое (даже грамматически и семантически: пользователь что-то пробовал, а не ключ).
Что вы ожидали?
Честно говоря, да, kdb rm -r system
не имеет особого смысла в реальной системе. При настройке разработки это может быть полезно (но удалить файлы вручную тоже несложно).
Однако я должен признать, что сообщение об ошибке довольно плохое.
Думаю, это меня больше всего смутило. Если бы в сообщении было что-то вроде «удаление ... не разрешено», я бы понял, что сделал что-то не так. Вдобавок AFAIK мы определили Interface Errors
как ошибку в коде, а не что-то вызванное пользователем.
Что касается плагина version
и плагинов только для чтения в целом: я думаю, должен быть способ игнорировать эти ошибки из плагинов только для чтения при вызове kdb rm
(возможно, kdb rm -rf
).
На определенном уровне «удаление» ключей только для чтения имеет смысл, по крайней мере, когда мы сразу удаляем все, что ниже точки монтирования только для чтения. kdb rm -r some/mountpoint
должен удалить весь базовый файл конфигурации для some/mountpoint
, то есть постусловие - отсутствие файла конфигурации. Поскольку плагины только для чтения (по крайней мере, те, которые работают как version
) не имеют файлов конфигурации, постусловие выполняется автоматически.
При настройке разработки это может быть полезно
Для разработки есть kdb reset
.
Если в сообщении говорилось что-то вроде «удаление ... не разрешено»
Я полностью согласен! А как насчет № 3498?
возможно kdb rm -rf
Я считаю, что -f
сбивает с толку, так как вы не можете заставить его, а только игнорировать его, поэтому --without-elektra
было бы имхо лучше?
следует удалить весь базовый файл конфигурации для
Да, это так, и решатель позаботится об этом.
постусловие выполняется автоматически.
Наджа, есть также постусловие, что после kdb rm key
kdb get key
возвращает ключ, который не найден. Это постусловие не будет выполнено.
Достаточно изменить сообщение об ошибке
Остались ли еще ошибки, описанные в этом выпуске?
AFAIK этот и следующий комментарий (т.е. исходная проблема) все еще не решены: https://github.com/ElektraInitiative/libelektra/issues/3299#issuecomment -695814469
Извините, кажется, я сначала неправильно понял эту проблему. Позвольте мне просто резюмировать, правильно ли я понимаю это сейчас.
С точки зрения кеша мы хотим как можно чаще повторно использовать файлы mmap. Таким образом, если кто-то вызывает kdbGet
для "system/this"
а точка монтирования на самом деле "system"
, мы полностью сохраним "system"
. Когда кто-то затем вызывает kdbGet
на "system/other"
, кеш уже присутствует, что значительно ускоряет работу. Мы в основном создаем файл кэша mmap для каждой точки монтирования, но мы храним ВСЕ ключи ниже точки монтирования.
Если я правильно понимаю проблему, ваша точка зрения заключается в том, что кеширование "system/elektra/modules"
и тому подобное - это оба:
РЕДАКТИРОВАТЬ: В настоящее время получение кеша полностью позволяет избежать ksAppend и других операций. Таким образом мы сохраняем OPMPHM и все остальное. Если мы запустим ksAppend-ing "system/elektra/modules"
для остальной точки монтирования системы, мы определенно потеряем некоторую производительность. Возможно, это не имеет отношения к системному пространству имен, но, безусловно, снизит производительность, если у нас будут такие крайние случаи повсюду.
Примечание: я пометил комментарии относительно материала kdb rm system
как разрешенные, поэтому они скрыты Github. Это должно прояснить этот вопрос.
Если я правильно понимаю проблему, ваша точка зрения заключается в том, что кеширование
"system/elektra/modules"
и тому подобное - это оба:
- ошибочный и
- не имеет значения, так как получение этих ключей в любом случае происходит быстро.
Просто кешировать их ошибочно, да, но мы все равно можем кэшировать их, если есть логика, позволяющая определить, что ключи изменились. Я не могу прокомментировать скорость, но использование кеша может быть быстрее. Как вы сказали, он избегает ksAppend
а также избегает множества обращений к плагинам.
Исходная проблема связана с поведением kdb export
. Его вывод никогда не должен содержать никаких ключей ниже system/elektra/modules
или system/elektra/version
, поскольку они относятся к установке Elektra и не должны быть импортированы в другой KDB.
Я не исследовал, откуда берутся эти ключи, поэтому не уверен, что здесь действительно задействован плагин cache
. Лучшим решением может быть просто всегда ksCut
этих частей в kdb export
. Таким образом, проблема не может возникнуть снова, если что-то изменится.
Также существует проблема «Постусловие серверной части было нарушено». На данный момент я понимаю, что эта проблема вызвана тем, что kdb export
создает ключи в system/elektra/modules
, но я уверен на 100%:
Если вы выполните действия, указанные в https://github.com/ElektraInitiative/libelektra/issues/3299#issuecomment -695814469, а затем запустите
ctest -R kdb_global_umount --output-on-failure
bin/kdb ls system
(как я сказал в следующем комментарии) вы получите много:
Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/licence not belonging to "system/elektra/modules/cache" with name "modules" but instead to "(null)" with name "(null)" because it is hidden by other mountpoint
На самом деле это единственная ссылка на плагин cache
. AFAICT вот что здесь происходит:
kdb export
и kdb import
.system/elektra/modules/cache
постоянно записываются в файл elektra.ecf
.kdbGet
через, например, kdb ls system
у нас возникает проблема.system/elektra/modules/...
никогда не должен записываться на диск.system/elektra/modules/...
из elektra.ecf
.Возможно, это нужно исправить в kdb import
не в кеше.
Большое спасибо за сообщение об этом!
Кэш определенно хранит эти (любые) ключи, если они присутствуют в возвращенном KeySet из kdbGet
. Для кеша нет исключений. Однако, как вы сказали, нет смысла разрешать эти ключи на kdb import
. Я посмотрю, смогу ли я воспроизвести это из вашего описания и исправить.
Если проблема возникает только при использовании kdb import
, я бы просто удалил эти специальные ключи при импорте.
Я согласен с @mpranj, что кеш должен полностью все возвращать.
Его вывод никогда не должен содержать никаких ключей ниже system / elektra / modules или system / elektra / version, поскольку они относятся к установке Elektra и не должны быть импортированы в другой KDB.
Экспорт предназначен не только для импорта, но и для отображения нескольких пар "ключ-значение" для пользователя. Нет ничего плохого в том, чтобы увидеть всю информацию о версии kdb export system/elektra/version/constants simpleini
.
Я не исследовал, откуда берутся эти ключи, поэтому я не уверен, что плагин кеширования здесь действительно задействован. Лучшим решением может быть просто всегда ksCut этих частей в экспорте kdb. Таким образом, проблема не может возникнуть снова, если что-то изменится.
Такое ksCut
происходит, когда вы говорите --without-elektra
. Что мы могли сделать, так это изменить значение по умолчанию: исключить elektra по умолчанию, кроме случаев явного импорта / экспорта / elektra или указания --with-elektra
.
Постусловие бэкенда было нарушено
Это похоже на несвязанную ошибку. (Возможно, shellrecorder не использует --without-elektra
). https://github.com/ElektraInitiative/libelektra/issues/3299#issuecomment -695814469, однако, похоже, так и должно быть. (Не могу воспроизвести, получаю Error response from daemon: pull access denied for elektra-fedora-32, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
)
Я не могу воспроизвести
Мы не публиковали этот образ в Docker Hub.
Предварительным условием здесь является то, что он построит образ докера из scripts/docker/fedora/32/Dockerfile
и пометит сборку с помощью -t elektra-fedora-32:latest
при запуске docker build
.
Что-то вроде:
cd scripts/docker/fedora/32/
docker build -t elektra-fedora-32:latest -f ./Dockerfile .
Спасибо, да, я могу воспроизвести проблемы Postcondition of backend was violated
сейчас на главном сервере (как описано
Sorry, 17 warnings were issued ;(
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/exports not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/exports/close not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/exports/get not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/exports/open not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/exports/set not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/author not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/description not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/licence not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/metadata not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/needs not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/placements not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/provides not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/recommends not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/status not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Sorry, module kdb issued the warning C01320:
Interface: Postcondition of backend was violated: drop key system/elektra/modules/cache/infos/version not belonging to "system/elektra/modules/cache" with name "modules" but instead to "" with name "default" because it is hidden by other mountpoint
Проблема явно не связана с kdb export
поскольку она также возникает, например, с kdb ls
или kdb cache clear
.
Интересно, что kdb cache clear
не помогает, но это все равно может быть проблема с кешем (поскольку инструменты kdb
сначала используют KDB
для получения своей конфигурации).
@mpranj у вас есть идея?
Что мы могли сделать, так это изменить значение по умолчанию: исключить elektra по умолчанию, кроме случаев явного импорта / экспорта / elektra или указания --with-elektra.
Да, это определенно было бы лучшим решением. В идеале мы также должны различать system/elektra/modules
/ system/elektra/version
и остальную часть system/elektra
. Конфигурация точки монтирования и глобальная конфигурация плагина намного более полезны, чем модули и ключи версий (которые генерируются во время выполнения).
Проблема явно не связана с
kdb export
поскольку она также возникает, например, сkdb ls
илиkdb cache clear
.
Как я уже говорил, материал «Постусловия», скорее всего, является ошибкой в kdb import
.
Интересно
kdb cache clear
не помогает
С чего бы это? Как я уже сказал, проблема в том, что ключи system/elektra/modules
хранятся в elektra.ecf
. Если вы выполнили мои шаги выше (специально использовали те же параметры cmake
), вы можете увидеть это, запустив
cat config/system/elektra.ecf
в каталоге build
.
Как я уже говорил, «Постусловие», скорее всего, является ошибкой при импорте kdb.
Поскольку kdb import
не делает ничего, кроме создания KeySet и вызова kdbSet
я боюсь, что проблема где-то в kdbSet
. Правильное поведение при сохранении чего-либо в system/elektra/modules
должно быть ошибкой или отбрасыванием и определенно не сохраняться. Но очевидно, что это не поведение:
kdb set system/elektra/modules/NOTALLOWED
kdb ls system/elektra/modules
#> system/elektra/modules/NOTALLOWED
#> system/elektra/modules/cache
...
Итак, когда устанавливается НЕ РАЗРЕШЕННЫЙ плагин, возникает проблема, описанная здесь. Итак, нам нужно kdbSet
чтобы все попытки записи в system/elektra/modules
завершились неудачно.
На самом деле нам нужно определить семантику всей иерархии /elektra
, что, вероятно, является более сложной задачей ...
проблема в том, что ключи system / elektra / modules хранятся в elektra.ecf
Извините, я не увидел этого, когда прыгал между комментариями, пытаясь воспроизвести это.
Самый полезный комментарий
AFAIK этот и следующий комментарий (т.е. исходная проблема) все еще не решены: https://github.com/ElektraInitiative/libelektra/issues/3299#issuecomment -695814469