Uploaded image for project: 'Phoenix Tephra'
  1. Phoenix Tephra
  2. TEPHRA-61

Add documentation on obtaining a TransactionSystemClient

    XMLWordPrintableJSON

Details

    • Task
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      We have some examples in the documentation on using TransactionContext and TransactionAwareHTable, but we don't explain how to get a TransactionSystemClient that's needed to interact with the Tephra server.

      We need to add something along the lines of the following:

      If you are using Google Guice, you can make use of the Guice modules that we provide for dependency injection, which will help you get a fully configured TransactionServiceClient instance:

      Injector injector = Guice.createInjector(
          new ConfigModule(conf),
          new ZKModule(),
          new DiscoveryModules().getDistributedModules(),
          new TransactionModules().getDistributedModules(),
          new TransactionClientModule()
      );
      
      ZKClientService zkClient = injector.getInstance(ZKClientService.class);
      zkClient.startAndWait();
      
      TransactionServiceClient client = injector.getInstance(TransactionServiceClient.class);
      

      You can do this during your application startup and reuse the same TransactionServiceClient instance across all application threads.

      Then, within each application thread, you can use a TransactionContext instance, along with TransactionAwareHTable instances to interact with HBase:

      Configuration conf = HBaseConfiguration.create();
      HConnection conn = HConnectionManager.createConnection(conf);
      
      TransactionAwareHTable txTable = new TransactionAwareHTable(conn.getTable("mytable"));
      TransactionContext txContext = new TransactionContext(client, txTable);
      try {
        txContext.start();
        txTable.put(...); // perform normal operations
        ...
        txContext.finish();
      }  catch (TransactionFailureException tfe) {
        txContext.abort();
      }
      

      Attachments

        Activity

          People

            ghelmling Gary Helmling
            ghelmling Gary Helmling
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: