Initialize Tephra site content
Project: http://git-wip-us.apache.org/repos/asf/incubator-tephra/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tephra/commit/1047fad6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tephra/tree/1047fad6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tephra/diff/1047fad6 Branch: refs/heads/site Commit: 1047fad6bb86f50b0ef5a54f8a31a11adb38710e Parents: d1a340a Author: Terence Yim <[email protected]> Authored: Tue Jun 21 00:11:12 2016 -0700 Committer: Terence Yim <[email protected]> Committed: Tue Jun 21 15:20:10 2016 -0700 ---------------------------------------------------------------------- pom.xml | 140 +- src/site/markdown/GettingStarted.md | 463 ++ src/site/markdown/HowToContribute.md | 71 + src/site/markdown/ReleaseGuide.md | 220 + src/site/markdown/index.md | 116 + src/site/markdown/releases/0.8.0-incubating.md | 28 + .../allclasses-frame.html | 258 + .../allclasses-noframe.html | 258 + .../tephra/persist/TransactionEdit.State.html | 398 + .../co/cask/tephra/persist/TransactionEdit.html | 787 ++ .../tephra/persist/TransactionEditCodecs.html | 306 + .../class-use/TransactionEdit.State.html | 173 + .../persist/class-use/TransactionEdit.html | 278 + .../class-use/TransactionEditCodecs.html | 117 + .../co/cask/tephra/persist/package-frame.html | 25 + .../co/cask/tephra/persist/package-summary.html | 156 + .../co/cask/tephra/persist/package-tree.html | 143 + .../co/cask/tephra/persist/package-use.html | 158 + .../constant-values.html | 704 ++ .../deprecated-list.html | 211 + .../apidocs-0.8.0-incubating/help-doc.html | 222 + .../apidocs-0.8.0-incubating/index-all.html | 6942 ++++++++++++++++++ .../apidocs-0.8.0-incubating/index.html | 75 + ...tractTransactionAwareTable.ActionChange.html | 342 + .../tephra/AbstractTransactionAwareTable.html | 650 ++ .../tephra/AbstractTransactionExecutor.html | 472 ++ .../org/apache/tephra/ChangeId.html | 310 + .../tephra/DefaultTransactionExecutor.html | 426 ++ .../tephra/InvalidTruncateTimeException.html | 254 + .../org/apache/tephra/NoRetryStrategy.html | 278 + .../apache/tephra/RetryOnConflictStrategy.html | 278 + .../org/apache/tephra/RetryStrategies.html | 243 + .../org/apache/tephra/RetryStrategy.html | 221 + .../tephra/Transaction.VisibilityLevel.html | 354 + .../org/apache/tephra/Transaction.html | 726 ++ .../org/apache/tephra/TransactionAdmin.html | 261 + .../org/apache/tephra/TransactionAware.html | 358 + .../org/apache/tephra/TransactionAwares.html | 232 + .../org/apache/tephra/TransactionCodec.html | 278 + .../tephra/TransactionConflictException.html | 272 + .../org/apache/tephra/TransactionContext.html | 440 ++ ...ransactionCouldNotTakeSnapshotException.html | 253 + .../tephra/TransactionExecutor.Function.html | 219 + .../tephra/TransactionExecutor.Procedure.html | 219 + .../tephra/TransactionExecutor.Subroutine.html | 216 + .../org/apache/tephra/TransactionExecutor.html | 485 ++ .../tephra/TransactionExecutorFactory.html | 209 + .../tephra/TransactionFailureException.html | 271 + .../tephra/TransactionManager.InProgressTx.html | 420 ++ .../org/apache/tephra/TransactionManager.html | 708 ++ .../TransactionNotInProgressException.html | 258 + .../apache/tephra/TransactionServiceMain.html | 361 + .../apache/tephra/TransactionSystemClient.html | 472 ++ .../org/apache/tephra/TransactionType.html | 328 + .../tephra/TxConstants.ConflictDetection.html | 349 + .../apache/tephra/TxConstants.DataJanitor.html | 290 + .../org/apache/tephra/TxConstants.HBase.html | 300 + .../org/apache/tephra/TxConstants.Manager.html | 494 ++ .../org/apache/tephra/TxConstants.Metrics.html | 292 + .../org/apache/tephra/TxConstants.Persist.html | 288 + .../org/apache/tephra/TxConstants.Service.html | 778 ++ .../tephra/TxConstants.TransactionLog.html | 303 + .../org/apache/tephra/TxConstants.html | 555 ++ ...tractTransactionAwareTable.ActionChange.html | 159 + .../AbstractTransactionAwareTable.html | 159 + .../class-use/AbstractTransactionExecutor.html | 162 + .../org/apache/tephra/class-use/ChangeId.html | 300 + .../class-use/DefaultTransactionExecutor.html | 117 + .../class-use/InvalidTruncateTimeException.html | 227 + .../tephra/class-use/NoRetryStrategy.html | 117 + .../class-use/RetryOnConflictStrategy.html | 117 + .../tephra/class-use/RetryStrategies.html | 117 + .../apache/tephra/class-use/RetryStrategy.html | 211 + .../class-use/Transaction.VisibilityLevel.html | 210 + .../apache/tephra/class-use/Transaction.html | 702 ++ .../tephra/class-use/TransactionAdmin.html | 117 + .../tephra/class-use/TransactionAware.html | 308 + .../tephra/class-use/TransactionAwares.html | 117 + .../tephra/class-use/TransactionCodec.html | 159 + .../class-use/TransactionConflictException.html | 117 + .../tephra/class-use/TransactionContext.html | 117 + ...ransactionCouldNotTakeSnapshotException.html | 221 + .../class-use/TransactionExecutor.Function.html | 192 + .../TransactionExecutor.Procedure.html | 192 + .../TransactionExecutor.Subroutine.html | 186 + .../tephra/class-use/TransactionExecutor.html | 182 + .../class-use/TransactionExecutorFactory.html | 117 + .../class-use/TransactionFailureException.html | 320 + .../TransactionManager.InProgressTx.html | 340 + .../tephra/class-use/TransactionManager.html | 232 + .../TransactionNotInProgressException.html | 267 + .../class-use/TransactionServiceMain.html | 117 + .../class-use/TransactionSystemClient.html | 267 + .../tephra/class-use/TransactionType.html | 323 + .../TxConstants.ConflictDetection.html | 224 + .../class-use/TxConstants.DataJanitor.html | 117 + .../tephra/class-use/TxConstants.HBase.html | 117 + .../tephra/class-use/TxConstants.Manager.html | 117 + .../tephra/class-use/TxConstants.Metrics.html | 117 + .../tephra/class-use/TxConstants.Persist.html | 117 + .../tephra/class-use/TxConstants.Service.html | 117 + .../class-use/TxConstants.TransactionLog.html | 117 + .../apache/tephra/class-use/TxConstants.html | 117 + .../coprocessor/TransactionStateCache.html | 380 + .../TransactionStateCacheSupplier.html | 333 + .../class-use/TransactionStateCache.html | 196 + .../TransactionStateCacheSupplier.html | 117 + .../tephra/coprocessor/package-frame.html | 21 + .../tephra/coprocessor/package-summary.html | 152 + .../apache/tephra/coprocessor/package-tree.html | 135 + .../apache/tephra/coprocessor/package-use.html | 175 + ...AbstractClientProvider.EndpointStrategy.html | 221 + ...ctClientProvider.RandomEndpointStrategy.html | 284 + ...lientProvider.TimeLimitEndpointStrategy.html | 281 + .../distributed/AbstractClientProvider.html | 393 + .../distributed/CloseableThriftClient.html | 283 + .../apache/tephra/distributed/ElasticPool.html | 389 + .../distributed/PooledClientProvider.html | 360 + .../distributed/RetryNTimes.Provider.html | 314 + .../apache/tephra/distributed/RetryNTimes.html | 262 + .../tephra/distributed/RetryStrategy.html | 236 + .../distributed/RetryStrategyProvider.html | 234 + .../distributed/RetryWithBackoff.Provider.html | 314 + .../tephra/distributed/RetryWithBackoff.html | 268 + .../distributed/SingleUseClientProvider.html | 362 + .../distributed/ThreadLocalClientProvider.html | 361 + .../distributed/ThriftClientProvider.html | 280 + .../distributed/TransactionConverterUtils.html | 272 + .../tephra/distributed/TransactionService.html | 387 + .../distributed/TransactionServiceClient.html | 624 ++ .../TransactionServiceThriftClient.html | 516 ++ .../TransactionServiceThriftHandler.html | 570 ++ ...AbstractClientProvider.EndpointStrategy.html | 181 + ...ctClientProvider.RandomEndpointStrategy.html | 117 + ...lientProvider.TimeLimitEndpointStrategy.html | 117 + .../class-use/AbstractClientProvider.html | 173 + .../class-use/CloseableThriftClient.html | 174 + .../distributed/class-use/ElasticPool.html | 117 + .../class-use/PooledClientProvider.html | 117 + .../class-use/RetryNTimes.Provider.html | 117 + .../distributed/class-use/RetryNTimes.html | 117 + .../distributed/class-use/RetryStrategy.html | 190 + .../class-use/RetryStrategyProvider.html | 167 + .../class-use/RetryWithBackoff.Provider.html | 117 + .../distributed/class-use/RetryWithBackoff.html | 117 + .../class-use/SingleUseClientProvider.html | 117 + .../class-use/ThreadLocalClientProvider.html | 117 + .../class-use/ThriftClientProvider.html | 197 + .../class-use/TransactionConverterUtils.html | 117 + .../class-use/TransactionService.html | 117 + .../class-use/TransactionServiceClient.html | 157 + .../TransactionServiceThriftClient.html | 206 + .../TransactionServiceThriftHandler.html | 117 + .../tephra/distributed/package-frame.html | 41 + .../tephra/distributed/package-summary.html | 269 + .../apache/tephra/distributed/package-tree.html | 167 + .../apache/tephra/distributed/package-use.html | 210 + .../distributed/thrift/TBoolean._Fields.html | 399 + .../tephra/distributed/thrift/TBoolean.html | 658 ++ .../TInvalidTruncateTimeException._Fields.html | 399 + .../thrift/TInvalidTruncateTimeException.html | 684 ++ .../thrift/TTransaction._Fields.html | 497 ++ .../tephra/distributed/thrift/TTransaction.html | 1445 ++++ ...onCouldNotTakeSnapshotException._Fields.html | 399 + ...ransactionCouldNotTakeSnapshotException.html | 684 ++ ...ansactionNotInProgressException._Fields.html | 399 + .../TTransactionNotInProgressException.html | 684 ++ .../TTransactionServer.AsyncClient.Factory.html | 273 + ...nsactionServer.AsyncClient.abortTx_call.html | 337 + ...tionServer.AsyncClient.canCommitTx_call.html | 341 + ...ctionServer.AsyncClient.checkpoint_call.html | 339 + ...sactionServer.AsyncClient.commitTx_call.html | 339 + ...tionServer.AsyncClient.getSnapshot_call.html | 337 + .../thrift/TTransactionServer.AsyncClient.html | 644 ++ ...onServer.AsyncClient.invalidTxSize_call.html | 335 + ...ionServer.AsyncClient.invalidateTx_call.html | 337 + ...ctionServer.AsyncClient.resetState_call.html | 335 + ...actionServer.AsyncClient.startLong_call.html | 335 + ...rver.AsyncClient.startShortTimeout_call.html | 337 + ...ctionServer.AsyncClient.startShort_call.html | 335 + ...ansactionServer.AsyncClient.status_call.html | 335 + ...syncClient.truncateInvalidTxBefore_call.html | 339 + ...rver.AsyncClient.truncateInvalidTx_call.html | 337 + .../thrift/TTransactionServer.AsyncIface.html | 445 ++ .../TTransactionServer.Client.Factory.html | 290 + .../thrift/TTransactionServer.Client.html | 1052 +++ .../thrift/TTransactionServer.Iface.html | 439 ++ .../TTransactionServer.Processor.abortTx.html | 318 + ...TransactionServer.Processor.canCommitTx.html | 318 + ...TTransactionServer.Processor.checkpoint.html | 318 + .../TTransactionServer.Processor.commitTx.html | 318 + ...TransactionServer.Processor.getSnapshot.html | 318 + .../thrift/TTransactionServer.Processor.html | 350 + ...ansactionServer.Processor.invalidTxSize.html | 318 + ...ransactionServer.Processor.invalidateTx.html | 318 + ...TTransactionServer.Processor.resetState.html | 318 + .../TTransactionServer.Processor.startLong.html | 318 + ...TTransactionServer.Processor.startShort.html | 318 + ...ctionServer.Processor.startShortTimeout.html | 318 + .../TTransactionServer.Processor.status.html | 318 + ...ctionServer.Processor.truncateInvalidTx.html | 318 + ...erver.Processor.truncateInvalidTxBefore.html | 318 + ...TTransactionServer.abortTx_args._Fields.html | 399 + .../thrift/TTransactionServer.abortTx_args.html | 662 ++ ...ransactionServer.abortTx_result._Fields.html | 365 + .../TTransactionServer.abortTx_result.html | 569 ++ ...nsactionServer.canCommitTx_args._Fields.html | 411 ++ .../TTransactionServer.canCommitTx_args.html | 784 ++ ...actionServer.canCommitTx_result._Fields.html | 411 ++ .../TTransactionServer.canCommitTx_result.html | 745 ++ ...ansactionServer.checkpoint_args._Fields.html | 399 + .../TTransactionServer.checkpoint_args.html | 662 ++ ...sactionServer.checkpoint_result._Fields.html | 411 ++ .../TTransactionServer.checkpoint_result.html | 745 ++ ...TransactionServer.commitTx_args._Fields.html | 399 + .../TTransactionServer.commitTx_args.html | 662 ++ ...ansactionServer.commitTx_result._Fields.html | 411 ++ .../TTransactionServer.commitTx_result.html | 745 ++ ...nsactionServer.getSnapshot_args._Fields.html | 365 + .../TTransactionServer.getSnapshot_args.html | 569 ++ ...actionServer.getSnapshot_result._Fields.html | 411 ++ .../TTransactionServer.getSnapshot_result.html | 771 ++ .../distributed/thrift/TTransactionServer.html | 377 + ...actionServer.invalidTxSize_args._Fields.html | 365 + .../TTransactionServer.invalidTxSize_args.html | 569 ++ ...tionServer.invalidTxSize_result._Fields.html | 399 + ...TTransactionServer.invalidTxSize_result.html | 662 ++ ...sactionServer.invalidateTx_args._Fields.html | 399 + .../TTransactionServer.invalidateTx_args.html | 662 ++ ...ctionServer.invalidateTx_result._Fields.html | 399 + .../TTransactionServer.invalidateTx_result.html | 662 ++ ...ansactionServer.resetState_args._Fields.html | 365 + .../TTransactionServer.resetState_args.html | 569 ++ ...sactionServer.resetState_result._Fields.html | 365 + .../TTransactionServer.resetState_result.html | 569 ++ ...ransactionServer.startLong_args._Fields.html | 365 + .../TTransactionServer.startLong_args.html | 569 ++ ...nsactionServer.startLong_result._Fields.html | 399 + .../TTransactionServer.startLong_result.html | 662 ++ ...onServer.startShortTimeout_args._Fields.html | 399 + ...ransactionServer.startShortTimeout_args.html | 662 ++ ...Server.startShortTimeout_result._Fields.html | 399 + ...nsactionServer.startShortTimeout_result.html | 662 ++ ...ansactionServer.startShort_args._Fields.html | 365 + .../TTransactionServer.startShort_args.html | 569 ++ ...sactionServer.startShort_result._Fields.html | 399 + .../TTransactionServer.startShort_result.html | 662 ++ .../TTransactionServer.status_args._Fields.html | 365 + .../thrift/TTransactionServer.status_args.html | 569 ++ ...TransactionServer.status_result._Fields.html | 399 + .../TTransactionServer.status_result.html | 662 ++ ...er.truncateInvalidTxBefore_args._Fields.html | 399 + ...tionServer.truncateInvalidTxBefore_args.html | 662 ++ ....truncateInvalidTxBefore_result._Fields.html | 411 ++ ...onServer.truncateInvalidTxBefore_result.html | 745 ++ ...onServer.truncateInvalidTx_args._Fields.html | 399 + ...ransactionServer.truncateInvalidTx_args.html | 701 ++ ...Server.truncateInvalidTx_result._Fields.html | 399 + ...nsactionServer.truncateInvalidTx_result.html | 662 ++ .../distributed/thrift/TTransactionType.html | 359 + .../distributed/thrift/TVisibilityLevel.html | 371 + .../thrift/class-use/TBoolean._Fields.html | 226 + .../distributed/thrift/class-use/TBoolean.html | 366 + .../TInvalidTruncateTimeException._Fields.html | 226 + .../TInvalidTruncateTimeException.html | 241 + .../thrift/class-use/TTransaction._Fields.html | 226 + .../thrift/class-use/TTransaction.html | 610 ++ ...onCouldNotTakeSnapshotException._Fields.html | 226 + ...ransactionCouldNotTakeSnapshotException.html | 241 + ...ansactionNotInProgressException._Fields.html | 226 + .../TTransactionNotInProgressException.html | 307 + .../TTransactionServer.AsyncClient.Factory.html | 117 + ...nsactionServer.AsyncClient.abortTx_call.html | 178 + ...tionServer.AsyncClient.canCommitTx_call.html | 181 + ...ctionServer.AsyncClient.checkpoint_call.html | 178 + ...sactionServer.AsyncClient.commitTx_call.html | 178 + ...tionServer.AsyncClient.getSnapshot_call.html | 175 + .../TTransactionServer.AsyncClient.html | 157 + ...onServer.AsyncClient.invalidTxSize_call.html | 175 + ...ionServer.AsyncClient.invalidateTx_call.html | 178 + ...ctionServer.AsyncClient.resetState_call.html | 175 + ...actionServer.AsyncClient.startLong_call.html | 175 + ...rver.AsyncClient.startShortTimeout_call.html | 178 + ...ctionServer.AsyncClient.startShort_call.html | 175 + ...ansactionServer.AsyncClient.status_call.html | 175 + ...syncClient.truncateInvalidTxBefore_call.html | 178 + ...rver.AsyncClient.truncateInvalidTx_call.html | 178 + .../TTransactionServer.AsyncIface.html | 157 + .../TTransactionServer.Client.Factory.html | 117 + .../class-use/TTransactionServer.Client.html | 162 + .../class-use/TTransactionServer.Iface.html | 252 + .../TTransactionServer.Processor.abortTx.html | 117 + ...TransactionServer.Processor.canCommitTx.html | 117 + ...TTransactionServer.Processor.checkpoint.html | 117 + .../TTransactionServer.Processor.commitTx.html | 117 + ...TransactionServer.Processor.getSnapshot.html | 117 + .../class-use/TTransactionServer.Processor.html | 117 + ...ansactionServer.Processor.invalidTxSize.html | 117 + ...ransactionServer.Processor.invalidateTx.html | 117 + ...TTransactionServer.Processor.resetState.html | 117 + .../TTransactionServer.Processor.startLong.html | 117 + ...TTransactionServer.Processor.startShort.html | 117 + ...ctionServer.Processor.startShortTimeout.html | 117 + .../TTransactionServer.Processor.status.html | 117 + ...ctionServer.Processor.truncateInvalidTx.html | 117 + ...erver.Processor.truncateInvalidTxBefore.html | 117 + ...TTransactionServer.abortTx_args._Fields.html | 226 + .../TTransactionServer.abortTx_args.html | 200 + ...ransactionServer.abortTx_result._Fields.html | 226 + .../TTransactionServer.abortTx_result.html | 192 + ...nsactionServer.canCommitTx_args._Fields.html | 226 + .../TTransactionServer.canCommitTx_args.html | 204 + ...actionServer.canCommitTx_result._Fields.html | 226 + .../TTransactionServer.canCommitTx_result.html | 200 + ...ansactionServer.checkpoint_args._Fields.html | 226 + .../TTransactionServer.checkpoint_args.html | 200 + ...sactionServer.checkpoint_result._Fields.html | 226 + .../TTransactionServer.checkpoint_result.html | 200 + ...TransactionServer.commitTx_args._Fields.html | 226 + .../TTransactionServer.commitTx_args.html | 200 + ...ansactionServer.commitTx_result._Fields.html | 226 + .../TTransactionServer.commitTx_result.html | 200 + ...nsactionServer.getSnapshot_args._Fields.html | 226 + .../TTransactionServer.getSnapshot_args.html | 196 + ...actionServer.getSnapshot_result._Fields.html | 226 + .../TTransactionServer.getSnapshot_result.html | 204 + .../thrift/class-use/TTransactionServer.html | 117 + ...actionServer.invalidTxSize_args._Fields.html | 226 + .../TTransactionServer.invalidTxSize_args.html | 196 + ...tionServer.invalidTxSize_result._Fields.html | 226 + ...TTransactionServer.invalidTxSize_result.html | 196 + ...sactionServer.invalidateTx_args._Fields.html | 226 + .../TTransactionServer.invalidateTx_args.html | 200 + ...ctionServer.invalidateTx_result._Fields.html | 226 + .../TTransactionServer.invalidateTx_result.html | 196 + ...ansactionServer.resetState_args._Fields.html | 226 + .../TTransactionServer.resetState_args.html | 196 + ...sactionServer.resetState_result._Fields.html | 226 + .../TTransactionServer.resetState_result.html | 192 + ...ransactionServer.startLong_args._Fields.html | 226 + .../TTransactionServer.startLong_args.html | 196 + ...nsactionServer.startLong_result._Fields.html | 226 + .../TTransactionServer.startLong_result.html | 196 + ...onServer.startShortTimeout_args._Fields.html | 226 + ...ransactionServer.startShortTimeout_args.html | 200 + ...Server.startShortTimeout_result._Fields.html | 226 + ...nsactionServer.startShortTimeout_result.html | 196 + ...ansactionServer.startShort_args._Fields.html | 226 + .../TTransactionServer.startShort_args.html | 196 + ...sactionServer.startShort_result._Fields.html | 226 + .../TTransactionServer.startShort_result.html | 196 + .../TTransactionServer.status_args._Fields.html | 226 + .../TTransactionServer.status_args.html | 196 + ...TransactionServer.status_result._Fields.html | 226 + .../TTransactionServer.status_result.html | 196 + ...er.truncateInvalidTxBefore_args._Fields.html | 226 + ...tionServer.truncateInvalidTxBefore_args.html | 200 + ....truncateInvalidTxBefore_result._Fields.html | 226 + ...onServer.truncateInvalidTxBefore_result.html | 200 + ...onServer.truncateInvalidTx_args._Fields.html | 226 + ...ransactionServer.truncateInvalidTx_args.html | 200 + ...Server.truncateInvalidTx_result._Fields.html | 226 + ...nsactionServer.truncateInvalidTx_result.html | 196 + .../thrift/class-use/TTransactionType.html | 221 + .../thrift/class-use/TVisibilityLevel.html | 221 + .../distributed/thrift/package-frame.html | 132 + .../distributed/thrift/package-summary.html | 646 ++ .../tephra/distributed/thrift/package-tree.html | 279 + .../tephra/distributed/thrift/package-use.html | 498 ++ .../apache/tephra/examples/BalanceBooks.html | 396 + .../tephra/examples/class-use/BalanceBooks.html | 117 + .../apache/tephra/examples/package-frame.html | 20 + .../apache/tephra/examples/package-summary.html | 165 + .../apache/tephra/examples/package-tree.html | 130 + .../org/apache/tephra/examples/package-use.html | 117 + .../hbase/HBase10ConfigurationProvider.html | 291 + .../hbase/HBase11ConfigurationProvider.html | 291 + .../hbase/HBase96ConfigurationProvider.html | 291 + .../hbase/HBase98ConfigurationProvider.html | 291 + .../tephra/hbase/SecondaryIndexTable.html | 330 + .../tephra/hbase/TransactionAwareHTable.html | 1285 ++++ .../class-use/HBase10ConfigurationProvider.html | 117 + .../class-use/HBase11ConfigurationProvider.html | 117 + .../class-use/HBase96ConfigurationProvider.html | 117 + .../class-use/HBase98ConfigurationProvider.html | 117 + .../hbase/class-use/SecondaryIndexTable.html | 117 + .../hbase/class-use/TransactionAwareHTable.html | 117 + .../hbase/coprocessor/CellSkipFilter.html | 534 ++ .../hbase/coprocessor/TransactionFilters.html | 299 + .../hbase/coprocessor/TransactionProcessor.html | 620 ++ .../TransactionVisibilityFilter.html | 594 ++ .../coprocessor/class-use/CellSkipFilter.html | 117 + .../class-use/TransactionFilters.html | 117 + .../class-use/TransactionProcessor.html | 117 + .../class-use/TransactionVisibilityFilter.html | 117 + .../tephra/hbase/coprocessor/package-frame.html | 23 + .../hbase/coprocessor/package-summary.html | 161 + .../tephra/hbase/coprocessor/package-tree.html | 145 + .../tephra/hbase/coprocessor/package-use.html | 117 + .../org/apache/tephra/hbase/package-frame.html | 25 + .../apache/tephra/hbase/package-summary.html | 167 + .../org/apache/tephra/hbase/package-tree.html | 143 + .../org/apache/tephra/hbase/package-use.html | 117 + .../tephra/inmemory/DetachedTxSystemClient.html | 576 ++ .../inmemory/InMemoryTransactionService.html | 477 ++ .../tephra/inmemory/InMemoryTxSystemClient.html | 577 ++ .../tephra/inmemory/MinimalTxSystemClient.html | 571 ++ .../class-use/DetachedTxSystemClient.html | 117 + .../class-use/InMemoryTransactionService.html | 159 + .../class-use/InMemoryTxSystemClient.html | 117 + .../class-use/MinimalTxSystemClient.html | 117 + .../apache/tephra/inmemory/package-frame.html | 23 + .../apache/tephra/inmemory/package-summary.html | 163 + .../apache/tephra/inmemory/package-tree.html | 137 + .../org/apache/tephra/inmemory/package-use.html | 154 + .../tephra/metrics/DefaultMetricsCollector.html | 456 ++ .../apache/tephra/metrics/MetricsCollector.html | 317 + .../tephra/metrics/TxMetricsCollector.html | 443 ++ .../class-use/DefaultMetricsCollector.html | 117 + .../metrics/class-use/MetricsCollector.html | 238 + .../metrics/class-use/TxMetricsCollector.html | 159 + .../apache/tephra/metrics/package-frame.html | 25 + .../apache/tephra/metrics/package-summary.html | 160 + .../org/apache/tephra/metrics/package-tree.html | 146 + .../org/apache/tephra/metrics/package-use.html | 203 + .../org/apache/tephra/package-frame.html | 67 + .../org/apache/tephra/package-summary.html | 412 ++ .../org/apache/tephra/package-tree.html | 201 + .../org/apache/tephra/package-use.html | 536 ++ .../persist/AbstractTransactionLog.Entry.html | 334 + .../tephra/persist/AbstractTransactionLog.html | 477 ++ .../AbstractTransactionStateStorage.html | 360 + .../tephra/persist/CommitMarkerCodec.html | 306 + .../tephra/persist/HDFSTransactionLog.html | 367 + .../HDFSTransactionLogReaderSupplier.html | 269 + .../persist/HDFSTransactionLogReaderV1.html | 325 + .../persist/HDFSTransactionLogReaderV2.html | 327 + .../persist/HDFSTransactionLogReaderV3.html | 327 + .../persist/HDFSTransactionStateStorage.html | 606 ++ .../org/apache/tephra/persist/HDFSUtil.html | 273 + .../tephra/persist/LocalFileTransactionLog.html | 363 + .../LocalFileTransactionStateStorage.html | 579 ++ .../persist/NoOpTransactionStateStorage.html | 608 ++ .../tephra/persist/TransactionEdit.State.html | 398 + .../apache/tephra/persist/TransactionEdit.html | 739 ++ .../tephra/persist/TransactionEditCodecs.html | 296 + .../apache/tephra/persist/TransactionLog.html | 290 + .../tephra/persist/TransactionLogReader.html | 256 + .../tephra/persist/TransactionLogWriter.html | 270 + .../tephra/persist/TransactionSnapshot.html | 534 ++ .../tephra/persist/TransactionStateStorage.html | 462 ++ .../persist/TransactionVisibilityState.html | 297 + .../class-use/AbstractTransactionLog.Entry.html | 161 + .../class-use/AbstractTransactionLog.html | 167 + .../AbstractTransactionStateStorage.html | 167 + .../persist/class-use/CommitMarkerCodec.html | 117 + .../persist/class-use/HDFSTransactionLog.html | 117 + .../HDFSTransactionLogReaderSupplier.html | 117 + .../class-use/HDFSTransactionLogReaderV1.html | 117 + .../class-use/HDFSTransactionLogReaderV2.html | 117 + .../class-use/HDFSTransactionLogReaderV3.html | 117 + .../class-use/HDFSTransactionStateStorage.html | 117 + .../tephra/persist/class-use/HDFSUtil.html | 117 + .../class-use/LocalFileTransactionLog.html | 117 + .../LocalFileTransactionStateStorage.html | 117 + .../class-use/NoOpTransactionStateStorage.html | 117 + .../class-use/TransactionEdit.State.html | 174 + .../persist/class-use/TransactionEdit.html | 347 + .../class-use/TransactionEditCodecs.html | 117 + .../persist/class-use/TransactionLog.html | 227 + .../persist/class-use/TransactionLogReader.html | 202 + .../persist/class-use/TransactionLogWriter.html | 169 + .../persist/class-use/TransactionSnapshot.html | 321 + .../class-use/TransactionStateStorage.html | 225 + .../class-use/TransactionVisibilityState.html | 300 + .../apache/tephra/persist/package-frame.html | 48 + .../apache/tephra/persist/package-summary.html | 303 + .../org/apache/tephra/persist/package-tree.html | 188 + .../org/apache/tephra/persist/package-use.html | 351 + .../apache/tephra/rpc/RPCServiceHandler.html | 232 + .../tephra/rpc/ThriftRPCServer.Builder.html | 310 + .../org/apache/tephra/rpc/ThriftRPCServer.html | 361 + .../tephra/rpc/class-use/RPCServiceHandler.html | 198 + .../rpc/class-use/ThriftRPCServer.Builder.html | 185 + .../tephra/rpc/class-use/ThriftRPCServer.html | 159 + .../org/apache/tephra/rpc/package-frame.html | 25 + .../org/apache/tephra/rpc/package-summary.html | 167 + .../org/apache/tephra/rpc/package-tree.html | 139 + .../org/apache/tephra/rpc/package-use.html | 185 + .../org/apache/tephra/runtime/ConfigModule.html | 279 + .../apache/tephra/runtime/DiscoveryModules.html | 286 + .../tephra/runtime/TransactionClientModule.html | 279 + .../runtime/TransactionInMemoryModule.html | 280 + .../tephra/runtime/TransactionModules.html | 285 + .../TransactionStateStorageProvider.html | 235 + .../org/apache/tephra/runtime/ZKModule.html | 279 + .../tephra/runtime/class-use/ConfigModule.html | 117 + .../runtime/class-use/DiscoveryModules.html | 117 + .../class-use/TransactionClientModule.html | 117 + .../class-use/TransactionInMemoryModule.html | 117 + .../runtime/class-use/TransactionModules.html | 117 + .../TransactionStateStorageProvider.html | 117 + .../tephra/runtime/class-use/ZKModule.html | 117 + .../apache/tephra/runtime/package-frame.html | 26 + .../apache/tephra/runtime/package-summary.html | 175 + .../org/apache/tephra/runtime/package-tree.html | 140 + .../org/apache/tephra/runtime/package-use.html | 117 + .../apache/tephra/snapshot/BinaryDecoder.html | 310 + .../apache/tephra/snapshot/BinaryEncoder.html | 304 + .../tephra/snapshot/DefaultSnapshotCodec.html | 396 + .../apache/tephra/snapshot/SnapshotCodec.html | 270 + .../tephra/snapshot/SnapshotCodecProvider.html | 336 + .../apache/tephra/snapshot/SnapshotCodecV2.html | 326 + .../apache/tephra/snapshot/SnapshotCodecV3.html | 298 + .../apache/tephra/snapshot/SnapshotCodecV4.html | 327 + .../snapshot/class-use/BinaryDecoder.html | 169 + .../snapshot/class-use/BinaryEncoder.html | 199 + .../class-use/DefaultSnapshotCodec.html | 176 + .../snapshot/class-use/SnapshotCodec.html | 190 + .../class-use/SnapshotCodecProvider.html | 183 + .../snapshot/class-use/SnapshotCodecV2.html | 169 + .../snapshot/class-use/SnapshotCodecV3.html | 117 + .../snapshot/class-use/SnapshotCodecV4.html | 117 + .../apache/tephra/snapshot/package-frame.html | 30 + .../apache/tephra/snapshot/package-summary.html | 202 + .../apache/tephra/snapshot/package-tree.html | 146 + .../org/apache/tephra/snapshot/package-use.html | 200 + .../tephra/util/ConfigurationFactory.html | 290 + .../tephra/util/ConfigurationProvider.html | 285 + .../tephra/util/HBaseVersion.Version.html | 411 ++ .../tephra/util/HBaseVersion.VersionNumber.html | 313 + .../org/apache/tephra/util/HBaseVersion.html | 322 + .../util/HBaseVersionSpecificFactory.html | 351 + .../org/apache/tephra/util/TxUtils.html | 381 + .../util/class-use/ConfigurationFactory.html | 117 + .../util/class-use/ConfigurationProvider.html | 177 + .../util/class-use/HBaseVersion.Version.html | 172 + .../class-use/HBaseVersion.VersionNumber.html | 157 + .../tephra/util/class-use/HBaseVersion.html | 117 + .../class-use/HBaseVersionSpecificFactory.html | 117 + .../apache/tephra/util/class-use/TxUtils.html | 117 + .../org/apache/tephra/util/package-frame.html | 29 + .../org/apache/tephra/util/package-summary.html | 185 + .../org/apache/tephra/util/package-tree.html | 147 + .../org/apache/tephra/util/package-use.html | 178 + .../tephra/visibility/DefaultFenceWait.html | 252 + .../org/apache/tephra/visibility/FenceWait.html | 231 + .../tephra/visibility/VisibilityFence.html | 341 + .../visibility/class-use/DefaultFenceWait.html | 117 + .../tephra/visibility/class-use/FenceWait.html | 175 + .../visibility/class-use/VisibilityFence.html | 117 + .../apache/tephra/visibility/package-frame.html | 25 + .../tephra/visibility/package-summary.html | 161 + .../apache/tephra/visibility/package-tree.html | 135 + .../apache/tephra/visibility/package-use.html | 152 + .../tephra/zookeeper/TephraZKClientService.html | 765 ++ .../class-use/TephraZKClientService.html | 117 + .../apache/tephra/zookeeper/package-frame.html | 20 + .../tephra/zookeeper/package-summary.html | 137 + .../apache/tephra/zookeeper/package-tree.html | 134 + .../apache/tephra/zookeeper/package-use.html | 117 + ...eadedSelectorServerWithFix.AcceptThread.html | 345 + ...SelectorServerWithFix.Args.AcceptPolicy.html | 336 + .../TThreadedSelectorServerWithFix.Args.html | 528 ++ ...dedSelectorServerWithFix.SelectorThread.html | 383 + ...erverWithFix.SelectorThreadLoadBalancer.html | 264 + .../server/TThreadedSelectorServerWithFix.html | 521 ++ ...eadedSelectorServerWithFix.AcceptThread.html | 117 + ...SelectorServerWithFix.Args.AcceptPolicy.html | 183 + .../TThreadedSelectorServerWithFix.Args.html | 209 + ...dedSelectorServerWithFix.SelectorThread.html | 173 + ...erverWithFix.SelectorThreadLoadBalancer.html | 174 + .../TThreadedSelectorServerWithFix.html | 117 + .../org/apache/thrift/server/package-frame.html | 25 + .../apache/thrift/server/package-summary.html | 159 + .../org/apache/thrift/server/package-tree.html | 166 + .../org/apache/thrift/server/package-use.html | 167 + .../overview-frame.html | 38 + .../overview-summary.html | 216 + .../apidocs-0.8.0-incubating/overview-tree.html | 536 ++ .../apidocs-0.8.0-incubating/package-list | 18 + .../resources/background.gif | Bin 0 -> 2313 bytes .../apidocs-0.8.0-incubating/resources/tab.gif | Bin 0 -> 291 bytes .../resources/titlebar.gif | Bin 0 -> 10701 bytes .../resources/titlebar_end.gif | Bin 0 -> 849 bytes .../serialized-form.html | 1707 +++++ .../apidocs-0.8.0-incubating/stylesheet.css | 474 ++ src/site/resources/images/tephra_logotype.png | Bin 0 -> 12676 bytes src/site/site.xml | 106 + 589 files changed, 169962 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/1047fad6/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 4455efb..de257a5 100644 --- a/pom.xml +++ b/pom.xml @@ -392,7 +392,7 @@ <plugin> <groupId>org.apache.rat</groupId> <artifactId>apache-rat-plugin</artifactId> - <version>0.10</version> + <version>0.11</version> <executions> <execution> <id>rat-check</id> @@ -614,6 +614,144 @@ </plugins> </build> </profile> + + <profile> + <id>site</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <version>3.4</version> + <dependencies> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-core</artifactId> + <version>1.6</version> + </dependency> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-module-markdown</artifactId> + <version>1.6</version> + </dependency> + <dependency> + <groupId>lt.velykis.maven.skins</groupId> + <artifactId>reflow-velocity-tools</artifactId> + <version>1.1.1</version> + </dependency> + <dependency> + <groupId>org.apache.velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.7</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <version>0.11</version> + <executions> + <execution> + <id>rat-check</id> + <phase>validate</phase> + <goals> + <goal>check</goal> + </goals> + <configuration> + <excludes> + <exclude>build-number.txt</exclude> + <exclude>README.rst</exclude> + <exclude>RELEASING.rst</exclude> + <exclude>**/target/**</exclude> + <exclude>**/.git/**</exclude> + <exclude>.gitignore</exclude> + <exclude>**/.idea/**</exclude> + <exclude>**/*.iml</exclude> + <exclude>**/.project</exclude> + <exclude>**/.classpath</exclude> + <exclude>**/.settings/**</exclude> + <exclude>src/site/resources/**</exclude> + </excludes> + </configuration> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-core</artifactId> + <version>1.6</version> + <exclusions> + <!-- Exclude xerces to remove XML parsing warnings (RAT-158) --> + <exclusion> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + </exclusion> + </exclusions> + </dependency> + </dependencies> + </plugin> + </plugins> + </build> + + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-project-info-reports-plugin</artifactId> + <version>2.7</version> + <reportSets> + <reportSet> + <reports/> + </reportSet> + <reportSet> + <id>aggregate</id> + <inherited>false</inherited> + <reports> + <report>index</report> + <report>mailing-list</report> + <report>scm</report> + <report>issue-tracking</report> + <report>project-team</report> + </reports> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <configuration> + <failOnError>false</failOnError> + <links> + <link>http://download.oracle.com/javase/7/docs/api/</link> + </links> + <bottom> + <![CDATA[Copyright © 2016 <a href="http://www.apache.org">The Apache Software Foundation</a>. All rights reserved.]]> + </bottom> + </configuration> + <reportSets> + <!--<reportSet>--> + <!--<reports>--> + <!--<report>javadoc</report>--> + <!--</reports>--> + <!--</reportSet>--> + <reportSet> + <id>aggregate</id> + <inherited>false</inherited> + <reports> + <report>aggregate</report> + </reports> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-report-plugin</artifactId> + <version>2.14.1</version> + </plugin> + </plugins> + </reporting> + </profile> </profiles> </project> http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/1047fad6/src/site/markdown/GettingStarted.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/GettingStarted.md b/src/site/markdown/GettingStarted.md new file mode 100644 index 0000000..ff03018 --- /dev/null +++ b/src/site/markdown/GettingStarted.md @@ -0,0 +1,463 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<head> + <title>Getting Started</title> +</head> + +## Getting Started +You can get started with Tephra by building directly from the latest source code: + +```sh + git clone https://git-wip-us.apache.org/repos/asf/incubator-tephra.git + cd incubator-tephra + mvn clean package +``` + +After the build completes, you will have a full binary distribution of Tephra under the +`tephra-distribution/target/` directory. Take the `tephra-<version>.tar.gz` file and install +it on your systems. + +For any client applications, add the following dependencies to any Apache Maven POM files (or your +build system's equivalent configuration), in order to make use of Tephra classes: + +```xml + <dependency> + <groupId>org.apache.tephra</groupId> + <artifactId>tephra-api</artifactId> + <version>${tephra.version}</version> + </dependency> + <dependency> + <groupId>org.apache.tephra</groupId> + <artifactId>tephra-core</artifactId> + <version>${tephra.version}</version> + </dependency> +``` + +Since the HBase APIs have changed between versions, you will need to select the +appropriate HBase compatibility library. + +For HBase 0.96.x: + +```xml + <dependency> + <groupId>org.apache.tephra</groupId> + <artifactId>tephra-hbase-compat-0.96</artifactId> + <version>${tephra.version}</version> + </dependency> +``` + +For HBase 0.98.x: + +```xml + <dependency> + <groupId>org.apache.tephra</groupId> + <artifactId>tephra-hbase-compat-0.98</artifactId> + <version>${tephra.version}</version> + </dependency> +``` + +For HBase 1.0.x: + +```xml + <dependency> + <groupId>org.apache.tephra</groupId> + <artifactId>tephra-hbase-compat-1.0</artifactId> + <version>${tephra.version}</version> + </dependency> +``` + +If you are running the CDH 5.4, 5.5, or 5.6 version of HBase 1.0.x (this version contains API incompatibilities +with Apache HBase 1.0.x): + +```xml + <dependency> + <groupId>org.apache.tephra</groupId> + <artifactId>tephra-hbase-compat-1.0-cdh</artifactId> + <version>${tephra.version}</version> + </dependency> +``` + +For HBase 1.1.x or HBase 1.2.x: + +```xml + <dependency> + <groupId>org.apache.tephra</groupId> + <artifactId>tephra-hbase-compat-1.1</artifactId> + <version>${tephra.version}</version> + </dependency> +``` + +## Deployment and Configuration +Tephra makes use of a central transaction server to assign unique transaction IDs for data +modifications and to perform conflict detection. Only a single transaction server can actively +handle client requests at a time, however, additional transaction server instances can be run +simultaneously, providing automatic failover if the active server becomes unreachable. + +### Transaction Server Configuration +The Tephra transaction server can be deployed on the same cluster nodes running the HBase HMaster +process. The transaction server requires that the HBase libraries be available on the server's +Java `CLASSPATH`. + +The transaction server supports the following configuration properties. All configuration +properties can be added to the `hbase-site.xml` file on the server's `CLASSPATH`: + + +| Name | Default | Description | +|-----------------------------|------------|-----------------------------------------------------------------| +| `data.tx.bind.port` | 15165 | Port to bind to | +| `data.tx.bind.address` | 0.0.0.0 | Server address to listen on | +| `data.tx.server.io.threads` | 2 | Number of threads for socket IO | +| `data.tx.server.threads` | 20 | Number of handler threads | +| `data.tx.timeout` | 30 | Timeout for a transaction to complete (seconds) | +| `data.tx.long.timeout` | 86400 | Timeout for a long running transaction to complete (seconds) | +| `data.tx.cleanup.interval` | 10 | Frequency to check for timed out transactions (seconds) | +| `data.tx.snapshot.dir` | | HDFS directory used to store snapshots of tx state | +| `data.tx.snapshot.interval` | 300 | Frequency to write new snapshots | +| `data.tx.snapshot.retain` | 10 | Number of old transaction snapshots to retain | +| `data.tx.metrics.period` | 60 | Frequency for metrics reporting (seconds) | + +To run the Transaction server, execute the following command in your Tephra installation: + +```sh + ./bin/tephra start +``` + +Any environment-specific customizations can be made by editing the `bin/tephra-env.sh` script. + + +### Client Configuration +Since Tephra clients will be communicating with HBase, the HBase client libraries and the HBase cluster +configuration must be available on the client's Java `CLASSPATH`. + +Client API usage is described in the Client APIs section. + +The transaction service client supports the following configuration properties. All configuration +properties can be added to the `hbase-site.xml` file on the client's `CLASSPATH`: + +| Name | Default | Description | +|----------------------------------------|-----------|-----------------------------------------------| +| `data.tx.client.timeout` | 30000 | Client socket timeout (milliseconds) | +| `data.tx.client.provider` | pool | Client provider strategy: <ul><li>"pool" uses a pool of clients</li><li>"thread-local" a client per thread</li></ul> Note that "thread-local" provider can have a resource leak if threads are recycled | +| `data.tx.client.count` | 50 | Max number of clients for "pool" provider | +| `data.tx.client.obtain.timeout` | 3000 | Timeout (milliseconds) to wait when obtaining clients from the "pool" provider | +| `data.tx.client.retry.strategy` | backoff | Client retry strategy: "backoff" for back off between attempts; "n-times" for fixed number of tries | +| `data.tx.client.retry.attempts` | 2 | Number of times to retry ("n-times" strategy) | +| `data.tx.client.retry.backoff.initial` | 100 | Initial sleep time ("backoff" strategy) | +| `data.tx.client.retry.backoff.factor` | 4 | Multiplication factor for sleep time | +| `data.tx.client.retry.backoff.limit` | 30000 | Exit when sleep time reaches this limit | + + +### HBase Coprocessor Configuration + +In addition to the transaction server, Tephra requires an HBase coprocessor to be installed on all +tables where transactional reads and writes will be performed. + +To configure the coprocessor on all HBase tables, add the following to `hbase-site.xml`: + +```xml + <property> + <name>hbase.coprocessor.region.classes</name> + <value>org.apache.tephra.hbase.coprocessor.TransactionProcessor</value> + </property> +``` + +You may configure the `TransactionProcessor` to be loaded only on HBase tables that you will +be using for transaction reads and writes. However, you must ensure that the coprocessor is +available on all impacted tables in order for Tephra to function correctly. + +### Using Existing HBase Tables Transactionally + +Tephra overrides HBase cell timestamps with transaction IDs, and uses these transaction +IDs to filter out cells older than the TTL (Time-To-Live). Transaction IDs are at a higher +scale than cell timestamps. When a regular HBase table that has existing data is +converted to a transactional table, existing data may be filtered out during reads. To +allow reading of existing data from a transactional table, you will need to set the +property `data.tx.read.pre.existing` as `true` on the table's table descriptor. + +Note that even without the property `data.tx.read.pre.existing` being set to `true`, +any existing data will not be removed during compactions. Existing data simply won't be +visible during reads. + +### Metrics Reporting + +Tephra ships with built-in support for reporting metrics via JMX and a log file, using the +[Dropwizard Metrics](http://metrics.dropwizard.io) library. + +To enable JMX reporting for metrics, you will need to enable JMX in the Java runtime +arguments. Edit the `bin/tephra-env.sh` script and uncomment the following lines, making any +desired changes to configuration for port used, SSL, and JMX authentication: + +```sh + export JMX_OPTS="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=13001" + export OPTS="$OPTS $JMX_OPTS" +``` + +To enable file-based reporting for metrics, edit the `conf/logback.xml` file and uncomment the +following section, replacing the `FILE-PATH` placeholder with a valid directory on the local +filesystem: + +```xml + <appender name="METRICS" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>/FILE-PATH/metrics.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>metrics.log.%d{yyyy-MM-dd}</fileNamePattern> + <maxHistory>30</maxHistory> + </rollingPolicy> + <encoder> + <pattern>%d{ISO8601} %msg%n</pattern> + </encoder> + </appender> + <logger name="tephra-metrics" level="TRACE" additivity="false"> + <appender-ref ref="METRICS" /> + </logger> +``` + +The frequency of metrics reporting may be configured by setting the `data.tx.metrics.period` +configuration property to the report frequency in seconds. + + +## Client APIs + +The `TransactionAwareHTable` class implements HBase's `HTableInterface`, thus providing the same APIs +that a standard HBase `HTable` instance provides. Only certain operations are supported +transactionally. These are: + +| Methods Supported In Transactions | +|---------------------------------------------------------------------------------------------------| +| `exists(Get get)` | +| `exists(List<Get> gets)` | +| `get(Get get)` | +| `get(List<Get> gets)` | +| `batch(List<? extends Row> actions, Object[] results)` | +| `batch(List<? extends Row> actions)` | +| `batchCallback(List<? extends Row> actions, Object[] results, Batch.Callback<R> callback)` [0.96] | +| `batchCallback(List<? extends Row> actions, Batch.Callback<R> callback)` [0.96] | +| `getScanner(byte[] family)` | +| `getScanner(byte[] family, byte[] qualifier)` | +| `put(Put put)` | +| `put(List<Put> puts)` | +| `delete(Delete delete)` | +| `delete(List<Delete> deletes)` | + +Other operations are not supported transactionally and will throw an ``UnsupportedOperationException`` if invoked. +To allow use of these non-transactional operations, call ``setAllowNonTransactional(true)``. This +allows you to call the following methods non-transactionally: + +| Methods Supported Outside of Transactions | +|---------------------------------------------------------------------------------------------------------| +| `getRowOrBefore(byte[] row, byte[], family)` | +| `checkAndPut(byte[] row, byte[] family, byte[] qualifier, byte[] value, Put put)` | +| `checkAndDelete(byte[] row, byte[] family, byte[] qualifier, byte[] value, Delete delete)` | +| `mutateRow(RowMutations rm)` | +| `append(Append append)` | +| `increment(Increment increment)` | +| `incrementColumnValue(byte[] row, byte[] family, byte[] qualifier, long amount)` | +| `incrementColumnValue(byte[] row, byte[] family, byte[] qualifier, long amount, Durability durability)` | +| `incrementColumnValue(byte[] row, byte[] family, byte[] qualifier, long amount, boolean writeToWAL)` | + +Note that for `batch` operations, only certain supported operations (`get`, `put`, and `delete`) +are applied transactionally. + +### Usage + +To use a `TransactionalAwareHTable`, you need an instance of `TransactionContext`. +`TransactionContext` provides the basic contract for client use of transactions. At each point +in the transaction lifecycle, it provides the necessary interactions with the Tephra Transaction +Server in order to start, commit, and rollback transactions. Basic usage of +`TransactionContext` is handled using the following pattern: + +```java + TransactionContext context = new TransactionContext(client, transactionAwareHTable); + try { + context.start(); + transactionAwareHTable.put(new Put(Bytes.toBytes("row")); + // ... + context.finish(); + } catch (TransactionFailureException e) { + context.abort(); + } +``` + +1. First, a new transaction is started using `TransactionContext.start()`. +1. Next, any data operations are performed within the context of the transaction. +1. After data operations are complete, `TransactionContext.finish()` is called to commit the + transaction. +1. If an exception occurs, `TransactionContext.abort()` can be called to rollback the + transaction. + +`TransactionAwareHTable` handles the details of performing data operations transactionally, and +implements the necessary hooks in order to commit and rollback the data changes (see +`TransactionAware`). + +### Example + +To demonstrate how you might use `TransactionAwareHTable`\s, below is a basic implementation of a +`SecondaryIndexTable`. This class encapsulates the usage of a `TransactionContext` and provides a simple interface +to a user: + +```java + /** + * A Transactional SecondaryIndexTable. + */ + public class SecondaryIndexTable { + private byte[] secondaryIndex; + private TransactionAwareHTable transactionAwareHTable; + private TransactionAwareHTable secondaryIndexTable; + private TransactionContext transactionContext; + private final TableName secondaryIndexTableName; + private static final byte[] secondaryIndexFamily = + Bytes.toBytes("secondaryIndexFamily"); + private static final byte[] secondaryIndexQualifier = Bytes.toBytes('r'); + private static final byte[] DELIMITER = new byte[] {0}; + + public SecondaryIndexTable(TransactionServiceClient transactionServiceClient, + HTable hTable, byte[] secondaryIndex) { + secondaryIndexTableName = + TableName.valueOf(hTable.getName().getNameAsString() + ".idx"); + HTable secondaryIndexHTable = null; + HBaseAdmin hBaseAdmin = null; + try { + hBaseAdmin = new HBaseAdmin(hTable.getConfiguration()); + if (!hBaseAdmin.tableExists(secondaryIndexTableName)) { + hBaseAdmin.createTable(new HTableDescriptor(secondaryIndexTableName)); + } + secondaryIndexHTable = new HTable(hTable.getConfiguration(), + secondaryIndexTableName); + } catch (Exception e) { + Throwables.propagate(e); + } finally { + try { + hBaseAdmin.close(); + } catch (Exception e) { + Throwables.propagate(e); + } + } + + this.secondaryIndex = secondaryIndex; + this.transactionAwareHTable = new TransactionAwareHTable(hTable); + this.secondaryIndexTable = new TransactionAwareHTable(secondaryIndexHTable); + this.transactionContext = new TransactionContext(transactionServiceClient, + transactionAwareHTable, + secondaryIndexTable); + } + + public Result get(Get get) throws IOException { + return get(Collections.singletonList(get))[0]; + } + + public Result[] get(List<Get> gets) throws IOException { + try { + transactionContext.start(); + Result[] result = transactionAwareHTable.get(gets); + transactionContext.finish(); + return result; + } catch (Exception e) { + try { + transactionContext.abort(); + } catch (TransactionFailureException e1) { + throw new IOException("Could not rollback transaction", e1); + } + } + return null; + } + + public Result[] getByIndex(byte[] value) throws IOException { + try { + transactionContext.start(); + Scan scan = new Scan(value, Bytes.add(value, new byte[0])); + scan.addColumn(secondaryIndexFamily, secondaryIndexQualifier); + ResultScanner indexScanner = secondaryIndexTable.getScanner(scan); + + ArrayList<Get> gets = new ArrayList<Get>(); + for (Result result : indexScanner) { + for (Cell cell : result.listCells()) { + gets.add(new Get(cell.getValue())); + } + } + Result[] results = transactionAwareHTable.get(gets); + transactionContext.finish(); + return results; + } catch (Exception e) { + try { + transactionContext.abort(); + } catch (TransactionFailureException e1) { + throw new IOException("Could not rollback transaction", e1); + } + } + return null; + } + + public void put(Put put) throws IOException { + put(Collections.singletonList(put)); + } + + + public void put(List<Put> puts) throws IOException { + try { + transactionContext.start(); + ArrayList<Put> secondaryIndexPuts = new ArrayList<Put>(); + for (Put put : puts) { + List<Put> indexPuts = new ArrayList<Put>(); + Set<Map.Entry<byte[], List<KeyValue>>> familyMap = put.getFamilyMap().entrySet(); + for (Map.Entry<byte [], List<KeyValue>> family : familyMap) { + for (KeyValue value : family.getValue()) { + if (value.getQualifier().equals(secondaryIndex)) { + byte[] secondaryRow = Bytes.add(value.getQualifier(), + DELIMITER, + Bytes.add(value.getValue(), + DELIMITER, + value.getRow())); + Put indexPut = new Put(secondaryRow); + indexPut.add(secondaryIndexFamily, secondaryIndexQualifier, put.getRow()); + indexPuts.add(indexPut); + } + } + } + secondaryIndexPuts.addAll(indexPuts); + } + transactionAwareHTable.put(puts); + secondaryIndexTable.put(secondaryIndexPuts); + transactionContext.finish(); + } catch (Exception e) { + try { + transactionContext.abort(); + } catch (TransactionFailureException e1) { + throw new IOException("Could not rollback transaction", e1); + } + } + } + } +``` + +## Known Issues and Limitations + +- Currently, column family `Delete` operations are implemented by writing a cell with an empty + qualifier (empty `byte[]`) and empty value (empty `byte[]`). This is done in place of + native HBase `Delete` operations so the delete marker can be rolled back in the event of + a transaction failure -- normal HBase `Delete` operations cannot be undone. However, this + means that applications that store data in a column with an empty qualifier will not be able to + store empty values, and will not be able to transactionally delete that column. +- Column `Delete` operations are implemented by writing a empty value (empty `byte[]`) to the + column. This means that applications will not be able to store empty values to columns. +- Invalid transactions are not automatically cleared from the exclusion list. When a transaction is + invalidated, either from timing out or being invalidated by the client due to a failure to rollback + changes, its transaction ID is added to a list of excluded transactions. Data from invalidated + transactions will be dropped by the `TransactionProcessor` coprocessor on HBase region flush + and compaction operations. Currently, however, transaction IDs can only be manually removed + from the list of excluded transaction IDs, using the `org.apache.tephra.TransactionAdmin` tool. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/1047fad6/src/site/markdown/HowToContribute.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/HowToContribute.md b/src/site/markdown/HowToContribute.md new file mode 100644 index 0000000..381a048 --- /dev/null +++ b/src/site/markdown/HowToContribute.md @@ -0,0 +1,71 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<head> + <title>How to Contribute</title> +</head> + +## Contributing to Apache Tephra + +The Apache Tephra team welcome all types of contributions, whether they are bug reports, feature requests, +documentation, or code patches. + +### Reporting Issues + +To report bugs or request new features, please open an issue in the +[Apache Tephra JIRA](https://issues.apache.org/jira/browse/TEPHRA). You can also use the +[dev mailing list](mail-lists.html) for general questions or discussions. + +### Contributing Code + +We prefer contributions through [GitHub](https://github.com/apache/incubator-tephra) pull requests. Please follow +these steps to get your contributions in: + +1. Open a new issue or pick up an existing one in the [Apache TEPHRA JIRA](https://issues.apache.org/jira/browse/TEPHRA) + about the patch that you are going to submit. +2. If you are proposing public API changes or big changes, please attach a design document to the JIRA. You + can also use the [dev mailing list](mail-lists.html) to discuss it first. This will help us understand your needs + and best guide your solution in a way that fits the project. +3. [Fork](https://help.github.com/articles/fork-a-repo) the + [Apache Tephra GitHub repo.](https://github.com/apache/incubator-tephra) +4. Make the changes and send a [pull request](https://help.github.com/articles/using-pull-requests) from your + forked repo to the Apache Tephra repo. +5. Please prefix your pull request title with the JIRA issue ID; for example, `(TEPHRA-35) Added invalid transaction pruning`. +6. Please complete the pull request description with additional details as appropriate. +7. Once sent, code review will be done through the pull request. +8. Once all review issues are resolved, we will merge the changes into the `master` branch of the Apache Tephra repo. + +### How to Merge Code Changes + +Committer can merge code changes that are already reviewed into the `master` branch with the following steps: + +1. Make sure the GitHub pull request is squashed into one commit. If not, ask the patch contributor to help doing so. + +2. Download the patch file from GitHub. You can append `.patch` to the end of the GitHub pull request URL to get the patch file. + + curl -L -O https://github.com/apache/incubator-tephra/pull/${PR_NUMBER}.patch +3. Edit the patch file and add the following line in the commit message for closing the pull request. + + This closes #${PR_NUMBER} from GitHub. +4. Apply the patch and push it back to remote repo. Make sure you apply it on the latest `master` branch. + + git checkout master + git pull origin master + git am --signoff < ${PR_NUMBER} + git push origin master +5. Close the JIRA issue associated with the patch. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/1047fad6/src/site/markdown/ReleaseGuide.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/ReleaseGuide.md b/src/site/markdown/ReleaseGuide.md new file mode 100644 index 0000000..050d21c --- /dev/null +++ b/src/site/markdown/ReleaseGuide.md @@ -0,0 +1,220 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<head> + <title>Release Guide</title> +</head> + +This page describes the step-by-step process of how to perform an official Apache Tephra version release, +including deploying the release artifacts to Maven repositories and the additional administrative +steps to complete the release process. + +## Prerequisites + +### Maven Settings File +Prior to performing an Apache Tephra release, you must have an entry such as this in your +`~/.m2/settings.xml` file to authenticate when deploying the release artifacts: + +```xml + <?xml version="1.0" encoding="UTF-8"?> + <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" + xmlns="http://maven.apache.org/SETTINGS/1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <servers> + <server> + <id>apache.snapshots.https</id> + <username>USERNAME</username> + <password>PASSWORD</password> + </server> + <server> + <id>apache.releases.https</id> + <username>USERNAME</username> + <password>PASSWORD</password> + </server> + </servers> + </settings> +``` + +Replace `USERNAME` and `PASSWORD` with the correct values for your user account. See the +[Maven Encryption Guide](http://maven.apache.org/guides/mini/guide-encryption.html) for details +on how to avoid storing the plaintext password in the `settings.xml` file. + +### PGP Key +You will also need to have created a PGP (or GPG) key pair, which will be used in signing the release +artifacts. For more information on using the Maven GPG plugin, see this +[introduction](http://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/) from Sonatype and +the Maven GPG Plugin [usage page](https://maven.apache.org/plugins/maven-gpg-plugin/usage.html). +You may also want to run gpg-agent in order to avoid being prompted multiple times for the GPG key passphrase when +performing a release. + + +## Performing the Release + +### Ensure Local Branch is Up-to-date +First, make sure your local copy of the `master` branch is up-to-date with all changes: + +```sh + git checkout master + git pull +``` + +### Create the Release Branch +Next, create a release branch from `master`: + +```sh + git checkout -b release/N.N.N +``` + +replacing `N.N.N` with the desired release version. + +### Prepare the Release +While on the release branch, prepare the release: + +```sh + mvn clean release:prepare -P apache-release +``` + +This will prompt you for the release version and the git tag to use for the release. By +convention, we use `vN.N.N` for the release tag (ie. v0.6.0 for release 0.6.0). + +### Perform the Release +Perform the release by running: + +```sh + mvn release:perform -P apache-release +``` + +This will checkout the source code using the release tag, build the release and deploy it to the +repository.apache.org repository. Also it creates a source tarball +`apache-tephra-0.8.0-incubating-SNAPSHOT-source-release.tar.gz` under the `target` directory. + +### Prepare Release Artifacts +1. Checkin the source release tarball, together with the signature, md5 and sha512 files found in + `target/` directory + to `dist.apache.org/repos/dist/dev/incubator/tephra/${RELEASE_VERSION}-incubating-rc1/src/`. +1. Create a CHANGES.txt file to describe the changes in the release and checkin the file to + `dist.apache.org/repos/dist/dev/incubator/tephra/${RELEASE_VERSION}-incubating-rc1/CHANGES.txt`. +1. Close the staging repository at <https://repository.apache.org> + + +### Update POM Version in master +Update the POMs in `master` by: + +```sh + git checkout master + git merge release/N.N.N + git push origin master +``` + +### Vote for the Release in Dev Mailing List +Create a vote in the dev@tephra mailing list, and wait for 72 hours for the vote result. +Here is a template for the email: + +``` + Subject: [VOTE] Release of Apache Tephra-${RELEASE_VERSION}-incubating [rc1] + ============================================================================ + + Hi all, + + This is a call for a vote on releasing Apache Tephra ${RELEASE_VERSION}-incubating, release candidate 1. This + is the [Nth] release of Tephra. + + The source tarball, including signatures, digests, etc. can be found at: + https://dist.apache.org/repos/dist/dev/incubator/tephra/${RELEASE_VERSION}-incubating-rc1/src + + The tag to be voted upon is v${RELEASE_VERSION}-incubating: + https://git-wip-us.apache.org/repos/asf?p=incubator-tephra.git;a=shortlog;h=refs/tags/v${RELEASE_VERSION}-incubating + + The release hash is [REF]: + https://git-wip-us.apache.org/repos/asf?p=incubator-tephra.git;a=commit;h=[REF] + + The Nexus Staging URL: + https://repository.apache.org/content/repositories/orgapachetephra-[STAGE_ID] + + Release artifacts are signed with the following key: + [URL_TO_SIGNER_PUBLIC_KEY] + + KEYS file available: + https://dist.apache.org/repos/dist/dev/incubator/tephra/KEYS + + For information about the contents of this release, see: + https://dist.apache.org/repos/dist/dev/incubator/tephra/${RELEASE_VERSION}-incubating-rc1/CHANGES.txt + + Please vote on releasing this package as Apache Tephra ${RELEASE_VERSION}-incubating + + The vote will be open for 72 hours. + + [ ] +1 Release this package as Apache Tephra ${RELEASE_VERSION}-incubating + [ ] +0 no opinion + [ ] -1 Do not release this package because ... + + Thanks, + [YOUR_NAME] +``` + +### Consolidate Vote Result +After the vote is up for 72 hours and having at least three +1 binding votes and no -1 votes, +close the vote by replying to the voting thread. Here is a template for the reply email: + +``` + Subject: [RESULT][VOTE] Release of Apache Tephra-${RELEASE_VERSION}-incubating [rc1] + ================================================================================== + + Hi all, + + After being opened for over 72 hours, the vote for releasing Apache Tephra + ${RELEASE_VERSION}-incubating passed with n binding +1s and no 0 or -1. + + Binding +1s: + [BINDING_+1_NAMES] + + I am going to create a vote in the general@ list. + + Thanks, + [YOUR_NAME] +``` + +### Vote for the Release from IPMC +1. Create a vote in the general@ mailing list for the IPMC to vote for the release. +1. Wait for 72 hours for the vote result. Use the same template as the dev vote, with the addition + of links to the dev vote and result mail thread. +1. After the vote in general@ is completed with at least three +1 binding votes, close the vote by + replying to the voting thread. + +### Release the Staging Repository in Artifactory +Release the artifact bundle in Artifactory: + +1. Login to <https://repository.apache.org>. +1. Go to "Staging Repos". +1. Find the "orgapachetephra" repo with the Tephra release. Be sure to expand the contents of the + repo to confirm that it contains the correct Tephra artifacts. +1. Click on the "Release" button at top, and enter a brief description, such as "Apache Tephra N.N.N + release". + +## Announcing and Completing the Release +Mark the release as complete in JIRA (in the Apache Tephra Administration section): + +1. Add a release for the next version, if necessary +1. Set a release date and release the released version + +Release the source tarball: + +1. Copy the release artifacts and CHANGES.txt from the dev to release directory at + `dist.apache.org/repos/dist/release/incubator/tephra/${RELEASE_VERSION}-incubating` + +Finally, announce the release on the mailing lists: dev@tephra and announce@ \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/1047fad6/src/site/markdown/index.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md new file mode 100644 index 0000000..7247389 --- /dev/null +++ b/src/site/markdown/index.md @@ -0,0 +1,116 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<head> + <title>Home</title> +</head> + +## What is Apache Tephra <sup>(TM)</sup> +__Transactions for Apache HBase <sup>(TM)</sup>__: Apache Tephra provides globally consistent +transactions on top of Apache HBase. While HBase provides strong consistency with row- or +region-level ACID operations, it sacrifices cross-region and cross-table consistency in favor of +scalability. This trade-off requires application developers to handle the complexity of ensuring +consistency when their modifications span region boundaries. By providing support for global +transactions that span regions, tables, or multiple RPCs, Tephra simplifies application development +on top of HBase, without a significant impact on performance or scalability for many workloads. + +## How It Works +Tephra leverages HBase's native data versioning to provide multi-versioned concurrency +control (MVCC) for transactional reads and writes. With MVCC capability, each transaction +sees its own consistent "snapshot" of data, providing +[snapshot isolation](http://en.wikipedia.org/wiki/Snapshot_isolation) of concurrent transactions. + +Tephra consists of three main components: + +- __Transaction Server__ - maintains global view of transaction state, assigns new transaction IDs + and performs conflict detection; +- __Transaction Client__ - coordinates start, commit, and rollback of transactions; and +- __TransactionProcessor Coprocessor__ - applies filtering to the data read (based on a + given transaction's state) and cleans up any data from old (no longer visible) transactions. + +### Transaction Server +A central transaction manager generates a globally unique, time-based transaction ID for each +transaction that is started, and maintains the state of all in-progress and recently committed +transactions for conflict detection. While multiple transaction server instances can be run +concurrently for automatic failover, only one server instance is actively serving requests at a +time. This is coordinated by performing leader election amongst the running instances through +[Apache ZooKeeper](https://zookeeper.apache.org). The active transaction server instance will +also register itself using a service discovery interface in ZooKeeper, allowing clients to +discover the currently active server instance without additional configuration. + +### Transaction Client +A client makes a call to the active transaction server in order to start a new transaction. This +returns a new transaction instance to the client, with a unique transaction ID (used to identify +writes for the transaction), as well as a list of transaction IDs to exclude for reads (from +in-progress or invalidated transactions). When performing writes, the client overrides the +timestamp for all modified HBase cells with the transaction ID. When reading data from HBase, the +client skips cells associated with any of the excluded transaction IDs. The read exclusions are +applied through a server-side filter injected by the `TransactionProcessor` coprocessor. + +### TransactionProcessor Coprocessor +The `TransactionProcessor` coprocessor is loaded on all HBase tables where transactional reads +and writes are performed. When clients read data, it coordinates the server-side filtering +performed based on the client transaction's snapshot. Data cells from any transactions that are +currently in-progress or those that have failed and could not be rolled back ("invalid" +transactions) will be skipped on these reads. In addition, the `TransactionProcessor` cleans +up any data versions that are no longer visible to any running transactions, either because the +transaction that the cell is associated with failed or a write from a newer transaction was +successfully committed to the same column. + +More details on how Tephra transactions work and the interactions between these components can be +found in our [Transactions over HBase](http://www.slideshare.net/alexbaranau/transactions-over-hbase) +presentation. + +## Is It Building? +Status of CI build at Travis CI: [](https://travis-ci.org/apache/incubator-tephra) + +## Requirements +### Java Runtime +The latest [JDK or JRE version 1.7.xx or 1.8.xx](http://www.java.com/en/download/manual.jsp) +for Linux, Windows, or Mac OS X must be installed in your environment; we recommend the Oracle JDK. + +To check the Java version installed, run the command: + + $ java -version + +Tephra is tested with the Oracle JDKs; it may work with other JDKs such as +[Open JDK](http://openjdk.java.net), but it has not been tested with them. + +Once you have installed the JDK, you'll need to set the `JAVA_HOME` environment variable. + +### Hadoop/HBase Environment +Tephra requires a working HBase and HDFS environment in order to operate. Tephra supports these +component versions: + +| Component | Source | Supported Versions | +|---------------|---------------|---------------------------------------------------------| +| __HDFS__ | Apache Hadoop | 2.0.2-alpha through 2.7.x | +| | CDH or HDP | (CDH) 5.0.0 through 5.7.0 or (HDP) 2.0, 2.1, 2.2 or 2.3 | +| | MapR | 4.1 (with MapR-FS) | +| __HBase__ | Apache | 0.96.x, 0.98.x, 1.0.x, 1.1.x and 1.2.x | +| | CDH or HDP | (CDH) 5.0.0 through 5.7.0 or (HDP) 2.0, 2.1, 2.2 or 2.3 | +| | MapR | 4.1 (with Apache HBase) | +| __ZooKeeper__ | Apache | Version 3.4.3 through 3.4.5 | +| | CDH or HDP | (CDH) 5.0.0 through 5.7.0 or (HDP) 2.0, 2.1, 2.2 or 2.3 | +| | MapR | 4.1 | + +__Note:__ Components versions shown in this table are those that we have tested and are +confident of their suitability and compatibility. Later versions of components may work, +but have not necessarily have been either tested or confirmed compatible. + +Ready to try out Apache Tephra? Checkout the [Getting Started Guide](GettingStarted.html) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tephra/blob/1047fad6/src/site/markdown/releases/0.8.0-incubating.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/releases/0.8.0-incubating.md b/src/site/markdown/releases/0.8.0-incubating.md new file mode 100644 index 0000000..68fc26f --- /dev/null +++ b/src/site/markdown/releases/0.8.0-incubating.md @@ -0,0 +1,28 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<head> + <title>Apache Tephra Release 0.8.0-incubating</title> +</head> + +### Release Notes - Apache Tephra - 0.8.0-incubating + +This is the first Apache Incubator release of Tephra. + +### Source tar-ball download +[Source and signatures](http://www.apache.org/dyn/closer.cgi/incubator/tephra/0.8.0-incubating/src)
