Skip to content

Commit

Permalink
catching error when Tile z/x/y is in invalid range during migration (m…
Browse files Browse the repository at this point in the history
…apbox#132)

* catching error when Tile z/x/y is in invalid range during migration

* add invalid zxy mbtiles fixture & test

* remove only

* 7.3.1-dev
  • Loading branch information
jjanczyszyn authored and mapsam committed Nov 13, 2018
1 parent 8b585b2 commit 9eb121a
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 2 deletions.
12 changes: 11 additions & 1 deletion lib/migration-stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,17 @@ function MigrationStream() {
}

function migrate(tile, callback) {
var vtile = new mapnik.VectorTile(tile.z, tile.x, tile.y);
var vtile;
try {
vtile = new mapnik.VectorTile(tile.z, tile.x, tile.y);
} catch (err) {
if (err && err.message.indexOf('required parameter y is out of range') != -1 || err && err.message.indexOf('required parameter x is out of range') != -1) {
err.code = 'EINVALID';
err.message = `Tile ${tile.z}/${tile.x}/${tile.y} is an invalid ZXY range.`;
}
return callback(err);
}

vtile.setData(tile.buffer, {upgrade:true}, function(err) {
if (err) {
err.code = 'EINVALID';
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mapbox/mapbox-tile-copy",
"version": "7.3.0",
"version": "7.3.1-dev",
"description": "From geodata files to tiles on S3",
"main": "index.js",
"scripts": {
Expand Down
14 changes: 14 additions & 0 deletions test/copy.tilelive.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,20 @@ test('copy invalid mbtiles with bypassValidation option', function(t) {
});
});

test('fails with invalid ZXY from mbtiles in v1 tiles', function(t) {
process.env.LOG_INVALID_VT = true;
var fixture = path.resolve(__dirname, 'fixtures', 'invalid-zxy.mbtiles');
var src = 'mbtiles://' + fixture;
var dst = dsturi('invalid-zxy.mbtiles');

tileliveCopy(src, dst, {}, function(err) {
t.ok(err);
t.equal(err.code, 'EINVALID', 'expected code');
t.equal(err.message, 'Tile 0/99/99 is an invalid ZXY range.', 'expected error message');
t.end();
});
});

test('copy retry', function(t) {
var fixture = path.resolve(__dirname, 'fixtures', 'valid.mbtiles');
var src = 'mbtiles://' + fixture;
Expand Down
Binary file added test/fixtures/invalid-zxy.mbtiles
Binary file not shown.

0 comments on commit 9eb121a

Please sign in to comment.