View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.omid.transaction;
19  
20  import java.io.Closeable;
21  
22  /**
23   * Provides the methods to manage transactions (create, commit...)
24   */
25  public interface TransactionManager extends Closeable {
26  
27      /**
28       * Starts a new transaction.
29       *
30       * Creates and returns a {@link Transaction} interface implementation that will be used in TTable's methods for
31       * doing operations on the transactional context defined by the returned object.
32       *
33       * @return transaction representation of the created transaction
34       * @throws TransactionException in case of any issues
35       */
36      Transaction begin() throws TransactionException;
37  
38      /**
39       * Commits a transaction.
40       *
41       * If the transaction was marked for rollback or has conflicts with another concurrent transaction it will be
42       * rolledback automatically and a {@link RollbackException} will be thrown.
43       *
44       * @param tx transaction to be committed.
45       * @throws RollbackException    thrown when transaction has conflicts with another transaction or when was marked
46       *                              for rollback.
47       * @throws TransactionException in case of any issues
48       */
49      void commit(Transaction tx) throws RollbackException, TransactionException;
50  
51      /**
52       * Aborts a transaction.
53       *
54       * Automatically rollbacks the changes performed by the transaction.
55       *
56       * @param tx transaction to be rolled-back
57       * @throws TransactionException  in case of any issues
58       */
59      void rollback(Transaction tx) throws TransactionException;
60  
61      /**
62      * Creates a fence
63      *
64      * Creates a fence and returns a {@link Transaction} interface implementation that contains the fence information.
65      *
66      * @param tableName name of the table that requires a fence
67      * @return transaction representation contains the fence timestamp as the TransactionId.
68      * @throws TransactionException in case of any issues
69      */
70      Transaction fence(byte[] tableName) throws TransactionException;
71  
72  }