Buggy code:
} PartitionExecutor . ExecutionMode before_mode = this . currentExecMode ; boolean predict_singlePartition = ts . isPredictSinglePartition ( ) ; if ( predict_singlePartition == false ) { if ( ( ( this . currentDtxn ) != null ) && ( ( this . currentDtxn . equals ( ts ) ) == false ) ) { assert ( this . currentDtxn . equals ( ts ) ) == false : String . format ( "New<seq2seq4repair_space>DTXN<seq2seq4repair_space>%s<seq2seq4repair_space>!=<seq2seq4repair_space>Current<seq2seq4repair_space>DTXN<seq2seq4repair_space>%s" , ts , this . currentDtxn ) ; if ( this . currentDtxn . isExecLocal ( this . partitionId ) ) { assert ( this . currentDtxn . isAborted ( ) ) == false : String . format ( "We<seq2seq4repair_space>want<seq2seq4repair_space>to<seq2seq4repair_space>execute<seq2seq4repair_space>%s<seq2seq4repair_space>on<seq2seq4repair_space>partition<seq2seq4repair_space>%d<seq2seq4repair_space>but<seq2seq4repair_space>aborted<seq2seq4repair_space>%s<seq2seq4repair_space>is<seq2seq4repair_space>still<seq2seq4repair_space>hanging<seq2seq4repair_space>around\n" , ts , this . partitionId , this . currentDtxn , this . work_queue ) ; this . blockTransaction ( ts ) ; return ; } else { this . blockTransaction ( ts ) ; return ; } } else if ( ( this . currentDtxn ) == null ) { this . setCurrentDtxn ( ts ) ; } this . setExecutionMode ( this . currentDtxn , PartitionExecutor . ExecutionMode . COMMIT_NONE ) ; if ( PartitionExecutor . debug . val ) PartitionExecutor . LOG . debug ( String . format ( "Marking<seq2seq4repair_space>%s<seq2seq4repair_space>as<seq2seq4repair_space>current<seq2seq4repair_space>DTXN<seq2seq4repair_space>on<seq2seq4repair_space>Partition<seq2seq4repair_space>%d<seq2seq4repair_space>[isLocal=%s,<seq2seq4repair_space>execMode=%s]" , ts , this . partitionId , true , this . currentExecMode ) ) ; } else { if ( ( this . currentDtxn ) != null ) { if ( ( ( this . currentExecMode ) == ( PartitionExecutor . ExecutionMode . DISABLED ) ) || ( ( hstore_conf . site . specexec_enable ) == false ) ) { if ( PartitionExecutor . debug . val ) PartitionExecutor . LOG . debug ( String . format ( "%s<seq2seq4repair_space>-<seq2seq4repair_space>Blocking<seq2seq4repair_space>single-partition<seq2seq4repair_space>%s<seq2seq4repair_space>until<seq2seq4repair_space>dtxn<seq2seq4repair_space>finishes<seq2seq4repair_space>[mode=%s]" , this . currentDtxn , ts , this . currentExecMode ) ) ; this . blockTransaction ( ts ) ; return ; } assert ( ts . getSpeculationType ( ) ) != null ; if ( PartitionExecutor . debug . val ) PartitionExecutor . LOG . debug ( String . format ( "Speculatively<seq2seq4repair_space>executing<seq2seq4repair_space>%s<seq2seq4repair_space>while<seq2seq4repair_space>waiting<seq2seq4repair_space>for<seq2seq4repair_space>dtxn<seq2seq4repair_space>%s<seq2seq4repair_space>[%s]" , ts , this . currentDtxn , ts . getSpeculationType ( ) ) ) ; assert ts . isSpeculative ( ) : ts + "<seq2seq4repair_space>was<seq2seq4repair_space>not<seq2seq4repair_space>marked<seq2seq4repair_space>as<seq2seq4repair_space>being<seq2seq4repair_space>speculative!" ; } } ReplicationType replicationType = ReplicationType . get ( hstore_conf . site . replication_protocol ) ; int basePartition = ts . getBasePartition ( ) ; if ( ( ( ( replicationType != null ) && ( replicationType != ( ReplicationType . NONE ) ) ) && ( ! ( ts . isSysProc ( ) ) ) ) && ( this . hstore_site . isPrimaryPartition ( basePartition ) ) ) { PartitionExecutor . LOG . info ( ( "Replication<seq2seq4repair_space>Protocol<seq2seq4repair_space>enabled:<seq2seq4repair_space>" + ( replicationType . toString ( ) ) ) ) ; final List < Integer > partitionReplicas = this . hstore_site . getPartitionReplicas ( basePartition ) ; int numReplicas = partitionReplicas . size ( ) ; Semaphore permit = new Semaphore ( 0 ) ; if ( ( replicationType == ( ReplicationType . SYNC ) ) || ( replicationType == ( ReplicationType . SEMI ) ) ) { permit = this . hstore_coordinator . addTransactionReplicatePermit ( ts . getTransactionId ( ) , numReplicas ) ; } TransactionForwardToReplicaCallback replica_callback = new TransactionForwardToReplicaCallback ( numReplicas ) ; for ( int i = 0 ; i < ( partitionReplicas . size ( ) ) ; i ++ ) { Procedure catalog_proc = ts . getProcedure ( ) ; StoredProcedureInvocation spi = new StoredProcedureInvocation ( ts . getClientHandle ( ) , catalog_proc . getId ( ) , catalog_proc . getName ( ) , ts . getProcedureParameters ( ) . toArray ( ) ) ; spi . setBasePartition ( partitionReplicas . get ( i ) ) ; FastSerializer fsRep = new FastSerializer ( ) ; try { fsRep . writeObject ( spi ) ; } catch ( IOException ex ) { String msg = "Failed<seq2seq4repair_space>to<seq2seq4repair_space>serialize<seq2seq4repair_space>StoredProcedureInvocation<seq2seq4repair_space>to<seq2seq4repair_space>forward<seq2seq4repair_space>txn<seq2seq4repair_space>to<seq2seq4repair_space>replica" ; throw new org . voltdb . exceptions . ServerFaultException ( msg , ex , ts . getTransactionId ( ) ) ; } byte [ ] serializedSpi = fsRep . getBytes ( ) ; <START_BUG> this . hstore_coordinator . transactionReplicate ( serializedSpi , replica_callback , partitionReplicas . get ( i ) , ts . getTransactionId ( ) ) ; <END_BUG> } if ( ( replicationType == ( ReplicationType . SYNC ) ) || ( replicationType == ( ReplicationType . SEMI ) ) ) { try { permit . acquire ( numReplicas ) ; } catch ( InterruptedException e ) { } permit . release ( numReplicas ) ; this . hstore_coordinator . removeTransactionReplicatePermit ( ts . getTransactionId ( ) ) ; } } if ( ( hstore_conf . site . txn_profiling ) && ( ( ts . profiler ) != null ) ) { ts . profiler . startExec ( ) ; } if ( hstore_conf . site . exec_profiling ) ( this . profiler . numTransactions ) ++ ; if ( ts . hasDependencyTracker ( ) ) this . depTracker . addTransaction ( ts ) ; VoltProcedure volt_proc = this . getVoltProcedure ( ts . getProcedure ( ) . getId ( ) ) ; assert volt_proc != null : "No<seq2seq4repair_space>VoltProcedure<seq2seq4repair_space>for<seq2seq4repair_space>" + ts ; if ( PartitionExecutor . debug . val ) { PartitionExecutor . LOG . debug ( String . format ( ( "%s<seq2seq4repair_space>-<seq2seq4repair_space>Starting<seq2seq4repair_space>execution<seq2seq4repair_space>of<seq2seq4repair_space>txn<seq2seq4repair_space>on<seq2seq4repair_space>partition<seq2seq4repair_space>%d<seq2seq4repair_space>" + "[txnMode=%s,<seq2seq4repair_space>mode=%s]" ) , ts , this . partitionId , before_mode , this . currentExecMode ) ) ; if ( PartitionExecutor . trace . val ) PartitionExecutor . LOG . trace ( String . format ( "Current<seq2seq4repair_space>Transaction<seq2seq4repair_space>at<seq2seq4repair_space>partition<seq2seq4repair_space>#%d\n%s" , this . partitionId , ts . debug ( ) ) ) ; } if ( hstore_conf . site . txn_counters ) EXECUTED . inc ( ts . getProcedure ( ) ) ; ClientResponseImpl cresponse = null ; VoltProcedure previous = this . currentVoltProc ; try { this . currentVoltProc = volt_proc ; ts . markControlCodeExecuted ( ) ; cresponse = volt_proc . call ( ts , ts . getProcedureParameters ( ) . toArray ( ) ) ; }

Fix:
this . hstore_coordinator . transactionReplicate ( serializedSpi , replica_callback , basePartition , partitionReplicas . get ( i ) , ts . getTransactionId ( ) ) ;