Таким образом, мы используем Berkeley DB, а наш API использует BDB C ++ API. Недавно мы добавили несколько новых индексов в нашу базу данных. После добавления новых индексов нам нужно было перенести все старые данные, чтобы добавить новые индексы в старые записи, и с тех пор всякий раз, когда мы запускаем процесс записи в базу данных, мы получаем следующие предупреждения:
BDB2058 Предупреждение: игнорирование DB_SET_LOCK_TIMEOUT при присоединении к среде.
BDB2059 Предупреждение: игнорирование DB_SET_TXN_TIMEOUT при присоединении к среде.
Если я правильно понимаю их, мы теперь рискуем зайти в тупик, поскольку он «игнорирует» установленные нами тайм-ауты. Я также вижу зависание процесса при попытке произвольно записать в базу данных. Единственный способ обойти это — перезапустить процесс прямо сейчас. Мой вопрос заключается в том, знает ли кто-нибудь, что может вызвать эти предупреждения, или как я мог бы отладить создание экземпляра Environment, чтобы выяснить это? Любая помощь или предложения будут оценены.
Тайм-ауты, вероятно, являются постоянным глобальным атрибутом среды dbenv, а не атрибутом каждого экземпляра использования dbenv.
Вы можете попробовать запустить db_recover в базе данных, чтобы удалить файлы __db.NNN.
В противном случае у вас может быть несколько процессов, совместно использующих dbenv, и предупреждение указывает, что более поздние процессы пытаются изменить уже установленные атрибуты.