lmdb: "Nested transactions: Max 1 child, write txns only"
От: Zoringo  
Дата: 14.07.18 15:21
Оценка:
Столкнулись тут с однйо проблемой: судя по комментарию в исходниках lmdb есть ограничение на вложенную транзакцию:

int
mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret)
{
    MDB_txn *txn;
    MDB_ntxn *ntxn;
    int rc, size, tsize;

    flags &= MDB_TXN_BEGIN_FLAGS;
    flags |= env->me_flags & MDB_WRITEMAP;

    if (env->me_flags & MDB_RDONLY & ~flags) /* write txn in RDONLY env */
        return EACCES;

    if (parent) {
        /* Nested transactions: Max 1 child, write txns only, no writemap */
        flags |= parent->mt_flags;
        if (flags & (MDB_RDONLY|MDB_WRITEMAP|MDB_TXN_BLOCKED)) {
            return (parent->mt_flags & MDB_TXN_RDONLY) ? EINVAL : MDB_BAD_TXN;
        }


В документации не нашел внятного объяснения про эти ошграничения, может кто-то сталкивался и знает как с этим жить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.