Bug #78808 [Com]: [LMDB] MDB_MAP_FULL: Environment mapsize limit reached

From: Date: Wed, 13 Nov 2019 19:13:29 +0000
Subject: Bug #78808 [Com]: [LMDB] MDB_MAP_FULL: Environment mapsize limit reached
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-223700@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78808&edit=1 ID: 78808 Comment by: henry dot paradiz at gmail dot com Reported by: progr-d at yandex dot ru Summary: [LMDB] MDB_MAP_FULL: Environment mapsize limit reached Status: Open Type: Bug Package: DBM/DBA related Operating System: macOS 10.13.6 PHP Version: 7.3.11 Block user comment: N Private report: N New Comment: I apologize. I came off pretty offensive but did not mean anything by it. Thanks for bringing this to the communities attention. Previous Comments: ------------------------------------------------------------------------ [2019-11-13 19:07:20] progr-d at yandex dot ru I haven’t written anywhere that I need to do this right now and forget about other problems. I just talked about what I met myself and shared solution methods. If you have such a toxic community here that because of every bug you will write such offensive words - I probably will not send anything else. ------------------------------------------------------------------------ [2019-11-13 18:49:09] henry dot paradiz at gmail dot com This thing only needs a simple patch. There are more pressing concerns to be twiddling our thumbs over. Plus progr-d@yandex.ru is known for spam posting. ------------------------------------------------------------------------ [2019-11-13 17:38:42] progr-d at yandex dot ru I can send a patch that will add mdb_env_set_mapsize() at the specified location, but with a fixed size (e.g. 1GB). But as far as I understand it is much more correct to give users the opportunity to change this behavior themselves (through the fourth argument). And for this, you already need to write tests (in which I am not strong for PHP tests). For macOS homebrew users I made hotfix (hacker-way style), which increases the size of the database in the library itself (by the way, there is an error - it really is 1MB in size, and the documentation says 10MB): https://gist.github.com/saippuakauppias/95b6f7b139b3d117b7dac4aeead9f5b4 ------------------------------------------------------------------------ [2019-11-13 13:34:50] cmb@php.net > contains the fourth argument, but nowhere is there a description > of how to use it Arguments following the $handler are converted to string and are passed to the individual DBA drivers, and are driver dependent. This is indeed not yet documented; let alone which drivers support which parameters. > It turns out that this needs to be done here: Yes. info->argc and info->argv provide the driver specific arguments which have been passed to dba_open(). ------------------------------------------------------------------------ [2019-11-13 11:46:03] progr-d at yandex dot ru Yes, I found a description about this: > The size should be a multiple of the OS page size. The default is 10485760 bytes. The size of > the memory map is also the maximum size of the database. The value should be chosen as large as > possible, to accommodate future growth of the database. This function should be called after > mdb_env_create() and before mdb_env_open(). It may be called at later times if no transactions are > active in this process. Note that the library does not check for this condition, the caller must > ensure it explicitly. (from http://www.lmdb.tech/doc/group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5 ) It turns out that this needs to be done here: https://github.com/php/php-src/blob/PHP-7.2.0/ext/dba/dba_lmdb.c#L61 --------------- Strange thing: 10485760 bytes is 10MB, but my Test script create file only with 1MB size (you can check it). --------------- > there likely should be some dba_open() argument dba_open ( string $path , string $mode [, string $handler [, mixed $... ]] ) contains the fourth argument, but nowhere is there a description of how to use it: https://www.php.net/manual/en/function.dba-open.php ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=78808 -- Edit this bug report at https://bugs.php.net/bug.php?id=78808&edit=1

« previous php.bugs (#223700) next »