Libelektra: mmap: изменяющаяся среда

Созданный на 6 апр. 2019  ·  4Комментарии  ·  Источник: ElektraInitiative/libelektra

Как продолжение # 1433, я предполагаю, что плагин mmap также затронут. Например, предположим, что $ HOME изменился, и новый файл конфигурации также старше, чем файл кэша mmap. Затем будет взят кеш-файл, хотя он на самом деле устарел.

Я не думаю, что мы сможем легко это исправить, но было бы хорошо, если бы вы описали наши требования, чтобы таких проблем не возникало.

question

Все 4 Комментарий

Вы правы, сейчас кеш проверяет только ENV в плагинах kdbOpen. Его можно легко проверить динамически, но при этом запускается распознаватель, и я подозреваю, что это оказывает некоторое влияние на производительность.

Изменить: на стороне примечания: конфигурация проверяется на предмет точной метки времени (наносекундная гранулярность), но проблема все еще существует и верна и для резолвера по умолчанию .

Обходной путь именно для этой ошибки состоит в том, что мы также сохраняем разрешенные имена файлов в кэше mmap. Но в целом это не поможет, нам нужно каким-то образом захватить все переменные, которые могут иметь влияние (или избегать использования каких-либо переменных среды внутри наших плагинов, что в любом случае может быть более элегантным решением).

Я не думал об этом сценарии, но на самом деле мы храним разрешенное имя файла в кеше mmap. Если путь изменится, это приведет к промаху кеша.

Тем не менее, если $ HOME изменяется при открытом дескрипторе KDB, он не перемещает кеш в новый дом.

Я не думал об этом сценарии, но на самом деле мы храним разрешенное имя файла в кеше mmap. Если путь изменится, это приведет к промаху кеша.

Идеально! В любом случае это самый важный случай. Afaik, в настоящее время у нас нет переменных окружения, кроме преобразователей. (Однако не все переменные среды действительно влияют на имя файла. Например, curlresolver использует HTTP_PROXY.)

Тем не менее, если $ HOME изменяется при открытом дескрипторе KDB, он не перемещает кеш в новый дом.

Хорошо, но это старая ошибка (№ 1433). Поэтому я закрою эту ошибку, поскольку mmap, похоже, не ухудшает ситуацию.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги