[
https://issues.apache.org/jira/browse/BOOKKEEPER-162?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13202362#comment-13202362
]
Philipp Sushkin commented on BOOKKEEPER-162:
--------------------------------------------
I started to debug and do have small question.
Same case 1 writer, 1 reader.
reader tries to request lastAddConfirmed.
on server side I see
EntryLogger
{code}
byte[] readEntry(long ledgerId, long entryId, long location) throws IOException
{
...
byte data[] = new byte[entrySize];
ByteBuffer buff = ByteBuffer.wrap(data);
int rc = fc.read(buff, pos);
...
here I see
[0, 0, 0, 0, 0, 0, 0, 2,
0, 0, 0, 0, 0, 0, 0, 1,
-1, -1, -1, -1, -1, -1, -1, -1,
0, 0, 0, 0, 0, 0, 0, 2,
-16, 41, -22, 25, 26, 93, -80, -40, -80, -15, 7, -36, 72, -52, 13, -54, 39,
117, 12, -56, 2]
}
{code}
Also there is header
[1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -1, -1, -1, -1, -1, -1, -1, -1]
built in
{code}
{code}
On client in
DigestManager
{code}
RecoveryData verifyDigestAndReturnLastConfirmed(ChannelBuffer dataReceived)
throws BKDigestMatchException {
verifyDigest(dataReceived);
dataReceived.readerIndex(8);
long entryId = dataReceived.readLong();
long lastAddConfirmed = dataReceived.readLong();
long length = dataReceived.readLong();
return new RecoveryData(lastAddConfirmed, entryId);
}
{code}
I see
{panel}
[1, 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2, <- entryId
-1, -1, -1, -1, -1, -1, -1, -1,
0, 0, 0, 0, 0, 0, 0, 2,
0, 0, 0, 0, 0, 0, 0, 1,
-1, -1, -1, -1, -1, -1, -1, -1,
0, 0, 0, 0, 0, 0, 0, 2,
-16, 41, -22, 25, 26, 93, -80, -40, -80, -15, 7, -36, 72, -52, 13, -54, 39,
117, 12, -56, 2]
{panel}
> LedgerHandle.readLastConfirmed does not work
> --------------------------------------------
>
> Key: BOOKKEEPER-162
> URL: https://issues.apache.org/jira/browse/BOOKKEEPER-162
> Project: Bookkeeper
> Issue Type: Bug
> Components: bookkeeper-client
> Affects Versions: 4.0.0
> Reporter: Philipp Sushkin
> Assignee: Flavio Junqueira
> Priority: Critical
> Fix For: 4.0.0
>
> Attachments: BOOKKEEPER-162.patch, BOOKKEEPER-162.patch,
> BookieReadWriteTest.java.patch, BookieReadWriteTest.java.patch,
> BookieReadWriteTest.java.patch, bookkeeper.log
>
>
> Two bookkeeper clients.
> 1st continuously writing to ledger X.
> 2nd (bk.openLedgerNoRecovery) polling ledger X for new entries and reading
> them.
> In response we always reveiceing 0 as last confirmed entry id (in fact we are
> receiving -1 from each bookie RecoveryData but then in ReadLastConfirmedOp,
> but uninitialized "long maxAddConfirmed;" takes priority in Math.max(...).
> Main question - is given scenario is expected to work at all?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira