Changelog: Faktory || Faktory Enterprise
- Fix top-error silently crashing Faktory [#479]
- Various lint fixes for golangci-lint
- Go 1.22, go-redis 9.6.1, alpine 3.20
- Faktory now refuses further connections on :7419 if the connection count is larger than allowed, 2000 in Faktory or your licensed amount in Faktory Enterprise. [#476]
- The
INFO
response has changed slightly, all elements now have well-defined types [#474] Deprecateclient.Info
Go API, add newclient.CurrentState
Go API which is almost identical toclient.Info
but has a strongly-typed response. - Implement native TLS support [#469]
Put
public.cert.pem
andprivate.key.pem
in your config directory and Faktory will automatically enable TLS on port 7419 and 7420. - Unwrap and display ActiveJob class names [#460, ibrahima]
- Add Go client API so batches can push jobs in bulk [#437, tylerian]
- Go 1.22, go-redis 9.5.1, alpine 3.18
- Upgrade to Go 1.21 and go-redis 9.2.0.
- Don't double encode HTML entities for display in Web UI [#440]
- Validate and limit
days
parameter for Dashboard [#431] CVE-2023-37279 - Validate and limit
timeInterval
refresh parameter for Dashboard
- Upgrade all internal APIs to propogate Context
- Upgrade
redis/go-redis
to the new v9 driver, requires Redis v6.0+ and RESP3 - Upgrade
datadog-go
to the new v5 driver - Upgrade to Go 1.20 and Alpine 3.17
- Add
client.RemoveQueues(...)
to delete existing queues via API - Add IO deadlines to client I/O [#373]
- Upgrade to Go 1.19
- Add per-worker connection count on Busy page
- Add
QUEUE REMOVE [queue_names...]
subcommand to remove one or more queues [#399] - Fixes for linting warnings from gocritic and golangci-lint
- Upgrade to Go 1.18.
- The core Job struct in Go was modified slightly so the Retry element
is now a
int*
rather thanint
. This was necessary so code could distinguish between the default value "0" and disabling retries "0"; the default value is now "nil" and will result in the default retry policy of "25". [#385] - Add
remaining
to the Job Failures struct to track retries remaining [#374] - Add new
PUSHB
PUSH Bulk jobs command. You send an Array of Jobs rather than a single Job withPUSH
. There is no limit to the Array size but we recommend 1000 at a time as a best practice. Returns a Map of JID to ErrorMsg for jobs which failed to push. [#386]
PUSHB [{job},{job},...] => Map<JID, ErrorMsg>
- Fix worker heartbeat monitoring which led to premature worker disassociation
- Remove invalid client-side deadline which lead to lots of I/O errors [#375]
- Upgrade to Go 1.17.
- Remove trailing "-1" on Faktory versions and tags. Future versions will use the standard form of "vX.Y.Z" except for Linux DEB/RPM packages.
- Implement client-side I/O deadlines, which will look like this if the
network is slow or misconfigured:
read tcp 127.0.0.1:63027->127.0.0.1:7419: i/o timeout
- Build fixes for ARM support [#370]
- Extend Faktory's Redis load timeout to allow for huge datasets [#225]
- Upgrade Bootstrap from v3.3.7 to v5.0.1 [#360, saurori]
- Support username in FAKTORY_URL, useful for connection routing proxies.
- Publish arm64 Docker images [#366]
- Change license from GPLv3 to AGPLv3. This is intended to ensure Faktory remains open source, even if someone forks Faktory and provides it as a service. No worker or application code is covered by this license.
- Add support for native arm64 builds. Docker images still in progress.
- Fixed Windows build.
- Add
QUEUE PAUSE
andQUEUE RESUME
commands, add buttons to the /queues page [#336] - The Busy page can now display current RSS for Worker processes [#339]
- The /debug page now displays Redis latency [#337]
- Add
Dialer
support for customfaktory.Client
connections [#330] - Upgrade to Go 1.16 and alpine 3.13; remove go-bindata dependency [#338]
- Allow FAKTORY_ENV to switch environment without flags [#325]
- Fix jobs with Retry:0 not running FAIL middleware [#317]
- Fix frequent "Bad connection EOF" log messages due to k8s probes
- Upgrade to Go 1.15 and alpine 3.12.
- Fix crash with invalid mutate API usage [#313]
- Fix form handler on Scheduled Job and Retry Job UI pages [#236]
- Refactor scheduled job processing to handle large job counts [#309]
- Faktory Enterprise now supports Job Tracking.
- Integrate golangci-lint and numerous minor changes for issues it raised
- Support staging environment
-e staging
- Allow workers to send their current process state as part of BEAT [#266]
- Faktory will now dump all thread stacktraces when sent the TTIN signal
- Remove apex/log dependency [#289]
- Upgrade to Go 1.14
- Enable SLOWLOG in Faktory's Redis instance
- Faktory Enterprise is now available with Batches and Queue Throttling.
- Upgrade Docker image to Alpine 3.10
- Add connection pool support for
client
Go package. - Refactor manager package for Pro/Ent integration.
- Scheduled jobs now go through
push
middleware when pushed [#260]
- Upgrade Go runtime from 1.10 to 1.13.
- Faktory, Faktory Pro and faktory_worker_go are now using Go modules [#216, ClaytonNorthey92]
- Fix "Add to Queue" button on the Scheduled page [#236]
- Rework fetching jobs from queues to be more efficient. [#235]
- Add several helper APIs to configure Faktory Pro features. [#251, tylerb]
- You can now put nginx in front of Faktory's Web UI using
proxy_pass
:
location /faktory {
proxy_set_header X-Script-Name /faktory;
proxy_pass http://127.0.0.1:7420;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
- Pause Faktory boot and wait upon any
LOADING
errors from Redis
- Support known, specific errors to be returned to clients [#208]
- All jobs now default to
"retry":25
if not specified when pushed [#211] - Update job arguments within Web UI to show as JSON, not native Go [#210]
- Add new MUTATE command which allows bulk manipulation of Faktory's persistent sets (i.e. scheduled, retries, dead) [#205] See https://github.com/contribsys/faktory/wiki/Mutate-API
- Remove legacy job priority from APIs and Job struct
- Improve display of job arguments and custom elements in Web UI [#199]
- Add queue sizes to the INFO stats [#197, thapakazi]
- Fix infinite loop with sorted set iteration [#196, antoinefinkelstein]
- More aggressive Redis persistence [#195]
- Fix possible race condition panic on new connection
- Increase maximum client count to 1000.
- Fix crash under load [#187]
- First Faktory Pro release
- Fix crash on startup in Linux in development mode
- Close all associated connections when a worker process expires [#182]
- Shutdown Redis cleanly if Faktory panics (Linux only)
- Switch Faktory from RocksDB to Redis for storage. [#160]
- Implement Faktory-internal middleware hooks [#168]
- Integrate TOML config system [#169]
- Workaround for negative busy/retry/scheduled/dead counts [#148]
- Fix slow index page rendering under heavy load [#156]
- Upgrade to Go 1.10.3
- Upgrade to RocksDB 5.14.2
- Upgrade RocksDB from 5.7.3 to 5.9.2
- Add CSRF protection to Web UI [#92, vosmith]
- Faktory in production mode now requires a password by default [#113]
- Orphaned jobs now use the retry process so they don't re-enqueue forever [#99]
- Implement automated backups, default once per hour and keeping 24. [#106]
- Implement
purge
command for faktory-cli, to remove old backups.
- Fix job reservation [#94, jweslley]
- Send exhausted jobs to the morgue [#86, jweslley]
- Add support for job priorities [#68, andrewstucki]
Jobs may now include "priority" with values 1-9, 9 being
highest priority. Push a job with
"priority":9
and it will effectively go to the front of the queue. The default priority is 5.
{"jid":"12o31i2u3o1","jobtype":"FooJob","args":[1,2,3],"priority":8}
- Various protocol changes [#72]
- Remove TLS support in server [#76]
- Fix heartbeat pruning so old workers disappear from Busy page [#37]
- Add Docker image [#13]
- Add Homebrew install [#10]
- Lots of polish and code cleanup from cdrx, agnivade, adomokos, ustrajunior, jwsslley and others. Thank you!
- Initial release