diff options
Diffstat (limited to 'mailnews/db/gloda')
-rw-r--r-- | mailnews/db/gloda/modules/datastore.js | 11 | ||||
-rw-r--r-- | mailnews/db/gloda/modules/index_msg.js | 1 | ||||
-rw-r--r-- | mailnews/db/gloda/modules/indexer.js | 19 |
3 files changed, 31 insertions, 0 deletions
diff --git a/mailnews/db/gloda/modules/datastore.js b/mailnews/db/gloda/modules/datastore.js index c9374c563..70bbdc6a7 100644 --- a/mailnews/db/gloda/modules/datastore.js +++ b/mailnews/db/gloda/modules/datastore.js @@ -1030,6 +1030,17 @@ var GlodaDatastore = { var dbConnection; + // Report about the size of the database through telemetry (if there's a + // database, naturally). + if (dbFile.exists()) { + try { + let h = Services.telemetry.getHistogramById("THUNDERBIRD_GLODA_SIZE_MB"); + h.add(dbFile.fileSize/1048576); + } catch (e) { + this._log.warn("Couldn't report telemetry", e); + } + } + // Create the file if it does not exist if (!dbFile.exists()) { this._log.debug("Creating database because it doesn't exist."); diff --git a/mailnews/db/gloda/modules/index_msg.js b/mailnews/db/gloda/modules/index_msg.js index 8aec476a3..d4d7a8ceb 100644 --- a/mailnews/db/gloda/modules/index_msg.js +++ b/mailnews/db/gloda/modules/index_msg.js @@ -1460,6 +1460,7 @@ var GlodaMsgIndexer = { yield aCallbackHandle.pushAndGo( this._indexMessage(msgHdr, aCallbackHandle), {what: "indexMessage", msgHdr: msgHdr}); + GlodaIndexer._indexedMessageCount++; if (logDebug) this._log.debug("<<< back from _indexMessage"); } diff --git a/mailnews/db/gloda/modules/indexer.js b/mailnews/db/gloda/modules/indexer.js index e75b6796b..f6c939530 100644 --- a/mailnews/db/gloda/modules/indexer.js +++ b/mailnews/db/gloda/modules/indexer.js @@ -1006,6 +1006,10 @@ var GlodaIndexer = { // make ourselves less responsive by drawing out the period of time we // are dominating the main thread. this._perfIndexStopwatch.start(); + // For telemetry purposes, we want to know how many messages we've been + // processing during that batch, and how long it took, pauses included. + let t0 = Date.now(); + this._indexedMessageCount = 0; batchCount = 0; while (batchCount < this._indexTokens) { if ((this._callbackHandle.activeIterator === null) && @@ -1146,6 +1150,21 @@ var GlodaIndexer = { } } + // All pauses have been taken, how effective were we? Report! + // XXX: there's possibly a lot of fluctuation since we go through here + // every 5 messages or even less + if (this._indexedMessageCount > 0) { + let delta = (Date.now() - t0)/1000; // in seconds + let v = Math.round(this._indexedMessageCount/delta); + try { + let h = Services.telemetry + .getHistogramById("THUNDERBIRD_INDEXING_RATE_MSG_PER_S"); + h.add(v); + } catch (e) { + this._log.warn("Couldn't report telemetry", e, v); + } + } + if (batchCount > 0) { let totalTime = this._perfIndexStopwatch.realTimeSeconds * 1000; let timePerToken = totalTime / batchCount; |