[GPT] Casting Error with Sentinel 2 products

Description

A Java casting error is produced with S2 products on my setup as well on the build server, however many developers can not reproduce the error.
The stack trace is:

>> org.esa.snap.core.gpf.OperatorException: [B cannot be cast to [S >> at org.esa.snap.core.gpf.graph.GraphProcessor$GPFImagingListener.errorOccurred(GraphProcessor.java:379) >> at com.sun.media.jai.util.SunTileScheduler.sendExceptionToListener(SunTileScheduler.java:1646) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:921) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PointOpImage.computeTile(PointOpImage.java:911) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PlanarImage.cobbleDouble(PlanarImage.java:3355) >> at javax.media.jai.PlanarImage.getData(PlanarImage.java:2184) >> at javax.media.jai.PlanarImage.getExtendedData(PlanarImage.java:2440) >> at javax.media.jai.GeometricOpImage.computeTile(GeometricOpImage.java:678) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PointOpImage.computeTile(PointOpImage.java:911) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PlanarImage.cobbleUShort(PlanarImage.java:3052) >> at javax.media.jai.PlanarImage.getData(PlanarImage.java:2175) >> at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64) >> at org.esa.snap.core.datamodel.Band.readRasterData(Band.java:311) >> at org.esa.snap.core.dataio.ProductSubsetBuilder.readBandRasterDataRegion(ProductSubsetBuilder.java:395) >> at org.esa.snap.core.dataio.ProductSubsetBuilder.readBandRasterDataImpl(ProductSubsetBuilder.java:332) >> at org.esa.snap.core.dataio.AbstractProductReader.readBandRasterData(AbstractProductReader.java:266) >> at org.esa.snap.core.gpf.common.SubsetOp.computeTile(SubsetOp.java:297) >> at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:82) >> at javax.media.jai.SourcelessOpImage.computeTile(SourcelessOpImage.java:137) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085) >> at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64) >> at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:449) >> at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:435) >> at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:75) >> at javax.media.jai.SourcelessOpImage.computeTile(SourcelessOpImage.java:137) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at com.sun.media.jai.util.RequestJob.compute(SunTileScheduler.java:247) >> at com.sun.media.jai.util.WorkerThread.run(SunTileScheduler.java:468) >> Caused by: java.lang.ClassCastException: [B cannot be cast to [S >> at org.esa.snap.core.datamodel.ProductData.createInstance(ProductData.java:283) >> at org.esa.snap.core.image.VirtualBandOpImage.addDataToReferredRasterDataSymbols(VirtualBandOpImage.java:319) >> at org.esa.snap.core.image.VirtualBandOpImage.computeTile(VirtualBandOpImage.java:235) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> ... 35 more

The band datatype is computed by the RasterDataNode object using the getDataType() method, it returns the value 21 standing for UINT16 however the data seems to be encoded in UINT8 in some environment.

 

Environment

Ubuntu 19.10 x64 / Docker Ubuntu 18.04
Zulu JDK 8

GitHub Work

None

Activity

Show:
Marco Peters
made 12 changes
10 February 2023 at 14:26
Status
Reopened
Closed
Components
S2TBX
None
Components
None
S2TBX
Marco Peters
made 4 changes
10 February 2023 at 14:20
Status
Closed
Reopened
Components
None
Optical
Components
None
S2TBX
Marco Peters
changed the status28 October 2022 at 08:31
Resolved
Closed
Oana Hogoiu
updated the Sprint12 May 2020 at 14:59
None
STEP 8.0
Oana Hogoiu
made 5 changes
7 May 2020 at 22:05
Status
Open
Resolved
Assignee
Martino Ferrari
Jean Coravu
Resolution
None
Fixed
Oana Hogoiu
updated the link29 April 2020 at 07:31
None
This issue relates to SIITBX-425
Martino Ferrari
updated the description23 April 2020 at 15:59
A Java casting error is produced with S2 products on my setup as well on the build server, however many developers can not reproduce the error. The stack trace is: {noformat}>> org.esa.snap.core.gpf.OperatorException: [B cannot be cast to [S >> at org.esa.snap.core.gpf.graph.GraphProcessor$GPFImagingListener.errorOccurred(GraphProcessor.java:379) >> at com.sun.media.jai.util.SunTileScheduler.sendExceptionToListener(SunTileScheduler.java:1646) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:921) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PointOpImage.computeTile(PointOpImage.java:911) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PlanarImage.cobbleDouble(PlanarImage.java:3355) >> at javax.media.jai.PlanarImage.getData(PlanarImage.java:2184) >> at javax.media.jai.PlanarImage.getExtendedData(PlanarImage.java:2440) >> at javax.media.jai.GeometricOpImage.computeTile(GeometricOpImage.java:678) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PointOpImage.computeTile(PointOpImage.java:911) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PlanarImage.cobbleUShort(PlanarImage.java:3052) >> at javax.media.jai.PlanarImage.getData(PlanarImage.java:2175) >> at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64) >> at org.esa.snap.core.datamodel.Band.readRasterData(Band.java:311) >> at org.esa.snap.core.dataio.ProductSubsetBuilder.readBandRasterDataRegion(ProductSubsetBuilder.java:395) >> at org.esa.snap.core.dataio.ProductSubsetBuilder.readBandRasterDataImpl(ProductSubsetBuilder.java:332) >> at org.esa.snap.core.dataio.AbstractProductReader.readBandRasterData(AbstractProductReader.java:266) >> at org.esa.snap.core.gpf.common.SubsetOp.computeTile(SubsetOp.java:297) >> at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:82) >> at javax.media.jai.SourcelessOpImage.computeTile(SourcelessOpImage.java:137) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at javax.media.jai.PlanarImage.getData(PlanarImage.java:2085) >> at com.bc.ceres.glevel.MultiLevelImage.getData(MultiLevelImage.java:64) >> at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:449) >> at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile(OperatorContext.java:435) >> at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:75) >> at javax.media.jai.SourcelessOpImage.computeTile(SourcelessOpImage.java:137) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> at javax.media.jai.OpImage.getTile(OpImage.java:1129) >> at com.sun.media.jai.util.RequestJob.compute(SunTileScheduler.java:247) >> at com.sun.media.jai.util.WorkerThread.run(SunTileScheduler.java:468) >> Caused by: java.lang.ClassCastException: [B cannot be cast to [S >> at org.esa.snap.core.datamodel.ProductData.createInstance(ProductData.java:283) >> at org.esa.snap.core.image.VirtualBandOpImage.addDataToReferredRasterDataSymbols(VirtualBandOpImage.java:319) >> at org.esa.snap.core.image.VirtualBandOpImage.computeTile(VirtualBandOpImage.java:235) >> at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) >> ... 35 more{noformat} The band datatype is computed by the {{RasterDataNode}} object using the {{getDataType()}} method, it returns the value {{21}} standing for {{UINT16}} however the data seems to be encoded in {{UINT8}} in some environment.
Martino Ferrari
created the Issue23 April 2020 at 15:56
Done

Details

Assignee

Reporter

Sprint

Fix versions

Priority

Created 23 April 2020 at 15:56
Updated 10 February 2023 at 14:26
Resolved 10 February 2023 at 14:22

Flag notifications