###############################################################################
@RELEASE: 6.9-2a
##############################################################################
@SUMMARY: 6.9-2a is a patch release of 6.9-2, and includes the following fixes.
==== CL 18717 ====
@FIX: Job instances can become unkill-able with QB_PREEMPT_MODE_FAIL internal status
JIRA: QUBE-2819
==== CL 18351 ====
@CHANGE: background helper thread improvements
* limit the number of workers that are potentially recontacted by the background helper routine to 50 per iteration.
* background thread exits and refreshes after running for approximately 1 hour, as opposed to 24 hours
ZD: 17124
==== CL 18340 ====
@FIX: allow special characters in job name field at submissions
JIRA: QUBE-2748
==== CL 18324 ====
@CHANGE: output of "qbadmin s -config" and "qbadmin w -config hostname" now sorted alphabetically.
JIRA: QUBE-2654
==== CL 18285 ====
@FIX: add better error-checks in cmdrange jobtype's log-parsing code, in case the log file is not readable.
In some situations, fseek() was causing crashes in the parseFileStream() routine.
ZD: 17442
==== CL 18221 ====
@FIX: prevent "host.processors" to be unset when jobs are modified.
JIRA: QUBE-2649
==== CL 18157 ====
@FIX: shortened the timeout for "qbreportwork" when it reports a "failed" work that has migrate_on_frame_retry from 600 seconds to 20.
This was causing long 10-minute pauses on the job instance when a frame
fails after exhausting all of its retry counts.
Original change was made in CL17206, for QUBE-2202/ZD16553.
ZD: 17447
==== CL 18147 ====
@FIX: Windows worker wouldn't properly release automounted drives at the end of running a job instance
ZD: 17400
==== CL 18001 ====
@FIX: Pytnon API's qb.ping(asDict=True) was broken when metered licensing was unauthorized, because of the minus sign
==== CL 17889 ====
@CHANGE: job queries requesting for subjob and/or work details now must explicitly provide job IDs.
Both qbjobinfo() C++ and qb.jobinfo() Python APIs now reject such submissions and return an error.
For example, the Python call "qb.jobinfo(subjobs=True)" will raise a runtime exception. It must be now called like "qb.jobinfo(subjobs=True, id=12345)" or "qb.jobinfo(subjobs=True, id=[1234,5678])"
JIRA: QUBE-244
==== CL 17863 ====
@FIX: Qube language callback command "mail-status" wasn't working properly, setting the smtp "TO" field to an incorrect string.
==== CL 17858 ====
@FIX: qb.deleteworkerproperties() and qb.deleteworkerresources() fn should return an error when used with the wrong 2nd arg (must be a list)
ZD: 16932
JIRA: QUBE-2381
==== CL 17856 ====
@FIX: misleading "invalid key" error message in supelog when supervisor_max_metered_licenses set to 0
JIRA: QUBE-2397
==== CL 17797 ====
@FIX: ignore any ethernet interface with "virutal" in its description when detecting the primary MAC address on Windows.
ZD 17072
==== CL 17790 ====
@FIX: issue where the background helper thread frequently sends 2 or more update requests (QB_MESSAGE_REQUEST_UPDATE) to a single "questionable" worker (i.e., one that has missed enough heartbeats, and potentially down) at once.
ZD: 17124
==== CL 17735 ====
@FIX: badlogin jobs can't be retried or killed (previously fixed in CL15011, but regressed)
JIRA: QUBE-642
ZD: 12699, 17010
==== CL 16491 ====
@NOTES:Add support for AfterEffects point release scheme (2015.3)