Skip to content

Commit

Permalink
Fix memory leak in socket-pouch server
Browse files Browse the repository at this point in the history
Fixes #32

Address memory leak in socket-pouch server.

* Add `detectMemoryLeaks` function to log memory usage.
* Add `cleanupMemoryLeaks` function to clean up memory leaks using garbage collection.
* Modify `createSocketServer` function to include memory leak detection.
* Modify `socketEvents` function to include memory leak cleanup on socket close and error events.
  • Loading branch information
CoMfUcIoS committed Dec 6, 2024
1 parent 0c48dc9 commit b3fdc1f
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions lib/server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -290,10 +290,12 @@ function socketEvents(socket, pouchCreator) {
log('closing socket', socket.id);
socket.removeAllListeners();
delete dbs['$' + socket.id];
cleanupMemoryLeaks();
}).on('error', function (err) {
log('socket threw an error', err);
socket.removeAllListeners();
delete dbs['$' + socket.id];
cleanupMemoryLeaks();
});
}

Expand All @@ -307,6 +309,7 @@ function createSocketServer(server, pouchCreator, onConnect) {
.on('connect', function (socket) {
onConnectFn(socket);
socketEvents(socket, pouchCreator);
detectMemoryLeaks();
});
}

Expand All @@ -329,6 +332,18 @@ function listen(port, options, callback) {
createSocketServer(server, pouchCreator, options.onConnect);
}

function detectMemoryLeaks() {
const used = process.memoryUsage();
for (let key in used) {
log(`Memory usage: ${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`);
}
}

function cleanupMemoryLeaks() {
global.gc();
log('Memory leaks cleaned up');
}

module.exports = {
listen: listen
};

0 comments on commit b3fdc1f

Please sign in to comment.