diff --git a/src/main/java/org/codelibs/fess/app/web/admin/maintenance/AdminMaintenanceAction.java b/src/main/java/org/codelibs/fess/app/web/admin/maintenance/AdminMaintenanceAction.java index 2450b4d0e8f44e9711a6a5661ed5183e6218e584..808efba56d4da9d39c738a87c142d2553b1bf7cc 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/maintenance/AdminMaintenanceAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/maintenance/AdminMaintenanceAction.java @@ -118,12 +118,14 @@ public class AdminMaintenanceAction extends FessAdminAction { public HtmlResponse reloadDocIndex(final ActionForm form) { validate(form, messages -> {}, this::asIndexHtml); verifyToken(this::asIndexHtml); - final String docIndex = fessConfig.getIndexDocumentUpdateIndex(); - searchEngineClient.admin().indices().prepareClose(docIndex).execute(ActionListener.wrap(res -> { - logger.info("Close {}", docIndex); - searchEngineClient.admin().indices().prepareOpen(docIndex).execute( - ActionListener.wrap(res2 -> logger.info("Open {}", docIndex), e -> logger.warn("Failed to open {}", docIndex, e))); - }, e -> logger.warn("Failed to close {}", docIndex, e))); + searchEngineClient.flushConfigFiles(() -> { + final String docIndex = fessConfig.getIndexDocumentUpdateIndex(); + searchEngineClient.admin().indices().prepareClose(docIndex).execute(ActionListener.wrap(res -> { + logger.info("Close {}", docIndex); + searchEngineClient.admin().indices().prepareOpen(docIndex).execute( + ActionListener.wrap(res2 -> logger.info("Open {}", docIndex), e -> logger.warn("Failed to open {}", docIndex, e))); + }, e -> logger.warn("Failed to close {}", docIndex, e))); + }); saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL)); return redirect(getClass()); } diff --git a/src/main/java/org/codelibs/fess/es/client/SearchEngineClient.java b/src/main/java/org/codelibs/fess/es/client/SearchEngineClient.java index 20c56d35068789e5ac91c90120839884a44a602d..b62364b879aa108de8832e02ac534aff6b7bec04 100644 --- a/src/main/java/org/codelibs/fess/es/client/SearchEngineClient.java +++ b/src/main/java/org/codelibs/fess/es/client/SearchEngineClient.java @@ -636,6 +636,32 @@ public class SearchEngineClient implements Client { } } + public void flushConfigFiles(final Runnable callback) { + final FessConfig fessConfig = ComponentUtil.getFessConfig(); + + final String fesenType = fessConfig.getFesenType(); + switch (fesenType) { + case Constants.FESEN_TYPE_CLOUD: + case Constants.FESEN_TYPE_AWS: + if (logger.isDebugEnabled()) { + logger.debug("Skipped configsync flush: {}", fesenType); + } + callback.run(); + break; + default: + ComponentUtil.getCurlHelper().post("/_configsync/flush").execute(response -> { + if (logger.isDebugEnabled()) { + logger.debug("Flushed config files: {} => {}", fesenType, response.getContentAsString()); + } + callback.run(); + }, e -> { + logger.warn("Failed to flush config files.", e); + callback.run(); + }); + break; + } + } + protected String generateNewIndexName(final String configIndex) { return configIndex + "." + new SimpleDateFormat("yyyyMMdd").format(new Date()); }