Skip to content

Commit

Permalink
[Java] Validate initialTermId and streamId when extending a recording.
Browse files Browse the repository at this point in the history
  • Loading branch information
mjpt777 committed Dec 1, 2019
1 parent 64e90b0 commit c907848
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions aeron-archive/src/main/java/io/aeron/archive/ArchiveConductor.java
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,16 @@ Subscription extendRecording(
return null;
}

catalog.recordingSummary(recordingId, recordingSummary);
if (streamId != recordingSummary.streamId)
{
final String msg = "cannot extend recording " + recordingSummary.recordingId +
" streamId " + streamId +
" not equal to recording streamId " + recordingSummary.streamId;
controlSession.sendErrorResponse(correlationId, UNKNOWN_RECORDING, msg, controlResponseProxy);
return null;
}

if (recordingSessionByIdMap.containsKey(recordingId))
{
final String msg = "cannot extend active recording for " + recordingId;
Expand Down Expand Up @@ -1497,6 +1507,16 @@ private void validateImageForExtendRecording(
throw new ArchiveException(msg);
}

if (image.initialTermId() != recordingSummary.initialTermId)
{
final String msg = "cannot extend recording " + recordingSummary.recordingId +
" image initialTermId " + image.initialTermId() +
" not equal to recording initialTermId " + recordingSummary.initialTermId;

controlSession.attemptErrorResponse(correlationId, INVALID_EXTENSION, msg, controlResponseProxy);
throw new ArchiveException(msg);
}

if (image.termBufferLength() != recordingSummary.termBufferLength)
{
final String msg = "cannot extend recording " + recordingSummary.recordingId +
Expand Down

0 comments on commit c907848

Please sign in to comment.