Skip to content

skip endOfPeriodMarker in stream method#104

Open
mikewuhao wants to merge 1 commit intolinkedin:masterfrom
mikewuhao:fixWindowOffsetErrorBug
Open

skip endOfPeriodMarker in stream method#104
mikewuhao wants to merge 1 commit intolinkedin:masterfrom
mikewuhao:fixWindowOffsetErrorBug

Conversation

@mikewuhao
Copy link

the windowOffset calculate method is diffrent between relay and client . Client filters the endOfPeriodMarker event as follows:
if (e.isEndOfPeriodMarker())
{ ... }
else if (e.isCheckpointMessage())
{ ... }
else // regular dbusEvent
{
if (currentWindowScn == e.sequence())
{
++currentWindowOffset;
}
else
{
currentWindowScn = e.sequence();
currentWindowOffset = 1L;
}
}
but when the client stream events from relay , the filter method like this:
if (state == EventScanningState.FOUND_WINDOW_ZONE)
{
if (skippedMessages < messagesToSkip)
{
++skippedMessages;
continue;
}
else
{
state = EventScanningState.VALID_ZONE;
}
}
}
so when transaction has a lot events and the client's buffer is full.the windowOffset may be not right and the consumer may consume a event twice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant