fix(#29): validate cron zone, warn when basepull is off, document schedulers #31

Merged
KofTwentyTwo merged 4 commits from feature/GH-29-cron-basepull-scheduler-docs into develop 2026-10-12 11:00:59 +00:00
4 Commits
Author SHA1 Message Date
james.maes 5c8f7a552e Merge remote-tracking branch 'origin/develop' into feature/GH-29-cron-basepull-scheduler-docs
# Conflicts:
#	docs/MIGRATION-1.0.md
2026-10-12 05:57:19 -05:00
james.maesandClaude Opus 5.5 75ae329f28 docs(producer): keep develop's hidden-and-password Javadoc after the merge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 05:52:57 -05:00
james.maes 3956c1d488 Merge remote-tracking branch 'origin/develop' into feature/GH-29-cron-basepull-scheduler-docs
# Conflicts:
#	README.md
#	docs/MIGRATION-1.0.md
#	src/main/java/com/kingsrook/qbits/quicksearch/QuickSearchQBitProducer.java
#	src/test/java/com/kingsrook/qbits/quicksearch/QuickSearchQBitProducerTest.java
2026-10-12 05:52:41 -05:00
james.maes b90b76e93e fix(#29): validate cron zone, warn when basepull is off, document schedulers
A reconcileCronExpression without reconcileCronTimeZoneId passed the
QBit's validation, then QQQ's QInstanceValidator rejected the reconcile
process schedule at startup ("a cron schedule must specify a
cronTimeZoneId"); QQQ has no default zone. validate() now applies the
same checks QQQ does (Quartz CronExpression.validateExpression, a zone
from TimeZone.getAvailableIDs) and requires the zone, naming both
fields. It also rejects a cron on a scheduler in the instance that does
not support cron: QQQ's SimpleScheduler runs fixed intervals only and
fails when the schedule manager starts.

Config-driven tables without their basepull timestamp field now log the
same startup warning as annotated tables, once per table, through one
shared helper. A field set to null is an opt-out and stays quiet.

README and MIGRATION-1.0 document that schedules run only when the host
starts through QApplicationLauncher (qqq-middleware-javalin), and that a
reconcile cron needs a Quartz scheduler and a time zone ID.

Closes #29
2026-10-09 19:23:10 -05:00