Author: lquack
Date: Tue Aug 30 14:27:14 2016
New Revision: 1758397
URL: http://svn.apache.org/viewvc?rev=1758397&view=rev
Log:
QPID-7401: [Java Broker] Ensure ACO#getContextValue() is only called after the
model has been resolved
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractContainer.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManager.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1758397&r1=1758396&r2=1758397&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
Tue Aug 30 14:27:14 2016
@@ -3114,6 +3114,16 @@ public abstract class AbstractConfigured
return null;
}
+ /**
+ * Retrieve and interpolate a context variable of the given name and
convert it to the given type.
+ *
+ * Note that this SHOULD not be called before the model has been resolved
(e.g., not in the constructor).
+ * @param <T> the type the interpolated context variable should be
converted to
+ * @param clazz the class object of the type the interpolated context
variable should be converted to
+ * @param propertyName the name of the context variable to retrieve
+ * @return the interpolated context variable converted to an object of the
given type
+ * @throws IllegalArgumentException if the interpolated context variable
cannot be converted to the given type
+ */
@Override
public final <T> T getContextValue(Class<T> clazz, String propertyName)
{
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractContainer.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractContainer.java?rev=1758397&r1=1758396&r2=1758397&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractContainer.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractContainer.java
Tue Aug 30 14:27:14 2016
@@ -99,14 +99,22 @@ public abstract class AbstractContainer<
_bufferPoolMXBean = bufferPoolMXBean;
if(attributes.get(CONFIDENTIAL_CONFIGURATION_ENCRYPTION_PROVIDER) !=
null )
{
-
- final String encryptionProviderType =
String.valueOf(attributes.get(CONFIDENTIAL_CONFIGURATION_ENCRYPTION_PROVIDER));
- updateEncrypter(encryptionProviderType);
- _confidentialConfigurationEncryptionProvider =
encryptionProviderType;
+ _confidentialConfigurationEncryptionProvider =
+
String.valueOf(attributes.get(CONFIDENTIAL_CONFIGURATION_ENCRYPTION_PROVIDER));
}
}
+ @Override
+ protected void postResolveChildren()
+ {
+ super.postResolveChildren();
+ if (_confidentialConfigurationEncryptionProvider != null)
+ {
+ updateEncrypter(_confidentialConfigurationEncryptionProvider);
+ }
+ }
+
@SuppressWarnings("unused")
public static Collection<String> getAvailableConfigurationEncrypters()
{
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java?rev=1758397&r1=1758396&r2=1758397&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
Tue Aug 30 14:27:14 2016
@@ -60,11 +60,13 @@ public final class SessionAdapter extend
// Attributes
private final AMQSessionModel _session;
private final Action _deleteModelTask;
+ private final AbstractAMQPConnection<?> _amqpConnection;
public SessionAdapter(final AbstractAMQPConnection<?> amqpConnection,
final AMQSessionModel session)
{
super(parentsMap(amqpConnection), createAttributes(session));
+ _amqpConnection = amqpConnection;
_session = session;
_session.addConsumerListener(new ConsumerListener()
{
@@ -83,8 +85,6 @@ public final class SessionAdapter extend
});
session.setModelObject(this);
- registerTransactionTimeoutTickers(amqpConnection, session);
-
_deleteModelTask = new Action()
{
@Override
@@ -109,6 +109,13 @@ public final class SessionAdapter extend
}
@Override
+ protected void postResolveChildren()
+ {
+ super.postResolveChildren();
+ registerTransactionTimeoutTickers(_amqpConnection, _session);
+ }
+
+ @Override
public int getChannelId()
{
return _session.getChannelId();
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java?rev=1758397&r1=1758396&r2=1758397&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
Tue Aug 30 14:27:14 2016
@@ -115,11 +115,11 @@ public class AmqpPortImpl extends Abstra
private final AtomicBoolean _connectionCountWarningGiven = new
AtomicBoolean();
private final Container<?> _container;
- private final int _connectionWarnCount;
private final AtomicBoolean _closing = new AtomicBoolean();
private final SettableFuture _noConnectionsRemain =
SettableFuture.create();
private AcceptingTransport _transport;
private SSLContext _sslContext;
+ private volatile int _connectionWarnCount;
private volatile long _protocolHandshakeTimeout;
@ManagedObjectFactoryConstructor
@@ -127,7 +127,6 @@ public class AmqpPortImpl extends Abstra
{
super(attributes, container);
_container = container;
- _connectionWarnCount = getContextValue(Integer.class,
OPEN_CONNECTIONS_WARN_PERCENT);
}
@Override
@@ -206,6 +205,7 @@ public class AmqpPortImpl extends Abstra
{
super.onOpen();
_protocolHandshakeTimeout = getContextValue(Long.class,
AmqpPort.PROTOCOL_HANDSHAKE_TIMEOUT);
+ _connectionWarnCount = getContextValue(Integer.class,
OPEN_CONNECTIONS_WARN_PERCENT);
}
@Override
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java?rev=1758397&r1=1758396&r2=1758397&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
Tue Aug 30 14:27:14 2016
@@ -206,7 +206,8 @@ public abstract class AbstractQueue<X ex
Collections.synchronizedSet(EnumSet.noneOf(NotificationCheck.class));
- private int _maxAsyncDeliveries;
+ private volatile int _maxAsyncDeliveries;
+ private volatile long _estimatedAverageMessageHeaderSize;
private final AtomicLong _stateChangeCount = new
AtomicLong(Long.MIN_VALUE);
@@ -229,7 +230,6 @@ public abstract class AbstractQueue<X ex
private final AtomicBoolean _overfull = new AtomicBoolean(false);
private final FlowToDiskChecker _flowToDiskChecker = new
FlowToDiskChecker();
- private final long _estimatedAverageMessageHeaderSize =
getContextValue(Long.class, QUEUE_ESTIMATED_MESSAGE_MEMORY_OVERHEAD);
private final CopyOnWriteArrayList<Binding<?>> _bindings = new
CopyOnWriteArrayList<>();
private Map<String, Object> _arguments;
@@ -476,6 +476,7 @@ public abstract class AbstractQueue<X ex
_messageGroupManager = null;
}
+ _estimatedAverageMessageHeaderSize = getContextValue(Long.class,
QUEUE_ESTIMATED_MESSAGE_MEMORY_OVERHEAD);
_maxAsyncDeliveries = getContextValue(Integer.class,
Queue.MAX_ASYNCHRONOUS_DELIVERIES);
if(_defaultFilters != null)
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java?rev=1758397&r1=1758396&r2=1758397&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainAuthenticationProvider.java
Tue Aug 30 14:27:14 2016
@@ -58,14 +58,20 @@ public class PlainAuthenticationProvider
CRAMMD5Initialiser.MECHANISM,
ScramSHA1AuthenticationManager.MECHANISM,
ScramSHA256AuthenticationManager.MECHANISM));
- private final ScramSaslServerSourceAdapter _scramSha1Adapter;
- private final ScramSaslServerSourceAdapter _scramSha256Adapter;
+ private volatile ScramSaslServerSourceAdapter _scramSha1Adapter;
+ private volatile ScramSaslServerSourceAdapter _scramSha256Adapter;
@ManagedObjectFactoryConstructor
protected PlainAuthenticationProvider(final Map<String, Object>
attributes, final Broker broker)
{
super(attributes, broker);
+ }
+
+ @Override
+ protected void postResolveChildren()
+ {
+ super.postResolveChildren();
ScramSaslServerSourceAdapter.PasswordSource passwordSource =
new ScramSaslServerSourceAdapter.PasswordSource()
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManager.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManager.java?rev=1758397&r1=1758396&r2=1758397&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManager.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManager.java
Tue Aug 30 14:27:14 2016
@@ -64,12 +64,18 @@ public class SimpleAuthenticationManager
private static final String SCRAM_SHA256_MECHANISM =
ScramSHA256AuthenticationManager.MECHANISM;
private final Map<String, String> _users = Collections.synchronizedMap(new
HashMap<String, String>());
- private final ScramSaslServerSourceAdapter _scramSha1Adapter;
- private final ScramSaslServerSourceAdapter _scramSha256Adapter;
+ private volatile ScramSaslServerSourceAdapter _scramSha1Adapter;
+ private volatile ScramSaslServerSourceAdapter _scramSha256Adapter;
public SimpleAuthenticationManager(final Map<String, Object> attributes,
final Container<?> container)
{
super(attributes, container);
+ }
+
+ @Override
+ protected void postResolveChildren()
+ {
+ super.postResolveChildren();
ScramSaslServerSourceAdapter.PasswordSource passwordSource =
new ScramSaslServerSourceAdapter.PasswordSource()
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]