On-Prem ION internal server error with hosted .terraindb


While working with our On-Prem hosted ION server we’ve encountered an internal server error, which we were unable to debug so far.

we have a .terraindb file that is getting served via the server, we are able to get the
associated layer.json via a get query, but all subsequent queries result in internal server errors producing the below error on the server side:
TypeError: Cannot read property ‘extensions’ of undefined
cesium asset-server[13355]: at Sqlite3Tileset.getTile (/snapshot/app/node_modules/@cesiumgs/terrain-readers/lib/Tileset.js)
cesium asset-server[13355]: at processTicksAndRejections (internal/process/task_queues.js:97:5)
cesium asset-server[13355]: at async /snapshot/app/server.js:329:24

the server returned layer.json looks like:
“name”: “some_random_name”,
“format”: “quantized-mesh-1.0”,
“scheme”: “tms”,
“projection”: “EPSG:4326”,
“bounds”: [
“minzoom”: 0,
“tiles”: [
“version”: “1.4.0”,
“attribution”: “”,
“description”: “”,
“extensions”: [
“maxzoom”: 15,
“metadataAvailability”: 10

initially we wanted to try removing the
“extensions”: [
part of the above layer.json that is returned from the server, but we are not able to locate the file on disk.

for sake of completeness here is how we are trying to get the data from the on-prem ion server (pretty much as per the documentation):
return new Cesium.CesiumTerrainProvider({
url: serverbasepath+"/some_random_name"

  1. Is there a way to manually edit this generated layer.json file?
  2. is there something obvious that we are missing to get this terraindb tileset working?


Thank you for reporting this problem and for providing the details of the error. Can you please send us the .terraindb file that is causing the issue? That will allow us to reproduce the issue and investigate it internally. You can upload it to Cesium ion and provide us with an asset ID, or you can email us at support@cesium.com.


Hi Matt,

First of all thanks for replying.
As far as I know Nick has sent you the db and the source.

A bit of a follow up on our side of the things:
we’ve done a bit of investigation and we programmatically removed layer 0 from the quantized mesh
(replacing the static requestTileGeometry with a custom implementation) that way we were able to get the terrain loaded (without any of the height map actually being added), and we’ve verified that the server only throws error’s if 0/0/0 of 0/1/0 is being queried, any sublayers will return some data without any issues (postman).

Later we’ve updated to the latest 4.5.5 Linux Cesium Pipeline (both tiler and server).

The nature of the error changed with this update, instead of an instant rejection from the server, we get a timeout on the client side of things.

The new error we get on the server side is:
Feb 23 20:55:05 cesium asset-server[19639]: [Worker 4] TypeError: Cannot read property ‘split’ of undefined
Feb 23 20:55:05 cesium asset-server[19639]: at /snapshot/app/server.js:328:56
Feb 23 20:55:05 cesium asset-server[19639]: at nextTick (/snapshot/app/node_modules/restify/lib/chain.js:167:13)
Feb 23 20:55:05 cesium asset-server[19639]: at processTicksAndRejections (node:internal/process/task_queues:78:11) unhandledRejection