Open-EO/openeo-geotrellis-extensions

fix misleading error message

Open

#650 opened on Feb 4, 2026

 (0 comments) (0 reactions) (0 assignees)Scala (5 forks)auto 404
buggood first issue

Repository metrics

Stars
 (7 stars)
PR merge metrics
 (PR metrics pending)

Description

This process graph:

{
  "process_graph": {
    "loadstac1": {
      "arguments": {
        "url": "https://www.planet.com/data/stac/tanager-core-imagery/agriculture/20250223_165538_00_4001/20250223_165538_00_4001.json"
      },
      "process_id": "load_stac"
    },
    "saveresult1": {
      "arguments": {
        "data": {
          "from_node": "loadstac1"
        },
        "format": "GTiff",
        "options": {}
      },
      "process_id": "save_result",
      "result": true
    }
  }
}             

fails with the following error:

py4j.protocol.Py4JJavaError: An error occurred while calling o2131.datacube_seq.
: java.io.IOException: Exception while reading RasterSource https://storage.googleapis.com/open-cogs/planet-stac/tanager1-release2-core-imagery/basic_beta_udm/20250223_165538_00_4001_basic_beta_udm.tif in collection https://www.planet.com/data/stac/tanager-core-imagery/agriculture/20250223_165538_00_4001/20250223_165538_00_4001.json. Detailed message: incorrect byte order. File does not exist: https:/storage.googleapis.com/open-cogs/planet-stac/tanager1-release2-core-imagery/basic_beta_udm/20250223_165538_00_4001_basic_beta_udm.tif.
	at org.openeo.geotrellis.layers.FileLayerProvider.determineCelltype(FileLayerProvider.scala:867)
	at org.openeo.geotrellis.layers.FileLayerProvider.readKeysToRasterSources(FileLayerProvider.scala:900)
	at org.openeo.geotrellis.layers.FileLayerProvider.prepareRasterRegions(FileLayerProvider.scala:1181)
	at org.openeo.geotrellis.layers.FileLayerProvider.readMultibandTileLayer(FileLayerProvider.scala:1154)
	at org.openeo.geotrellis.file.PyramidFactory.datacube(PyramidFactory.scala:175)
	at org.openeo.geotrellis.file.PyramidFactory.datacube_seq(PyramidFactory.scala:132)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:75)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:52)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
	at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)
	at py4j.Gateway.invoke(Gateway.java:282)
	at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
	at py4j.commands.CallCommand.execute(CallCommand.java:79)
	at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:184)
	at py4j.ClientServerConnection.run(ClientServerConnection.java:108)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: geotrellis.raster.io.geotiff.reader.MalformedGeoTiffException: incorrect byte order
	at geotrellis.raster.io.geotiff.reader.GeoTiffInfo$.read(GeoTiffInfo.scala:132)
	at geotrellis.raster.io.geotiff.reader.GeoTiffReader$.readMultiband(GeoTiffReader.scala:211)
	at geotrellis.raster.geotiff.GeoTiffResampleRasterSource.$anonfun$tiff$1(GeoTiffResampleRasterSource.scala:45)
	at scala.Option.getOrElse(Option.scala:201)
	at geotrellis.raster.geotiff.GeoTiffResampleRasterSource.tiff$lzycompute(GeoTiffResampleRasterSource.scala:42)
	at geotrellis.raster.geotiff.GeoTiffResampleRasterSource.tiff(GeoTiffResampleRasterSource.scala:39)
	at geotrellis.raster.geotiff.GeoTiffResampleRasterSource.$anonfun$cellType$1(GeoTiffResampleRasterSource.scala:49)
	at scala.Option.getOrElse(Option.scala:201)
	at geotrellis.raster.geotiff.GeoTiffResampleRasterSource.cellType(GeoTiffResampleRasterSource.scala:49)
	at org.openeo.geotrellis.layers.BandCompositeRasterSource.$anonfun$cellType$1(BandCompositeRasterSource.scala:100)
	at scala.collection.immutable.List.map(List.scala:251)
	at cats.data.NonEmptyList.map(NonEmptyList.scala:109)
	at org.openeo.geotrellis.layers.BandCompositeRasterSource.cellType(BandCompositeRasterSource.scala:100)The asset in question is not a file on disk but it is treated as such.
	at org.openeo.geotrellis.layers.FileLayerProvider.determineCelltype(FileLayerProvider.scala:839)
	... 17 more

In particular, this part of the error message is misleading:

File does not exist: https:/storage.googleapis.com/open-cogs/planet-stac/tanager1-release2-core-imagery/basic_beta_udm/20250223_165538_00_4001_basic_beta_udm.tif

The asset in question is not a file on disk but it is treated as such. It leads to wrong conclusions by users and hinders root cause analysis (the actual cause is the "incorrect byte order").

Contributor guide