karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jamie G." <jamie.goody...@gmail.com>
Subject Re: svn commit: r1372333 - in /karaf/trunk: main/src/main/java/org/apache/karaf/main/ shell/console/src/main/java/org/apache/karaf/shell/console/impl/jline/
Date Mon, 13 Aug 2012 11:19:48 GMT
I would not -1 with out testing.

On Mon, Aug 13, 2012 at 8:49 AM, Jamie G. <jamie.goodyear@gmail.com> wrote:
> Yes, I have built and tested it.
>
> On Mon, Aug 13, 2012 at 8:47 AM, Christian Schneider
> <chris@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.goodyear@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,  <cschneider@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
>>

Mime
View raw message