This is an automated email from the ASF dual-hosted git repository.

jsinovassinnaik pushed a commit to branch avoid-duplicate-log
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit 1e0c5bba22f51c8ccdff40e806f6a4cdf23791bc
Author: jsinovassin <[email protected]>
AuthorDate: Fri Feb 6 11:54:04 2026 +0100

    UNOMI-930: sync startup log display to avoid to see it twice
---
 .../apache/unomi/lifecycle/BundleWatcherImpl.java  | 59 ++++++++++++----------
 1 file changed, 31 insertions(+), 28 deletions(-)

diff --git 
a/lifecycle-watcher/src/main/java/org/apache/unomi/lifecycle/BundleWatcherImpl.java
 
b/lifecycle-watcher/src/main/java/org/apache/unomi/lifecycle/BundleWatcherImpl.java
index c18ea6e64..55f9799b4 100644
--- 
a/lifecycle-watcher/src/main/java/org/apache/unomi/lifecycle/BundleWatcherImpl.java
+++ 
b/lifecycle-watcher/src/main/java/org/apache/unomi/lifecycle/BundleWatcherImpl.java
@@ -58,6 +58,9 @@ public class BundleWatcherImpl implements 
SynchronousBundleListener, ServiceList
 
     private List<ServerInfo> serverInfos = new ArrayList<>();
 
+    // Lock object to synchronize startup message display
+    private final Object startupMessageLock = new Object();
+
     public void setRequiredBundles(Map<String, Boolean> requiredBundles) {
         this.requiredBundles = new ConcurrentHashMap<>(requiredBundles);
     }
@@ -274,43 +277,43 @@ public class BundleWatcherImpl implements 
SynchronousBundleListener, ServiceList
     }
 
     private void checkStartupComplete() {
-        if (!isStartupComplete()) {
-            startScheduler(getBundleCheckTask());
-            return;
-        }
         if (scheduledFuture != null) {
             destroyScheduler();
         }
-        if (!allAdditionalBundleStarted()) {
+        if (!isStartupComplete()) {
+            startScheduler(getBundleCheckTask());
+            return;
+        } else if (!allAdditionalBundleStarted()) {
             startScheduler(getAdditionalBundleCheckTask());
             return;
         }
-        if (scheduledFuture != null) {
-            destroyScheduler();
-        }
         if (!startupMessageAlreadyDisplayed) {
-            long totalStartupTime = System.currentTimeMillis() - startupTime;
+            synchronized (startupMessageLock) {
+                if (!startupMessageAlreadyDisplayed) {
+                    long totalStartupTime = System.currentTimeMillis() - 
startupTime;
 
-            List<String> logoLines = serverInfos.get(serverInfos.size() - 
1).getLogoLines();
-            if (logoLines != null && !logoLines.isEmpty()) {
-                logoLines.forEach(System.out::println);
+                    List<String> logoLines = 
serverInfos.get(serverInfos.size() - 1).getLogoLines();
+                    if (logoLines != null && !logoLines.isEmpty()) {
+                        logoLines.forEach(System.out::println);
+                    }
+                    
System.out.println("--------------------------------------------------------------------------------------------");
+                    serverInfos.forEach(serverInfo -> {
+                        String versionMessage = MessageFormat.format(" {0} {1} 
({2,date,yyyy-MM-dd HH:mm:ssZ} // {3} // {4} // {5}) ",
+                                
StringUtils.rightPad(serverInfo.getServerIdentifier(), 12, " "), 
serverInfo.getServerVersion(),
+                                serverInfo.getServerBuildDate(), 
serverInfo.getServerTimestamp(), serverInfo.getServerScmBranch(),
+                                serverInfo.getServerBuildNumber());
+                        System.out.println(versionMessage);
+                        LOGGER.info(versionMessage);
+                    });
+                    
System.out.println("--------------------------------------------------------------------------------------------");
+                    System.out.println("Server successfully started " + 
requiredBundles.size() + " bundles and " + requiredServicesFilters.size()
+                            + " required " + "services in " + totalStartupTime 
+ " ms");
+                    LOGGER.info("Server successfully started {} bundles and {} 
required services in {} ms", requiredBundles.size(),
+                            requiredServicesFilters.size(), totalStartupTime);
+                    startupMessageAlreadyDisplayed = true;
+                    shutdownMessageAlreadyDisplayed = false;
+                }
             }
-            
System.out.println("--------------------------------------------------------------------------------------------");
-            serverInfos.forEach(serverInfo -> {
-                String versionMessage = MessageFormat.format(" {0} {1} 
({2,date,yyyy-MM-dd HH:mm:ssZ} // {3} // {4} // {5}) ",
-                        StringUtils.rightPad(serverInfo.getServerIdentifier(), 
12, " "), serverInfo.getServerVersion(),
-                        serverInfo.getServerBuildDate(), 
serverInfo.getServerTimestamp(), serverInfo.getServerScmBranch(),
-                        serverInfo.getServerBuildNumber());
-                System.out.println(versionMessage);
-                LOGGER.info(versionMessage);
-            });
-            
System.out.println("--------------------------------------------------------------------------------------------");
-            System.out.println("Server successfully started " + 
requiredBundles.size() + " bundles and " + requiredServicesFilters.size()
-                    + " required " + "services in " + totalStartupTime + " 
ms");
-            LOGGER.info("Server successfully started {} bundles and {} 
required services in {} ms", requiredBundles.size(),
-                    requiredServicesFilters.size(), totalStartupTime);
-            startupMessageAlreadyDisplayed = true;
-            shutdownMessageAlreadyDisplayed = false;
         }
     }
 

Reply via email to