Services


Issues synchronization uses services, which has been provided due to reliability reasons. 

IssueSYNC store all informations of synchronization.

Synchronization does not take effect instantly, services takes care of communication between local and remote JIRA instances. This has been developed to ensure issues will synchronize even if remote JIRA is unreachable (server is offline, no network access, etc.), so it can reply the sync message until receive successful response. 

Issues synchronization mechanism is build based on queues (IN, OUT). There are two major types of queue messages: data & response.
Corresponding schedulers:

  • Cron outgoing job
  • Cron outgoing response job
  • Cron incoming job
  • Cron incoming response job

All changes which have been done in issues are stored in QUEUE OUT table, later on OUTGOING JOB propagates them to remote JIRA instance.
Remote JIRA stores received information in QUEUE IN table, then INCOMING JOB updates related issues. If you want to read more about the flow please read this: Database.

You can control how often this jobs should fire. You can configure the schedulers (services) that are available in the plugin in Configuration → General.
Each scheduler is based on CRON expression that uses Quartz library http://www.quartz-scheduler.org/
(warning) Schedulers cannot run more often than once a minute (JIRA limitation), but in real world it can be more often depending second JIRA configuration (example: one JIRA can send the request to the second just in the between of its job schedulers).


Example of possible configuration expressions:

ExpressionMeaning
3 * * * * ?Fire every 3 minutes
0 0 12 * * ?Fire at 12pm (noon) every day
0 15 10 ? * *Fire at 10:15am every day
0 15 10 * * ?Fire at 10:15am every day
0 15 10 * * ? *Fire at 10:15am every day
0 15 10 * * ? 2005Fire at 10:15am every day during the year 2005
0 * 14 * * ?Fire every minute starting at 2pm and ending at 2:59pm, every day
0 0/5 14 * * ?Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day
0 0/5 14,18 * * ?Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day
0 0-5 14 * * ?Fire every minute starting at 2pm and ending at 2:05pm, every day
0 10,44 14 ? 3 WEDFire at 2:10pm and at 2:44pm every Wednesday in the month of March.
0 15 10 ? * MON-FRIFire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday
0 15 10 15 * ?Fire at 10:15am on the 15th day of every month
0 15 10 L * ?Fire at 10:15am on the last day of every month
0 15 10 ? * 6LFire at 10:15am on the last Friday of every month
0 15 10 ? * 6LFire at 10:15am on the last Friday of every month
0 15 10 ? * 6L 2002-2005Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005
0 15 10 ? * 6#3Fire at 10:15am on the third Friday of every month
0 0 12 1/5 * ?Fire at 12pm (noon) every 5 days every month, starting on the first day of the month.
0 11 11 11 11 ?Fire every November 11th at 11:11am.


In case of ACTIVE - PASSIVE scenario (when of JIRA instance is behind a firewall / not accessible via network <- this one is ACTIVE) there is only a PULL mechanism. There are three corresponding schedulers:

  • Cron pull job (both IN & OUT)
  • Cron pull responses job (both IN & OUT)
  • Cron pull configuration job

The last one (configuration job) is for synchronizing Contracts setup.


Last scheduler is for Archivization purposes.


Here is an overview of General IssueSYNC Configuration.

 overview of General IssueSYNC Configuration