Hi!

 

Trying to convert my syncrepl configuration to a delta syncrepl configuration, the slave runs out of accesslog space during initial sync.

For the main database about 30MB should be enough, but I configured 50MB, also for the accesslog files.

It seems sync continues even if accesslog periodically complains like this:

 

slapd[13951]: => mdb_idl_insert_keys: c_put id failed: MDB_MAP_FULL: Environment mapsize limit reached (-30792)

slapd[13951]: conn=-1 op=0 accesslog_response: got result 0x50 adding log entry reqStart=20250314110032.000187Z,cn=changelog-1

 

From stat I guess that accesslog needs at least three times as much space as the main database does:

# stat /var/lib/ldap/data.mdb /var/lib/ldap/changelog-1/data.mdb

  File: /var/lib/ldap/data.mdb

  Size: 22888448        Blocks: 44704      IO Block: 4096   regular file

Device: 33h/51d Inode: 259467      Links: 1

Access: (0600/-rw-------)  Uid: (   76/    ldap)   Gid: (   70/    ldap)

Access: 2025-03-14 11:57:46.303713632 +0100

Modify: 2025-03-14 12:01:08.417328586 +0100

Change: 2025-03-14 12:01:08.417328586 +0100

Birth: 2025-03-14 11:57:46.303713632 +0100

  File: /var/lib/ldap/changelog-1/data.mdb

  Size: 52424704        Blocks: 102392     IO Block: 4096   regular file

Device: 33h/51d Inode: 259471      Links: 1

Access: (0600/-rw-------)  Uid: (   76/    ldap)   Gid: (   70/    ldap)

Access: 2025-03-14 11:57:46.323713395 +0100

Modify: 2025-03-14 12:01:08.425328492 +0100

Change: 2025-03-14 12:01:08.425328492 +0100

Birth: 2025-03-14 11:57:46.323713395 +0100

 

Shouldn’t (assuming the sync happens entry-by-entry) the accesslog have about the same size as the main database after initial sync (when  all databases were empty)?

When setting the size of the accesslog database to twice the size of the database it succeeded which stats like this:

 

# stat /var/lib/ldap/data.mdb /var/lib/ldap/changelog-1/data.mdb

  File: /var/lib/ldap/data.mdb

  Size: 22888448        Blocks: 44704      IO Block: 4096   regular file

Device: 33h/51d Inode: 259514      Links: 1

Access: (0600/-rw-------)  Uid: (   76/    ldap)   Gid: (   70/    ldap)

Access: 2025-03-14 12:39:01.278545521 +0100

Modify: 2025-03-14 12:45:03.558274733 +0100

Change: 2025-03-14 12:45:03.558274733 +0100

Birth: 2025-03-14 12:39:01.278545521 +0100

  File: /var/lib/ldap/changelog-1/data.mdb

  Size: 89657344        Blocks: 175112     IO Block: 4096   regular file

Device: 33h/51d Inode: 259518      Links: 1

Access: (0600/-rw-------)  Uid: (   76/    ldap)   Gid: (   70/    ldap)

Access: 2025-03-14 12:39:01.298545286 +0100

Modify: 2025-03-14 12:45:03.566274639 +0100

Change: 2025-03-14 12:45:03.566274639 +0100

Birth: 2025-03-14 12:39:01.298545286 +0100

 

So the blocks in the accesslog are roughly four times (3.91 ) as much as in the original database.

Is there any doc making statements about the proportion?

(I’m a fan of “small is beautiful” instead of “bigger is better”)

 

Kind regards,

Ulrich Windl