You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2012/10/29 05:07:13 UTC
svn commit: r1403170 - in /karaf/trunk/instance:
command/src/main/java/org/apache/karaf/instance/command/
core/src/main/java/org/apache/karaf/instance/core/
core/src/main/java/org/apache/karaf/instance/core/internal/
Author: ffang
Date: Mon Oct 29 04:07:13 2012
New Revision: 1403170
URL: http://svn.apache.org/viewvc?rev=1403170&view=rev
Log:
[KARAF-1978]if use script to start a child instance then using karaf console admin:list can't get the instance correct status
Modified:
karaf/trunk/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/Instance.java
karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/InstanceService.java
karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java
karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
Modified: karaf/trunk/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java?rev=1403170&r1=1403169&r2=1403170&view=diff
==============================================================================
--- karaf/trunk/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java (original)
+++ karaf/trunk/instance/command/src/main/java/org/apache/karaf/instance/command/ListCommand.java Mon Oct 29 04:07:13 2012
@@ -31,6 +31,7 @@ public class ListCommand extends Instanc
boolean javaOpts;
protected Object doExecute() throws Exception {
+ getInstanceService().refreshInstance();
Instance[] instances = getInstanceService().getInstances();
ShellTable table = new ShellTable();
table.column("SSH Port").alignRight();
Modified: karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/Instance.java
URL: http://svn.apache.org/viewvc/karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/Instance.java?rev=1403170&r1=1403169&r2=1403170&view=diff
==============================================================================
--- karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/Instance.java (original)
+++ karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/Instance.java Mon Oct 29 04:07:13 2012
@@ -59,4 +59,5 @@ public interface Instance {
String getState() throws Exception;
+ boolean isAttached();
}
Modified: karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/InstanceService.java
URL: http://svn.apache.org/viewvc/karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/InstanceService.java?rev=1403170&r1=1403169&r2=1403170&view=diff
==============================================================================
--- karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/InstanceService.java (original)
+++ karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/InstanceService.java Mon Oct 29 04:07:13 2012
@@ -22,6 +22,8 @@ public interface InstanceService {
void renameInstance(String name, String newName, boolean printOutput) throws Exception;
+ void refreshInstance() throws Exception;
+
Instance cloneInstance(String name, String cloneName, InstanceSettings settings, boolean printOutput) throws Exception;
Instance[] getInstances();
Modified: karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java?rev=1403170&r1=1403169&r2=1403170&view=diff
==============================================================================
--- karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java (original)
+++ karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java Mon Oct 29 04:07:13 2012
@@ -422,4 +422,9 @@ public class InstanceImpl implements Ins
}
}
+ public boolean isAttached() {
+ return (process != null);
+ }
+
+
}
Modified: karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java?rev=1403170&r1=1403169&r2=1403170&view=diff
==============================================================================
--- karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java (original)
+++ karaf/trunk/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java Mon Oct 29 04:07:13 2012
@@ -136,7 +136,38 @@ public class InstanceServiceImpl impleme
LOGGER.warn("Unable to reload Karaf instance list", e);
}
}
+
+ public synchronized void refreshInstance() throws Exception {
+ try {
+ File storageFile = new File(storageLocation, STORAGE_FILE);
+ if (!storageFile.isFile()) {
+ if (storageFile.exists()) {
+ LOGGER.error("Instances storage location should be a file: " + storageFile);
+ }
+ return;
+ }
+ Properties storage = loadStorage(storageFile);
+ int count = Integer.parseInt(storage.getProperty("count", "0"));
+ for (int i = 0; i < count; i++) {
+ String name = storage.getProperty("item." + i + ".name", null);
+ int pid = Integer.parseInt(storage.getProperty("item." + i + ".pid", "0"));
+ if (name != null) {
+ InstanceImpl instance = (InstanceImpl)instances.get(name);
+ if (pid > 0 && instance != null && !instance.isAttached()) {
+ try {
+ instance.attach(pid);
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.warn("Unable to reload Karaf instance list", e);
+ }
+ }
+
private void logInfo(String message, boolean printOutput, Object... args) {
if (LOGGER.isInfoEnabled() || printOutput) {
String formatted = String.format(message, args);