diff --git a/lib/mbtiles.js b/lib/mbtiles.js index 2bd53b5..e8d8c71 100644 --- a/lib/mbtiles.js +++ b/lib/mbtiles.js @@ -55,9 +55,6 @@ function MBTiles(uri, callback) { this._batchSize = +uri.query.batch; Step(function() { mbtiles._db = new sqlite3.Database(mbtiles.filename, this); - }, function(err) { - if (err) throw err; - mbtiles._setup(this); }, function(err) { if (err) throw err; fs.stat(mbtiles.filename, this); @@ -389,18 +386,24 @@ MBTiles.prototype.startWriting = function(callback) { if (typeof callback !== 'function') throw new Error('Callback needed'); if (!this.open) return callback(new Error('MBTiles not yet loaded')); - // Sets the synchronous flag to OFF for (much) faster inserts. - // See http://www.sqlite3.org/pragma.html#pragma_synchronous - var mbtiles = this; - if (!this._isWritable) { - this._isWritable = 1; - this._clearCaches(); - this._db.run('PRAGMA synchronous=OFF', callback); - } else { - this._isWritable++; - return callback(null); - } + Step(function() { + mbtiles._setup(this); + }, function(err) { + if (err) throw err; + // Sets the synchronous flag to OFF for (much) faster inserts. + // See http://www.sqlite3.org/pragma.html#pragma_synchronous + if (!mbtiles._isWritable) { + mbtiles._isWritable = 1; + mbtiles._clearCaches(); + mbtiles._db.run('PRAGMA synchronous=OFF', this); + } else { + mbtiles._isWritable++; + this(); + } + }, function(err) { + return callback(err); + }); }; MBTiles.prototype._clearCaches = function() { diff --git a/test/info.test.js b/test/info.test.js index 2c269d7..475343d 100644 --- a/test/info.test.js +++ b/test/info.test.js @@ -61,7 +61,7 @@ exports['get/put metadata from empty file'] = function(beforeExit) { assert.deepEqual({ basename: "empty.mbtiles", - filesize: 16384, + filesize: 0, id: "empty", scheme: "tms" }, data); @@ -89,7 +89,7 @@ exports['get/put metadata from empty file'] = function(beforeExit) { assert.deepEqual({ basename: "empty.mbtiles", - filesize: 16384, + filesize: 0, id: "empty", scheme: "tms", version: "1.0.0"