use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class RedirectingNameResolver method updateNameResolutionStatus.
public static boolean updateNameResolutionStatus(final CountersReader counters, final String hostname, final int operationValue) {
final MutableInteger nameCounterId = new MutableInteger(NULL_VALUE);
counters.forEach((counterId, typeId, keyBuffer, label) -> {
if (typeId == NAME_ENTRY_COUNTER_TYPE_ID && hostname.equals(keyBuffer.getStringAscii(0))) {
nameCounterId.set(counterId);
}
});
final boolean counterFound = NULL_VALUE != nameCounterId.get();
if (counterFound) {
final AtomicCounter nameCounter = new AtomicCounter(counters.valuesBuffer(), nameCounterId.get());
nameCounter.set(operationValue);
}
return counterFound;
}
use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class SystemTestWatcher method countClusterMarkFileErrors.
private int countClusterMarkFileErrors(final List<Path> paths, final Predicate<String> filter) {
final MutableInteger errorCount = new MutableInteger();
for (final Path path : paths) {
try (ClusterMarkFile clusterMarkFile = openClusterMarkFile(path)) {
final AtomicBuffer buffer = clusterMarkFile.errorBuffer();
ErrorLogReader.read(buffer, (observationCount, firstObservationTimestamp, lastObservationTimestamp, encodedException) -> {
if (filter.test(encodedException)) {
errorCount.set(errorCount.get() + observationCount);
}
});
}
}
return errorCount.get();
}
use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class ArchiveMigration_2_3 method migrateCatalogFile.
private int migrateCatalogFile(final Catalog catalog, final int version, final MappedByteBuffer mappedByteBuffer) {
final UnsafeBuffer buffer = new UnsafeBuffer(mappedByteBuffer);
final int alignment = CACHE_LINE_LENGTH;
// Create CatalogHeader for version 3.0.0
final int catalogHeaderLength = writeCatalogHeader(buffer, version, catalog.nextRecordingId(), alignment);
final MutableInteger offset = new MutableInteger(catalogHeaderLength);
catalog.forEach((recordingDescriptorOffset, headerEncoder, headerDecoder, descriptorEncoder, descriptorDecoder) -> {
final int strippedChannelLength = descriptorDecoder.strippedChannelLength();
descriptorDecoder.skipStrippedChannel();
final int originalChannelLength = descriptorDecoder.originalChannelLength();
descriptorDecoder.skipOriginalChannel();
final int sourceIdentityLength = descriptorDecoder.sourceIdentityLength();
final int frameLength = align(DESCRIPTOR_HEADER_LENGTH + 7 * SIZE_OF_LONG + 6 * SIZE_OF_INT + SIZE_OF_INT + strippedChannelLength + SIZE_OF_INT + originalChannelLength + SIZE_OF_INT + sourceIdentityLength, alignment);
final DirectBuffer srcBuffer = headerDecoder.buffer();
final int headerLength = headerDecoder.encodedLength();
// Copy recording header
int index = offset.get();
buffer.putBytes(index, srcBuffer, 0, headerLength);
index += headerLength;
// Correct length
buffer.putInt(offset.get(), frameLength - headerLength, LITTLE_ENDIAN);
// Copy recording descriptor
buffer.putBytes(index, srcBuffer, headerLength, frameLength - headerLength);
offset.addAndGet(frameLength);
});
return offset.get();
}
use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class ArchiveTool method compact.
static void compact(final PrintStream out, final File archiveDir, final EpochClock epochClock) {
final File compactFile = new File(archiveDir, CATALOG_FILE_NAME + ".compact");
try {
final Path compactFilePath = compactFile.toPath();
try (FileChannel channel = FileChannel.open(compactFilePath, READ, WRITE, CREATE_NEW);
Catalog catalog = openCatalogReadOnly(archiveDir, epochClock)) {
final MappedByteBuffer mappedByteBuffer = channel.map(READ_WRITE, 0, MAX_CATALOG_LENGTH);
mappedByteBuffer.order(CatalogHeaderEncoder.BYTE_ORDER);
try {
final UnsafeBuffer unsafeBuffer = new UnsafeBuffer(mappedByteBuffer);
new CatalogHeaderEncoder().wrap(unsafeBuffer, 0).version(catalog.version()).length(CatalogHeaderEncoder.BLOCK_LENGTH).nextRecordingId(catalog.nextRecordingId()).alignment(catalog.alignment());
final MutableInteger offset = new MutableInteger(CatalogHeaderEncoder.BLOCK_LENGTH);
final MutableInteger deletedRecords = new MutableInteger();
final MutableInteger reclaimedBytes = new MutableInteger();
catalog.forEach((recordingDescriptorOffset, headerEncoder, headerDecoder, descriptorEncoder, descriptorDecoder) -> {
final int frameLength = headerDecoder.encodedLength() + headerDecoder.length();
if (INVALID == headerDecoder.state()) {
deletedRecords.increment();
reclaimedBytes.addAndGet(frameLength);
final ArrayList<String> segmentFiles = listSegmentFiles(archiveDir, descriptorDecoder.recordingId());
for (final String segmentFile : segmentFiles) {
IoUtil.deleteIfExists(new File(archiveDir, segmentFile));
}
} else {
final int index = offset.getAndAdd(frameLength);
unsafeBuffer.putBytes(index, headerDecoder.buffer(), 0, frameLength);
}
});
out.println("Compaction result: deleted " + deletedRecords.get() + " records and reclaimed " + reclaimedBytes.get() + " bytes");
} finally {
BufferUtil.free(mappedByteBuffer);
}
}
final Path catalogFilePath = compactFilePath.resolveSibling(CATALOG_FILE_NAME);
Files.delete(catalogFilePath);
Files.move(compactFilePath, catalogFilePath);
} catch (final IOException ex) {
ex.printStackTrace(out);
} finally {
IoUtil.deleteIfExists(compactFile);
}
}
use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class ArchiveTool method createVerifyEntryProcessor.
private static CatalogEntryProcessor createVerifyEntryProcessor(final PrintStream out, final File archiveDir, final Set<VerifyOption> options, final Catalog catalog, final Checksum checksum, final EpochClock epochClock, final MutableInteger errorCount, final ActionConfirmation<File> truncateOnPageStraddle) {
final ByteBuffer buffer = BufferUtil.allocateDirectAligned(FILE_IO_MAX_LENGTH_DEFAULT, CACHE_LINE_LENGTH);
buffer.order(LITTLE_ENDIAN);
final DataHeaderFlyweight headerFlyweight = new DataHeaderFlyweight(buffer);
return (recordingDescriptorOffset, headerEncoder, headerDecoder, descriptorEncoder, descriptorDecoder) -> verifyRecording(out, archiveDir, options, catalog, checksum, epochClock, errorCount, truncateOnPageStraddle, headerFlyweight, recordingDescriptorOffset, headerEncoder, headerDecoder, descriptorEncoder, descriptorDecoder);
}
Aggregations