def post(self):
        queue_name = self.request.get("queue_name")
        # FIXME: This queue lookup should be shared between handlers.
        queue = Queue.queue_with_name(queue_name)
        if not queue:
            self.error(404)
            return

        attachment_id = self._int_from_request("attachment_id")
        attachment = Attachment(attachment_id)
        last_status = attachment.status_for_queue(queue)

        # Ideally we should use a transaction for the calls to
        # WorkItems and ActiveWorkItems.

        # Only remove it from the queue if the last message is not a retry request.
        # Allow removing it from the queue even if there is no last_status for easier testing.
        if not last_status or not last_status.is_retry_request():
            queue.work_items().remove_work_item(attachment_id)
            RecordPatchEvent.stopped(attachment_id, queue_name)
        else:
            RecordPatchEvent.retrying(attachment_id, queue_name)

        # Always release the lock on the item.
        queue.active_work_items().expire_item(attachment_id)
Esempio n. 2
0
    def post(self):
        queue_name = self.request.get("queue_name")
        # FIXME: This queue lookup should be shared between handlers.
        queue = Queue.queue_with_name(queue_name)
        if not queue:
            self.error(404)
            return

        attachment_id = self._int_from_request("attachment_id")
        attachment = Attachment(attachment_id)
        last_status = attachment.status_for_queue(queue)

        # Ideally we should use a transaction for the calls to
        # WorkItems and ActiveWorkItems.

        # Only remove it from the queue if the last message is not a retry request.
        # Allow removing it from the queue even if there is no last_status for easier testing.
        if not last_status or not last_status.is_retry_request():
            queue.work_items().remove_work_item(attachment_id)
            RecordPatchEvent.stopped(attachment_id, queue_name)
        else:
            RecordPatchEvent.retrying(attachment_id, queue_name)

        # Always release the lock on the item.
        queue.active_work_items().expire_item(attachment_id)
Esempio n. 3
0
 def post(self):
     queue_status = self._queue_status_from_request()
     queue_status.put()
     RecordBotEvent.record_activity(queue_status.queue_name, queue_status.bot_id)
     if queue_status.active_patch_id:
         RecordPatchEvent.updated(queue_status.active_patch_id, queue_status.queue_name, queue_status.bot_id)
     self.response.out.write(queue_status.key().id())
Esempio n. 4
0
 def post(self):
     queue_status = self._queue_status_from_request()
     queue_status.put()
     RecordBotEvent.record_activity(queue_status.queue_name, queue_status.bot_id)
     if queue_status.active_patch_id:
         RecordPatchEvent.updated(queue_status.active_patch_id, queue_status.queue_name, queue_status.message, queue_status.bot_id)
     self.response.out.write(queue_status.key().id())
 def get(self, queue_name):
     queue = Queue.queue_with_name(queue_name)
     if not queue:
         self.error(404)
         return
     # FIXME: Patch assignment should probably move into Queue.
     patch_id = db.run_in_transaction(self._assign_patch, queue.active_work_items().key(), queue.work_items().item_ids)
     if not patch_id:
         self.error(404)
         return
     RecordPatchEvent.started(patch_id, queue_name)
     self.response.out.write(patch_id)
Esempio n. 6
0
 def get(self, queue_name):
     queue = Queue.queue_with_name(queue_name)
     if not queue:
         self.error(404)
         return
     # FIXME: Patch assignment should probably move into Queue.
     patch_id = db.run_in_transaction(self._assign_patch, queue.active_work_items().key(), queue.work_items().item_ids)
     if not patch_id:
         self.error(404)
         return
     RecordPatchEvent.started(patch_id, queue_name)
     self.response.out.write(patch_id)
    def post(self):
        queue = self._queue_from_request()
        if not queue:
            self.response.set_status(500)
            return

        high_priority_items, items = self._work_items_from_request()

        # Add items that are not currently in the work queue. Never remove any items,
        # as that should be done by the queue, feeder only adds them.
        added_items = queue.work_items().add_work_items(high_priority_items, items)

        for work_item in added_items:
            RecordPatchEvent.added(work_item, queue.name())
Esempio n. 8
0
    def post(self):
        queue_name = self.request.get("queue_name")
        # FIXME: This queue lookup should be shared between handlers.
        queue = Queue.queue_with_name(queue_name)
        if not queue:
            self.error(404)
            return

        attachment_id = self._int_from_request("attachment_id")
        attachment = Attachment(attachment_id)
        last_status = attachment.status_for_queue(queue)

        # Ideally we should use a transaction for the calls to
        # WorkItems and ActiveWorkItems.

        queue.work_items().remove_work_item(attachment_id)
        RecordPatchEvent.stopped(attachment_id, queue_name, last_status.message)

        queue.active_work_items().expire_item(attachment_id)
    def post(self):
        queue = self._queue_from_request()
        if not queue:
            self.response.set_status(500)
            return
        work_items = queue.work_items()
        old_items = set(work_items.item_ids)

        success = self._update_work_items_from_request(work_items)
        if not success:
            self.response.set_status(500)
            return
        new_items = set(work_items.item_ids)
        work_items.put()

        for work_item in new_items - old_items:
            RecordPatchEvent.added(work_item, queue.name())
        for work_item in old_items - new_items:
            RecordPatchEvent.stopped(work_item, queue.name())
Esempio n. 10
0
    def post(self):
        queue = self._queue_from_request()
        if not queue:
            self.response.set_status(500)
            return
        work_items = queue.work_items()
        old_items = set(work_items.item_ids)

        success = self._update_work_items_from_request(work_items)
        if not success:
            self.response.set_status(500)
            return
        new_items = set(work_items.item_ids)
        work_items.put()

        for work_item in new_items - old_items:
            RecordPatchEvent.added(work_item, queue.name())
        for work_item in old_items - new_items:
            RecordPatchEvent.stopped(work_item, queue.name())
Esempio n. 11
0
    def post(self):
        queue_name = self.request.get("queue_name")
        # FIXME: This queue lookup should be shared between handlers.
        queue = Queue.queue_with_name(queue_name)
        if not queue:
            self.error(404)
            return

        attachment_id = self._int_from_request("attachment_id")
        attachment = Attachment(attachment_id)
        last_status = attachment.status_for_queue(queue)

        # Ideally we should use a transaction for the calls to
        # WorkItems and ActiveWorkItems.

        queue.work_items().remove_work_item(attachment_id)
        RecordPatchEvent.stopped(attachment_id, queue_name)

        queue.active_work_items().expire_item(attachment_id)
Esempio n. 12
0
 def _add_attachment_to_ews_queues(self, attachment):
     for queue in Queue.all_ews():  # all_ews() currently includes the style-queue
         if self._should_add_to_ews_queue(queue, attachment):
             queue.work_items().add_work_item(attachment.id)
             RecordPatchEvent.added(attachment.id, queue.name())