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

1.004     2023-10-31 12:18:42-05:00 America/Chicago

  [Fixed]

  - Fixed check for expired parent jobs when dequeuing. Thanks @a-leelan
    and @GrantStreetGroup for fixing this bug! [Github #43]

  - Dropped useless index on minion_jobs table (now that it has
    a primary key). Thanks @a-leelan and @GrantStreetGroup for fixing
    this! [Github #43]

1.003     2023-09-21 17:39:03-05:00 America/Chicago

  [Fixed]

  - Added primary keys to the tables missing them. This improves
    performance of the larger tables on distributed MySQL derivatives
    like Galera. Thanks Alan Lee of @GrantStreetGroup for providing this
    fix!

1.002     2023-09-11 13:37:53-05:00 America/Chicago

  [Fixed]

  - Improved performance on repair queries to prevent locking up the
    jobs table for too long. Thanks @larryl and @GrantStreetGroup for
    fixing this! (Github #41)

1.001     2022-10-05 13:34:51-05:00 America/Chicago

  [Docs]

  - Added ERRORS section for common problems.
  - Documented problem with database table not being created. Thanks
    @toddbruner for reporting this issue! (Github #39)

1.000     2021-12-21 12:22:50-06:00 America/Chicago

  Removed old migrations to improve performance

0.34      2021-12-21 11:49:10-06:00 America/Chicago

  *** NOTE ***

  This is the last release before v1.00. You will need to upgrade to at
  least v0.30 before upgrading to v1.00 or beyond!

  [Fixed]

  - Fixed running expensive notes migration query every single time the
    Minion object is created. This should prevent the need for the index
    exclusively on the key column, which was only used by this query.

  - Fixed some queries to add table names to column specs so that it
    might help an older version of the backend work on a newer version
    of the schema (like during the v0.30 migration).

0.33      2021-12-15 15:38:46-06:00 America/Chicago

  [Fixed]

  - Fixed job dependencies not being removed when a parent job was
    deleted. Thanks @larryl of @GrantStreetGroup for reporting this
    issue!

0.32      2021-12-11 16:31:50-06:00 America/Chicago

  [Fixed]

  - Fixed a warning/error when dequeue finds no job to dequeue.
  - Removed useless indexes
  - Added a new, useful index. Thanks @houndegnonm of @GrantStreetGroup
    for finding it!

0.31      2021-12-08 16:48:56-06:00 America/Chicago

  [Fixed]

  - Fixed quotes in new trigger. Some users may have gotten an error
    when trying to upgrade to 0.30. That error is now fixed.

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