directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DIRSERVER-2192) apcheds M23 - ERR_554 AND ERR_562
Date Fri, 19 May 2017 11:49:05 GMT

    [ https://issues.apache.org/jira/browse/DIRSERVER-2192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16017283#comment-16017283
] 

Emmanuel Lecharny commented on DIRSERVER-2192:
----------------------------------------------

Be sure that your configuration declares the partitions you are using, otherwise, you won't
see anything. Can you attach your rootDSE as LDIF ?

Otherwise :

1) Database corruption. This is a known JDBM issue that need to be fixed. Mavibot is supposed
to fix it, but it's not yet ready.
2) The repair command process the master table, and recreate all the index based on your configuration.
It may fail if the master table is itself corrupted...
3) Repair will not damage your database. Worse case scenario, it will not be able to recreate
the indexes, if the master table is itself corrupted
4) Sadly, you will have to wait for mavibot with transaction support :/

A bit of explanation about this database corruption now :

JDBM has transactions support, but limited to a single b-tree. When an update is done, it's
updating the master table, which contains the entries, and all the indexes. If two update
occur at the very same time, it's possible that one update modify one of the index while the
other update was modifying it. 
We have tried to add locks in order to limit the potential corruptions, but it's a complex
task.

The only viable solution is to have cross-b-tree transaction support, something that Mavibot
will bring. It's currently being developed - we already have a working version, but without
transaction support - but it takes a lot of time I currently don't have... (day job, new born
baby, etc). 

The current situation is that Mavibot has the 'add' operation implemented with cross-b-tree
transaction support (and it's damn fast), I have to finish the 'delete' operation (it's a
full week of work, if I can squeeze that in my agenda). The next step will be to implement
the browse operation within a transaction (wrosing works, but it as to be transactional too)
and a free page management.

I wish I can spend the few needed weeks to get it completed, because, seriously, this corruption
situation is a nightmare.

In the mean time, the only real workaround is doing a regular backup of your data...

> apcheds M23 - ERR_554 AND ERR_562
> ---------------------------------
>
>                 Key: DIRSERVER-2192
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-2192
>             Project: Directory ApacheDS
>          Issue Type: Bug
>            Reporter: sasha
>            Priority: Critical
>
> once a week im getting this errors , the only solution is to restart apacheds ,
> how can i fix it? 
> Unexpected exception forcing session to close: sending disconnect notice to client.
> java.lang.Error: ERR_554 double get for block 11,085
>         at jdbm.recman.RecordFile.get(RecordFile.java:185)
>         at jdbm.recman.PhysicalRowIdManager.allocNew(PhysicalRowIdManager.java:202)
>         at jdbm.recman.PhysicalRowIdManager.alloc(PhysicalRowIdManager.java:177)
>         at jdbm.recman.PhysicalRowIdManager.update(PhysicalRowIdManager.java:101)
>         at jdbm.recman.BaseRecordManager.update(BaseRecordManager.java:281)
>         at jdbm.recman.CacheRecordManager.updateCacheEntries(CacheRecordManager.java:417)
>         at jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:349)
>         at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmTable.sync(JdbmTable.java:976)
>         at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition.sync(JdbmPartition.java:577)
>         at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.add(AbstractBTreePartition.java:871)
>         at org.apache.directory.server.core.shared.partition.DefaultPartitionNexus.add(DefaultPartitionNexus.java:361)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor$1.add(BaseInterceptor.java:107)
> 		
> 		
> 		
> 		
> 		
> 		
> 		
> 		
> 		
> 		
> 		[03:28:29] WARN [org.apache.directory.server.ldap.LdapProtocolHandler] - Unexpected
exception forcing session to close: sending disconnect notice to client.
> java.lang.Error: ERR_562 Offset too large for record header (11,085:30,012)
>         at jdbm.recman.RecordHeader.<init>(RecordHeader.java:83)
>         at jdbm.recman.PhysicalRowIdManager.allocNew(PhysicalRowIdManager.java:224)
>         at jdbm.recman.PhysicalRowIdManager.alloc(PhysicalRowIdManager.java:177)
>         at jdbm.recman.PhysicalRowIdManager.update(PhysicalRowIdManager.java:101)
>         at jdbm.recman.BaseRecordManager.update(BaseRecordManager.java:281)
>         at jdbm.recman.CacheRecordManager.updateCacheEntries(CacheRecordManager.java:417)
>         at jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:349)
>         at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmTable.sync(JdbmTable.java:976)
>         at org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition.sync(JdbmPartition.java:577)
>         at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.add(AbstractBTreePartition.java:871)
>         at org.apache.directory.server.core.shared.partition.DefaultPartitionNexus.add(DefaultPartitionNexus.java:361)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor$1.add(BaseInterceptor.java:107)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:341)
>         at org.apache.directory.server.core.journal.JournalInterceptor.add(JournalInterceptor.java:139)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message