Skip to content

Commit ffc9246

Browse files
authored
dev: consolidate fs.written to fs.write (#1392)
1 parent 1e720a7 commit ffc9246

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

src/backend/src/modules/puterfs/lib/PuterFSProvider.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
const putility = require('@heyputer/putility');
2121
const { MultiDetachable } = putility.libs.listener;
2222
const { TDetachable } = putility.traits;
23+
const { TeePromise } = putility.libs.promise;
2324

2425
const { NodeInternalIDSelector, NodeChildSelector, NodeUIDSelector, RootNodeSelector, NodePathSelector } = require("../../../filesystem/node/selectors");
2526
const { Context } = require("../../../util/context");
@@ -719,26 +720,32 @@ class PuterFSProvider extends putility.AdvancedBase {
719720
const entryOp = await svc_fsEntry.update(uid, raw_fsentry_delta);
720721

721722
// depends on fsentry, does not depend on S3
722-
(async () => {
723+
const entryOpPromise = (async () => {
723724
await entryOp.awaitDone();
724725
resourceService.free(uid);
725-
svc_event.emit('fs.written.file', {
726+
})();
727+
728+
const cachePromise = (async () => {
729+
const svc_fileCache = context.get('services').get('file-cache');
730+
await svc_fileCache.invalidate(node);
731+
})();
732+
733+
(async () => {
734+
await Promise.all([entryOpPromise, cachePromise]);
735+
svc_event.emit('fs.write.file', {
726736
node,
727-
context: this.context,
737+
context,
728738
});
729739
})();
730740

741+
// TODO (xiaochen): determine if this can be removed, post_insert handler need
742+
// to skip events from other servers (why? 1. current write logic is inside
743+
// the local server 2. broadcast system conduct "fire-and-forget" behavior)
731744
state_upload.post_insert({
732745
db, user: actor.type.user, node, uid, message, ts,
733746
});
734747

735-
const svc_fileCache = context.get('services').get('file-cache');
736-
await svc_fileCache.invalidate(node);
737-
738-
svc_event.emit('fs.write.file', {
739-
node,
740-
context,
741-
});
748+
await cachePromise;
742749

743750
return node;
744751
}

src/backend/src/services/worker/WorkerService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class WorkerService extends BaseService {
9191
const svc_auth = this.services.get("auth");
9292
const svc_notification = this.services.get('notification');
9393

94-
svc_event.on('fs.written.file', async (_key, data, meta) => {
94+
svc_event.on('fs.write.file', async (_key, data, meta) => {
9595
// Code should only run on the same server as the write
9696
if (meta.from_outside) return;
9797

0 commit comments

Comments
 (0)