所以我们使用Berkeley DB,我们的API使用BDB C ++ API。我们最近在数据库中添加了一些新索引。添加新索引后,我们需要迁移所有旧数据以在旧记录上添加新索引,从那时起,每当我们启动写入数据库的进程时,我们都会收到以下警告:
BDB2058警告:加入环境时忽略DB_SET_LOCK_TIMEOUT。 BDB2059警告:加入环境时忽略DB_SET_TXN_TIMEOUT。
如果我正确地理解了这些,我们现在就会冒着陷入僵局的风险,因为它“忽视”我们设定的超时时间。在尝试随机编写数据库时,我也看到了这个过程。解决它的唯一方法是立即重新启动该过程。我的问题是,如果有人知道会导致这些警告的原因,或者我如何调试环境实例来查找?任何帮助或建议将不胜感激。
答案 0 :(得分:0)
超时可能是dbenv环境的持久全局属性,而不是dbenv的每个用法实例的属性。
您可以尝试在数据库上运行db_recover以删除__db.NNN文件。
否则,您可能有多个进程共享dbenv,并且警告表明后续进程正在尝试更改已设置的属性。