Source:
public DistStageAck executeOnSlave() { if (!isServiceRunning()) { log.info("Not running test on this slave as service is not running."); return successfulResponse(); } if (useTransactions != null && useTransactions) { if (transactional == null) { return errorResponse("Service does not support transactions"); } else if (transactionSize <= 0) { return errorResponse("Transaction size was not configured"); } } log.info("Using key generator " + keyGeneratorClass + ", param " + keyGeneratorParam); keyGenerator = Utils.instantiateAndInit(slaveState.getClassLoader(), keyGeneratorClass, keyGeneratorParam); log.info("Using value generator " + valueGeneratorClass + ", param " + valueGeneratorParam); valueGenerator = Utils.instantiateAndInit(slaveState.getClassLoader(), valueGeneratorClass, valueGeneratorParam); slaveState.put(KeyGenerator.KEY_GENERATOR, keyGenerator); slaveState.put(ValueGenerator.VALUE_GENERATOR, valueGenerator); slaveState.put(CacheSelector.CACHE_SELECTOR, cacheSelector); slaveState.addServiceListener(new Unregistrar(slaveState)); int threadBase = getExecutingSlaveIndex() * numThreads; List<Loader> loaders = new ArrayList<>(); for (int i = 0; i < numThreads; ++i) { boolean useTransactions; if (this.useTransactions == null) { String cacheName = cacheSelector.getCacheName(threadBase + i); useTransactions = transactional != null && transactionSize > 0 && transactional.getConfiguration(cacheName) == Transactional.Configuration.TRANSACTIONAL; } else { useTransactions = this.useTransactions; } Loader loader = useTransactions ? new TxLoader(i, getLoaderIds(i)) : new NonTxLoader(i, getLoaderIds(i)); loaders.add(loader); loader.start(); } for (Loader loader : loaders) { try { loader.join(); } catch (InterruptedException e) { return errorResponse("Interrupted when waiting for the loader to finish"); } if (loader.getException() != null) { return errorResponse("Loader failed with exception", loader.getException()); } } return successfulResponse(); }

Target:
public DistStageAck executeOnSlave() { if (!isServiceRunning()) { log.info("Not running test on this slave as service is not running."); return successfulResponse(); } if (useTransactions == TransactionMode.ALWAYS) { if (transactional == null) { return errorResponse("Service does not support transactions"); } else if (transactionSize <= 0) { return errorResponse("Transaction size was not configured"); } } log.info("Using key generator " + keyGeneratorClass + ", param " + keyGeneratorParam); keyGenerator = Utils.instantiateAndInit(slaveState.getClassLoader(), keyGeneratorClass, keyGeneratorParam); log.info("Using value generator " + valueGeneratorClass + ", param " + valueGeneratorParam); valueGenerator = Utils.instantiateAndInit(slaveState.getClassLoader(), valueGeneratorClass, valueGeneratorParam); slaveState.put(KeyGenerator.KEY_GENERATOR, keyGenerator); slaveState.put(ValueGenerator.VALUE_GENERATOR, valueGenerator); slaveState.put(CacheSelector.CACHE_SELECTOR, cacheSelector); slaveState.addServiceListener(new Cleanup(slaveState)); int threadBase = getExecutingSlaveIndex() * numThreads; List<Loader> loaders = new ArrayList<>(); for (int i = 0; i < numThreads; ++i) { String cacheName = cacheSelector.getCacheName(threadBase + i); boolean useTransactions = this.useTransactions.use(transactional, cacheName, transactionSize); Loader loader = useTransactions ? new TxLoader(i, getLoaderIds(i)) : new NonTxLoader(i, getLoaderIds(i)); loaders.add(loader); loader.start(); } for (Loader loader : loaders) { try { loader.join(); } catch (InterruptedException e) { return errorResponse("Interrupted when waiting for the loader to finish"); } if (loader.getException() != null) { return errorResponse("Loader failed with exception", loader.getException()); } } return successfulResponse(); }