Package org.apache.sling.replication.queue

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


    }

    @Test
    public void testPackageAdditionRetrievalAndRemoval() throws Exception {
        ReplicationQueue queue = new SimpleReplicationQueue("agentName", "default");
        ReplicationQueueItem pkg = mock(ReplicationQueueItem.class);
        when(pkg.getId()).thenReturn("id");
        assertTrue(queue.add(pkg));
        assertFalse(queue.isEmpty());
        assertEquals(pkg, queue.getHead());
        assertFalse(queue.isEmpty());
        queue.remove(pkg.getId());
        assertTrue(queue.isEmpty());
        ReplicationQueueItemState status = queue.getStatus(pkg);
        assertNotNull(status);
        assertTrue(status.isSuccessful());
        assertEquals(1, status.getAttempts());
View Full Code Here


    protected void doDelete(SlingHttpServletRequest request, SlingHttpServletResponse response)
            throws ServletException, IOException {
        ReplicationQueue queue = request.getResource().adaptTo(ReplicationQueue.class);

        while (!queue.isEmpty()) {
            ReplicationQueueItem queueItem = queue.getHead();
            queue.remove(queueItem.getId());
        }
    }
View Full Code Here

    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

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


    private ReplicationQueueItem getItem(ReplicationPackage replicationPackage) {
        ReplicationQueueItem replicationQueueItem = new ReplicationQueueItem(replicationPackage.getId(),
                replicationPackage.getPaths(),
                replicationPackage.getAction(),
                replicationPackage.getType(),
                replicationPackage.getInfo());
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

    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);
                defaultQueue.remove(firstItem.getId());
            }
        }
    }
View Full Code Here

            }
        }
    }

    private ReplicationQueueItem getItem(ReplicationPackage replicationPackage) {
        ReplicationQueueItem replicationQueueItem = new ReplicationQueueItem(replicationPackage.getId(),
                replicationPackage.getPaths(),
                replicationPackage.getAction(),
                replicationPackage.getType(),
                replicationPackage.getInfo());
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

        return paths;
    }

    private ReplicationQueueItem getItem(ReplicationPackage replicationPackage) {
        ReplicationQueueItem replicationQueueItem = new ReplicationQueueItem(replicationPackage.getId(),
                replicationPackage.getPaths(),
                replicationPackage.getAction(),
                replicationPackage.getType(),
                replicationPackage.getInfo());
View Full Code Here

        if (replicationQueueProviders.size() > 0) {

            for (ReplicationQueueProvider replicationQueueProvider : replicationQueueProviders) {
                for (ReplicationQueue q : replicationQueueProvider.getAllQueues())
                    try {
                        ReplicationQueueItem item = q.getHead();
                        if (item != null) {
                            ReplicationQueueItemState status = q.getStatus(item);
                            if (status.getAttempts() <= numberOfRetriesAllowed) {
                                resultLog.debug("Queue: [{}], first item: [{}], number of retries: {}", q.getName(), item.getId(), status.getAttempts());
                            } else {
                                // the no. of attempts is higher than the configured threshold
                                resultLog.warn("Queue: [{}], first item: [{}], number of retries: {}, expected number of retries <= {}",
                                        q.getName(), item.getId(), status.getAttempts(), numberOfRetriesAllowed);
                                failures.put(q.getName(), status.getAttempts());
                            }
                        } else {
                            resultLog.debug("No items in queue [{}]", q.getName());
                        }
View Full Code Here

TOP

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

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.