io.aeron.Aeron.countersReader()方法的使用及代码示例

x33g5p2x  于2022-01-16 转载在 其他  
字(9.9k)|赞(0)|评价(0)|浏览(151)

本文整理了Java中io.aeron.Aeron.countersReader()方法的一些代码示例,展示了Aeron.countersReader()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Aeron.countersReader()方法的具体详情如下:
包路径:io.aeron.Aeron
类名称:Aeron
方法名:countersReader

Aeron.countersReader介绍

[英]Get the CountersReader for the Aeron media driver counters.
[中]获取Aeron媒体驱动程序计数器的计数器读取器。

代码示例

代码示例来源:origin: real-logic/aeron

/**
 * Print out the values from {@link #countersReader()} which can be useful for debugging.
 *
 *  @param out to where the counters get printed.
 */
public void printCounters(final PrintStream out)
{
  final CountersReader counters = countersReader();
  counters.forEach((value, id, label) -> out.format("%3d: %,20d - %s%n", id, value, label));
}

代码示例来源:origin: real-logic/aeron

long logRecordingId()
{
  if (!recoveryPlan.logs.isEmpty())
  {
    return recoveryPlan.logs.get(0).recordingId;
  }
  return RecordingPos.getRecordingId(aeron.countersReader(), appendedPosition.counterId());
}

代码示例来源:origin: real-logic/aeron

private void awaitRecordingComplete(final long position)
{
  final CountersReader counters = aeron.countersReader();
  final int counterId = RecordingPos.findCounterIdBySession(counters, publicationSessionId);
  while (counters.getCounterValue(counterId) < position)
  {
    Thread.yield();
  }
}

代码示例来源:origin: real-logic/aeron

private void createAppendPosition(final int logSessionId)
{
  final CountersReader counters = aeron.countersReader();
  final int recordingCounterId = awaitRecordingCounter(counters, logSessionId);
  appendedPosition = new ReadableCounter(counters, recordingCounterId);
}

代码示例来源:origin: real-logic/aeron

public static void main(final String[] args)
  {
    if (args.length != 1)
    {
      System.out.format("Usage: SetControllableIdleStrategy <n>");
      System.exit(0);
    }

    try (Aeron aeron = Aeron.connect())
    {
      final CountersReader countersReader = aeron.countersReader();
      final StatusIndicator statusIndicator = StatusUtil.controllableIdleStrategy(countersReader);

      if (null != statusIndicator)
      {
        final int status = Integer.parseInt(args[0]);
        statusIndicator.setOrdered(status);
        System.out.println("Set ControllableIdleStrategy status to " + status);
      }
      else
      {
        System.out.println("Could not find ControllableIdleStrategy status.");
      }
    }
  }
}

代码示例来源:origin: real-logic/aeron

@SuppressWarnings("unused")
void onReplayNewLeadershipTermEvent(
  final long leadershipTermId,
  final long logPosition,
  final long timestamp,
  final int leaderMemberId,
  final int logSessionId)
{
  clusterTimeMs(timestamp);
  this.leadershipTermId = leadershipTermId;
  if (null != election && null != appendedPosition)
  {
    final long recordingId = RecordingPos.getRecordingId(aeron.countersReader(), appendedPosition.counterId());
    election.onReplayNewLeadershipTermEvent(recordingId, leadershipTermId, logPosition, cachedTimeMs);
  }
}

代码示例来源:origin: real-logic/aeron

final CountersReader counters = aeron.countersReader();
final int counterId = RecordingPos.findCounterIdBySession(counters, publication.sessionId());

代码示例来源:origin: real-logic/aeron

@Test
public void shouldCatchErrorOnAddressAlreadyInUseForSubscriptions()
{
  final Subscription subscriptionA = clientA.addSubscription(URI, STREAM_ID);
  while (subscriptionA.channelStatus() == ChannelEndpointStatus.INITIALIZING)
  {
    SystemTest.checkInterruptedStatus();
    Thread.yield();
  }
  assertThat(subscriptionA.channelStatus(), is(ChannelEndpointStatus.ACTIVE));
  final Subscription subscriptionB = clientB.addSubscription(URI, STREAM_ID);
  final ArgumentCaptor<Throwable> captor = ArgumentCaptor.forClass(Throwable.class);
  verify(errorHandlerClientB, timeout(5000)).onError(captor.capture());
  assertThat(captor.getValue(), instanceOf(ChannelEndpointException.class));
  final ChannelEndpointException channelEndpointException = (ChannelEndpointException)captor.getValue();
  final long status = clientB.countersReader().getCounterValue(channelEndpointException.statusIndicatorId());
  assertThat(status, is(ChannelEndpointStatus.ERRORED));
  assertThat(errorCounter.get(), greaterThan(0));
  assertThat(subscriptionB.channelStatusId(), is(channelEndpointException.statusIndicatorId()));
  assertThat(subscriptionA.channelStatus(), is(ChannelEndpointStatus.ACTIVE));
}

代码示例来源:origin: real-logic/aeron

@Test
public void shouldCatchErrorOnAddressAlreadyInUseForPublications()
{
  final Publication publicationA = clientA.addPublication(URI_WITH_INTERFACE_PORT, STREAM_ID);
  while (publicationA.channelStatus() == ChannelEndpointStatus.INITIALIZING)
  {
    SystemTest.checkInterruptedStatus();
    Thread.yield();
  }
  assertThat(publicationA.channelStatus(), is(ChannelEndpointStatus.ACTIVE));
  final Publication publicationB = clientB.addPublication(URI_WITH_INTERFACE_PORT, STREAM_ID);
  final ArgumentCaptor<Throwable> captor = ArgumentCaptor.forClass(Throwable.class);
  verify(errorHandlerClientB, timeout(5000)).onError(captor.capture());
  assertThat(captor.getValue(), instanceOf(ChannelEndpointException.class));
  final ChannelEndpointException channelEndpointException = (ChannelEndpointException)captor.getValue();
  final long status = clientB.countersReader().getCounterValue(channelEndpointException.statusIndicatorId());
  assertThat(status, is(ChannelEndpointStatus.ERRORED));
  assertThat(errorCounter.get(), greaterThan(0));
  assertThat(publicationB.channelStatusId(), is(channelEndpointException.statusIndicatorId()));
  assertTrue(publicationB.isClosed());
  assertThat(publicationA.channelStatus(), is(ChannelEndpointStatus.ACTIVE));
}

代码示例来源:origin: real-logic/aeron

private AtomicCounter getControlToggle(final int index)
{
  final ClusteredMediaDriver driver = clusteredMediaDrivers[index];
  final CountersReader countersReader = driver.consensusModule().context().aeron().countersReader();
  return ClusterControl.findControlToggle(countersReader);
}

代码示例来源:origin: real-logic/aeron

public void onStart()
{
  final CountersReader counters = aeron.countersReader();
  roleCounter = awaitClusterRoleCounter(counters);
  heartbeatCounter = awaitHeartbeatCounter(counters);
  commitPosition = awaitCommitPositionCounter(counters);
  service.onStart(this);
  isServiceActive = true;
  final int recoveryCounterId = awaitRecoveryCounter(counters);
  heartbeatCounter.setOrdered(epochClock.time());
  checkForSnapshot(counters, recoveryCounterId);
  checkForReplay(counters, recoveryCounterId);
}

代码示例来源:origin: real-logic/aeron

@Test(timeout = 10_000)
public void shouldRestartServiceFromEmptySnapshot() throws Exception
{
  final AtomicLong serviceMsgCounter = new AtomicLong(0);
  launchService(serviceMsgCounter);
  connectClient();
  final CountersReader counters = container.context().aeron().countersReader();
  final AtomicCounter controlToggle = ClusterControl.findControlToggle(counters);
  assertNotNull(controlToggle);
  assertTrue(ClusterControl.ToggleState.SNAPSHOT.toggle(controlToggle));
  while (snapshotCount.get() == 0)
  {
    TestUtil.checkInterruptedStatus();
    Thread.sleep(1);
  }
  forceCloseForRestart();
  serviceState.set(null);
  launchClusteredMediaDriver(false);
  launchService(serviceMsgCounter);
  connectClient();
  while (null == serviceState.get())
  {
    TestUtil.checkInterruptedStatus();
    Thread.yield();
  }
  assertThat(serviceState.get(), is("0"));
}

代码示例来源:origin: real-logic/aeron

final CountersReader counters = aeronCluster.context().aeron().countersReader();
final AtomicCounter controlToggle = ClusterControl.findControlToggle(counters);
assertNotNull(controlToggle);

代码示例来源:origin: real-logic/aeron

@Test(timeout = 10_000)
public void shouldTakeMultipleSnapshots() throws Exception
{
  final AtomicLong serviceMsgCounter = new AtomicLong(0);
  launchService(serviceMsgCounter);
  connectClient();
  final CountersReader counters = aeronCluster.context().aeron().countersReader();
  final AtomicCounter controlToggle = ClusterControl.findControlToggle(counters);
  assertNotNull(controlToggle);
  for (int i = 0; i < 3; i++)
  {
    assertTrue(ClusterControl.ToggleState.SNAPSHOT.toggle(controlToggle));
    while (controlToggle.get() != ClusterControl.ToggleState.NEUTRAL.code())
    {
      TestUtil.checkInterruptedStatus();
      Thread.sleep(1);
    }
  }
  assertThat(snapshotCount.get(), is(3L));
}

代码示例来源:origin: real-logic/aeron

private void takeSnapshot(final int index)
{
  final ClusteredMediaDriver driver = clusteredMediaDrivers[index];
  final CountersReader countersReader = driver.consensusModule().context().aeron().countersReader();
  final AtomicCounter controlToggle = ClusterControl.findControlToggle(countersReader);
  assertNotNull(controlToggle);
  assertTrue(ClusterControl.ToggleState.SNAPSHOT.toggle(controlToggle));
}

代码示例来源:origin: real-logic/aeron

void prepareForNewLeadership(final long logPosition)
  long recordingId = RecordingPos.getRecordingId(aeron.countersReader(), appendedPosition.counterId());
  if (RecordingPos.NULL_RECORDING_ID == recordingId)

代码示例来源:origin: real-logic/aeron

private long onTakeSnapshot(final long logPosition, final long leadershipTermId)
{
  final long recordingId;
  try (AeronArchive archive = AeronArchive.connect(archiveCtx);
    Publication publication = aeron.addExclusivePublication(ctx.snapshotChannel(), ctx.snapshotStreamId()))
  {
    final String channel = ChannelUri.addSessionId(ctx.snapshotChannel(), publication.sessionId());
    final long subscriptionId = archive.startRecording(channel, ctx.snapshotStreamId(), LOCAL);
    try
    {
      final CountersReader counters = aeron.countersReader();
      final int counterId = awaitRecordingCounter(publication.sessionId(), counters);
      recordingId = RecordingPos.getRecordingId(counters, counterId);
      snapshotState(publication, logPosition, leadershipTermId);
      service.onTakeSnapshot(publication);
      awaitRecordingComplete(recordingId, publication.position(), counters, counterId, archive);
    }
    finally
    {
      archive.stopRecording(subscriptionId);
    }
  }
  return recordingId;
}

代码示例来源:origin: real-logic/aeron

Publication publication = aeronArchive.addRecordedPublication(RECORDING_CHANNEL, RECORDING_STREAM_ID))
final CountersReader counters = aeron.countersReader();
final int counterId = getRecordingCounterId(publication.sessionId(), counters);
recordingId = RecordingPos.getRecordingId(counters, counterId);

代码示例来源:origin: real-logic/aeron

try
  final CountersReader counters = aeron.countersReader();
  final int counterId = awaitRecordingCounter(counters, publication.sessionId());
  final long recordingId = RecordingPos.getRecordingId(counters, counterId);

代码示例来源:origin: real-logic/aeron

Publication publication = aeron.addPublication(RECORDING_CHANNEL, RECORDING_STREAM_ID))
final CountersReader counters = aeron.countersReader();
final int counterId = getRecordingCounterId(publication.sessionId(), counters);
final long recordingId = RecordingPos.getRecordingId(counters, counterId);

相关文章