Search in sources :

Example 6 with OperationContext

use of org.apache.activemq.artemis.core.persistence.OperationContext in project activemq-artemis by apache.

the class ReplicationManager method clearReplicationTokens.

/**
 * Completes any pending operations.
 * <p>
 * This can be necessary in case the live loses connection to the backup (network failure, or
 * backup crashing).
 */
public void clearReplicationTokens() {
    logger.trace("clearReplicationTokens initiating");
    while (!pendingTokens.isEmpty()) {
        OperationContext ctx = pendingTokens.poll();
        logger.trace("Calling ctx.replicationDone()");
        try {
            ctx.replicationDone();
        } catch (Throwable e) {
            ActiveMQServerLogger.LOGGER.errorCompletingCallbackOnReplicationManager(e);
        }
    }
    logger.trace("clearReplicationTokens finished");
}
Also used : OperationContext(org.apache.activemq.artemis.core.persistence.OperationContext)

Example 7 with OperationContext

use of org.apache.activemq.artemis.core.persistence.OperationContext in project activemq-artemis by apache.

the class AMQPSessionCallback method cancel.

public void cancel(Object brokerConsumer, Message message, boolean updateCounts) throws Exception {
    OperationContext oldContext = recoverContext();
    try {
        ((ServerConsumer) brokerConsumer).individualCancel(message.getMessageID(), updateCounts);
        ((ServerConsumer) brokerConsumer).getQueue().forceDelivery();
    } finally {
        resetContext(oldContext);
    }
}
Also used : OperationContext(org.apache.activemq.artemis.core.persistence.OperationContext) ServerConsumer(org.apache.activemq.artemis.core.server.ServerConsumer)

Example 8 with OperationContext

use of org.apache.activemq.artemis.core.persistence.OperationContext in project activemq-artemis by apache.

the class ActiveMQServerImpl method createSession.

@Override
public ServerSession createSession(final String name, final String username, final String password, final int minLargeMessageSize, final RemotingConnection connection, final boolean autoCommitSends, final boolean autoCommitAcks, final boolean preAcknowledge, final boolean xa, final String defaultAddress, final SessionCallback callback, final boolean autoCreateQueues, final OperationContext context, final Map<SimpleString, RoutingType> prefixes) throws Exception {
    String validatedUser = "";
    if (securityStore != null) {
        validatedUser = securityStore.authenticate(username, password, connection);
    }
    checkSessionLimit(validatedUser);
    callBrokerPlugins(hasBrokerPlugins() ? plugin -> plugin.beforeCreateSession(name, username, minLargeMessageSize, connection, autoCommitSends, autoCommitAcks, preAcknowledge, xa, defaultAddress, callback, autoCreateQueues, context, prefixes) : null);
    final ServerSessionImpl session = internalCreateSession(name, username, password, validatedUser, minLargeMessageSize, connection, autoCommitSends, autoCommitAcks, preAcknowledge, xa, defaultAddress, callback, context, autoCreateQueues, prefixes);
    sessions.put(name, session);
    callBrokerPlugins(hasBrokerPlugins() ? plugin -> plugin.afterCreateSession(session) : null);
    return session;
}
Also used : SequentialFile(org.apache.activemq.artemis.core.io.SequentialFile) OrderedExecutorFactory(org.apache.activemq.artemis.utils.actors.OrderedExecutorFactory) Binding(org.apache.activemq.artemis.core.postoffice.Binding) ProtocolManagerFactory(org.apache.activemq.artemis.spi.core.protocol.ProtocolManagerFactory) ConfigurationImpl(org.apache.activemq.artemis.core.config.impl.ConfigurationImpl) RemotingServiceImpl(org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl) ActiveMQThreadPoolExecutor(org.apache.activemq.artemis.utils.ActiveMQThreadPoolExecutor) JDBCJournalStorageManager(org.apache.activemq.artemis.core.persistence.impl.journal.JDBCJournalStorageManager) ActiveMQException(org.apache.activemq.artemis.api.core.ActiveMQException) ActiveMQComponent(org.apache.activemq.artemis.core.server.ActiveMQComponent) Map(java.util.Map) PagingStoreFactoryNIO(org.apache.activemq.artemis.core.paging.impl.PagingStoreFactoryNIO) EnumSet(java.util.EnumSet) StoreConfiguration(org.apache.activemq.artemis.core.config.StoreConfiguration) ConfigurationUtils(org.apache.activemq.artemis.core.config.ConfigurationUtils) ActiveMQServerPlugin(org.apache.activemq.artemis.core.server.plugin.ActiveMQServerPlugin) PrintWriter(java.io.PrintWriter) AddressSettings(org.apache.activemq.artemis.core.settings.impl.AddressSettings) DivertBinding(org.apache.activemq.artemis.core.postoffice.impl.DivertBinding) BackupManager(org.apache.activemq.artemis.core.server.cluster.BackupManager) ActivateCallback(org.apache.activemq.artemis.core.server.ActivateCallback) Set(java.util.Set) JournalStorageManager(org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager) HAPolicy(org.apache.activemq.artemis.core.server.cluster.ha.HAPolicy) ResourceManager(org.apache.activemq.artemis.core.transaction.ResourceManager) ReloadManager(org.apache.activemq.artemis.core.server.reload.ReloadManager) LocalQueueBinding(org.apache.activemq.artemis.core.postoffice.impl.LocalQueueBinding) PageSubscription(org.apache.activemq.artemis.core.paging.cursor.PageSubscription) StorageManager(org.apache.activemq.artemis.core.persistence.StorageManager) PostQueueCreationCallback(org.apache.activemq.artemis.core.server.PostQueueCreationCallback) LocalGroupingHandler(org.apache.activemq.artemis.core.server.group.impl.LocalGroupingHandler) DeletionPolicy(org.apache.activemq.artemis.core.settings.impl.DeletionPolicy) AccessController(java.security.AccessController) Bindable(org.apache.activemq.artemis.core.server.Bindable) QueueQueryResult(org.apache.activemq.artemis.core.server.QueueQueryResult) Configuration(org.apache.activemq.artemis.core.config.Configuration) PagingManager(org.apache.activemq.artemis.core.paging.PagingManager) ActiveMQDefaultConfiguration(org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration) Version(org.apache.activemq.artemis.core.version.Version) ReusableLatch(org.apache.activemq.artemis.utils.ReusableLatch) ReplicationEndpoint(org.apache.activemq.artemis.core.replication.ReplicationEndpoint) Pair(org.apache.activemq.artemis.api.core.Pair) ActiveMQSecurityManager(org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager) SimpleString(org.apache.activemq.artemis.api.core.SimpleString) CompositeAddress(org.apache.activemq.artemis.utils.CompositeAddress) AddressQueryResult(org.apache.activemq.artemis.core.server.AddressQueryResult) RemotingConnection(org.apache.activemq.artemis.spi.core.protocol.RemotingConnection) QueueBinding(org.apache.activemq.artemis.core.postoffice.QueueBinding) ArrayList(java.util.ArrayList) VersionLoader(org.apache.activemq.artemis.utils.VersionLoader) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) CriticalAnalyzerImpl(org.apache.activemq.artemis.utils.critical.CriticalAnalyzerImpl) ManagementFactory(java.lang.management.ManagementFactory) BindingQueryResult(org.apache.activemq.artemis.core.server.BindingQueryResult) ServerSession(org.apache.activemq.artemis.core.server.ServerSession) StringWriter(java.io.StringWriter) PostOfficeImpl(org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl) IOException(java.io.IOException) File(java.io.File) PersistedRoles(org.apache.activemq.artemis.core.persistence.config.PersistedRoles) OperationContext(org.apache.activemq.artemis.core.persistence.OperationContext) HAPolicyConfiguration(org.apache.activemq.artemis.core.config.HAPolicyConfiguration) ServiceRegistry(org.apache.activemq.artemis.core.server.ServiceRegistry) ActiveMQPluginRunnable(org.apache.activemq.artemis.core.server.plugin.ActiveMQPluginRunnable) QueueConfig(org.apache.activemq.artemis.core.server.QueueConfig) ReloadManagerImpl(org.apache.activemq.artemis.core.server.reload.ReloadManagerImpl) OperationContextImpl(org.apache.activemq.artemis.core.persistence.impl.journal.OperationContextImpl) HierarchicalObjectRepository(org.apache.activemq.artemis.core.settings.impl.HierarchicalObjectRepository) DivertConfiguration(org.apache.activemq.artemis.core.config.DivertConfiguration) ClientSessionFactoryImpl(org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl) URL(java.net.URL) Date(java.util.Date) JournalType(org.apache.activemq.artemis.core.server.JournalType) RemoteGroupingHandler(org.apache.activemq.artemis.core.server.group.impl.RemoteGroupingHandler) CheckType(org.apache.activemq.artemis.core.security.CheckType) GroupingHandler(org.apache.activemq.artemis.core.server.group.GroupingHandler) ManagementServiceImpl(org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl) SecurityStore(org.apache.activemq.artemis.core.security.SecurityStore) LargeServerMessage(org.apache.activemq.artemis.core.server.LargeServerMessage) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) FilterImpl(org.apache.activemq.artemis.core.filter.impl.FilterImpl) PersistedAddressSetting(org.apache.activemq.artemis.core.persistence.config.PersistedAddressSetting) ThreadFactory(java.util.concurrent.ThreadFactory) ThreadDumpUtil(org.apache.activemq.artemis.utils.ThreadDumpUtil) PagingStoreFactoryDatabase(org.apache.activemq.artemis.core.paging.impl.PagingStoreFactoryDatabase) ResourceLimitSettings(org.apache.activemq.artemis.core.settings.impl.ResourceLimitSettings) Role(org.apache.activemq.artemis.core.security.Role) CriticalAnalyzerPolicy(org.apache.activemq.artemis.utils.critical.CriticalAnalyzerPolicy) BindingType(org.apache.activemq.artemis.core.postoffice.BindingType) IOCriticalErrorListener(org.apache.activemq.artemis.core.io.IOCriticalErrorListener) ConcurrentHashSet(org.apache.activemq.artemis.utils.collections.ConcurrentHashSet) SynchronousQueue(java.util.concurrent.SynchronousQueue) Collection(java.util.Collection) ActiveMQServer(org.apache.activemq.artemis.core.server.ActiveMQServer) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) MemoryManager(org.apache.activemq.artemis.core.server.MemoryManager) Queue(org.apache.activemq.artemis.core.server.Queue) HierarchicalRepository(org.apache.activemq.artemis.core.settings.HierarchicalRepository) SessionCallback(org.apache.activemq.artemis.spi.core.protocol.SessionCallback) ScheduledThreadPoolExecutor(java.util.concurrent.ScheduledThreadPoolExecutor) ClusterManager(org.apache.activemq.artemis.core.server.cluster.ClusterManager) ExecutorFactory(org.apache.activemq.artemis.utils.ExecutorFactory) PrivilegedAction(java.security.PrivilegedAction) Collectors(java.util.stream.Collectors) CriticalComponent(org.apache.activemq.artemis.utils.critical.CriticalComponent) ReloadCallback(org.apache.activemq.artemis.core.server.reload.ReloadCallback) TimeUtils(org.apache.activemq.artemis.utils.TimeUtils) List(java.util.List) JdbcNodeManager(org.apache.activemq.artemis.core.server.impl.jdbc.JdbcNodeManager) SecurityAuth(org.apache.activemq.artemis.core.security.SecurityAuth) PostQueueDeletionCallback(org.apache.activemq.artemis.core.server.PostQueueDeletionCallback) QueueBindingInfo(org.apache.activemq.artemis.core.persistence.QueueBindingInfo) Divert(org.apache.activemq.artemis.core.server.Divert) GroupingHandlerConfiguration(org.apache.activemq.artemis.core.server.group.impl.GroupingHandlerConfiguration) PagingStoreFactory(org.apache.activemq.artemis.core.paging.PagingStoreFactory) Entry(java.util.Map.Entry) NetworkHealthCheck(org.apache.activemq.artemis.core.server.NetworkHealthCheck) PostOffice(org.apache.activemq.artemis.core.postoffice.PostOffice) ActivationFailureListener(org.apache.activemq.artemis.core.server.ActivationFailureListener) ActiveMQServerLogger(org.apache.activemq.artemis.core.server.ActiveMQServerLogger) FileStoreMonitor(org.apache.activemq.artemis.core.server.files.FileStoreMonitor) Filter(org.apache.activemq.artemis.core.filter.Filter) ActiveMQMessageBundle(org.apache.activemq.artemis.core.server.ActiveMQMessageBundle) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) CriticalAnalyzer(org.apache.activemq.artemis.utils.critical.CriticalAnalyzer) Logger(org.jboss.logging.Logger) DatabaseStorageConfiguration(org.apache.activemq.artemis.core.config.storage.DatabaseStorageConfiguration) RemotingService(org.apache.activemq.artemis.core.remoting.server.RemotingService) HashMap(java.util.HashMap) PageCountPending(org.apache.activemq.artemis.core.persistence.impl.PageCountPending) ManagementService(org.apache.activemq.artemis.core.server.management.ManagementService) SecurityStoreImpl(org.apache.activemq.artemis.core.security.impl.SecurityStoreImpl) SecurityFormatter(org.apache.activemq.artemis.utils.SecurityFormatter) ConcurrentMap(java.util.concurrent.ConcurrentMap) HashSet(java.util.HashSet) EmptyCriticalAnalyzer(org.apache.activemq.artemis.utils.critical.EmptyCriticalAnalyzer) CriticalAction(org.apache.activemq.artemis.utils.critical.CriticalAction) ActiveMQServerControlImpl(org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl) MBeanServer(javax.management.MBeanServer) SecuritySettingPlugin(org.apache.activemq.artemis.core.server.SecuritySettingPlugin) NodeManager(org.apache.activemq.artemis.core.server.NodeManager) LinkedList(java.util.LinkedList) ResourceManagerImpl(org.apache.activemq.artemis.core.transaction.impl.ResourceManagerImpl) FileConfigurationParser(org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser) ExecutorService(java.util.concurrent.ExecutorService) Transformer(org.apache.activemq.artemis.core.server.transformer.Transformer) BridgeConfiguration(org.apache.activemq.artemis.core.config.BridgeConfiguration) ActiveMQQueueExistsException(org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException) FileMoveManager(org.apache.activemq.artemis.core.server.files.FileMoveManager) Semaphore(java.util.concurrent.Semaphore) GroupingInfo(org.apache.activemq.artemis.core.persistence.GroupingInfo) CoreAddressConfiguration(org.apache.activemq.artemis.core.config.CoreAddressConfiguration) AddressBindingInfo(org.apache.activemq.artemis.core.persistence.AddressBindingInfo) ReplicationManager(org.apache.activemq.artemis.core.replication.ReplicationManager) AIOSequentialFileFactory(org.apache.activemq.artemis.core.io.aio.AIOSequentialFileFactory) CoreQueueConfiguration(org.apache.activemq.artemis.core.config.CoreQueueConfiguration) QueueFactory(org.apache.activemq.artemis.core.server.QueueFactory) ActiveMQDeleteAddressException(org.apache.activemq.artemis.api.core.ActiveMQDeleteAddressException) TimeUnit(java.util.concurrent.TimeUnit) RoutingType(org.apache.activemq.artemis.api.core.RoutingType) ServiceComponent(org.apache.activemq.artemis.core.server.ServiceComponent) JournalLoadInformation(org.apache.activemq.artemis.core.journal.JournalLoadInformation) NullStorageManager(org.apache.activemq.artemis.core.persistence.impl.nullpm.NullStorageManager) PagingManagerImpl(org.apache.activemq.artemis.core.paging.impl.PagingManagerImpl) Bindings(org.apache.activemq.artemis.core.postoffice.Bindings) ActiveMQThreadFactory(org.apache.activemq.artemis.utils.ActiveMQThreadFactory) SimpleString(org.apache.activemq.artemis.api.core.SimpleString)

Example 9 with OperationContext

use of org.apache.activemq.artemis.core.persistence.OperationContext in project activemq-artemis by apache.

the class PagingTest method testSyncPage.

@Test
public void testSyncPage() throws Exception {
    Configuration config = createDefaultInVMConfig();
    server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX);
    server.start();
    try {
        server.addAddressInfo(new AddressInfo(PagingTest.ADDRESS, RoutingType.ANYCAST));
        server.createQueue(PagingTest.ADDRESS, RoutingType.ANYCAST, PagingTest.ADDRESS, null, true, false);
        final CountDownLatch pageUp = new CountDownLatch(0);
        final CountDownLatch pageDone = new CountDownLatch(1);
        OperationContext ctx = new DummyOperationContext(pageUp, pageDone);
        OperationContextImpl.setContext(ctx);
        PagingManager paging = server.getPagingManager();
        PagingStore store = paging.getPageStore(ADDRESS);
        store.sync();
        assertTrue(pageUp.await(10, TimeUnit.SECONDS));
        assertTrue(pageDone.await(10, TimeUnit.SECONDS));
        server.stop();
    } finally {
        try {
            server.stop();
        } catch (Throwable ignored) {
        }
        OperationContextImpl.clearContext();
    }
}
Also used : OperationContext(org.apache.activemq.artemis.core.persistence.OperationContext) DivertConfiguration(org.apache.activemq.artemis.core.config.DivertConfiguration) StoreConfiguration(org.apache.activemq.artemis.core.config.StoreConfiguration) Configuration(org.apache.activemq.artemis.core.config.Configuration) DatabaseStorageConfiguration(org.apache.activemq.artemis.core.config.storage.DatabaseStorageConfiguration) PagingManager(org.apache.activemq.artemis.core.paging.PagingManager) CountDownLatch(java.util.concurrent.CountDownLatch) PagingStore(org.apache.activemq.artemis.core.paging.PagingStore) AddressInfo(org.apache.activemq.artemis.core.server.impl.AddressInfo) Test(org.junit.Test)

Example 10 with OperationContext

use of org.apache.activemq.artemis.core.persistence.OperationContext in project activemq-artemis by apache.

the class PagingTest method testSyncPageTX.

@Test
public void testSyncPageTX() throws Exception {
    Configuration config = createDefaultInVMConfig();
    server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX);
    server.start();
    server.createQueue(PagingTest.ADDRESS, RoutingType.ANYCAST, PagingTest.ADDRESS, null, true, false);
    final CountDownLatch pageUp = new CountDownLatch(0);
    final CountDownLatch pageDone = new CountDownLatch(1);
    OperationContext ctx = new DummyOperationContext(pageUp, pageDone);
    OperationContextImpl.setContext(ctx);
    PagingManager paging = server.getPagingManager();
    PagingStore store = paging.getPageStore(ADDRESS);
    store.sync();
    assertTrue(pageUp.await(10, TimeUnit.SECONDS));
    assertTrue(pageDone.await(10, TimeUnit.SECONDS));
}
Also used : OperationContext(org.apache.activemq.artemis.core.persistence.OperationContext) DivertConfiguration(org.apache.activemq.artemis.core.config.DivertConfiguration) StoreConfiguration(org.apache.activemq.artemis.core.config.StoreConfiguration) Configuration(org.apache.activemq.artemis.core.config.Configuration) DatabaseStorageConfiguration(org.apache.activemq.artemis.core.config.storage.DatabaseStorageConfiguration) PagingManager(org.apache.activemq.artemis.core.paging.PagingManager) CountDownLatch(java.util.concurrent.CountDownLatch) PagingStore(org.apache.activemq.artemis.core.paging.PagingStore) Test(org.junit.Test)

Aggregations

OperationContext (org.apache.activemq.artemis.core.persistence.OperationContext)18 SimpleString (org.apache.activemq.artemis.api.core.SimpleString)7 CountDownLatch (java.util.concurrent.CountDownLatch)5 ActiveMQException (org.apache.activemq.artemis.api.core.ActiveMQException)5 ArrayList (java.util.ArrayList)4 RoutingType (org.apache.activemq.artemis.api.core.RoutingType)4 Test (org.junit.Test)4 Configuration (org.apache.activemq.artemis.core.config.Configuration)3 DivertConfiguration (org.apache.activemq.artemis.core.config.DivertConfiguration)3 StoreConfiguration (org.apache.activemq.artemis.core.config.StoreConfiguration)3 DatabaseStorageConfiguration (org.apache.activemq.artemis.core.config.storage.DatabaseStorageConfiguration)3 IOCallback (org.apache.activemq.artemis.core.io.IOCallback)3 PagingManager (org.apache.activemq.artemis.core.paging.PagingManager)3 PagingStore (org.apache.activemq.artemis.core.paging.PagingStore)3 ServerSession (org.apache.activemq.artemis.core.server.ServerSession)3 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 ActiveMQSecurityException (org.apache.activemq.artemis.api.core.ActiveMQSecurityException)2 ReplicationManager (org.apache.activemq.artemis.core.replication.ReplicationManager)2 ActiveMQServerPlugin (org.apache.activemq.artemis.core.server.plugin.ActiveMQServerPlugin)2 ActiveMQAMQPResourceLimitExceededException (org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPResourceLimitExceededException)2