Pavel Drankov
2018-08-23 10:46:59 UTC
Hi,
I have an instance of SXSSFSheet and when I'm trying to fill it with
values concurrently, such exceptions occurs:
java.util.ConcurrentModificationException: null
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1211)
~[na:1.8.0_152]
at java.util.TreeMap$EntryIterator.next(TreeMap.java:1247) ~[na:1.8.0_152]
at java.util.TreeMap$EntryIterator.next(TreeMap.java:1242) ~[na:1.8.0_152]
at org.apache.poi.xssf.streaming.SXSSFSheet.getRowNum(SXSSFSheet.java:1851)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFRow.getRowNum(SXSSFRow.java:218)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFCell.getRowIndex(SXSSFCell.java:84)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFCell.setHyperlink(SXSSFCell.java:649)
~[poi-ooxml-3.14.jar:3.14]
java.lang.NullPointerException: null
at
org.apache.poi.xssf.streaming.AutoSizeColumnTracker.updateColumnWidths(AutoSizeColumnTracker.java:302)
~[poi-ooxml-3.14.jar:3.14]
at
org.apache.poi.xssf.streaming.SXSSFSheet.flushOneRow(SXSSFSheet.java:1834)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFSheet.flushRows(SXSSFSheet.java:1813)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:155)
~[poi-ooxml-3.14.jar:3.14]
I put synchronization on the object access and it works fine now, but is
not it an issue? Should the SXSSFCell and SXSSFSheet objects be thread safe?
Best wishes,
Pavel
I have an instance of SXSSFSheet and when I'm trying to fill it with
values concurrently, such exceptions occurs:
java.util.ConcurrentModificationException: null
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1211)
~[na:1.8.0_152]
at java.util.TreeMap$EntryIterator.next(TreeMap.java:1247) ~[na:1.8.0_152]
at java.util.TreeMap$EntryIterator.next(TreeMap.java:1242) ~[na:1.8.0_152]
at org.apache.poi.xssf.streaming.SXSSFSheet.getRowNum(SXSSFSheet.java:1851)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFRow.getRowNum(SXSSFRow.java:218)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFCell.getRowIndex(SXSSFCell.java:84)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFCell.setHyperlink(SXSSFCell.java:649)
~[poi-ooxml-3.14.jar:3.14]
java.lang.NullPointerException: null
at
org.apache.poi.xssf.streaming.AutoSizeColumnTracker.updateColumnWidths(AutoSizeColumnTracker.java:302)
~[poi-ooxml-3.14.jar:3.14]
at
org.apache.poi.xssf.streaming.SXSSFSheet.flushOneRow(SXSSFSheet.java:1834)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFSheet.flushRows(SXSSFSheet.java:1813)
~[poi-ooxml-3.14.jar:3.14]
at org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:155)
~[poi-ooxml-3.14.jar:3.14]
I put synchronization on the object access and it works fine now, but is
not it an issue? Should the SXSSFCell and SXSSFSheet objects be thread safe?
Best wishes,
Pavel