Package org.apache.sling.replication.queue

Examples of org.apache.sling.replication.queue.ReplicationQueue


    private final Logger log = LoggerFactory.getLogger(getClass());

    public boolean add(String agentName, ReplicationPackage replicationPackage,
                         ReplicationQueueProvider queueProvider) throws ReplicationQueueException {
        ReplicationQueueItem queueItem = getItem(replicationPackage);
        ReplicationQueue queue = queueProvider.getDefaultQueue(agentName);
        return queue.add(queueItem);
    }
View Full Code Here


    public boolean add(String agentName, ReplicationPackage replicationPackage,
                         ReplicationQueueProvider queueProvider) throws ReplicationQueueException {
        boolean added;
        ReplicationQueueItem queueItem = getItem(replicationPackage);
        ReplicationQueue queue = queueProvider.getDefaultQueue(agentName);
        added = queue.add(queueItem);
        checkAndRemoveStuckItems(agentName, queueProvider);
        return added;
    }
View Full Code Here

        return Arrays.asList(new String[] { ERROR_QUEUE_NAME, DEFAULT_QUEUE_NAME });
    }

    private void checkAndRemoveStuckItems(String agent,
                                          ReplicationQueueProvider queueProvider) throws ReplicationQueueException {
        ReplicationQueue defaultQueue = queueProvider.getDefaultQueue(agent);
        // get first item in the queue with its status
        ReplicationQueueItem firstItem = defaultQueue.getHead();
        if (firstItem != null) {
            ReplicationQueueItemState status = defaultQueue.getStatus(firstItem);
            // if item is still in the queue after a max no. of attempts, move it to the error queue
            int attempts = status.getAttempts();
            Calendar entered = status.getEntered();
            log.info("item {} entered {} was attempted {} times", new Object[]{firstItem, entered, attempts});
            if (attempts > attemptsThreshold || (entered != null && Calendar.getInstance().getTimeInMillis() - entered.getTimeInMillis() > timeThreshold)) {
                if (ERROR.equals(stuckQueueHandling)) {
                    log.warn("item {} moved to the error queue", firstItem);

                    ReplicationQueue errorQueue = queueProvider.getQueue(agent, ERROR_QUEUE_NAME);
                    if (!errorQueue.add(firstItem)) {
                        log.error("failed to move item {} the queue {}", firstItem, errorQueue);
                        throw new ReplicationQueueException("could not move an item to the error queue");
                    }
                }
                log.warn("item {} dropped from the default queue", firstItem);
View Full Code Here

                    break;
                }
            }
        }

        ReplicationQueue queue;
        if (usePriorityQueue) {
            log.info("using priority queue for path {}", pp);
            queue = queueProvider.getQueue(agentName, pp);
        } else {
            log.info("using default queue");
View Full Code Here

    public boolean add(String agentName, ReplicationPackage replicationPackage,
                         ReplicationQueueProvider queueProvider) throws ReplicationQueueException {

        ReplicationQueueItem queueItem = getItem(replicationPackage);
        ReplicationQueue queue = getQueue(agentName, queueItem, queueProvider);
        if (queue != null) {
            return queue.add(queueItem);
        } else {
            throw new ReplicationQueueException("could not get a queue for agent " + agentName);
        }
    }
View Full Code Here

    @Nonnull
    public ReplicationQueue getQueue(@Nonnull String agentName, @Nonnull String queueName)
            throws ReplicationQueueException {
        String key = agentName + queueName;

        ReplicationQueue queue = queueMap.get(key);
        if (queue == null) {
            log.info("creating a queue with key {}", key);
            queue = getInternalQueue(agentName, queueName);
            queueMap.put(key, queue);
            log.info("queue created {}", queue);
View Full Code Here

    @Test
    public void testPackageAdditionWithNullItemStateFromTheQueue() throws Exception {
        SingleQueueDistributionStrategy singleQueueDistributionStrategy = new SingleQueueDistributionStrategy();
        ReplicationPackage replicationPackage = mock(ReplicationPackage.class);
        ReplicationQueueProvider queueProvider = mock(ReplicationQueueProvider.class);
        ReplicationQueue queue = mock(ReplicationQueue.class);
        when(queueProvider.getDefaultQueue("agentName")).thenReturn(queue);
        when(queue.add(any(ReplicationQueueItem.class))).thenReturn(true);
        boolean returnedState = singleQueueDistributionStrategy.add("agentName", replicationPackage, queueProvider);
        assertTrue(returnedState);
    }
View Full Code Here

    @Test
    public void testPackageAdditionWithNotNullItemStateFromTheQueue() throws Exception {
        SingleQueueDistributionStrategy singleQueueDistributionStrategy = new SingleQueueDistributionStrategy();
        ReplicationPackage replicationPackage = mock(ReplicationPackage.class);
        ReplicationQueueProvider queueProvider = mock(ReplicationQueueProvider.class);
        ReplicationQueue queue = mock(ReplicationQueue.class);
        when(queueProvider.getDefaultQueue("agentName")).thenReturn(queue);
        when(queue.add(any(ReplicationQueueItem.class))).thenReturn(true);

        boolean returnedState = singleQueueDistributionStrategy.add("agentName", replicationPackage, queueProvider);
        assertTrue(returnedState);
    }
View Full Code Here

    @Test
    public void testWithNoItemInTheQueue() throws Exception {
        ReplicationQueueHealthCheck replicationQueueHealthCheck = new ReplicationQueueHealthCheck();

        replicationQueueHealthCheck.activate(Collections.<String, Object>emptyMap());
        ReplicationQueue queue = mock(ReplicationQueue.class);
        when(queue.getHead()).thenReturn(null);
        ReplicationQueueProvider replicationQueueProvider = mock(ReplicationQueueProvider.class);
        Collection<ReplicationQueue> providers = new LinkedList<ReplicationQueue>();
        providers.add(queue);
        when(replicationQueueProvider.getAllQueues()).thenReturn(providers);
        replicationQueueHealthCheck.bindReplicationQueueProvider(replicationQueueProvider);
View Full Code Here

    @Test
    public void testWithOneOkItemInTheQueue() throws Exception {
        ReplicationQueueHealthCheck replicationQueueHealthCheck = new ReplicationQueueHealthCheck();

        replicationQueueHealthCheck.activate(Collections.<String, Object>emptyMap());
        ReplicationQueue queue = mock(ReplicationQueue.class);
        ReplicationQueueItem item = mock(ReplicationQueueItem.class);
        ReplicationQueueItemState status = mock(ReplicationQueueItemState.class);
        when(status.getAttempts()).thenReturn(1);
        when(queue.getStatus(item)).thenReturn(status);
        when(queue.getHead()).thenReturn(item);
        ReplicationQueueProvider replicationQueueProvider = mock(ReplicationQueueProvider.class);
        Collection<ReplicationQueue> providers = new LinkedList<ReplicationQueue>();
        providers.add(queue);
        when(replicationQueueProvider.getAllQueues()).thenReturn(providers);
        replicationQueueHealthCheck.bindReplicationQueueProvider(replicationQueueProvider);
View Full Code Here

TOP

Related Classes of org.apache.sling.replication.queue.ReplicationQueue

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.