- return actorContext.actorOf(ShardTransaction.props(transaction, shardActor, datastoreContext, shardMBean,
- transactionID.getRemoteTransactionId(), clientVersion).withDispatcher(txnDispatcherPath),
- transactionID.toString());
+ return sb.append(txId.getTransactionId()).toString();
+ }
+
+ ActorRef newShardTransaction(TransactionType type, TransactionIdentifier transactionID) {
+ final AbstractShardDataTreeTransaction<?> transaction;
+ switch (type) {
+ case READ_ONLY:
+ transaction = dataTree.newReadOnlyTransaction(transactionID);
+ shardMBean.incrementReadOnlyTransactionCount();
+ break;
+ case READ_WRITE:
+ transaction = dataTree.newReadWriteTransaction(transactionID);
+ shardMBean.incrementReadWriteTransactionCount();
+ break;
+ case WRITE_ONLY:
+ transaction = dataTree.newReadWriteTransaction(transactionID);
+ shardMBean.incrementWriteOnlyTransactionCount();
+ break;
+ default:
+ throw new IllegalArgumentException("Unsupported transaction type " + type);
+ }
+
+ return actorContext.actorOf(ShardTransaction.props(type, transaction, shardActor, datastoreContext, shardMBean)
+ .withDispatcher(txnDispatcherPath), actorNameFor(transactionID));