List of usage examples for java.util.concurrent.atomic AtomicBoolean set
public final void set(boolean newValue)
From source file:org.apache.hadoop.hbase.client.TestAsyncProcess.java
@Test public void testSubmitTrue() throws IOException { final AsyncProcess ap = new MyAsyncProcess(createHConnection(), conf, false); ap.tasksInProgress.incrementAndGet(); final AtomicInteger ai = new AtomicInteger(1); ap.taskCounterPerRegion.put(hri1.getRegionName(), ai); final AtomicBoolean checkPoint = new AtomicBoolean(false); final AtomicBoolean checkPoint2 = new AtomicBoolean(false); Thread t = new Thread() { @Override//from w ww . jav a 2 s . c o m public void run() { Threads.sleep(1000); Assert.assertFalse(checkPoint.get()); // TODO: this is timing-dependent ai.decrementAndGet(); ap.tasksInProgress.decrementAndGet(); checkPoint2.set(true); } }; List<Put> puts = new ArrayList<Put>(); Put p = createPut(1, true); puts.add(p); ap.submit(DUMMY_TABLE, puts, false, null, false); Assert.assertFalse(puts.isEmpty()); t.start(); ap.submit(DUMMY_TABLE, puts, true, null, false); Assert.assertTrue(puts.isEmpty()); checkPoint.set(true); while (!checkPoint2.get()) { Threads.sleep(1); } }
From source file:org.apache.hadoop.hdfs.server.datanode.TestBlockRecovery.java
/** * Test to verify the race between finalizeBlock and Lease recovery * * @throws Exception/*w w w.j a va 2s . c om*/ */ @Test(timeout = 20000) public void testRaceBetweenReplicaRecoveryAndFinalizeBlock() throws Exception { tearDown();// Stop the Mocked DN started in startup() Configuration conf = new HdfsConfiguration(); conf.set(DFSConfigKeys.DFS_DATANODE_XCEIVER_STOP_TIMEOUT_MILLIS_KEY, "1000"); MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1).build(); try { cluster.waitClusterUp(); DistributedFileSystem fs = cluster.getFileSystem(); Path path = new Path("/test"); FSDataOutputStream out = fs.create(path); out.writeBytes("data"); out.hsync(); List<LocatedBlock> blocks = DFSTestUtil.getAllBlocks(fs.open(path)); final LocatedBlock block = blocks.get(0); final DataNode dataNode = cluster.getDataNodes().get(0); final AtomicBoolean recoveryInitResult = new AtomicBoolean(true); Thread recoveryThread = new Thread() { @Override public void run() { try { DatanodeInfo[] locations = block.getLocations(); final RecoveringBlock recoveringBlock = new RecoveringBlock(block.getBlock(), locations, block.getBlock().getGenerationStamp() + 1); synchronized (dataNode.data) { Thread.sleep(2000); dataNode.initReplicaRecovery(recoveringBlock); } } catch (Exception e) { recoveryInitResult.set(false); } } }; recoveryThread.start(); try { out.close(); } catch (IOException e) { Assert.assertTrue("Writing should fail", e.getMessage().contains("are bad. Aborting...")); } finally { recoveryThread.join(); } Assert.assertTrue("Recovery should be initiated successfully", recoveryInitResult.get()); dataNode.updateReplicaUnderRecovery(block.getBlock(), block.getBlock().getGenerationStamp() + 1, block.getBlock().getBlockId(), block.getBlockSize()); } finally { if (null != cluster) { cluster.shutdown(); cluster = null; } } }
From source file:org.apache.hadoop.hdfs.TestAutoEditRollWhenAvatarFailover.java
/** * Test if we can get block locations after killing primary avatar, * failing over to standby avatar (making it the new primary), * restarting a new standby avatar, killing the new primary avatar and * failing over to the restarted standby. * /*w w w .ja v a 2 s . co m*/ * Write logs for a while to make sure automatic rolling are triggered. */ @Test public void testDoubleFailOverWithAutomaticRoll() throws Exception { setUp(false, "testDoubleFailOverWithAutomaticRoll"); // To make sure it's never the case that both primary and standby // issue rolling, we use a injection handler. final AtomicBoolean startKeepThread = new AtomicBoolean(true); final AtomicInteger countAutoRolled = new AtomicInteger(0); final AtomicBoolean needFail = new AtomicBoolean(false); final AtomicLong currentThreadId = new AtomicLong(-1); final Object waitFor10Rolls = new Object(); InjectionHandler.set(new InjectionHandler() { @Override protected void _processEvent(InjectionEventI event, Object... args) { if (event == InjectionEvent.FSEDIT_AFTER_AUTOMATIC_ROLL) { countAutoRolled.incrementAndGet(); if (countAutoRolled.get() >= 10) { synchronized (waitFor10Rolls) { waitFor10Rolls.notifyAll(); } } if (!startKeepThread.get()) { currentThreadId.set(-1); } else if (currentThreadId.get() == -1) { currentThreadId.set(Thread.currentThread().getId()); } else if (currentThreadId.get() != Thread.currentThread().getId()) { LOG.warn("[Thread " + Thread.currentThread().getId() + "] expected: " + currentThreadId); needFail.set(true); } LOG.info("[Thread " + Thread.currentThread().getId() + "] finish automatic log rolling, count " + countAutoRolled.get()); // Increase the rolling time a little bit once after 7 auto rolls if (countAutoRolled.get() % 7 == 3) { DFSTestUtil.waitNMilliSecond(75); } } } }); FileSystem fs = cluster.getFileSystem(); // Add some transactions during a period of time before failing over. long startTime = System.currentTimeMillis(); for (int i = 0; i < 100; i++) { fs.setTimes(new Path("/"), 0, 0); DFSTestUtil.waitNMilliSecond(100); if (i % 10 == 0) { LOG.info("================== executed " + i + " queries"); } if (countAutoRolled.get() >= 10) { LOG.info("Automatic rolled 10 times."); long duration = System.currentTimeMillis() - startTime; TestCase.assertTrue("Automatic rolled 10 times in just " + duration + " msecs, which is too short", duration > 4500); break; } } TestCase.assertTrue("Only " + countAutoRolled + " automatic rolls triggered, which is lower than expected.", countAutoRolled.get() >= 10); // Tune the rolling timeout temporarily to avoid race conditions // only triggered in tests cluster.getPrimaryAvatar(0).avatar.namesystem.getFSImage().getEditLog().setTimeoutRollEdits(5000); cluster.getStandbyAvatar(0).avatar.namesystem.getFSImage().getEditLog().setTimeoutRollEdits(5000); LOG.info("================== killing primary 1"); cluster.killPrimary(); // Fail over and make sure after fail over, automatic edits roll still // will happen. countAutoRolled.set(0); startKeepThread.set(false); currentThreadId.set(-1); LOG.info("================== failing over 1"); cluster.failOver(); cluster.getPrimaryAvatar(0).avatar.namesystem.getFSImage().getEditLog().setTimeoutRollEdits(1000); LOG.info("================== restarting standby"); cluster.restartStandby(); cluster.getStandbyAvatar(0).avatar.namesystem.getFSImage().getEditLog().setTimeoutRollEdits(1000); LOG.info("================== Finish restarting standby"); // Wait for automatic rolling happens if there is no new transaction. startKeepThread.set(true); startTime = System.currentTimeMillis(); long waitDeadLine = startTime + 20000; synchronized (waitFor10Rolls) { while (System.currentTimeMillis() < waitDeadLine && countAutoRolled.get() < 10) { waitFor10Rolls.wait(waitDeadLine - System.currentTimeMillis()); } } TestCase.assertTrue("Only " + countAutoRolled + " automatic rolls triggered, which is lower than expected.", countAutoRolled.get() >= 10); long duration = System.currentTimeMillis() - startTime; TestCase.assertTrue("Automatic rolled 10 times in just " + duration + " msecs", duration > 9000); // failover back countAutoRolled.set(0); startKeepThread.set(false); currentThreadId.set(-1); cluster.getPrimaryAvatar(0).avatar.namesystem.getFSImage().getEditLog().setTimeoutRollEdits(6000); cluster.getStandbyAvatar(0).avatar.namesystem.getFSImage().getEditLog().setTimeoutRollEdits(6000); LOG.info("================== killing primary 2"); cluster.killPrimary(); LOG.info("================== failing over 2"); cluster.failOver(); cluster.getPrimaryAvatar(0).avatar.namesystem.getFSImage().getEditLog().setTimeoutRollEdits(1000); // Make sure after failover back, automatic rolling can still happen. startKeepThread.set(true); for (int i = 0; i < 100; i++) { fs.setTimes(new Path("/"), 0, 0); DFSTestUtil.waitNMilliSecond(200); if (i % 10 == 0) { LOG.info("================== executed " + i + " queries"); } if (countAutoRolled.get() > 10) { LOG.info("Automatic rolled 10 times."); duration = System.currentTimeMillis() - startTime; TestCase.assertTrue("Automatic rolled 10 times in just " + duration + " msecs, which is too short", duration > 9000); break; } } TestCase.assertTrue("Only " + countAutoRolled + " automatic rolls triggered, which is lower than expected.", countAutoRolled.get() >= 10); InjectionHandler.clear(); if (needFail.get()) { TestCase.fail("Automatic rolling doesn't happen in the same thread when should."); } }
From source file:org.apache.tinkerpop.gremlin.structure.io.IoCustomTest.java
@Test @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) @FeatureRequirement(featureClass = Graph.Features.EdgePropertyFeatures.class, feature = Graph.Features.EdgePropertyFeatures.FEATURE_SERIALIZABLE_VALUES) public void shouldSupportUUID() throws Exception { final UUID id = UUID.randomUUID(); final Vertex v1 = graph.addVertex(T.label, "person"); final Vertex v2 = graph.addVertex(T.label, "person"); final Edge e = v1.addEdge("friend", v2, "uuid", id); try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) { final GraphWriter writer = writerMaker.apply(graph); writer.writeEdge(os, e);//from ww w. jav a2s .c om final AtomicBoolean called = new AtomicBoolean(false); final GraphReader reader = readerMaker.apply(graph); try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) { reader.readEdge(bais, edge -> { final Edge detachedEdge = (Edge) edge; assertEquals(e.id(), assertIdDirectly ? detachedEdge.id() : graph.edges(detachedEdge.id().toString()).next().id()); assertEquals(v1.id(), assertIdDirectly ? detachedEdge.outVertex().id() : graph.vertices(detachedEdge.outVertex().id().toString()).next().id()); assertEquals(v2.id(), assertIdDirectly ? detachedEdge.inVertex().id() : graph.vertices(detachedEdge.inVertex().id().toString()).next().id()); assertEquals(v1.label(), detachedEdge.outVertex().label()); assertEquals(v2.label(), detachedEdge.inVertex().label()); assertEquals(e.label(), detachedEdge.label()); assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties())); assertEquals(id, detachedEdge.value("uuid")); called.set(true); return null; }); } assertTrue(called.get()); } }
From source file:com.jeremydyer.nifi.processors.barcode.BarcodeScannerProcessor.java
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { final FlowFile flowFile = session.get(); if (flowFile == null) { return;/*from w w w .j av a 2 s. c o m*/ } final AtomicBoolean errors = new AtomicBoolean(false); switch (context.getProperty(DESTINATION).getValue()) { case DESTINATION_ATTRIBUTE: final AtomicReference<String> BC = new AtomicReference<>(); session.read(flowFile, new InputStreamCallback() { @Override public void process(InputStream inputStream) throws IOException { Map hintMap = new HashMap(); hintMap.put(DecodeHintType.TRY_HARDER, Boolean.TRUE); try { BufferedImage barCodeBufferedImage = ImageIO.read(inputStream); LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Reader reader = new MultiFormatReader(); Result result = reader.decode(bitmap, hintMap); BC.set(result.getText()); } catch (Exception ex) { ex.printStackTrace(); //session.transfer(flowFile, REL_FAILURE); errors.set(true); } } }); if (StringUtils.isNotEmpty(BC.get())) { FlowFile atFlowFile = session.putAttribute(flowFile, BARCODE_ATTRIBUTE_NAME, BC.get()); if (!errors.get()) { session.transfer(atFlowFile, REL_SUCCESS); } else { session.transfer(atFlowFile, REL_FAILURE); } } else { if (!errors.get()) { session.transfer(flowFile, REL_SUCCESS); } else { session.transfer(flowFile, REL_FAILURE); } } break; case DESTINATION_CONTENT: FlowFile conFlowFile = session.write(flowFile, new StreamCallback() { @Override public void process(InputStream inputStream, OutputStream outputStream) throws IOException { Map hintMap = new HashMap(); hintMap.put(DecodeHintType.TRY_HARDER, Boolean.TRUE); try { BufferedImage barCodeBufferedImage = ImageIO.read(inputStream); LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Reader reader = new MultiFormatReader(); Result result = reader.decode(bitmap, hintMap); getLogger().info("Barcode Format: " + result.getBarcodeFormat().toString()); getLogger().info("Barcode Text is: ' " + result.getText() + "'"); outputStream.write(result.getText().getBytes()); } catch (Exception ex) { ex.printStackTrace(); //session.transfer(flowFile, REL_FAILURE); errors.set(true); } } }); if (!errors.get()) { session.transfer(conFlowFile, REL_SUCCESS); } else { session.transfer(conFlowFile, REL_FAILURE); } break; } }
From source file:backup.integration.MiniClusterTestBase.java
@Test public void testIntegrationBasic() throws Exception { File hdfsDir = setupHdfsLocalDir(); Configuration conf = setupConfig(hdfsDir); MiniDFSCluster hdfsCluster = new MiniDFSCluster.Builder(conf).build(); Thread thread = null;/*from w w w .j a va 2 s .c om*/ try { DistributedFileSystem fileSystem = hdfsCluster.getFileSystem(); Path path = new Path("/testing.txt"); writeFile(fileSystem, path); Thread.sleep(TimeUnit.SECONDS.toMillis(5)); AtomicBoolean success = new AtomicBoolean(false); thread = new Thread(new Runnable() { @Override public void run() { boolean beginTest = true; while (true) { try { try (ByteArrayOutputStream output = new ByteArrayOutputStream()) { try (FSDataInputStream inputStream = fileSystem.open(path)) { IOUtils.copy(inputStream, output); } if (beginTest) { hdfsCluster.startDataNodes(conf, 1, true, null, null); hdfsCluster.stopDataNode(0); beginTest = false; } else { LOG.info("Missing block restored."); success.set(true); return; } } } catch (IOException e) { LOG.error(e.getMessage()); } try { Thread.sleep(1000); } catch (InterruptedException e) { return; } } } }); thread.start(); thread.join(TimeUnit.MINUTES.toMillis(2)); if (!success.get()) { fail(); } } finally { if (thread != null) { thread.interrupt(); } hdfsCluster.shutdown(); destroyBackupStore(conf); } }
From source file:org.apache.flume.channel.kafka.TestKafkaChannel.java
private List<Event> pullEvents(final KafkaChannel channel, ExecutorCompletionService<Void> submitterSvc, final int total, final boolean testRollbacks, final boolean retryAfterRollback) { final List<Event> eventsPulled = Collections.synchronizedList(new ArrayList<Event>(50)); final CyclicBarrier barrier = new CyclicBarrier(5); final AtomicInteger counter = new AtomicInteger(0); final AtomicInteger rolledBackCount = new AtomicInteger(0); final AtomicBoolean startedGettingEvents = new AtomicBoolean(false); final AtomicBoolean rolledBack = new AtomicBoolean(false); for (int k = 0; k < 5; k++) { final int index = k; submitterSvc.submit(new Callable<Void>() { @Override/*from w ww . j a v a2s . co m*/ public Void call() throws Exception { Transaction tx = null; final List<Event> eventsLocal = Lists.newLinkedList(); int takenByThisThread = 0; channel.registerThread(); Thread.sleep(1000); barrier.await(); while (counter.get() < (total - rolledBackCount.get())) { if (tx == null) { tx = channel.getTransaction(); tx.begin(); } try { Event e = channel.take(); if (e != null) { startedGettingEvents.set(true); eventsLocal.add(e); } else { if (testRollbacks && index == 4 && (!rolledBack.get()) && startedGettingEvents.get()) { tx.rollback(); tx.close(); tx = null; rolledBack.set(true); final int eventsLocalSize = eventsLocal.size(); eventsLocal.clear(); if (!retryAfterRollback) { rolledBackCount.set(eventsLocalSize); return null; } } else { tx.commit(); tx.close(); tx = null; eventsPulled.addAll(eventsLocal); counter.getAndAdd(eventsLocal.size()); eventsLocal.clear(); } } } catch (Exception ex) { eventsLocal.clear(); if (tx != null) { tx.rollback(); tx.close(); } tx = null; ex.printStackTrace(); } } // Close txn. return null; } }); } return eventsPulled; }
From source file:com.google.dart.java2dart.Context.java
/** * In Java we can have method parameter "foo" and invoke method named "foo", and parameter will * not shadow invoked method. But in Dart it will. *///from ww w. j ava2s . com public void ensureMethodParameterDoesNotHide(CompilationUnit unit) { unit.accept(new RecursiveASTVisitor<Void>() { @Override public Void visitMethodDeclaration(MethodDeclaration node) { FormalParameterList parameterList = node.getParameters(); if (parameterList != null) { for (FormalParameter parameter : parameterList.getParameters()) { final String parameterName = parameter.getIdentifier().getName(); final Object parameterBinding = getNodeBinding(parameter.getIdentifier()); final AtomicBoolean hasHiding = new AtomicBoolean(); node.accept(new RecursiveASTVisitor<Void>() { @Override public Void visitSimpleIdentifier(SimpleIdentifier node) { if (node.getName().equals(parameterName) && getNodeBinding(node) != parameterBinding) { hasHiding.set(true); } return super.visitSimpleIdentifier(node); } }); if (hasHiding.get()) { Set<String> used = getSuperMembersNames(node); String newName = generateUniqueParameterName(used, parameterName); renameIdentifier(parameter.getIdentifier(), newName); } } } return super.visitMethodDeclaration(node); } private String generateUniqueParameterName(Set<String> used, String name) { int index = 2; while (true) { String newName = name + index; if (!used.contains(newName)) { return newName; } index++; } } }); }
From source file:com.android.tools.idea.tests.gui.gradle.GradleSyncTest.java
@Test public void gradleModelCache() throws IOException { guiTest.importSimpleApplication();/*from ww w . java 2 s . com*/ IdeFrameFixture ideFrameFixture = guiTest.ideFrame(); File projectPath = ideFrameFixture.getProjectPath(); ideFrameFixture.closeProject(); AtomicBoolean syncSkipped = new AtomicBoolean(false); // Reopen project and verify that sync was skipped (i.e. model loaded from cache) execute(new GuiTask() { @Override protected void executeInEDT() throws Throwable { ProjectManagerEx projectManager = ProjectManagerEx.getInstanceEx(); Project project = projectManager.convertAndLoadProject(projectPath.getPath()); GradleSyncState.subscribe(project, new GradleSyncListener.Adapter() { @Override public void syncSkipped(@NotNull Project project) { syncSkipped.set(true); } }); projectManager.openProject(project); } }); Wait.seconds(5).expecting("sync to be skipped").until(syncSkipped::get); }
From source file:org.apache.james.protocols.smtp.AbstractSMTPServerTest.java
@Test public void testDisconnectHandler() throws Exception { final AtomicBoolean called = new AtomicBoolean(false); DisconnectHandler<SMTPSession> handler = new DisconnectHandler<SMTPSession>() { @Override/*from ww w . java2 s . co m*/ public void init(Configuration config) throws ConfigurationException { } @Override public void destroy() { } public void onDisconnect(SMTPSession session) { called.set(true); } }; InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); ProtocolServer server = null; try { server = createServer(createProtocol(handler), address); server.bind(); SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply=" + client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); client.disconnect(); Thread.sleep(1000); assertTrue(called.get()); } finally { if (server != null) { server.unbind(); } } }