From 7f4684abff824e576a4851cbcaf0fa701b300260 Mon Sep 17 00:00:00 2001 From: Leo Yuriev Date: Wed, 31 May 2017 16:44:43 +0300 Subject: [PATCH] mdbx: update TODO. --- TODO.md | 85 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 69 insertions(+), 16 deletions(-) diff --git a/TODO.md b/TODO.md index 92dd691c..e977a898 100644 --- a/TODO.md +++ b/TODO.md @@ -1,18 +1,71 @@ +Допеределки - [x] разделение errno и GetLastError() - [x] CI посредством AppVeyor -- [ ] uint32/uint64 в структурах -- [ ] правки API (много...) -- [ ] инкрементальный mmap -- [ ] возврат выделенных страниц в unallocated tail -- [ ] устранение всех предупреждений -- [ ] перевод mdbx-tools на С++ и сборка для Windows -- [ ] тест конкурентного доступа -- [ ] тест основного функционала (заменить текущий треш) -- [ ] базовый бенчмарк -- [ ] переработка формата: заголовки страниц, meta, clk... -- [ ] зачистка Doxygen и бесполезных коментариев -- [ ] сборка через CMake -- [ ] актуализация README.md -- [ ] возможность хранения ключей внутри data (libfptu) -- [ ] асинхронная фиксация (https://github.com/ReOpen/libmdbx/issues/5) -- [ ] (пере)выделять память под IDL-списки с учетом реального кол-ва страниц, т.е. max(MDB_IDL_UM_MAX/MDB_IDL_UM_MAX, npages) +- [x] тест конкурентного доступа. +- [x] тест основного функционала (заменить текущий треш). +- [x] uint32/uint64 в структурах +- [x] Завершить переименование +- [x] Макросы версионности, сделать как в fpta (cmake?) +- [x] Попробовать убрать yield (или что там с местом?) +- [x] trinity для copy/compaction +- [x] trinity для mdbx_chk и mdbx_stat +- [x] проверки с mdbx_meta_eq +- [x] Не проверять режим при открытии в readonly +- [x] Поправить выбор tail в mdbx_chk +- [x] Там-же проверять позицию реклайминга +- [x] поправить проблему открытия после READ-ONLY. +- [x] static-assertы на размер/выравнивание lck, meta и т.п. +- [x] Зачистить size_t +- [x] Добавить локи вокруг dbi +- [x] Привести в порядок volatile +- [x] контроль meta.mapsize +- [x] переработка формата: заголовки страниц, meta, clk... +- [x] зачистка Doxygen и бесполезных коментариев. +- [x] Добавить поле типа контрольной суммы. +- [x] Добавить поле/флаг размера pgno_t. +- [x] Поменять сигнатуры. +- [ ] Добавить мета-страницы в coredump, проверить lck +- [ ] Сделать список для txnid_t, кода sizeof(txnid_t) > sizeof(pgno_t) и вернуть размер pgno_t +- [ ] Избавиться от умножения на размер страницы (заменить на сдвиг). +- [ ] Устранение всех предупреждений (в том числе под Windows). +- [ ] Перевод mdbx-tools на С++ и сборка для Windows +- [ ] Заменить заглушки mdbx_version и mdbx_build +- [ ] Актуализация README.md + +CI +- [ ] Прикрутить проверку coverity +- [ ] Добавить в CI linux сборки для 32-битных таргетов + +Доработки API +- [ ] Добавить возможность "подбора" режима для mdbx_env_open() +- [ ] Дать возможность задавать размер страницы при создании БД. +- [ ] Изменение mapsize через API с блокировкой и увеличением txn, плюс поправить доку. +- [ ] Контроль размера страницы полного размера и кол-ва страниц при создании и обновлении. +- [ ] Инкрементальный mmap. +- [ ] Возврат выделенных страниц в unallocated tail-pool. +- [ ] Инкрементальное приращение размера (колбэк стратегии?). +- [ ] Переименовать в API: env->db, db->tbl + +Тест +- [ ] Реализовать cleanup в тесте +- [ ] usage для теста +- [ ] Логирование в файл, плюс более полный progress bar +- [ ] Опция игнорирования (пропуска части теста) при переполнении БД +- [ ] Додумать имя и размещение тестовой БД по-умолчанию. +- [ ] Базовый бенчмарк + +Отладка +- [ ] Убрать MDB_DEBUG (всегда: логирование важный ситуаций и ошибок, опционально: включение ассертов и трассировка) +- [ ] Заменить mdbx_debug на mdbx_trace, и почистить... +- [ ] Заметить максимум assert() на mdbx_assert(env, ...) + +Развитие +- [ ] Валидатор страниц БД по номеру транзакции: + ~0 при переработке и номер транзакции при выделении, + проверять что этот номер больше головы реклайминга и не-больше текущей транзакции. +- [ ] Добавить free_backlog в meta +- [ ] Валидатор страниц по CRC32, плюс контроль номер транзакии под модулю 2^32. +- [ ] Валидатор страниц по t1ha c контролем снимков/версий БД на основе Merkle Tree. +- [ ] Возможность хранения ключей внутри data (libfptu) +- [ ] Асинхронная фиксация (https://github.com/ReOpen/libmdbx/issues/5) +- [ ] (Пере)Выделять память под IDL-списки с учетом реального кол-ва страниц, т.е. max(MDB_IDL_UM_MAX/MDB_IDL_UM_MAX, npages)