Kaynağa Gözat

refactor messaging for rebuilding indices

Yuki Takei 5 yıl önce
ebeveyn
işleme
4d5f4c6af7

+ 3 - 3
src/client/js/components/Admin/ElasticsearchManagement/ElasticsearchManagement.jsx

@@ -47,20 +47,20 @@ class ElasticsearchManagement extends React.Component {
   initWebSockets() {
   initWebSockets() {
     const socket = this.props.adminSocketIoContainer.getSocket();
     const socket = this.props.adminSocketIoContainer.getSocket();
 
 
-    socket.on('admin:addPageProgress', (data) => {
+    socket.on('addPageProgress', (data) => {
       this.setState({
       this.setState({
         isRebuildingProcessing: true,
         isRebuildingProcessing: true,
       });
       });
     });
     });
 
 
-    socket.on('admin:finishAddPage', (data) => {
+    socket.on('finishAddPage', (data) => {
       this.setState({
       this.setState({
         isRebuildingProcessing: false,
         isRebuildingProcessing: false,
         isRebuildingCompleted: true,
         isRebuildingCompleted: true,
       });
       });
     });
     });
 
 
-    socket.on('admin:rebuildingFailed', (data) => {
+    socket.on('rebuildingFailed', (data) => {
       toastError(new Error(data.error), 'Rebuilding Index has failed.');
       toastError(new Error(data.error), 'Rebuilding Index has failed.');
     });
     });
   }
   }

+ 8 - 4
src/client/js/components/Admin/ElasticsearchManagement/RebuildIndexControls.jsx

@@ -27,15 +27,19 @@ class RebuildIndexControls extends React.Component {
   initWebSockets() {
   initWebSockets() {
     const socket = this.props.adminSocketIoContainer.getSocket();
     const socket = this.props.adminSocketIoContainer.getSocket();
 
 
-    socket.on('admin:addPageProgress', (data) => {
+    socket.on('addPageProgress', (data) => {
       this.setState({
       this.setState({
-        ...data,
+        total: data.totalCount,
+        current: data.count,
+        skip: data.skipped,
       });
       });
     });
     });
 
 
-    socket.on('admin:finishAddPage', (data) => {
+    socket.on('finishAddPage', (data) => {
       this.setState({
       this.setState({
-        ...data,
+        total: data.totalCount,
+        current: data.count,
+        skip: data.skipped,
       });
       });
     });
     });
 
 

+ 3 - 4
src/server/routes/admin.js

@@ -86,15 +86,14 @@ module.exports = function(crowi, app) {
   }
   }
 
 
   // setup websocket event for rebuild index
   // setup websocket event for rebuild index
-  // FIXME: with GW-3262
   // searchEvent.on('addPageProgress', (total, current, skip) => {
   // searchEvent.on('addPageProgress', (total, current, skip) => {
-  //   crowi.getIo().sockets.emit('admin:addPageProgress', { total, current, skip });
+  //   socketIoService.getAdminSocket().emit('admin:addPageProgress', { total, current, skip });
   // });
   // });
   // searchEvent.on('finishAddPage', (total, current, skip) => {
   // searchEvent.on('finishAddPage', (total, current, skip) => {
-  //   crowi.getIo().sockets.emit('admin:finishAddPage', { total, current, skip });
+  //   socketIoService.getAdminSocket().emit('admin:finishAddPage', { total, current, skip });
   // });
   // });
   // searchEvent.on('rebuildingFailed', (error) => {
   // searchEvent.on('rebuildingFailed', (error) => {
-  //   crowi.getIo().sockets.emit('admin:rebuildingFailed', { error: error.message });
+  //   socketIoService.getAdminSocket().emit('admin:rebuildingFailed', { error: error.message });
   // });
   // });
 
 
   actions.index = function(req, res) {
   actions.index = function(req, res) {

+ 8 - 7
src/server/service/search-delegator/elasticsearch.js

@@ -17,9 +17,10 @@ const BULK_REINDEX_SIZE = 100;
 
 
 class ElasticsearchDelegator {
 class ElasticsearchDelegator {
 
 
-  constructor(configManager, searchEvent) {
+  constructor(configManager, socketIoService, crowi) {
     this.configManager = configManager;
     this.configManager = configManager;
-    this.searchEvent = searchEvent;
+    // this.socketIoService = socketIoService;
+    this.crowi = crowi;
 
 
     this.client = null;
     this.client = null;
 
 
@@ -225,8 +226,8 @@ class ElasticsearchDelegator {
     catch (error) {
     catch (error) {
       logger.warn('An error occured while \'rebuildIndex\', normalize indices anyway.');
       logger.warn('An error occured while \'rebuildIndex\', normalize indices anyway.');
 
 
-      const { searchEvent } = this;
-      searchEvent.emit('rebuildingFailed', error);
+      const socket = this.crowi.socketIoService.getAdminSocket();
+      socket.emit('rebuildingFailed', { error: error.message });
 
 
       throw error;
       throw error;
     }
     }
@@ -360,7 +361,7 @@ class ElasticsearchDelegator {
     const Bookmark = mongoose.model('Bookmark');
     const Bookmark = mongoose.model('Bookmark');
     const PageTagRelation = mongoose.model('PageTagRelation');
     const PageTagRelation = mongoose.model('PageTagRelation');
 
 
-    const { searchEvent } = this;
+    const socket = this.crowi.socketIoService.getAdminSocket();
 
 
     // prepare functions invoked from custom streams
     // prepare functions invoked from custom streams
     const prepareBodyForCreate = this.prepareBodyForCreate.bind(this);
     const prepareBodyForCreate = this.prepareBodyForCreate.bind(this);
@@ -458,7 +459,7 @@ class ElasticsearchDelegator {
           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) {
-            searchEvent.emit('addPageProgress', totalCount, count, skipped);
+            socket.emit('addPageProgress', { totalCount, count, skipped });
           }
           }
         }
         }
         catch (err) {
         catch (err) {
@@ -471,7 +472,7 @@ class ElasticsearchDelegator {
         logger.info(`Adding pages has completed: (totalCount=${totalCount}, skipped=${skipped})`);
         logger.info(`Adding pages has completed: (totalCount=${totalCount}, skipped=${skipped})`);
 
 
         if (isEmittingProgressEvent) {
         if (isEmittingProgressEvent) {
-          searchEvent.emit('finishAddPage', totalCount, count, skipped);
+          socket.emit('finishAddPage', { totalCount, count, skipped });
         }
         }
         callback();
         callback();
       },
       },

+ 2 - 2
src/server/service/search.js

@@ -47,12 +47,12 @@ class SearchService {
     if (this.isSearchboxEnabled) {
     if (this.isSearchboxEnabled) {
       logger.info('Searchbox is enabled');
       logger.info('Searchbox is enabled');
       const SearchboxDelegator = require('./search-delegator/searchbox.js');
       const SearchboxDelegator = require('./search-delegator/searchbox.js');
-      return new SearchboxDelegator(this.configManager, searchEvent);
+      return new SearchboxDelegator(this.configManager, searchEvent, this.crowi);
     }
     }
     if (this.isElasticsearchEnabled) {
     if (this.isElasticsearchEnabled) {
       logger.info('Elasticsearch (not Searchbox) is enabled');
       logger.info('Elasticsearch (not Searchbox) is enabled');
       const ElasticsearchDelegator = require('./search-delegator/elasticsearch.js');
       const ElasticsearchDelegator = require('./search-delegator/elasticsearch.js');
-      return new ElasticsearchDelegator(this.configManager, searchEvent);
+      return new ElasticsearchDelegator(this.configManager, searchEvent, this.crowi);
     }
     }
 
 
   }
   }