You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ro...@apache.org on 2018/10/10 18:44:20 UTC
svn commit: r1843483 - in /felix/trunk/scr/src:
main/java/org/apache/felix/scr/impl/
main/java/org/apache/felix/scr/impl/config/
main/java/org/apache/felix/scr/impl/manager/
test/java/org/apache/felix/scr/impl/logger/
Author: rotty3000
Date: Wed Oct 10 18:44:20 2018
New Revision: 1843483
URL: http://svn.apache.org/viewvc?rev=1843483&view=rev
Log:
FELIX-5959 Exception on changecount timer timeout
Signed-off-by: Raymond Auge <ro...@apache.org>
Modified:
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ScrConfiguration.java
felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/logger/MockScrLogger.java
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java?rev=1843483&r1=1843482&r2=1843483&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/Activator.java Wed Oct 10 18:44:20 2018
@@ -151,7 +151,7 @@ public class Activator extends AbstractE
// prepare component registry
m_componentBundles = new HashMap<>();
- m_componentRegistry = new ComponentRegistry( this.logger );
+ m_componentRegistry = new ComponentRegistry( this.m_configuration, this.logger );
final ServiceComponentRuntimeImpl runtime = new ServiceComponentRuntimeImpl( m_globalContext, m_componentRegistry );
m_runtime_reg = m_context.registerService( ServiceComponentRuntime.class,
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java?rev=1843483&r1=1843482&r2=1843483&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java Wed Oct 10 18:44:20 2018
@@ -43,6 +43,7 @@ import org.apache.felix.scr.impl.manager
import org.apache.felix.scr.impl.manager.ConfigurableComponentHolder;
import org.apache.felix.scr.impl.manager.DependencyManager;
import org.apache.felix.scr.impl.manager.RegionConfigurationSupport;
+import org.apache.felix.scr.impl.manager.ScrConfiguration;
import org.apache.felix.scr.impl.metadata.ComponentMetadata;
import org.apache.felix.scr.impl.metadata.TargetedPID;
import org.osgi.framework.Bundle;
@@ -126,8 +127,11 @@ public class ComponentRegistry
private final ScrLogger m_logger;
- public ComponentRegistry( final ScrLogger logger )
+ private final ScrConfiguration m_configuration;
+
+ public ComponentRegistry( final ScrConfiguration scrConfiguration, final ScrLogger logger )
{
+ m_configuration = scrConfiguration;
m_logger = logger;
m_componentHoldersByName = new HashMap<>();
m_componentHoldersByPid = new HashMap<>();
@@ -719,29 +723,37 @@ public class ComponentRegistry
{
this.timer = new Timer();
}
- timer.schedule(new TimerTask()
+ try
{
-
- @Override
- public void run() {
- synchronized ( changeCountLock )
+ timer.schedule(new TimerTask()
{
- if ( changeCount == count )
- {
- try
- {
- registration.setProperties(getServiceRegistrationProperties());
- }
- catch ( final IllegalStateException ise)
+
+ @Override
+ public void run() {
+ synchronized ( changeCountLock )
{
- // we ignore this as this might happen on shutdown
+ if ( changeCount == count )
+ {
+ try
+ {
+ registration.setProperties(getServiceRegistrationProperties());
+ }
+ catch ( final IllegalStateException ise)
+ {
+ // we ignore this as this might happen on shutdown
+ }
+ timer.cancel();
+ timer = null;
+ }
}
- timer.cancel();
- timer = null;
}
- }
- }
- }, 5000L);
+ }, m_configuration.serviceChangecountTimeout());
+ }
+ catch (Exception e) {
+ m_logger.log(LogService.LOG_WARNING,
+ "Service changecount Timer for {0} had a problem", e,
+ registration.getReference());
+ }
}
}
}
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java?rev=1843483&r1=1843482&r2=1843483&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfigurationImpl.java Wed Oct 10 18:44:20 2018
@@ -85,6 +85,8 @@ public class ScrConfigurationImpl implem
private long stopTimeout = DEFAULT_STOP_TIMEOUT_MILLISECONDS;
+ private long serviceChangecountTimeout = DEFAULT_SERVICE_CHANGECOUNT_TIMEOUT_MILLISECONDS;
+
private Boolean globalExtender;
private volatile BundleContext bundleContext;
@@ -171,6 +173,7 @@ public class ScrConfigurationImpl implem
infoAsService = false;
lockTimeout = DEFAULT_LOCK_TIMEOUT_MILLISECONDS;
stopTimeout = DEFAULT_STOP_TIMEOUT_MILLISECONDS;
+ serviceChangecountTimeout = DEFAULT_SERVICE_CHANGECOUNT_TIMEOUT_MILLISECONDS;
newGlobalExtender = false;
}
else
@@ -181,6 +184,7 @@ public class ScrConfigurationImpl implem
infoAsService = getDefaultInfoAsService();
lockTimeout = getDefaultLockTimeout();
stopTimeout = getDefaultStopTimeout();
+ serviceChangecountTimeout = getServiceChangecountTimeout();
newGlobalExtender = getDefaultGlobalExtender();
}
}
@@ -263,6 +267,12 @@ public class ScrConfigurationImpl implem
return globalExtender;
}
+ @Override
+ public long serviceChangecountTimeout()
+ {
+ return serviceChangecountTimeout;
+ }
+
private boolean getDefaultFactoryEnabled()
{
return VALUE_TRUE.equals( bundleContext.getProperty( PROP_FACTORY_ENABLED ) );
@@ -305,6 +315,15 @@ public class ScrConfigurationImpl implem
return Long.parseLong( val );
}
+ private long getServiceChangecountTimeout()
+ {
+ String val = bundleContext.getProperty( PROP_SERVICE_CHANGECOUNT_TIMEOUT );
+ if ( val == null)
+ {
+ return DEFAULT_SERVICE_CHANGECOUNT_TIMEOUT_MILLISECONDS;
+ }
+ return Long.parseLong( val );
+ }
private boolean getDefaultGlobalExtender()
{
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ScrConfiguration.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ScrConfiguration.java?rev=1843483&r1=1843482&r2=1843483&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ScrConfiguration.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ScrConfiguration.java Wed Oct 10 18:44:20 2018
@@ -58,12 +58,16 @@ public interface ScrConfiguration
long DEFAULT_LOCK_TIMEOUT_MILLISECONDS = 5000;
+ long DEFAULT_SERVICE_CHANGECOUNT_TIMEOUT_MILLISECONDS = 5000;
+
long DEFAULT_STOP_TIMEOUT_MILLISECONDS = 60000;
String PROP_LOGLEVEL = "ds.loglevel";
String PROP_GLOBAL_EXTENDER="ds.global.extender";
+ String PROP_SERVICE_CHANGECOUNT_TIMEOUT = "ds.service.changecount.timeout";
+
/**
* Returns the current log level.
* @return
@@ -88,4 +92,9 @@ public interface ScrConfiguration
*/
boolean globalExtender();
+ /**
+ * @since 2.2
+ */
+ long serviceChangecountTimeout();
+
}
Modified: felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/logger/MockScrLogger.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/logger/MockScrLogger.java?rev=1843483&r1=1843482&r2=1843483&view=diff
==============================================================================
--- felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/logger/MockScrLogger.java (original)
+++ felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/logger/MockScrLogger.java Wed Oct 10 18:44:20 2018
@@ -63,6 +63,12 @@ public class MockScrLogger extends ScrLo
}
@Override
+ public long serviceChangecountTimeout()
+ {
+ return 0;
+ }
+
+ @Override
public int getLogLevel()
{
return LogService.LOG_ERROR;