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

Andrei Dulceanu commented on OAK-4735:
--------------------------------------

Per [~frm]'s latest discovery 
{{DataStoreTestBase.testProxyFlippedIntermediateByteChange2}} invoked from 
{{ExternalPrivateStoreIT}} seems to be stuck forever in the client waiting for 
the connection to close:

{code:java}
"main" #1 prio=5 os_prio=31 tid=0x00007fb913806800 nid=0x1703 in Object.wait() 
[0x0000700000218000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at io.netty.util.concurrent.DefaultPromise.await(DefaultPromise.java:239)
    - locked <0x00000007b822e468> (a 
io.netty.channel.AbstractChannel$CloseFuture)
    at 
io.netty.channel.DefaultChannelPromise.await(DefaultChannelPromise.java:129)
    at 
io.netty.channel.DefaultChannelPromise.await(DefaultChannelPromise.java:28)
    at io.netty.util.concurrent.DefaultPromise.sync(DefaultPromise.java:340)
    at 
io.netty.channel.DefaultChannelPromise.sync(DefaultChannelPromise.java:117)
    at 
io.netty.channel.DefaultChannelPromise.sync(DefaultChannelPromise.java:28)
    at 
org.apache.jackrabbit.oak.segment.standby.client.StandbyClient.run(StandbyClient.java:179)
    at 
org.apache.jackrabbit.oak.segment.standby.DataStoreTestBase.useProxy(DataStoreTestBase.java:205)
    at 
org.apache.jackrabbit.oak.segment.standby.DataStoreTestBase.testProxyFlippedIntermediateByteChange2(DataStoreTestBase.java:171)
{code}

the monitor is acquired by these lines in {{StandbyClient}}:

{code:java}
try {
            long startTimestamp = System.currentTimeMillis();
            // Start the client.
            ChannelFuture f = b.connect(host, port).sync();
            // Wait until the connection is closed.
            f.channel().closeFuture().sync();
            this.failedRequests = 0;
            this.syncStartTimestamp = startTimestamp;
            this.syncEndTimestamp = System.currentTimeMillis();
            this.lastSuccessfulRequest = syncEndTimestamp / 1000;
        } catch (Exception e) {
            this.failedRequests++;
            log.error("Failed synchronizing state.", e);
        } finally {
            synchronized (this.sync) {
                this.active = false;
                shutdownNetty();
            }
        }
{code}

/cc [~marett]

> Fix unit tests in DataStoreTestBase
> -----------------------------------
>
>                 Key: OAK-4735
>                 URL: https://issues.apache.org/jira/browse/OAK-4735
>             Project: Jackrabbit Oak
>          Issue Type: Technical task
>          Components: segment-tar
>            Reporter: Andrei Dulceanu
>            Assignee: Andrei Dulceanu
>             Fix For: Segment Tar 0.0.12
>
>         Attachments: OAK-4735-01.patch
>
>
> Currently failing tests (8/8):
> * {{testSync()}}
> * {{testProxySkippedBytes()}}
> * {{testProxySkippedBytesIntermediateChange()}}
> * {{testProxyFlippedStartByte()}}
> * {{testProxyFlippedIntermediateByte()}}
> * {{testProxyFlippedIntermediateByte2()}}
> * {{testProxyFlippedIntermediateByteChange()}}
> * {{testProxyFlippedIntermediateByteChange2()}}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to