|
20 | 20 | const putility = require('@heyputer/putility'); |
21 | 21 | const { MultiDetachable } = putility.libs.listener; |
22 | 22 | const { TDetachable } = putility.traits; |
| 23 | +const { TeePromise } = putility.libs.promise; |
23 | 24 |
|
24 | 25 | const { NodeInternalIDSelector, NodeChildSelector, NodeUIDSelector, RootNodeSelector, NodePathSelector } = require("../../../filesystem/node/selectors"); |
25 | 26 | const { Context } = require("../../../util/context"); |
@@ -719,26 +720,32 @@ class PuterFSProvider extends putility.AdvancedBase { |
719 | 720 | const entryOp = await svc_fsEntry.update(uid, raw_fsentry_delta); |
720 | 721 |
|
721 | 722 | // depends on fsentry, does not depend on S3 |
722 | | - (async () => { |
| 723 | + const entryOpPromise = (async () => { |
723 | 724 | await entryOp.awaitDone(); |
724 | 725 | 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', { |
726 | 736 | node, |
727 | | - context: this.context, |
| 737 | + context, |
728 | 738 | }); |
729 | 739 | })(); |
730 | 740 |
|
| 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) |
731 | 744 | state_upload.post_insert({ |
732 | 745 | db, user: actor.type.user, node, uid, message, ts, |
733 | 746 | }); |
734 | 747 |
|
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; |
742 | 749 |
|
743 | 750 | return node; |
744 | 751 | } |
|
0 commit comments