@Override public void abort(Transaction tx) { delegate.abort(tx); }
@Override public void abort(Transaction tx) { delegate.abort(tx); }
@Override public void abort(Transaction tx) { delegate.abort(tx); }
@Override public void abort(Transaction tx) { delegate.abort(tx); }
@Override public void abort(Transaction tx) { delegate.abort(tx); }
@Override public void abort(Transaction tx) { delegate.abort(tx); }
@Override public void abort(Transaction tx) { try { delegate.abort(tx); } catch (RuntimeException e) { throw handleException(e); } }
@Override public void abort(Transaction tx) { try { delegate.abort(tx); } catch (RuntimeException e) { throw handleException(e); } }
@Path("/transactions/invalid") @GET public void invalidList(HttpRequest request, HttpResponder responder, @QueryParam("limit") @DefaultValue("-1") int limit) { Transaction tx = txClient.startShort(); txClient.abort(tx); long[] invalids = tx.getInvalids(); if (limit == -1) { responder.sendJson(HttpResponseStatus.OK, GSON.toJson(invalids)); return; } responder.sendJson(HttpResponseStatus.OK, GSON.toJson(Arrays.copyOf(invalids, Math.min(limit, invalids.length)))); }
@Path("/transactions/invalid") @GET public void invalidList(HttpRequest request, HttpResponder responder, @QueryParam("limit") @DefaultValue("-1") int limit) { Transaction tx = txClient.startShort(); txClient.abort(tx); long[] invalids = tx.getInvalids(); if (limit == -1) { responder.sendJson(HttpResponseStatus.OK, GSON.toJson(invalids)); return; } responder.sendJson(HttpResponseStatus.OK, GSON.toJson(Arrays.copyOf(invalids, Math.min(limit, invalids.length)))); }
/** * This is a helper for {@link #start()} and {@link #start(int)}. * * Passes the current transaction to {@link TransactionAware#startTx(Transaction)} for each registered * TransactionAware. If an exception is encountered, the transaction will be aborted and a * {@code TransactionFailureException} wrapping the root cause will be thrown. * * @throws TransactionFailureException if an exception occurs starting the transaction with any registered * TransactionAware */ private void startAllTxAwares() throws TransactionFailureException { for (TransactionAware txAware : txAwares) { try { txAware.startTx(currentTx); } catch (Throwable t) { try { txClient.abort(currentTx); TransactionFailureException tfe = createTransactionFailure("start", txAware, t); LOG.warn(tfe.getMessage()); throw tfe; } finally { currentTx = null; } } } }
/** * Calls {@link TransactionAware#startTx(Transaction)} on all {@link TransactionAware}. */ private void startAllTxAwares() throws TransactionFailureException { for (TransactionAware txAware : getTransactionAwares()) { try { txAware.startTx(currentTx); } catch (Throwable t) { try { txClient.abort(currentTx); throw createTransactionFailure("start", txAware, t); } finally { currentTx = null; } } } }
/** * Calls {@link TransactionAware#startTx(Transaction)} on all {@link TransactionAware}. */ private void startAllTxAwares() throws TransactionFailureException { for (TransactionAware txAware : getTransactionAwares()) { try { txAware.startTx(currentTx); } catch (Throwable t) { try { txClient.abort(currentTx); throw createTransactionFailure("start", txAware, t); } finally { currentTx = null; } } } }
private Transaction startTx(Iterable<TransactionAware> txAwares) throws TransactionFailureException { Transaction transaction = txClient.startLong(); for (TransactionAware txAware : txAwares) { try { txAware.startTx(transaction); } catch (Throwable t) { txClient.abort(transaction); throw new TransactionFailureException( String.format("Unable to start transaction-aware '%s' for transaction %d. ", txAware.getTransactionAwareName(), transaction.getTransactionId()), t); } } return transaction; }
private Transaction startTx(Iterable<TransactionAware> txAwares) throws TransactionFailureException { Transaction transaction = txClient.startLong(); for (TransactionAware txAware : txAwares) { try { txAware.startTx(transaction); } catch (Throwable t) { txClient.abort(transaction); throw new TransactionFailureException( String.format("Unable to start transaction-aware '%s' for transaction %d. ", txAware.getTransactionAwareName(), transaction.getTransactionId()), t); } } return transaction; }
private Transaction startTx(Iterable<TransactionAware> txAwares) throws TransactionFailureException { Transaction transaction = txClient.startLong(); for (TransactionAware txAware : txAwares) { try { txAware.startTx(transaction); } catch (Throwable t) { txClient.abort(transaction); throw new TransactionFailureException( String.format("Unable to start transaction-aware '%s' for transaction %d. ", txAware.getTransactionAwareName(), transaction.getTransactionId()), t); } } return transaction; }
@Override public void collect() throws Exception { Collection<MetricTimeSeries> collection = metricStore.query(new MetricDataQuery(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE, METRICS, Constants.Metrics.TRANSACTION_MANAGER_CONTEXT, Collections.<String>emptyList(), null)); for (MetricTimeSeries metricTimeSeries : collection) { if (metricTimeSeries.getMetricName().equals("system.committing.size")) { numCommittingChangeSets = (int) aggregateMetricValue(metricTimeSeries); } if (metricTimeSeries.getMetricName().equals("system.committed.size")) { numCommittedChangeSets = (int) aggregateMetricValue(metricTimeSeries); } } Transaction transaction = txClient.startShort(); readPointer = transaction.getReadPointer(); writePointer = transaction.getWritePointer(); numInProgressTx = transaction.getInProgress().length; numInvalidTx = transaction.getInvalids().length; txClient.abort(transaction); } }
private void testStringPutGet(Table t, String key, String col, String val) throws Exception { Transaction tx = txClient.startShort(); ((TransactionAware) t).startTx(tx); t.put(new Put(key, col, val)); Row row = t.get(new Get(key)); Assert.assertTrue(!row.isEmpty()); Assert.assertEquals(key, Bytes.toString(row.getRow())); Assert.assertEquals(1, row.getColumns().size()); Assert.assertEquals(col, Bytes.toString(row.getColumns().entrySet().iterator().next().getKey())); Assert.assertEquals(val, Bytes.toString(row.getColumns().entrySet().iterator().next().getValue())); Assert.assertEquals(val, Bytes.toString(row.get(col))); Assert.assertEquals(val, row.getString(col)); ((TransactionAware) t).rollbackTx(); txClient.abort(tx); }
Assert.assertArrayEquals(V4, rows.get(4).get(C4)); txClient.abort(tx); } finally { admin.drop();
@Test public void testBatchWritableKeyIsIgnored() throws Exception { String tableName = "batchWritableTable"; getTableAdmin(CONTEXT1, tableName).create(); try { // write in a transaction, three times, with key = null, a, q, always Put with row = a Transaction tx = txClient.startShort(); Table table = getTable(CONTEXT1, tableName); ((TransactionAware) table).startTx(tx); table.write(null, new Put("a").add("x", "x")); table.write(new byte[]{'q'}, new Put("a").add("y", "y")); table.write(new byte[]{'a'}, new Put("a").add("z", "z")); txClient.canCommitOrThrow(tx, ((TransactionAware) table).getTxChanges()); ((TransactionAware) table).commitTx(); txClient.commitOrThrow(tx); // validate that all writes went to row a, and row q was not written tx = txClient.startShort(); ((TransactionAware) table).startTx(tx); Assert.assertTrue(table.get(new Get("q")).isEmpty()); Row row = table.get(new Get("a")); Assert.assertEquals(3, row.getColumns().size()); Assert.assertEquals("x", row.getString("x")); Assert.assertEquals("y", row.getString("y")); Assert.assertEquals("z", row.getString("z")); ((TransactionAware) table).commitTx(); txClient.abort(tx); } finally { getTableAdmin(CONTEXT1, tableName).drop(); } }