summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2021-10-29 11:02:27 +0000
committerMoonchild <moonchild@palemoon.org>2022-04-02 14:39:54 +0200
commitee86d3eb9c468edbb81550d27114ed66b3d71ee5 (patch)
treea00ffa052ffb8d072203938f595548dcd3b2e0ed /storage
parentd0acadd727468ccaa4e3cbe3673e29890c2551ca (diff)
downloaduxp-ee86d3eb9c468edbb81550d27114ed66b3d71ee5.tar.gz
Issue #21 - Remove Telemetry plumbing and fix build.
Note this won't give working applications. Requires FE changes and additional js module changes (next part).
Diffstat (limited to 'storage')
-rw-r--r--storage/TelemetryVFS.cpp66
-rw-r--r--storage/mozStorageAsyncStatementExecution.cpp2
-rw-r--r--storage/mozStorageConnection.cpp48
3 files changed, 7 insertions, 109 deletions
diff --git a/storage/TelemetryVFS.cpp b/storage/TelemetryVFS.cpp
index eb102a0461..060255ba4e 100644
--- a/storage/TelemetryVFS.cpp
+++ b/storage/TelemetryVFS.cpp
@@ -1,11 +1,15 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/* This is a passthrough module initially set up to record telemetry via
+ an IO interposer. While the interposing plumbing is still intact to
+ avoid storage issues, telemetry recording has been removed
+ MCFIXME: Rewrite calls to go directly to SQLite and no longer through
+ this plumbing... */
+
#include <string.h>
-#include "mozilla/Telemetry.h"
#include "mozilla/Preferences.h"
#include "sqlite3.h"
#include "nsThreadUtils.h"
@@ -37,20 +41,10 @@ using namespace mozilla::dom::quota;
struct Histograms {
const char *name;
- const Telemetry::ID readB;
- const Telemetry::ID writeB;
- const Telemetry::ID readMS;
- const Telemetry::ID writeMS;
- const Telemetry::ID syncMS;
};
#define SQLITE_TELEMETRY(FILENAME, HGRAM) \
{ FILENAME, \
- Telemetry::MOZ_SQLITE_ ## HGRAM ## _READ_B, \
- Telemetry::MOZ_SQLITE_ ## HGRAM ## _WRITE_B, \
- Telemetry::MOZ_SQLITE_ ## HGRAM ## _READ_MS, \
- Telemetry::MOZ_SQLITE_ ## HGRAM ## _WRITE_MS, \
- Telemetry::MOZ_SQLITE_ ## HGRAM ## _SYNC_MS \
}
Histograms gHistograms[] = {
@@ -70,31 +64,12 @@ public:
* automatically determines whether IO is happening on the main
* thread and picks an appropriate histogram.
*
- * @param id takes a telemetry histogram id. The id+1 must be an
- * equivalent histogram for the main thread. Eg, MOZ_SQLITE_OPEN_MS
- * is followed by MOZ_SQLITE_OPEN_MAIN_THREAD_MS.
- *
* @param aOp optionally takes an IO operation to report through the
* IOInterposer. Filename will be reported as NULL, and reference will be
* either "sqlite-mainthread" or "sqlite-otherthread".
*/
- explicit IOThreadAutoTimer(Telemetry::ID aId,
- IOInterposeObserver::Operation aOp = IOInterposeObserver::OpNone)
- : start(TimeStamp::Now()),
- id(aId),
- op(aOp)
- {
- }
-
- /**
- * This constructor is for when we want to report an operation to
- * IOInterposer but do not require a telemetry probe.
- *
- * @param aOp IO Operation to report through the IOInterposer.
- */
explicit IOThreadAutoTimer(IOInterposeObserver::Operation aOp)
: start(TimeStamp::Now()),
- id(Telemetry::HistogramCount),
op(aOp)
{
}
@@ -108,7 +83,6 @@ public:
private:
const TimeStamp start;
- const Telemetry::ID id;
IOInterposeObserver::Operation op;
};
@@ -351,7 +325,6 @@ int
xRead(sqlite3_file *pFile, void *zBuf, int iAmt, sqlite_int64 iOfst)
{
telemetry_file *p = (telemetry_file *)pFile;
- IOThreadAutoTimer ioTimer(p->histograms->readMS, IOInterposeObserver::OpRead);
int rc;
rc = p->pReal->pMethods->xRead(p->pReal, zBuf, iAmt, iOfst);
// sqlite likes to read from empty files, this is normal, ignore it.
@@ -378,7 +351,6 @@ int
xWrite(sqlite3_file *pFile, const void *zBuf, int iAmt, sqlite_int64 iOfst)
{
telemetry_file *p = (telemetry_file *)pFile;
- IOThreadAutoTimer ioTimer(p->histograms->writeMS, IOInterposeObserver::OpWrite);
int rc;
if (p->quotaObject) {
MOZ_ASSERT(INT64_MAX - iOfst >= iAmt);
@@ -404,7 +376,6 @@ xWrite(sqlite3_file *pFile, const void *zBuf, int iAmt, sqlite_int64 iOfst)
int
xTruncate(sqlite3_file *pFile, sqlite_int64 size)
{
- IOThreadAutoTimer ioTimer(Telemetry::MOZ_SQLITE_TRUNCATE_MS);
telemetry_file *p = (telemetry_file *)pFile;
int rc;
if (p->quotaObject) {
@@ -420,14 +391,7 @@ xTruncate(sqlite3_file *pFile, sqlite_int64 size)
}
rc = p->pReal->pMethods->xTruncate(p->pReal, size);
if (p->quotaObject) {
- if (rc == SQLITE_OK) {
-#ifdef DEBUG
- // Make sure xTruncate set the size exactly as we calculated above.
- sqlite_int64 newSize;
- MOZ_ASSERT(xFileSize(pFile, &newSize) == SQLITE_OK);
- MOZ_ASSERT(newSize == size);
-#endif
- } else {
+ if (rc != SQLITE_OK) {
NS_WARNING("xTruncate failed on a quota-controlled file, attempting to "
"update its current size...");
if (xFileSize(pFile, &size) == SQLITE_OK) {
@@ -445,7 +409,6 @@ int
xSync(sqlite3_file *pFile, int flags)
{
telemetry_file *p = (telemetry_file *)pFile;
- IOThreadAutoTimer ioTimer(p->histograms->syncMS, IOInterposeObserver::OpFSync);
return p->pReal->pMethods->xSync(p->pReal, flags);
}
@@ -513,19 +476,6 @@ xFileControl(sqlite3_file *pFile, int op, void *pArg)
if (op == SQLITE_FCNTL_CHUNK_SIZE && rc == SQLITE_OK) {
p->fileChunkSize = *static_cast<int*>(pArg);
}
-#ifdef DEBUG
- if (op == SQLITE_FCNTL_SIZE_HINT && p->quotaObject && rc == SQLITE_OK) {
- sqlite3_int64 hintSize = *static_cast<sqlite3_int64*>(pArg);
- if (p->fileChunkSize > 0) {
- hintSize =
- ((hintSize + p->fileChunkSize - 1) / p->fileChunkSize) *
- p->fileChunkSize;
- }
- sqlite3_int64 currentSize;
- MOZ_ASSERT(xFileSize(pFile, &currentSize) == SQLITE_OK);
- MOZ_ASSERT(currentSize >= hintSize);
- }
-#endif
return rc;
}
@@ -606,8 +556,6 @@ int
xOpen(sqlite3_vfs* vfs, const char *zName, sqlite3_file* pFile,
int flags, int *pOutFlags)
{
- IOThreadAutoTimer ioTimer(Telemetry::MOZ_SQLITE_OPEN_MS,
- IOInterposeObserver::OpCreateOrOpen);
sqlite3_vfs *orig_vfs = static_cast<sqlite3_vfs*>(vfs->pAppData);
int rc;
telemetry_file *p = (telemetry_file *)pFile;
diff --git a/storage/mozStorageAsyncStatementExecution.cpp b/storage/mozStorageAsyncStatementExecution.cpp
index 00f584f032..ec9f380bfc 100644
--- a/storage/mozStorageAsyncStatementExecution.cpp
+++ b/storage/mozStorageAsyncStatementExecution.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -20,7 +19,6 @@
#include "mozStorageAsyncStatementExecution.h"
#include "mozilla/DebugOnly.h"
-#include "mozilla/Telemetry.h"
namespace mozilla {
namespace storage {
diff --git a/storage/mozStorageConnection.cpp b/storage/mozStorageConnection.cpp
index 22842ed9e9..c1d5374c79 100644
--- a/storage/mozStorageConnection.cpp
+++ b/storage/mozStorageConnection.cpp
@@ -13,7 +13,6 @@
#include "nsThreadUtils.h"
#include "nsIFile.h"
#include "nsIFileURL.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Mutex.h"
#include "mozilla/CondVar.h"
#include "mozilla/Attributes.h"
@@ -708,36 +707,11 @@ Connection::initializeInternal()
if (mFileURL) {
const char* dbPath = ::sqlite3_db_filename(mDBConn, "main");
MOZ_ASSERT(dbPath);
-
- const char* telemetryFilename =
- ::sqlite3_uri_parameter(dbPath, "telemetryFilename");
- if (telemetryFilename) {
- if (NS_WARN_IF(*telemetryFilename == '\0')) {
- return NS_ERROR_INVALID_ARG;
- }
- mTelemetryFilename = telemetryFilename;
- }
- }
-
- if (mTelemetryFilename.IsEmpty()) {
- mTelemetryFilename = getFilename();
- MOZ_ASSERT(!mTelemetryFilename.IsEmpty());
}
// Properly wrap the database handle's mutex.
sharedDBMutex.initWithMutex(sqlite3_db_mutex(mDBConn));
- // SQLite tracing can slow down queries (especially long queries)
- // significantly. Don't trace unless the user is actively monitoring SQLite.
- if (MOZ_LOG_TEST(gStorageLog, LogLevel::Debug)) {
- ::sqlite3_trace_v2(mDBConn,
- SQLITE_TRACE_STMT | SQLITE_TRACE_PROFILE,
- tracefunc, this);
-
- MOZ_LOG(gStorageLog, LogLevel::Debug, ("Opening connection to '%s' (%p)",
- mTelemetryFilename.get(), this));
- }
-
int64_t pageSize = Service::getDefaultPageSize();
// Set page_size to the preferred default value. This is effective only if
@@ -1093,17 +1067,6 @@ Connection::stepStatement(sqlite3 *aNativeConnection, sqlite3_stmt *aStatement)
::sqlite3_reset(aStatement);
}
- // Report very slow SQL statements to Telemetry
- TimeDuration duration = TimeStamp::Now() - startTime;
- const uint32_t threshold =
- NS_IsMainThread() ? Telemetry::kSlowSQLThresholdForMainThread
- : Telemetry::kSlowSQLThresholdForHelperThreads;
- if (duration.ToMilliseconds() >= threshold) {
- nsDependentCString statementString(::sqlite3_sql(aStatement));
- Telemetry::RecordSlowSQLStatement(statementString, mTelemetryFilename,
- duration.ToMilliseconds());
- }
-
(void)::sqlite3_extended_result_codes(aNativeConnection, 0);
// Drop off the extended result bits of the result code.
return srv & 0xFF;
@@ -1179,17 +1142,6 @@ Connection::executeSql(sqlite3 *aNativeConnection, const char *aSqlString)
int srv = ::sqlite3_exec(aNativeConnection, aSqlString, nullptr, nullptr,
nullptr);
- // Report very slow SQL statements to Telemetry
- TimeDuration duration = TimeStamp::Now() - startTime;
- const uint32_t threshold =
- NS_IsMainThread() ? Telemetry::kSlowSQLThresholdForMainThread
- : Telemetry::kSlowSQLThresholdForHelperThreads;
- if (duration.ToMilliseconds() >= threshold) {
- nsDependentCString statementString(aSqlString);
- Telemetry::RecordSlowSQLStatement(statementString, mTelemetryFilename,
- duration.ToMilliseconds());
- }
-
return srv;
}