diff --git a/random-csv-data-set/src/main/java/com/blazemeter/csv/RandomCSVReader.java b/random-csv-data-set/src/main/java/com/blazemeter/csv/RandomCSVReader.java index 8889d44..156ddb2 100644 --- a/random-csv-data-set/src/main/java/com/blazemeter/csv/RandomCSVReader.java +++ b/random-csv-data-set/src/main/java/com/blazemeter/csv/RandomCSVReader.java @@ -30,17 +30,15 @@ public class RandomCSVReader { private final ThreadLocal rbr = new ThreadLocal() { @Override protected RandomBufferedReader initialValue() { - try { - return new RandomBufferedReader(createReader(), new RandomAccessFile(file, "r"), encoding); - } catch (IOException e) { - LOGGER.error("Cannot create RandomBufferedReader", e); - throw new RuntimeException("Cannot create RandomBufferedReader", e); - } + + return randomBufferedReader; } }; private Random random; + private RandomBufferedReader randomBufferedReader; private BufferedReader consistentReader; + //private BufferedReader randomReader; private String[] header; private boolean isSkipFirstLine; @@ -65,6 +63,17 @@ public RandomCSVReader(String filename, String encoding, initConsistentReader(); } initHeader(); + + try { + + this.randomBufferedReader = new RandomBufferedReader(createReader(), new RandomAccessFile(file, "r"), encoding); + + } catch (IOException e) { + LOGGER.error("Cannot create RandomBufferedReader", e); + throw new RuntimeException("Cannot create RandomBufferedReader", e); + } + + } catch (IOException ex) { LOGGER.error("Cannot initialize RandomCSVReader, because of error: ", ex); throw new RuntimeException("Cannot initialize RandomCSVReader, because of error: " + ex.getMessage(), ex); diff --git a/random-csv-data-set/src/main/java/com/blazemeter/jmeter/RandomCSVDataSetConfig.java b/random-csv-data-set/src/main/java/com/blazemeter/jmeter/RandomCSVDataSetConfig.java index 09d31bb..2f4f633 100644 --- a/random-csv-data-set/src/main/java/com/blazemeter/jmeter/RandomCSVDataSetConfig.java +++ b/random-csv-data-set/src/main/java/com/blazemeter/jmeter/RandomCSVDataSetConfig.java @@ -180,17 +180,7 @@ public void threadStarted() { @Override public void threadFinished() { - RandomCSVReader reader = getReader(); - if (reader != null) { - reader.close(); - if (!isRandomOrder() && isIndependentListPerThread()) { - try { - reader.closeConsistentReader(); - } catch (IOException e) { - LOGGER.warn("Failed to close Consistent Reader", e); - } - } - } + } @Override @@ -210,12 +200,16 @@ public void testEnded() { @Override public void testEnded(String s) { - try { - if (randomCSVReader != null && !isRandomOrder()) { - randomCSVReader.closeConsistentReader(); + RandomCSVReader reader = getReader(); + if (reader != null) { + reader.close(); + if (!isRandomOrder() && isIndependentListPerThread()) { + try { + reader.closeConsistentReader(); + } catch (IOException e) { + LOGGER.warn("Failed to close Consistent Reader", e); + } } - } catch (IOException e) { - LOGGER.warn("Failed to close Consistent Reader", e); } randomCSVReader = null; }