Revision history for Perl extension Minion::Backend::mysql.

0.30      2021-11-30 13:05:48-06:00 America/Chicago

  [Added]

  - Added some denormalized columns to the dependencies table to improve
    dequeue performance. These optimizations improve performance by 2-3x
    on MySQL 5.7 and 5-6x on MySQL 8.

  [Fixed]

  - Reduced the size of some columns that were entirely too large:
    "state" is now an enum, so it takes only one byte.
    "task" is now a VARCHAR limited to 50 characters.

0.29      2021-06-07 10:38:25-05:00 America/Chicago

  [Fixed]

  - Sped up enqueue by only using a transaction when needed. `no_txn`
    will still always disable enqueue transactions.

0.28      2021-06-04 17:49:59-05:00 America/Chicago

  [Fixed]

  - Improved performance of stats function, listing jobs (which also is
    used to get a single job's information), and repairing jobs with
    missing workers

0.27      2021-06-03 15:08:43-05:00 America/Chicago

  [Fixed]

  - Improved performance of old job cleanup

0.26      2021-05-27 17:26:48-05:00 America/Chicago

  [Fixed]

  - Improved performance of the notes table by adding an index. Thanks
    @larryl of Grant Street Group for the patch!
  - Fixed rudely clobbering a $@ when updating notes
  - Fixed missing cleanup queries in reset
  - Removed the transaction around the dequeue. This allows the race to
    happen between SELECT and UPDATE, but now we check who wins the
    race. The loser goes back to try another SELECT. Thanks @larryl for
    the SQL.

  [Added]

  - Added a `no_txn` attribute to disable the transaction around the
    `enqueue` queries. I do not recommend using this in production,
    but it helps make testing easier: Tests can be performed in
    a transaction, and then the transaction rolled back to undo any
    changes before the next test.

0.25      2021-05-21 21:32:59-05:00 America/Chicago

  [Fixed]

  - Fixed compatibility with DBD::MariaDB. Thanks @saintserge for the
    patch! [Github #35]

0.24      2021-04-12 19:04:09-04:00 America/Detroit

  [NOTE]

  This release tries to fix some reported deadlocks from job dequeuing
  by moving the dequeue process into a transaction with a `SELECT ...
  FOR UPDATE` query. Please make sure to test this release in your
  environment before moving it to production, and be prepared to roll
  back to v0.23. Please report any issues you have so they can get
  fixed!

  [Fixed]

  - Fix compatibility with Mojolicious 9.0: The tests would fail
    because the `delay` helper is no longer available.
  - Fix jobs being run before their parents. Thanks @tn-laslov for
    reporting this issue and providing the solution! [Github #34]
  - Fix slow job dequeue on very large jobs tables. Thanks @znestor
    for reporting this issue and providing the solution! [Github #33]
  - Trying to fix some reported deadlocks in job dequeueing. Thanks
    @srchulo for reporting and help debugging this issue, and Grant
    Street Group for additional debugging information. [Github #28]
  - Fix note values not accepting UTF-8 characters. Thanks @uralm1 for
    reporting this issue and providing a fix! [Github #32]

0.23      2020-12-19 16:56:40-06:00 America/Chicago

  [Fixed]

  - Fixed backend committing the current transaction whenever it is
    instanciated. This was causing problems with tests that use
    transactions for isolation and then rollback to restore. Thanks
    Grant Street Group for reporting this issue!

0.22      2020-12-17 22:04:50-06:00 America/Chicago

  [Fixed]

  - Added a primary key to the dependencies table
    (`minion_job_depends`). This helps with MySQL cluster systems (like
    Percona XtraDB) which need primary keys in order to correctly
    propagate writes. Thanks @nickyinhu and Grant Street Group for
    submitting this patch! (Github #31)

0.21      2020-07-31 22:55:46-05:00 America/Chicago

  [Fixed]

  - The mysql backend is now fully-compatible with Minion 10.13,
    including:
      - Listing jobs by notes
      - Expiring jobs (experimental)
      - Lax dependencies (experimental)

0.20      2020-04-18 20:24:43-05:00 America/Chicago

  [Fixed]

  - Fixed error trying to load database on MySQL 8.0: The lock function
    did not have the appropriate annotations. Thanks @yahermann for
    reporting this issue! [Github #27]

0.19      2020-01-30 23:48:41-06:00 America/Chicago

  [Fixed]

  - This backend is now (mostly) compatible with Minion 10.04.
    Only searching for jobs by notes is not implemented yet.

0.18      2019-09-03 13:28:42-05:00 America/Chicago

  [Fixed]

  - Fixed an issue with InnoDB index sizing and MySQL strict mode.
    Thanks @larryl and Grant Street Group! (Github #24)

0.17      2019-08-27 16:11:57-05:00 America/Chicago

  [Fixed]

  - Fixed migrations not running when given an existing MySQL
    connection. Thanks @larryl and Grant Street Group!
  - Improved performance for locks and dequeueing. Thanks @larryl and
    Grant Street Group!
  - Fixed the statistics to work under MySQL strict mode. Thanks @larryl
    and Grant Street Group!

0.16      2019-08-10 21:27:33-05:00 America/Chicago

  [Added]

  - Added Travis tests for more MySQL and MariaDB versions. Thanks
    @paultcochrane for the initial work on this. (Github #1)
  - You can now pass in a connected Mojo::mysql instance to the backend
    to make it use that (instead of creating its own instance). This can
    help make sure that concurrent connections are limited and reused.
    Thanks @larryl & @GrantStreetGroup for contributing this!
    (Github #22)

  [Fixed]

  - Fixed SQL errors under MySQL strict mode (Specifically, the SQL
    GROUP BY columns need to be specified as SELECTed). Thanks @larryl
    & @GrantStreetGroup! (Github #22)
  - Fixed backend creating dozens of connections to MySQL. Now basic
    operations should be far more efficient. Thanks @larryl
    & @GrantStreetGroup! (Github #22)

0.15      2018-11-10 11:46:56-06:00 America/Chicago

  [Fixed]

  - Fixed warning when pulling history for the Minion admin console.
    Thanks @chromedome! [Github #20]
  - Fixed tests failing with "DBD::mysql::st execute failed: This
    function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its
    declaration and binary logging is enabled". MySQL 8 adds some sanity
    checks to functions and we need to override them. This might
    actually be a problem that we will have to fix later...

0.14      2018-04-30 20:41:08-04:00 America/New_York

  [Fixed]

  - Fixed backend to work with Minion v9.03. Thanks @pentabion! [Github
    #18]
  - Fixed an intermittently failing test. Thanks @pentabion! [Github
    #19]

  [Other]

  - Fixed Travis configuration to pass tests on 5.12/5.10 and improve
    performance

0.13      2018-02-03 11:28:16-06:00 America/Chicago

  [Added]

  - Added `list_locks` method so that the Minion admin UI works. Thanks
    @pentabion! [Github #17]

0.12      2018-01-14 01:22:07-06:00 America/Chicago

  [Fixed]

  - Fixed all the missing features from the backend to fully-support
    Minion 8.

0.11      2017-11-18 13:43:48-06:00 America/Chicago

  [Fixed]

  - Upgraded backend to work with Minion 8 and the Minion admin UI

  - Allow hashref of options to Mojo::mysql. This lets us pass in a full
    DBI connection string to use options not normally available via the
    `mysql://` URL string.

0.10      2017-11-05 19:12:38-06:00 America/Chicago

  [Fixed]

  - Fixed tests to only run on MySQL 5.6.5 or higher. Versions older
    than this do not support the `TIMESTAMP` column settings we are
    using. Thanks @paultcochrane!

  - Fixed tests to report which MySQL version is running so we can more
    easily detect why database queries are failing. Thanks
    @paultcochrane!

  - Fixed travis reporting coverage to coveralls. Thanks @paultcochrane!

  - Removed some whitespace-only POD lines which `podchecker` was
    complaining about. Thanks @paultcochrane!

0.09      2017-11-02 14:08:31-05:00 America/Chicago

  [Added]

  - Added initial Travis CI configuration. Thanks @paultcochrane!
    (Github #5)

  [Fixed]

  - Fixed missing test prereqs as requested by CPANTS. Thanks
    @paultcochrane! (Github #4)
  - Added an explicit Perl version declaration as requested by CPANTS.
    Thanks @paultcochrane! (Github #3)
  - Fixed links to Travis and Coveralls badges. Thanks @paultcochrane
    (Github #2)

0.08      2017-09-01 20:21:11-05:00 America/Chicago

  - Fixed contributors showing multiple times in the documentation

0.07      2017-09-01 20:02:45-05:00 America/Chicago

    - Increased size of args/result fields to support jobs with more
      information.

0.06  2017-09-01

    - Partial support for Minion 7.0
        - Automatic job retry
        - Worker commands
        - Missing features: job parents, locking, job notes
      This is enough to boot Minion and run basic jobs. Any jobs that
      depend on unimplemented features may not work correctly, and may
      cause errors.

0.04  After 0.03
	- Support Minion 2.0

0.03  After 0.02
	- Inital Pub/Sub work

0.02  After 0.01
	- Add in complete Mojolicious::Lite example

0.01  Tue Sep 15 19:24:46 2015
	- original version; created by h2xs 1.23 with options
		-A -X -n Minion::Backend::mysql