Le 5/8/12 4:40 PM, Emmanuel Lécharny a écrit :
Le 5/8/12 8:05 AM, Selcuk AYA a écrit :
Hi,

On Sun, May 6, 2012 at 7:26 AM, Emmanuel Lécharny<[email protected]> wrote:
Le 5/6/12 12:07 PM, Emmanuel Lécharny a écrit :

Ok, I think I have found the cursor that was not closed.
Still having the same failure :/ All the cursors are correctly closed. If I disable the logs (that I use to check the pairing between open and close), I
get a failure, and if I activate the log, then I get no failure.

I will try to run all the server-integ tests with NOT_THEADSAFE to see if it
works better.
I was trying to build the trunk and see if I can chase the issue we
see with the caches.
FYI, I'm trying to narrow the pb to the tests that make the server to freeze, by removing tests from the server-integ suite. It will take a bt of time, but as soon as I will have reduced the set of test to the minimum, I'll let you know.

Ok, I was able to reproduce the pb with just two tests in the suite :

package org.apache.directory.server.suites;


import org.apache.directory.server.annotations.CreateLdapServer;
import org.apache.directory.server.annotations.CreateTransport;
import org.apache.directory.server.core.annotations.ContextEntry;
import org.apache.directory.server.core.annotations.CreateDS;
import org.apache.directory.server.core.annotations.CreateIndex;
import org.apache.directory.server.core.annotations.CreatePartition;
import org.apache.directory.server.core.integ.FrameworkSuite;
import org.apache.directory.server.operations.search.PagedSearchIT;
import org.apache.directory.server.operations.search.SearchIT;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;


/**
 * Stock (default configuration) server integration test suite.
 *
* @author <a href="mailto:[email protected]";>Apache Directory Project</a>
 */
@RunWith(FrameworkSuite.class)
@Suite.SuiteClasses(
    {
        // operations.search
        PagedSearchIT.class,
        SearchIT.class,
})
@CreateDS(
name = "SuiteDS",
partitions =
    {
        @CreatePartition(
            name = "example",
            suffix = "dc=example,dc=com",
            contextEntry = @ContextEntry(
                entryLdif =
                "dn: dc=example,dc=com\n" +
                    "dc: example\n" +
                    "objectClass: top\n" +
                    "objectClass: domain\n\n"),
            indexes =
                {
                    @CreateIndex(attribute = "objectClass"),
                    @CreateIndex(attribute = "dc"),
                    @CreateIndex(attribute = "ou")
            })
})
@CreateLdapServer(
transports =
    {
        @CreateTransport(protocol = "LDAP"),
        @CreateTransport(protocol = "LDAPS")
})
public class StockServerISuite
{
}

It seems like the PersistentSearch is keeping a cursor in the server until the search is abandonned or the user unbinds. That might well be an issue.

Now, what if we have some user starting a pagedSearch, which can last for a very long period of time ? How would it impact the txn layer and the cache ?

--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to