Hi,

We've successfully setup replication (m16 snapshot) and it's working great on 
our test instances with ~10K entries.
With  ~85K entries, we cannot get a consumer (slave) instance initially loaded 
without running out of memory.
We're on 32 bit so the most we can set the JVM memory to is ~ 1.34 GB

2 questions:
Is it possible to batch the replication changes 5000 at a time to give the jvm 
time to catch up?
We boot up an empty instance and it starts replicating the 85k entries. It runs 
out of memory before it's done.
We're not sure what the state of the database is once this occurs.
Again, when there are only 10k, it completes no problem. We tried setting 
ads-replSearchSizeLimit to 5k but this doesn't seem to make any difference.

Also,  Is it possible to configure a consumer to begin replicating from a 
certain time?  For example, if I wanted the consumer to
Pull everything in from 2 pm yesterday? We want to replay changes from a 
certain point to the slaves.


Thanks,

Here's how our consumers are configured.

dn: 
ads-replConsumerId=cpro,ou=replConsumers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config
objectClass: top
objectClass: ads-base
objectClass: ads-replConsumer
ads-replSearchSizeLimit: 5000
ads-replAttributes: *
ads-replConsumerId: cpro
ads-replRefreshInterval: 60000
ads-replUserPassword: secret
ads-replStrictCertValidation: FALSE
ads-replUserDn: uid=admin,ou=system
ads-replUseTls: FALSE
ads-replProvPort: 10389
ads-replProvHostName: localhost
ads-replRefreshNPersist: TRUE
ads-replSearchScope: sub
ads-replSearchTimeOut: 0
ads-searchBaseDN: o=cpro
ads-replSearchFilter: (objectClass=*)
ads-enabled: TRUE
ads-replAliasDerefMode: never

Java OOM
jvm 1    | Exception in thread "Thread-4"
jvm 1    | java.lang.OutOfMemoryError: Java heap space
jvm 1    |      at java.lang.Class.getDeclaredMethods0(Native Method)
jvm 1    |      at java.lang.Class.privateGetDeclaredMethods(Class.java:2436)
jvm 1    |      at java.lang.Class.getDeclaredMethod(Class.java:1937)
jvm 1    |      at 
java.io.ObjectStreamClass.getInheritableMethod(ObjectStreamClass.java:1344)
jvm 1    |      at 
java.io.ObjectStreamClass.access$2200(ObjectStreamClass.java:50)
jvm 1    |      at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:446)
jvm 1    |      at java.security.AccessController.doPrivileged(Native Method)
jvm 1    |      at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:411)
jvm 1    |      at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:308)
jvm 1    |      at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:407)
jvm 1    |      at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:308)
jvm 1    |      at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:407)
jvm 1    |      at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:308)
jvm 1    |      at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:407)
jvm 1    |      at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:308)
jvm 1    |      at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1114)
jvm 1    |      at 
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
jvm 1    |      at jdbm.btree.BTree.writeExternal(BTree.java:580)
jvm 1    |      at 
java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1429)
jvm 1    |      at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1398)
jvm 1    |      at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
jvm 1    |      at 
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
jvm 1    |      at jdbm.helper.Serialization.serialize(Serialization.java:74)
jvm 1    |      at 
jdbm.helper.DefaultSerializer.serialize(DefaultSerializer.java:81)
jvm 1    |      at 
jdbm.recman.BaseRecordManager.update(BaseRecordManager.java:274)
jvm 1    |      at 
jdbm.recman.CacheRecordManager.updateCacheEntries(CacheRecordManager.java:417)
jvm 1    |      at 
jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:349)
jvm 1    |      at 
org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmTable.sync(JdbmTable.java:977)
jvm 1    |      at 
org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmTable.commit(JdbmTable.java:1183)
jvm 1    |      at 
org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmTable.remove(JdbmTable.java:829)
jvm 1    |      at 
org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex.drop(JdbmIndex.java:435)
jvm 1    |      at 
org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex.drop(JdbmIndex.java:1)
jvm 1    | Server daemon died!
jvm 1    | Exception in thread "pool-4-thread-1"
jvm 1    | java.lang.OutOfMemoryError: Java heap space
jvm 1    |      at java.util.HashMap.newKeyIterator(HashMap.java:840)
jvm 1    |      at java.util.HashMap$KeySet.iterator(HashMap.java:874)
jvm 1    |      at java.util.HashSet.iterator(HashSet.java:153)
jvm 1    |      at 
java.util.Collections$UnmodifiableCollection$1.<init>(Collections.java:1005)
jvm 1    |      at 
java.util.Collections$UnmodifiableCollection.iterator(Collections.java:1004)
jvm 1    |      at 
org.apache.mina.transport.socket.nio.NioProcessor$IoSessionIterator.<init>(NioProcessor.java:321)
jvm 1    |      at 
org.apache.mina.transport.socket.nio.NioProcessor$IoSessionIterator.<init>(NioProcessor.java:311)
jvm 1    |      at 
org.apache.mina.transport.socket.nio.NioProcessor.allSessions(NioProcessor.java:93)
jvm 1    |      at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.notifyIdleSessions(AbstractPollingIoProcessor.java:760)
jvm 1    |      at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$900(AbstractPollingIoProcessor.java:67)
jvm 1    |      at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1135)
jvm 1    |      at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
jvm 1    |      at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
jvm 1    |      at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
jvm 1    |      at java.lang.Thread.run(Thread.java:662)
jvm 1    | java.lang.OutOfMemoryError: Java heap space
jvm 1    |      at java.lang.String.toCharArray(String.java:2725)
jvm 1    |      at 
sun.nio.cs.SingleByteDecoder.<init>(SingleByteDecoder.java:27)
jvm 1    |      at sun.nio.cs.MS1252$Decoder.<init>(MS1252.java:72)
jvm 1    |      at sun.nio.cs.MS1252.newDecoder(MS1252.java:39)
jvm 1    |      at 
java.lang.StringCoding$StringDecoder.<init>(StringCoding.java:116)
jvm 1    |      at 
java.lang.StringCoding$StringDecoder.<init>(StringCoding.java:108)
jvm 1    |      at java.lang.StringCoding.decode(StringCoding.java:167)
jvm 1    |      at java.lang.StringCoding.decode(StringCoding.java:185)
jvm 1    |      at java.lang.String.<init>(String.java:570)
jvm 1    |      at 
org.tanukisoftware.wrapper.WrapperManager.handleSocket(WrapperManager.java:3759)
jvm 1    |      at 
org.tanukisoftware.wrapper.WrapperManager.run(WrapperManager.java:4084)
jvm 1    |      at java.lang.Thread.run(Thread.java:662)
jvm 1    | [15:47:16] WARN 
[org.apache.directory.ldap.client.api.LdapNetworkConnection] - Java heap space
jvm 1    | java.lang.OutOfMemoryError: Java heap space
wrapper  | JVM appears hung: Timed out waiting for signal from JVM.
wrapper  | JVM did not exit on request, terminated
wrapper  | Launching a JVM...
jvm 2    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 2    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 2    |
jvm 2    | [15:54:56] ERROR [org.apache.directory.server.core.authz.GroupCache]
- Exception while initializing the groupCache:  {}
jvm 2    | 
org.apache.directory.api.ldap.model.exception.LdapOperationErrorException
jvm 2    |      at 
org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.fetch(AbstractBTreePartition.java:1120)
jvm 2    |      at 
org.apache.directory.server.xdbm.search.evaluator.EqualityEvaluator.evaluate(EqualityEvaluator.java:97)
jvm 2    |      at 
org.apache.directory.server.xdbm.search.evaluator.AndEvaluator.evaluate(AndEvaluator.java:110)
jvm 2    |      at 
org.apache.directory.server.core.partition.impl.btree.EntryCursorAdaptor.get(EntryCursorAdaptor.java:167)
jvm 2    |      at 
org.apache.directory.server.core.partition.impl.btree.EntryCursorAdaptor.get(EntryCursorAdaptor.java:1)
jvm 2    |      at 
org.apache.directory.server.core.api.filtering.BaseEntryFilteringCursor.next(BaseEntryFilteringCursor.java:377)
jvm 2    |      at 
org.apache.directory.server.core.authz.GroupCache.initialize(GroupCache.java:164)
jvm 2    |      at 
org.apache.directory.server.core.authz.GroupCache.<init>(GroupCache.java:122)
jvm 2    |      at 
org.apache.directory.server.core.authz.AciAuthorizationInterceptor.init(AciAuthorizationInterceptor.java:286)
jvm 2    |      at 
org.apache.directory.server.core.DefaultDirectoryService.initInterceptors(DefaultDirectoryService.java:688)
jvm 2    |      at 
org.apache.directory.server.core.DefaultDirectoryService.initialize(DefaultDirectoryService.java:1836)
jvm 2    |      at 
org.apache.directory.server.core.DefaultDirectoryService.startup(DefaultDirectoryService.java:1247)
jvm 2    |      at 
org.apache.directory.server.ApacheDsService.initDirectoryService(ApacheDsService.java:323)
jvm 2    |      at 
org.apache.directory.server.ApacheDsService.start(ApacheDsService.java:182)
jvm 2    |      at 
org.apache.directory.server.wrapper.ApacheDsTanukiWrapper.start(ApacheDsTanukiWrapper.java:72)
jvm 2    |      at 
org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManager.java:2788)
jvm 2    | Caused by: 
org.apache.directory.api.ldap.model.exception.LdapOperationErrorException
jvm 2    |      at 
org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.fetch(AbstractBTreePartition.java:1196)
jvm 2    |      at 
org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.fetch(AbstractBTreePartition.java:1116)
jvm 2    |      ... 15 more

Reply via email to