Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F33070169
D14485.1768442491.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D14485.1768442491.diff
View Options
diff --git a/keyserver/src/cron/cron.js b/keyserver/src/cron/cron.js
--- a/keyserver/src/cron/cron.js
+++ b/keyserver/src/cron/cron.js
@@ -1,9 +1,12 @@
// @flow
import type { Account as OlmAccount } from '@commapp/olm';
+import olm from '@commapp/olm';
import cluster from 'cluster';
import schedule from 'node-schedule';
+import { verifyMemoryUsage } from 'lib/utils/olm-memory-utils.js';
+
import { backupDB } from './backups.js';
import { createDailyUpdatesThread } from './daily-updates.js';
import { postMetrics } from './metrics.js';
@@ -125,6 +128,13 @@
}
},
);
+ schedule.scheduleJob(
+ '0,15,30,45 * * * *', // every 15 minutes
+ async () => {
+ await olm.init();
+ verifyMemoryUsage('cronjob');
+ },
+ );
}
if (isPrimaryNode || isAuxiliaryNode) {
schedule.scheduleJob(
diff --git a/lib/utils/olm-memory-utils.js b/lib/utils/olm-memory-utils.js
new file mode 100644
--- /dev/null
+++ b/lib/utils/olm-memory-utils.js
@@ -0,0 +1,38 @@
+// @flow
+
+import olm from '@commapp/olm';
+
+let olmTotalMemory = null,
+ olmUsedMemory = null;
+
+function verifyMemoryUsage(method: string) {
+ try {
+ if (olmTotalMemory === null && olmUsedMemory === null) {
+ olmTotalMemory = olm.get_total_memory();
+ olmUsedMemory = olm.get_used_memory();
+ return;
+ }
+
+ const currentTotalMemory = olm.get_total_memory();
+ if (currentTotalMemory !== olmTotalMemory) {
+ console.error(
+ `Olm's total memory changed from ${olmTotalMemory ?? 0} ` +
+ `to ${currentTotalMemory} after executing ${method} method`,
+ );
+ olmTotalMemory = currentTotalMemory;
+ }
+
+ const currentUsedMemory = olm.get_used_memory();
+ if (currentUsedMemory !== olmUsedMemory) {
+ console.error(
+ `Olm's used memory changed from ${olmUsedMemory ?? 0} ` +
+ `to ${currentUsedMemory} after executing ${method} method`,
+ );
+ olmUsedMemory = currentUsedMemory;
+ }
+ } catch (e) {
+ console.error('Encountered error while trying log Olm memory', e);
+ }
+}
+
+export { verifyMemoryUsage };
diff --git a/web/shared-worker/worker/worker-crypto.js b/web/shared-worker/worker/worker-crypto.js
--- a/web/shared-worker/worker/worker-crypto.js
+++ b/web/shared-worker/worker/worker-crypto.js
@@ -24,6 +24,7 @@
import type { InboundP2PMessage } from 'lib/types/sqlite-types.js';
import { getMessageForException } from 'lib/utils/errors.js';
import { entries } from 'lib/utils/objects.js';
+import { verifyMemoryUsage } from 'lib/utils/olm-memory-utils.js';
import { getOlmUtility } from 'lib/utils/olm-utility.js';
import {
retrieveAccountKeysSet,
@@ -388,6 +389,7 @@
message.olmWasmPath,
message.initialCryptoStore,
);
+ verifyMemoryUsage('INITIALIZE_CRYPTO_ACCOUNT');
} else if (message.type === workerRequestMessageTypes.CALL_OLM_API_METHOD) {
const method: (...$ReadOnlyArray<mixed>) => mixed = (olmAPI[
message.method
@@ -395,6 +397,7 @@
// Flow doesn't allow us to bind the (stringified) method name with
// the argument types so we need to pass the args as mixed.
const result = await method(...message.args);
+ verifyMemoryUsage(message.method);
return {
type: workerResponseMessageTypes.CALL_OLM_API_METHOD,
result,
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jan 15, 2:01 AM (19 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5935275
Default Alt Text
D14485.1768442491.diff (3 KB)
Attached To
Mode
D14485: [web][keyserver] log Olm memory usage changes
Attached
Detach File
Event Timeline
Log In to Comment