You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by sm...@apache.org on 2023/06/08 13:04:59 UTC
[knox] branch master updated: KNOX-2915 - Descriptors are reloaded before topology redeployment at startup (#760)
This is an automated email from the ASF dual-hosted git repository.
smolnar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git
The following commit(s) were added to refs/heads/master by this push:
new cd0ef1711 KNOX-2915 - Descriptors are reloaded before topology redeployment at startup (#760)
cd0ef1711 is described below
commit cd0ef17113caf546ac0a3ec32f82acba42959c2c
Author: Sandor Molnar <sm...@apache.org>
AuthorDate: Thu Jun 8 15:04:53 2023 +0200
KNOX-2915 - Descriptors are reloaded before topology redeployment at startup (#760)
---
.../src/main/java/org/apache/knox/gateway/GatewayMessages.java | 3 +++
.../src/main/java/org/apache/knox/gateway/GatewayServer.java | 8 +++++++-
.../gateway/services/topology/impl/DefaultTopologyService.java | 8 ++++----
.../apache/knox/gateway/services/topology/TopologyService.java | 2 ++
4 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayMessages.java b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayMessages.java
index d7e3042ff..c5830bd8c 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayMessages.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayMessages.java
@@ -73,6 +73,9 @@ public interface GatewayMessages {
@Message( level = MessageLevel.INFO, text = "Loading topologies from directory: {0}" )
void loadingTopologiesFromDirectory( String topologiesDir );
+ @Message( level = MessageLevel.INFO, text = "Loading descriptors from directory: {0}" )
+ void loadingDescriptorsFromDirectory(String descriptorsDir);
+
@Message( level = MessageLevel.DEBUG, text = "Loading topology file: {0}" )
void loadingTopologyFile( String fileName );
diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java
index dc5969b0c..65fefd50d 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java
@@ -623,9 +623,15 @@ public class GatewayServer {
// Load the current topologies.
// Redeploy autodeploy topologies.
File topologiesDir = calculateAbsoluteTopologiesDir();
- log.loadingTopologiesFromDirectory(topologiesDir.getAbsolutePath());
monitor = services.getService(ServiceType.TOPOLOGY_SERVICE);
+
+ // Descriptors should be reloaded before topology reloading at startup, so that any changes to descriptors
+ // will be realized before Knox deploys "old" topologies that would have re-deployed anyway in a matter of seconds
+ // by the descriptor monitor
+ monitor.reloadDescriptors();
+
monitor.addTopologyChangeListener(listener);
+ log.loadingTopologiesFromDirectory(topologiesDir.getAbsolutePath());
monitor.reloadTopologies();
List<String> autoDeploys = config.getAutoDeployTopologyNames();
if (autoDeploys != null) {
diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java b/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java
index 0ab8a7095..fba249eda 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java
@@ -549,12 +549,12 @@ public class DefaultTopologyService extends FileAlterationListenerAdaptor implem
log.remoteConfigurationMonitorStartFailure(remoteMonitor.getClass().getTypeName(), e.getLocalizedMessage());
}
}
-
- // Trigger descriptor discovery (KNOX-2301)
- triggerDescriptorDiscovery();
}
- private void triggerDescriptorDiscovery() {
+ // Trigger descriptor discovery (KNOX-2301)
+ @Override
+ public void reloadDescriptors() {
+ log.loadingDescriptorsFromDirectory(descriptorsDirectory.getAbsolutePath());
for (File descriptor : getDescriptors()) {
descriptorsMonitor.onFileChange(descriptor);
}
diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/services/topology/TopologyService.java b/gateway-spi/src/main/java/org/apache/knox/gateway/services/topology/TopologyService.java
index 6fb11fcdb..8fa65e47c 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/services/topology/TopologyService.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/services/topology/TopologyService.java
@@ -56,6 +56,8 @@ public interface TopologyService extends Service, ServiceDefinitionChangeListene
Collection<File> getDescriptors();
+ void reloadDescriptors();
+
void deleteTopology(Topology t);
boolean deleteDescriptor(String name);