@Override protected void processSyncLog(DelaySyncRequestProcessor.SyncRequestEntry entry, SegmentBuffer result) { final int batchSize = config.getInt("sync.batch.size", 100000); final long startOffset = result.getStartOffset(); final ByteBuffer buffer = result.getBuffer(); int size = result.getSize(); if (size > batchSize) { buffer.limit(batchSize); size = batchSize; } final Datagram datagram = RemotingBuilder.buildResponseDatagram(CommandCode.SUCCESS, entry.getRequestHeader() , new SyncLogPayloadHolder(size, startOffset, buffer)); entry.getCtx().writeAndFlush(datagram); }
private void processSyncLog(SyncRequestEntry entry, SegmentBuffer result) { if (!acquireSegmentLock(result)) { writeEmpty(entry, result.getStartOffset()); return; } if (!result.retain()) { writeEmpty(entry, result.getStartOffset()); return; } try { final int batchSize = config.getInt("sync.batch.size", 100000); final ByteBuffer buffer = result.getBuffer(); int size = result.getSize(); if (size > batchSize) { buffer.limit(batchSize); size = batchSize; } final RemotingHeader header = RemotingBuilder.buildResponseHeader(CommandCode.SUCCESS, entry.getRequestHeader()); ByteBuffer headerBuffer = HeaderSerializer.serialize(header, SYNC_HEADER_LEN + size, SYNC_HEADER_LEN); headerBuffer.putInt(size); headerBuffer.putLong(result.getStartOffset()); headerBuffer.flip(); entry.getCtx().writeAndFlush(new DataTransfer(headerBuffer, result, size)); } catch (Exception e) { result.release(); } }
@Override protected void processSyncLog(DelaySyncRequestProcessor.SyncRequestEntry entry, SegmentBuffer result) { int batchSize = config.getInt("sync.batch.size", 100000); long startOffset = result.getStartOffset(); ByteBuffer buffer = result.getBuffer(); int size = result.getSize(); long segmentBaseOffset = ((SegmentBufferExtend) result).getBaseOffset(); if (size > batchSize) { buffer.limit(batchSize); size = batchSize; } final Datagram datagram = RemotingBuilder.buildResponseDatagram(CommandCode.SUCCESS, entry.getRequestHeader() , new SyncDispatchLogPayloadHolder(size, startOffset, segmentBaseOffset, buffer)); entry.getCtx().writeAndFlush(datagram); }