I tested it too and it was off during my tests.

Seems the change happened just before I committed. I had a lot of file
falsely reported as changed by svn and reverted them. Seems I also
reverted the config.
I have now committed the correct config.properties and also the change
in code to make the default false in case the config attr is not present.

Christian

Am 13.08.2012 13:19, schrieb Jamie G.:
I would not -1 with out testing.

On Mon, Aug 13, 2012 at 8:49 AM, Jamie G. <jamie.goody...@gmail.com> wrote:
Yes, I have built and tested it.

On Mon, Aug 13, 2012 at 8:47 AM, Christian Schneider
<ch...@die-schneider.net> wrote:
Am I missing something? The default is that the delayed start is turned off.
Have you guys tested the code?

Christian

Am 13.08.2012 13:01, schrieb Achim Nierbeck:

-1, I thought it was clearly communicated that this shouldn't be the
default behavior.


2012/8/13 Jamie G. <jamie.goody...@gmail.com>:
-1 This behaviour was discussed on the dev list to not be made default.

On Mon, Aug 13, 2012 at 6:40 AM,  <cschnei...@apache.org> wrote:
Author: cschneider
Date: Mon Aug 13 09:10:22 2012
New Revision: 1372333

URL: http://svn.apache.org/viewvc?rev=1372333&view=rev
Log:
KARAF-1640: Adding option to start console delayed. Showing some stats
when console comes up

Modified:

karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
      karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java

karaf/trunk/main/src/main/java/org/apache/karaf/main/StartupListener.java

karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/DelayedStarted.java

karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java

Modified:
karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java?rev=1372333&r1=1372332&r2=1372333&view=diff

==============================================================================
---
karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
(original)
+++
karaf/trunk/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
Mon Aug 13 09:10:22 2012
@@ -113,6 +113,10 @@ public class ConfigProperties {
       private static final String KARAF_SHUTDOWN_COMMAND =
"karaf.shutdown.command";

       private static final String KARAF_SHUTDOWN_PID_FILE =
"karaf.shutdown.pid.file";
+
+    private static final String KARAF_STARTUP_MESSAGE =
"karaf.startup.message";
+
+    private static final String KARAF_DELAY_CONSOLE =
"karaf.delay.console";

       private static final String DEFAULT_SHUTDOWN_COMMAND = "SHUTDOWN";

@@ -120,7 +124,7 @@ public class ConfigProperties {

       private static final String SECURITY_PROVIDERS =
"org.apache.karaf.security.providers";

-    private static final String KARAF_STARTUP_MESSAGE =
"karaf.startup.message";
+

       /**
        * If a lock should be used before starting the runtime
@@ -154,6 +158,7 @@ public class ConfigProperties {
       String optionals;
       File etcFolder;
       String startupMessage;
+    boolean delayConsoleStart;

       public ConfigProperties() throws Exception {
           this.karafHome = Utils.getKarafHome(ConfigProperties.class,
PROP_KARAF_HOME, ENV_KARAF_HOME);
@@ -206,6 +211,8 @@ public class ConfigProperties {
           this.portFile = props.getProperty(KARAF_SHUTDOWN_PORT_FILE);
           this.shutdownCommand =
props.getProperty(KARAF_SHUTDOWN_COMMAND, DEFAULT_SHUTDOWN_COMMAND);
           this.startupMessage = props.getProperty(KARAF_STARTUP_MESSAGE,
"Apache Karaf starting up. Press Enter to open the shell now...");
+        this.delayConsoleStart =
Boolean.parseBoolean(props.getProperty(KARAF_DELAY_CONSOLE, "true"));
+        System.setProperty(KARAF_DELAY_CONSOLE, new
Boolean(this.delayConsoleStart).toString());
       }

       private String getProperyOrFail(String propertyName) {

Modified: karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java?rev=1372333&r1=1372332&r2=1372333&view=diff

==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java
(original)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java Mon
Aug 13 09:10:22 2012
@@ -210,7 +210,9 @@ public class Main {

       public void launch() throws Exception {
           config = new ConfigProperties();
-        System.out.println(config.startupMessage);
+        if (config.delayConsoleStart) {
+            System.out.println(config.startupMessage);
+        }
           BootstrapLogManager.setProperties(config.props);
           Lock lock = createLock();
           lockManager = new LockManager(lock, new KarafLockCallback(),
config.lockDelay);
@@ -252,7 +254,9 @@ public class Main {

           setStartLevel(config.lockStartLevel);
           // Progress bar
-        new StartupListener(framework.getBundleContext());
+        if (config.delayConsoleStart) {
+            new StartupListener(LOG, framework.getBundleContext());
+        }
           lockManager.startLockMonitor();
       }


Modified:
karaf/trunk/main/src/main/java/org/apache/karaf/main/StartupListener.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/StartupListener.java?rev=1372333&r1=1372332&r2=1372333&view=diff

==============================================================================
---
karaf/trunk/main/src/main/java/org/apache/karaf/main/StartupListener.java
(original)
+++
karaf/trunk/main/src/main/java/org/apache/karaf/main/StartupListener.java
Mon Aug 13 09:10:22 2012
@@ -1,5 +1,7 @@
   package org.apache.karaf.main;

+import java.util.logging.Logger;
+
   import org.osgi.framework.Bundle;
   import org.osgi.framework.BundleContext;
   import org.osgi.framework.BundleEvent;
@@ -10,20 +12,29 @@ import org.osgi.framework.SynchronousBun
   import org.osgi.framework.startlevel.FrameworkStartLevel;

   /**
- * Watches the startup of the framework and displays a progress bar of
the number of bundles started / total.
- * The listener will remove itself after the desired start level is
reached or the system property karaf.console.started is set to
- * true.
+ * Watches the startup of the framework and displays a progress bar of
the
+ * number of bundles started / total. The listener will remove itself
after the
+ * desired start level is reached or the system property
karaf.console.started
+ * is set to true.
    */
   class StartupListener implements FrameworkListener,
SynchronousBundleListener {
+    private Logger log;
       private static final String SYSTEM_PROP_KARAF_CONSOLE_STARTED =
"karaf.console.started";
+    private long startTime;
+    private int currentPercentage;
+
+    private final BundleContext context;

-       private final BundleContext context;
-    StartupListener(BundleContext context) {
+    StartupListener(Logger log, BundleContext context) {
+        this.log = log;
           this.context = context;
+        this.currentPercentage = 0;
+        this.startTime = System.currentTimeMillis();
           context.addBundleListener(this);
           context.addFrameworkListener(this);
       }
-    public synchronized void bundleChanged(BundleEvent bundleEvent) {
+
+    public BundleStats getBundleStats() {
           Bundle[] bundles = context.getBundles();
           int numActive = 0;
           int numBundles = bundles.length;
@@ -31,42 +42,76 @@ class StartupListener implements Framewo
               if (bundle.getHeaders().get(Constants.FRAGMENT_HOST) !=
null) {
                   numBundles--;
               } else if (bundle.getState() == Bundle.ACTIVE) {
-                numActive ++;
+                numActive++;
               }
           }
-        boolean started =
Boolean.parseBoolean(System.getProperty(SYSTEM_PROP_KARAF_CONSOLE_STARTED,
"false"));
-        if (!started) {
-            showProgressBar(numActive, numBundles);
+        BundleStats stats = new BundleStats();
+        stats.numActive = numActive;
+        stats.numTotal = numBundles;
+        return stats;
+    }
+
+    public synchronized void bundleChanged(BundleEvent bundleEvent) {
+        BundleStats stats = getBundleStats();
+        if (!isConsoleStarted()) {
+            showProgressBar(stats.numActive, stats.numTotal);
           }
       }
+
+    private boolean isConsoleStarted() {
+        return
Boolean.parseBoolean(System.getProperty(SYSTEM_PROP_KARAF_CONSOLE_STARTED,
"false"));
+    }
+
       public synchronized void frameworkEvent(FrameworkEvent
frameworkEvent) {
           if (frameworkEvent.getType() ==
FrameworkEvent.STARTLEVEL_CHANGED) {
-            int defStartLevel =
Integer.parseInt(System.getProperty(Constants.FRAMEWORK_BEGINNING_STARTLEVEL));
-            int startLevel =
context.getBundle(0).adapt(FrameworkStartLevel.class).getStartLevel();
+            int defStartLevel = Integer.parseInt(System
+
.getProperty(Constants.FRAMEWORK_BEGINNING_STARTLEVEL));
+            int startLevel = context.getBundle(0)
+                    .adapt(FrameworkStartLevel.class).getStartLevel();
               if (startLevel >= defStartLevel) {
                   context.removeBundleListener(this);
                   context.removeFrameworkListener(this);
+                long startTimeSeconds = (System.currentTimeMillis() -
this.startTime) / 1000;
+                BundleStats stats = getBundleStats();
+                String message = "Karaf started in " + startTimeSeconds
+ "s. Bundle stats: " + stats.numActive
+                        + " active , " + stats.numTotal + " total";
+                log.info(message);
+                if (!isConsoleStarted()) {
+                    showProgressBar(100, 100);
+                    System.out.println(message);
+                }
+
               }
           }
       }
+
       public void showProgressBar(int done, int total) {
           int percent = (done * 100) / total;
-        StringBuilder sb = new StringBuilder();
-        sb.append(String.format("\r%3d%% [", percent));
-        for (int i = 0; i < 100; i++) {
-            if (i < percent) {
-                sb.append('=');
-            } else if (i == percent) {
-                sb.append('>');
-            } else {
-                sb.append(' ');
+        // Make sure we do not go backwards with percentage
+        if (percent > currentPercentage) {
+            currentPercentage = percent;
+            StringBuilder sb = new StringBuilder();
+            sb.append(String.format("\r%3d%% [", percent));
+            for (int i = 0; i < 100; i++) {
+                if (i < percent) {
+                    sb.append('=');
+                } else if (i == percent) {
+                    sb.append('>');
+                } else {
+                    sb.append(' ');
+                }
               }
+            sb.append(']');
+            System.out.print(sb.toString());
+            System.out.flush();
           }
-        sb.append(']');
-        System.out.print(sb.toString());
-        System.out.flush();
           if (done == total) {
               System.out.println();
           }
       }
+
+    class BundleStats {
+        int numActive;
+        int numTotal;
+    }
   }
\ No newline at end of file

Modified:
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/DelayedStarted.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/DelayedStarted.java?rev=1372333&r1=1372332&r2=1372333&view=diff

==============================================================================
---
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/DelayedStarted.java
(original)
+++
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/DelayedStarted.java
Mon Aug 13 09:10:22 2012
@@ -55,8 +55,6 @@ class DelayedStarted extends Thread impl

           // Signal to the main module that it can stop displaying the
startup progress
           System.setProperty(SYSTEM_PROP_KARAF_CONSOLE_STARTED, "true");
-
-        System.out.println();
           this.bundleContext.removeFrameworkListener(this);
           console.run();
       }

Modified:
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java?rev=1372333&r1=1372332&r2=1372333&view=diff

==============================================================================
---
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java
(original)
+++
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/LocalConsoleManager.java
Mon Aug 13 09:10:22 2012
@@ -88,14 +88,20 @@ public class LocalConsoleManager {
           String agentId = startAgent("karaf");
           this.console =
consoleFactory.createLocal(this.commandProcessor, terminal, callback);

this.console.getSession().put(SshAgent.SSH_AUTHSOCKET_ENV_NAME, agentId);
-        DelayedStarted watcher = new DelayedStarted(new Runnable() {
-
-            @Override
+
+        Runnable consoleStarter = new Runnable() {
               public void run() {
                   consoleFactory.startConsoleAs(console, subject);
               }
-        }, bundleContext, System.in);
-        new Thread(watcher).start();
+        };
+
+        boolean delayconsole =
Boolean.parseBoolean(System.getProperty("karaf.delay.console"));
+        if (delayconsole) {
+            DelayedStarted watcher = new DelayedStarted(consoleStarter,
bundleContext, System.in);
+            new Thread(watcher).start();
+        } else {
+            consoleStarter.run();
+        }
       }

       protected String startAgent(String user) {




--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
Talend Application Integration Division http://www.talend.com



--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
Talend Application Integration Division http://www.talend.com




Reply via email to