You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2019/06/20 10:01:27 UTC

[metamodel] 02/07: com.opencsv.CSVParser doesn't provide thread safety, so we need to make sure it is accessed in a thread-safe manner.

This is an automated email from the ASF dual-hosted git repository.

kaspersor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metamodel.git

commit e2b6d3773b7ce922bb6123aad93673d0a0a9d5e0
Author: Arjan Seijkens <a....@quadient.com>
AuthorDate: Wed Jun 12 10:31:20 2019 +0200

    com.opencsv.CSVParser doesn't provide thread safety, so we need to make sure it is accessed in a thread-safe manner.
---
 csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
index fe9fda5..64ff013 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
@@ -29,6 +29,8 @@ import org.apache.metamodel.schema.Column;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.opencsv.ICSVParser;
+
 /**
  * Specialized row implementation for single-line CSV values
  */
@@ -99,7 +101,10 @@ final class SingleLineCsvRow extends AbstractRow {
 
     private String[] parseLine() {
         try {
-            return _dataSet.getCsvParser().parseLine(_line);
+            final ICSVParser csvParser = _dataSet.getCsvParser();
+            synchronized (csvParser) {
+                return csvParser.parseLine(_line);
+            }
         } catch (IOException e) {
             if (_failOnInconsistentRowLength) {
                 throw new MetaModelException("Failed to parse CSV line no. " + _rowNumber + ": " + _line, e);