IMPROVEMENTS
- docs/ops: fix port for achgateway admin server
- docs: add new configs for reconciliation file/entry events
- stream: unwrap underlying error from sarama.ProducerError
BUILD
- build: switch kafka image to redpanda
Moov has encountered performance and scalability issues with ReconciliationFile
events when they contain large files.
To handle these larger files we are adding a new ReconciliationEntry
event produced for each EntryDetail
of the file.
To maintain backwards compatability with the v0.23.x series set ProduceFileEvents: true
under Reconciliation
of the ODFI config.
ADDITIONS
- feat: add option to produce recon events per-entry (
ReconciliationEntry
)
BUILD
- build: upgrade github.com/moov-io/go-sftp to v0.12.2
BUILD
- build: update github.com/go-kit/kit to v0.13.0
- build: update github.com/moov-io/go-ftp to v0.3.1
- build: update github.com/moov-io/go-sftp to v0.12.1
IMPROVEMENTS
- fix: properly skip hidden files
- incoming/odfi: include shard name in download logs
- test: add check for verifying ODFI downloads
- test: check HTTP status on upload
- test: check collected file count prior to asserting their contents
- test: cleanup getNonCanceledMatches checks
- upload: check all path declaration combinations
BUILD
- chore: update github.com/moov-io/go-sftp to v0.11.1
- meta: replace panics with better alternatives
BUILD
- chore: upgrade moov-io/go-sftp to v0.11.0
IMPROVEMENTS
- odfi: read files in sequence to download
- upload: return filepaths to be downloaded, rather than full file contents
BUILD
- chore: update github.com/moov-io/go-ftp to v0.1.1
- chore: update github.com/moov-io/go-sftp to v0.10.2
IMPROVEMENTS
- test/upload: use UUID's for fileIDs, use crypto/rand, verify more details
- test/upload: verify every fileID was written to disk
- upload: replace SFTP code with moov-io/go-sftp
- upload: replace FTP agent code with moov-io/go-ftp
IMPROVEMENTS
- notify: remove spammy multi-sender logs
- pipeline: log file upload progress in chunks of 10
BUILD
- chore: update github.com/moov-io/ach to v1.32.0
- chore: update github.com/moov-io/cryptfs to v0.7.0
- chore: update github.com/slack-go/slack to v0.12.2
- chore: update gocloud.dev to v0.30.0
- chore: update golang.org/x/crypto to v0.11.0
ADDITIONS
- docs: add FileUploaded event to api specification
- feat: add API for publishing FileUploaded on isolated directories
- pipeline: produce InvalidQueueFile when reading or processing QueueACHFile fails
IMPROVEMENTS
- build: upgrade and tidy golang.org deps
- test: use log.NewTestLogger
- test: verify FileUploaded is sent from events api
- test: verify events API handles invalid conditions
BUILD
- build: enable gitleaks again, remove outdated IGNORED_CVES option
IMPROVEMENTS
- docs: add shard mapping diagram
- pipeline: fallback to default outbound path
IMPROVEMENTS
- fix: build paths correctly for audittrails
- incoming/odfi: pass through logger to maintain contextual fields
- pipeline: share logger across more calls
BUILD
- build: split docker image creation out from tests
IMPROVEMENTS
- feat: allow audittrail base paths to be configurable
- fix: Correcting Error Messaging on Publish
- incoming/odfi: don't emit IncomingFile events for empty ACH files
- pipeline: remove consul and leader election
BUILD
- chore: update github.com/cloudflare/circl to v1.3.3
- chore: update github.com/jlaffaye/ftp to v0.2.0
- chore: update github.com/moov-io/ach to v1.31.3
- chore: update github.com/moov-io/base to v0.43.0
- chore: update github.com/moov-io/cryptfs to v0.4.2
- chore: update golang.org/x/crypto to v0.9.0
- chore: update golang.org/x/sync to v0.2.0
ADDITIONS
- incoming/odfi: allow configuration of ValidateOpts
IMPROVEMENTS
- fix: pass event emitter errors to alerters
- stream: try to extract consumer and producer errors from sarama
- alerting: extract more information from PagerDuty error responses
- docs: fixup getting started example
BUILD
- chore: update github.com/moov-io/ach to v1.31.2
IMPROVEMENTS
- build: update github.com/moov-io/ach to v1.31.0
- feat: start supporting more kafka producer options
- odfi: allow unordered batches
BUILD
- docs: update gems
IMPROVEMENTS
- events: allow inmem stream for emitter
- feat: add models.ReadWithOpts for events
- test: verify odfi processor handles files with mixed returns and corrections
BUILD
- chore: update github.com/moov-io/ach to v1.30.0
- chore: update github.com/moov-io/base to v0.40.1
- chore: update github.com/rickar/cal/v2 to v2.1.13
IMPROVEMENTS
- docs: mention using absolute paths for upload agents
- fix: support nested inbound directory structures
- fix: adjusting implementation to be more explicit about supported folder processing
IMPROVEMENTS
- pipeline: cleanup "found %d matching ACH files" logs
- pipeline: consistently check and reconnect on network errors
- test: pass through ackdeadline for mem pubsub
This release of achgateway uses the .AutoCommit
configuration option to determine when messages are acknowledged.
When enabled messages are acknowledged before processing. When disabled only successful messages are acknowledged.
IMPROVEMENTS
- pipeline: initialize shard metrics on startup
- pipeline: error log merge errors
- pipeline: Let .Autocommit determine when messages are committed
BUILD
- build: require Go 1.20.2 or newer in CI
- build: remove docker push from standard Go build
- update github.com/ProtonMail/go-crypto to v0.0.0-20230217124315-7d5c6f04bbb8
- update github.com/Shopify/sarama to v1.38.1
- update github.com/hashicorp/go-retryablehttp to v0.7.2
- update github.com/moov-io/ach to v1.29.2
- update github.com/moov-io/base to v0.39.0
- update github.com/moov-io/cryptfs to v0.4.1
- update github.com/rickar/cal/v2 to v2.1.12
- update github.com/sethvargo/go-retry to v0.2.4
- update github.com/slack-go/slack to v0.12.1
- update github.com/stretchr/testify to v1.8.2
- update golang.org/x/crypto to v0.7.0
- update golang.org/x/text to v0.8.0
IMPROVEMENTS
- pipeline: require shardNames when manually triggering cutoff windows
- pipeline: attempt to reconnect stream subscriptions on network errors
- test: verify we reconnect from flakey subscriptions
BUILD
- build: upgrade golang to 1.20
Note: moov-io/ach version v1.28.0 does not preserve spaces in fields like DFIAccountNumber
. Enable PreserveSpaces: true
to restore this behavior.
BUILD
- fix(build): update module github.com/moov-io/ach to v1.28.0
- fix(build): update module github.com/moov-io/base to v0.38.1
- fix(build): update module golang.org/x/text to v0.6.0
IMPROVEMENTS
- feat: support gzip compression with Transforms
BUILD
- fix(build): update module github.com/PagerDuty/go-pagerduty to v1.6.0
- fix(build): update module github.com/ProtonMail/go-crypto to v0.0.0-20221026131551-cf6655e29de4
- fix(build): update module github.com/Shopify/sarama to v1.37.2
- fix(build): update module github.com/hashicorp/consul/api to v1.18.0
- fix(build): update module github.com/moov-io/ach to v1.26.1
- fix(build): update module github.com/moov-io/base to v0.37.0
- fix(build): update module github.com/prometheus/client_golang to v1.14.0
- fix(build): update module github.com/rickar/cal/v2 to v2.1.9
- fix(build): update module github.com/slack-go/slack to v0.11.4
- fix(build): update module github.com/spf13/viper to v1.14.0
- fix(build): update module gocloud.dev to v0.26.0
- fix(build): update module gocloud.dev/pubsub/kafkapubsub to v0.26.0
- fix(build): update module golang.org/x/crypto to v0.4.0
- fix(build): update module golang.org/x/text to v0.5.0
IMPROVEMENTS
- fix: improve logging around consul election
- pipeline: log when requested shard isn't found
IMPROVEMENTS
- pipeline: fix calling of uploadFilesErrors metric
IMPROVEMENTS
- models: remove Filename from FileUploaded event
- pipeline: include holiday name and host in message
- pipeline: skip uploading files after caching fails
- shards: simplify config file mapping syntax
BUILD
- build: fix quotes in release script
- build: update moov-io base, ach and /x/text
- docs: include mappings and default shard
- meta: cleanup codeowners, require go 1.19.2, only push on moov-io
- test: Regenerate Consul Certs
BUILD
- build: upgrade github.com/hashicorp/consul/api to v1.15.2
IMPROVEMENTS
- docs: help clarify leadership
- docs: without leadership mention receiving unique files
- pipeline: log and ack unhandled messages instead of getting stuck
- pipeline: log kafka message details during failures
BUILD
- build: upgrade github.com/rickar/cal/v2 to v2.1.7
The release process of v0.16.7 failed due to some dependencies being out date.
IMPROVEMENTS
- build: require go 1.19.1
- build: upgrade github.com/PagerDuty/go-pagerduty to v1.5.1
- build: upgrade github.com/ProtonMail/go-crypto to v0.0.0-20220824120805-4b6e5c587895
- build: upgrade github.com/Shopify/sarama to v1.36.0
- build: upgrade github.com/hashicorp/consul/api to v1.14.0
- build: upgrade github.com/hashicorp/go-retryablehttp to v0.7.1
- build: upgrade github.com/jlaffaye/ftp to v0.1.0
- build: upgrade github.com/moov-io/ach to v1.19.3
- build: upgrade github.com/moov-io/base to v0.35.0
- build: upgrade github.com/ory/dockertest/v3 to v3.9.1
- build: upgrade github.com/pkg/sftp to v1.13.5
- build: upgrade github.com/sethvargo/go-retry to v0.2.3
- build: upgrade github.com/slack-go/slack to v0.11.3
- build: upgrade github.com/spf13/viper to v1.13.0
- build: upgrade golang.org/x/crypto to v0.0.0-20220829220503-c86fa9a7ed90
IMPROVEMENTS
- feat: include shard name with more error messages
- fix: bubble up more errors from file processing
- pipeline: fix interpolation of holiday message
IMPROVEMENTS
- feat: include shard on more ODFI logging
- fix: cleanup stack trace within PD alerts
IMPROVEMENTS
- fix: use proper loop variables when hashing entries
- incoming/odfi: trim spaces and newlines from files
IMPROVEMENTS
- build: update moov-io/base to v0.34.0 and moov-io/ach to v1.19.0
- feat: populate EntryDetail ID's with hash of contents
- fix: make incoming/odfi processor even more tolerant
IMPROVEMENTS
- fix: elevate connection errors inside handleMessage
IMPROVEMENTS
- docs: mention ID on odfi events will be populated
- feat: set fileID on incoming ODFI files
- meta: upgrade to Go 1.19
IMPROVEMENTS
- fix: don't assume pagerduty config was provided
We've refreshed the documentation site for ACHGateway with this release. We hope it helps to understand and operate ACHGateway. We've received a lot of community feedback that has improved the project and docs.
ADDITIONS
- alerting: added slack as a notifier
- feat: add endpoint for canceling a file
- feat: add ping route
- feat: emit
IncomingFile
events - feat: support filtering ODFI files by their paths
IMPROVEMENTS
- api: add operationId and summary fields for docs
- build: update moov-io/base to v0.32.0 and moov-io/ach to v1.18.2
- fix: handle CancelACHFile inside the pipeline
- incoming/web: clearly return 200 on successful file submission
BUILD
- build: update github.com/moov-io/base to v0.33.0
IMPROVEMENTS
- fix: save plaintext audit files when GPG isn't configured
- fix: stop accumulating receivers on each handled message
- incoming/odfi: fix ProcessFiles to route around directories and files
IMPROVEMENTS
- fix: enable diffie-hellman-group-exchange-sha256 ssh algorithm
IMPROVEMENTS
- docs: cleanup getting started example
- fix: share consul session refresh logic, skip on nil consul client
IMPROVEMENTS
- fix: cleanup fileReceiver shutdown
- fix: send cutoff Day events on holidays
- refactor: use cryptfs for most of GPG encryption
BUILD
- build: update github.com/moov-io/ach to v1.16.1
IMPROVEMENTS
- upload: let sync fail if the server doesn't support it
BUILD
- build: update base images
IMPROVEMENTS
- build: run Go tests on macOS and Windows
- fix: sync, chmod, and then close in SFTP file upload
- storage: always close files in tests
- storage: close underlying file after decrypting contents
- test: benchmark with AES merging encryption
- test: fix path comparison on Windows
- testing: skip external tests when -short is specified
BUILD
- build: update Docker image to Go 1.18
- build: update github.com/moov-io/base to v0.29.0
BUILD
- build: update github.com/moov-io/ach to v1.15.1
ADDITIONS
- pipeline: support passing ach merge conditions through
- Note: This moves
FlattenBatches: {}
to under a shard'sMergable
object. See the configuration docs for more information.
- Note: This moves
IMPROVEMENTS
- pipeline: return the source hostname when listing pending files
- pipeline: return the status (error) of each shard after manually triggered
- pipeline: send holiday notification about skipping processing
IMPROVEMENTS
- fix: nil check on some shutdown calls
- fix: return Environment even with errors during startup
- incoming/stream: bump min kafka version to v2.6.0
IMPROVEMENTS
- notify: retry temporary email send failures
- pipeline: alert when we fail notifyAfterUpload
ADDITIONS
- upload: add a config (
SkipDirectoryCreation bool
) for ensuring directories prior to upload
IMPROVEMENTS
- upload: include full write path in error
- upload: reduce permissions needed when creating files (request
os.O_WRONLY
instead ofos.O_RDWR
)
IMPROVEMENTS
- pipeline: wire through error alerting struct
IMPROVEMENTS
- pipeline: close files opened within merging
- pipeline: save ValidateOpts alongside each file for later merging
- pipeline: update moov-io/ach and verify ValidateOpts are persisted
- pipeline: pass through ACH ValidateOpts when merging files
- pipeline: add a test and logging for filtering manual cutoffs
- upload: record SFTP retry attempts
BUILD
- build: update moov-io/ach to v1.13.0
IMPROVEMENTS
- output: support CR+LF line endings
ADDITIONS
- pipeline: add endpoints for listing pending files prior to upload
- pipeline: add pending_files metric
- storage: wire up an encrypted middle layer
- shard mappings: add endpoints for creating, listing, and getting shard mappings
IMPROVEMENTS
- pipeline: include shard name in pending file logs
- pipeline: include shard name on outbound metrics
- pipeline: pass filesystem operations through storage abstraction layer
BUG FIXES
- notify: nil guard around upload Notifications
BUG FIXES
- upload: check that one resolved IP is whitelisted
IMPROVEMENTS
- pipeline: log affirmatively when we are the leader
BUILD
- build: profile Go cpu/mem usage and upload the reports
- build: update github.com/PagerDuty/go-pagerduty to v1.4.3
- build: update github.com/ProtonMail/go-crypto
- build: update github.com/Shopify/sarama to v1.30.0
- build: update github.com/moov-io/ach to v1.12.2
- fix: update code from new linter upgrades
IMPROVEMENTS
- pipeline: attempt retries of consul leadership
- pipeline: include shard as key in log messages
BUG FIXES
- ODFI.Reconciliation accidently was reading
PatchMatcher
instead ofPathMatcher
in the YAML config.
BREAKING CHANGES
moov-io/base introduces errors when unexpected configuration attributes are found in the files parsed on startup.
BUILD
- build: update github.com/moov-io/base to v0.12.0
IMPROVEMENTS
- notify: improve formatting of values in emails and slack
IMPROVEMENTS
- pipeline: attempt to start a new session on consul errors, always alert
IMPROVEMENTS
- add TLS support for MySQL connections
- replace deprecated x/crypto/openpgp package with ProtonMail/go-crypto/openpgp
BUG FIXES
- consul: remove agent setup, simplify leader election process
- fix: include missing sprintf formatter
- notify/slack: properly format decimal amounts
IMPROVEMENTS
- consul: upgrade to 1.10 and support TLS connections
- incoming/odfi: acquire leadership prior to ODFI processing
- pipeline: better logging for ACH file handling
IMPROVEMENTS
- incoming/odfi: skip saving zero-byte files
IMPROVEMENTS
- incoming/odfi: save the ODFI files exactly are they are downloaded
ADDITIONS
- incoming/odfi: optionally store files in audit trail config
IMPROVEMENTS
- audittrail: don't overwrite files if they exist
- docs: update config section for inbound / outbound aduittrail storage
- pipeline: save uploaded files under "outbound/" root path
BUILD
- upload: fix build constraints for Go 1.17
BUG FIXES
- reconciliation: The ReconciliationFile event updated to include debit entries
ADDITIONS
- models: add SetValidation methods for each event type
IMPROVEMENTS
- models: allow reading partial files within events
BUILD
- build: upgrade github.com/moov-io/ach to v1.12.0
BUG FIXES
- service: remove unused Notifications root config
- upload: trim filename templates
BUG FIXES
- pipeline: create dir so it can be isolated if it doesn't exist
BUG FIXES
- pipeline: keep shard files isolated when merging
- streamtest: use random inmem subscription
IMPROVEMENTS
- models: mask AESConfig's Key in JSON marshaling
BUG FIXES
- events: pass in config transfer to stream service
IMPROVEMENTS
- meta: fixup from adding gosec linter
ADDITIONS
- audittrail: save agent hostname in blob path
- inbound: support TLS over http
- upload: offer ShardName and Index for filename templates
BUG FIXES
- web: fix hand-over of events through compliance protection
BUILD
- docs: mention nacha and moov-io/ach json formats
BUG FIXES
- pipeline: check incoming ACHFile is valid prior to accepting
BUILD
- build: update go.mod / go.sum
- build: use debian stable's slim image
IMPROVEMENTS
- models: expose incoming ACHFile and CancelACHFile
- service: remove outdated ODFI Publishing config
ADDITIONS
- compliance: add functions for securing reading/writing events
BUILD
- build: upgrade deps in docker images
This release contains MacOS and Windows binaries.
IMPROVEMENTS
- docs: getting started example
BUG FIXES
- pipeline: properly return nil error from emitFilesUploaded
BUG FIXES
- incoming/odfi: fix nil panic on sending events
IMPROVEMENTS
- events: move models into exported package
ADDITIONS
- events: setup events for incoming ODFI files (Corrections, Incoming, Prenotes, Reconciliation, Returns)
IMPROVEMENTS
- config: better validation error messages
- pipeline: allow for a default shard
BUG FIXES
- configs: disable mysql and consul by default
BUILD
- Remove default MySQL and Consul configurations
ADDITIONS
- pipeline: add metrics for file_receiver actions
- pipeline: emit file uploaded event if configured
- server: add an admin route for displaying the config
IMPROVEMENTS
- service: update default filename template to include seconds
- shards: read a static set of mappings from our database
BUG FIXES
- build: upgrade moov-io/ach to v1.9.1
- pipeline: guard nil xfer alerting call
BUILD
- Fix issues with releases
Initial Release
- File submission via HTTP or Kafka
- ACH merging and flattening prior upload
- Cutoff times for automated file uploads
- Shard based isolation and logical grouping
- Leader election (backed by Consul) for upload coordination