Просмотр исходного кода

imprv/add shouldEmit argument and excute socket.emit only in addAllPages

keigo-h 3 лет назад
Родитель
Сommit
88f0217fb2

+ 1 - 1
packages/app/src/server/service/page.ts

@@ -2661,7 +2661,7 @@ class PageService {
 
 
     // then migrate
     // then migrate
     try {
     try {
-      await this.normalizeParentRecursively(['/'], null);
+      await this.normalizeParentRecursively(['/'], null, true);
     }
     }
     catch (err) {
     catch (err) {
       logger.error('V5 initial miration failed.', err);
       logger.error('V5 initial miration failed.', err);

+ 6 - 6
packages/app/src/server/service/search-delegator/elasticsearch.ts

@@ -437,7 +437,7 @@ class ElasticsearchDelegator implements SearchDelegator<Data, ESTermsKey, ESQuer
 
 
   addAllPages() {
   addAllPages() {
     const Page = mongoose.model('Page');
     const Page = mongoose.model('Page');
-    return this.updateOrInsertPages(() => Page.find(), { isEmittingProgressEvent: true, invokeGarbageCollection: true });
+    return this.updateOrInsertPages(() => Page.find(), { isEmittingProgressEvent: true, invokeGarbageCollection: true }, true);
   }
   }
 
 
   updateOrInsertPageById(pageId) {
   updateOrInsertPageById(pageId) {
@@ -456,7 +456,7 @@ class ElasticsearchDelegator implements SearchDelegator<Data, ESTermsKey, ESQuer
   /**
   /**
    * @param {function} queryFactory factory method to generate a Mongoose Query instance
    * @param {function} queryFactory factory method to generate a Mongoose Query instance
    */
    */
-  async updateOrInsertPages(queryFactory, option: any = {}) {
+  async updateOrInsertPages(queryFactory, option: any = {}, shouldEmit = false) {
     const { isEmittingProgressEvent = false, invokeGarbageCollection = false } = option;
     const { isEmittingProgressEvent = false, invokeGarbageCollection = false } = option;
 
 
     const Page = mongoose.model('Page') as unknown as PageModel;
     const Page = mongoose.model('Page') as unknown as PageModel;
@@ -465,7 +465,7 @@ class ElasticsearchDelegator implements SearchDelegator<Data, ESTermsKey, ESQuer
     const Comment = mongoose.model('Comment') as any; // TODO: typescriptize model
     const Comment = mongoose.model('Comment') as any; // TODO: typescriptize model
     const PageTagRelation = mongoose.model('PageTagRelation') as any; // TODO: typescriptize model
     const PageTagRelation = mongoose.model('PageTagRelation') as any; // TODO: typescriptize model
 
 
-    const socket = this.socketIoService.getAdminSocket();
+    const socket = shouldEmit ? this.socketIoService.getAdminSocket() : null;
 
 
     // prepare functions invoked from custom streams
     // prepare functions invoked from custom streams
     const prepareBodyForCreate = this.prepareBodyForCreate.bind(this);
     const prepareBodyForCreate = this.prepareBodyForCreate.bind(this);
@@ -584,7 +584,7 @@ class ElasticsearchDelegator implements SearchDelegator<Data, ESTermsKey, ESQuer
           logger.info(`Adding pages progressing: (count=${count}, errors=${res.errors}, took=${res.took}ms)`);
           logger.info(`Adding pages progressing: (count=${count}, errors=${res.errors}, took=${res.took}ms)`);
 
 
           if (isEmittingProgressEvent) {
           if (isEmittingProgressEvent) {
-            socket.emit('addPageProgress', { totalCount, count, skipped });
+            socket?.emit('addPageProgress', { totalCount, count, skipped });
           }
           }
         }
         }
         catch (err) {
         catch (err) {
@@ -608,7 +608,7 @@ class ElasticsearchDelegator implements SearchDelegator<Data, ESTermsKey, ESQuer
         logger.info(`Adding pages has completed: (totalCount=${totalCount}, skipped=${skipped})`);
         logger.info(`Adding pages has completed: (totalCount=${totalCount}, skipped=${skipped})`);
 
 
         if (isEmittingProgressEvent) {
         if (isEmittingProgressEvent) {
-          socket.emit('finishAddPage', { totalCount, count, skipped });
+          socket?.emit('finishAddPage', { totalCount, count, skipped });
         }
         }
         callback();
         callback();
       },
       },
@@ -623,7 +623,7 @@ class ElasticsearchDelegator implements SearchDelegator<Data, ESTermsKey, ESQuer
       .pipe(writeStream);
       .pipe(writeStream);
 
 
     return streamToPromise(writeStream);
     return streamToPromise(writeStream);
-
+    console.log('処理の実行が完了しました!');
   }
   }
 
 
   deletePages(pages) {
   deletePages(pages) {