ofbiz-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott Gray (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (OFBIZ-10865) Allow prioritization of background jobs
Date Sat, 16 Mar 2019 09:21:00 GMT

     [ https://issues.apache.org/jira/browse/OFBIZ-10865?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Scott Gray updated OFBIZ-10865:
    Attachment: OFBIZ-10865.diff

> Allow prioritization of background jobs
> ---------------------------------------
>                 Key: OFBIZ-10865
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-10865
>             Project: OFBiz
>          Issue Type: Improvement
>          Components: framework
>            Reporter: Scott Gray
>            Assignee: Scott Gray
>            Priority: Major
>             Fix For: Upcoming Branch
>         Attachments: OFBIZ-10865.diff
> As discussed on the dev list [1], allow Jobs to specify a priority and be queued accordingly
by the JobPoller so that important jobs can be prioritized over normal jobs, and low priority
jobs can be left until last.
> This is a first pass implementation with just the main changes.  We will still need to
allow the priority to be set in the JobManager and LocalDispatcher's "schedule" methods before
jobs generated at runtime can be prioritized. IMO the existing schedule methods are a mess
and need to be converted into a builder pattern before adding any more job attributes.  The
new priority field also needs to be added to the webtools UI wherever appropriate.
> Changes are as follows:
> - Add a "priority" field to JobSandbox entity (numeric/Long)
> - Add JobPriority constants class containing fields LOW (0), NORMAL (50) and HIGH (100)
> - Add getPriority method to the Job interface and implement methods for AbstractJob (returns
NORMAL), PersistedServiceJob (returns JobSandbox.priority) and PurgeJob (returns LOW)
> - Change the JobPoller executor's queue to use PriorityBlockingQueue (unbounded) instead
of LinkedBlockingQueue (bounded)
> - Implement custom Comparator for the priority queue to sort by priority descending and
then runTime ascending
> - Change the poll size per poll to be (queueSize() - queue.size) instead of queue.remainingCapacity()
due to the new queue being unbounded
> - I've also opted to limit the database poll query to the poll size using maxRows() because
it seemed dangerous to me to use an unconstrained query on this table
> - Ensured recurring jobs receive the default (NORMAL) priority when being rescheduled
so that they're sorted correctly on the next time they show up in the database poll
> - Ensured jobs generated at runtime are given a default priority of NORMAL
> [1] https://lists.apache.org/thread.html/f9107f8ca9a17a2df731337fc3d9766ebad33467fea4393fb069552d@%3Cdev.ofbiz.apache.org%3E

This message was sent by Atlassian JIRA

View raw message