v21.3.0
Migration Notes
Please complete the following steps before upgrading Cumulus.
-
CUMULUS-4459 New index added to the granules table to improve Dashboard performance
- The fix introduced in CUMULUS-4459 requires a manual database update in the production environment.
This step ensures the new index is created successfully, even in the unlikely event that the database-migration
Lambda function did not complete the index creation before timing out.
Please follow the standard procedures for running a production database migration, and execute the following SQL to create the index:
CREATE INDEX CONCURRENTLY IF NOT EXISTS granules_collection_updated_idx ON granules (collection_cumulus_id, updated_at); - The fix introduced in CUMULUS-4459 requires a manual database update in the production environment.
-
CUMULUS-4313
- Update Async Operation container to new version 55,
cumuluss/async-operation:55. Users should update their references toasync-operationwith the new version. - Updated lerna dev-dependency to v8
- Added CI shim script to allow
lerna publishto work with tar pinned to^7.5.3
- Update Async Operation container to new version 55,
Notable Changes
- CUMULUS-4459
- Added new index to the granules table to improve Dashboard performance.
- CUMULUS-4446
- Updated all node lambdas/Core build environments to utilize node v22.
- Updated cma-js dependency to 2.4.0
- CUMULUS-3574
- Granule file writes are now atomic. Previously, some granule files could be written even if others failed;
now, if any granule file fails, none are written.
- Granule file writes are now atomic. Previously, some granule files could be written even if others failed;
- CUMULUS-4272
- The
tf-modules/cumulus-rds-tfmodule now allows specifying an existing security group.
This enhancement enables DAACs to migrate their existing RDS deployments to Aurora while
reusing their existing security group, ensuring compatibility with existing
data-persistence-tfandcumulus-tfmodules.
- The
Added
- CUMULUS-4300
- Added a new rate-limited consumer class in the Node/TypeScript code to control how many executions are submitted per second across multiple queues - helping improve and smooth out step function submission.
- Created a new ConsumerRateLimited class that is able to submit executions at a specified, even maximum rate as defined by rateLimitPerSecond. In order to enforce this limit across all throttled queues, this class accepts a list of queue URLs instead of a single throttled queue URL. Unlike its non-rate-limited counterpart, to simplify configuration, this new class does not limit the number of messages staged - that can now be indirectly controlled by increasing or decreasing the rate.
- Added calls to the new ConsumerRateLimited class in sf-starter.js in the handleRateLimitedEvent function. This uses the incrementAndDispatch dispatcher.
- Added a new Lambda named "sqs2sfThrottleRateLimited" that can be called with a list of queueURLs in an EventBridge scheduled rule.
- Added sqs2sfThrottleRateLimited_lambda_function_arn outputs to both ingest and cumulus modules.
- Added a new rate-limited consumer class in the Node/TypeScript code to control how many executions are submitted per second across multiple queues - helping improve and smooth out step function submission.
- CUMULUS-4411
- The
tf-modules/cumulus-rds-tfmodule now supports enabling RDS slow query logging in CloudWatch.
By settingdb_log_min_duration_msto a positive value (in milliseconds) andenabled_cloudwatch_logs_exports
to["postgresql"], RDS will log and export any database queries that take longer than that threshold.
The module also configures the required RDS extensions and parameters necessary for slow query instrumentation.
- The
Changed
- CSD-82
- Updated
/workflows/listendpoint to acceptcountOnly,prefix,infix,fields,limit, andorderquery string params
- Updated
- CUMULUS-4374
- Updated example python Lambdas to utilize
uvas their package manager. This change removes references to
pipenv. Developers should migrate to usinguvto manage python dependencies and virtual envs which may
require reinstalling python libraries. This change also updates the names of the example python task services
because of a deployment race condition. These services are only used for integration tests.
- Updated example python Lambdas to utilize
- CUMULUS-4387
- Updated linting scripts to include
ruffandmypyand enable lint rules in repo level
pyproject.tomlfile.
- Updated linting scripts to include
- CUMULUS-4406
- Changed the
limitvariable inside the pdr-status-check task from an input variable to a config variable
- Changed the
- CUMULUS-4430
- Updated GitHub Actions to run
rufflinting on PRs. - Updated GitHub Actions to run
eslint,markdownlint, andnpm-package-json-linton PRs.
- Updated GitHub Actions to run
- CUMULUS-4433
- Adds pre-commit config and hooks to the repository. Developers are encouraged to install pre-commit and read
the pre-commit setup docs to ensure they have the correct setup.
- Adds pre-commit config and hooks to the repository. Developers are encouraged to install pre-commit and read
- CUMULUS-4438
- Made
min_capacityandmax_capacityconfigurable in example/rds-cluster-tf - Made
archive_api_usersconfigurable in example/cumulus-tf
- Made
- CSD-61
- Updated writeGranuleFromApi() endpoint to allow createdAt and updatedAt fields to be null.
- CUMULUS-4436
- Created new documentation files for language best practices
docs/development/python-best-practices.mdanddocs/development/typescript-best-practices.md. - Updated documentation file
docs/development/quality-and-coverage.mdto be more repo wide and reference language best practices. - Updated
docs/adding-a-task.mdto include instructions and expectations when adding a task.
- Created new documentation files for language best practices
- OTHER
- Corrected misspelling in README.md related to installing
uv. - Added override for
tarin package.json.
- Corrected misspelling in README.md related to installing
Fixed
- CUMULUS-4486
- Fixed a small bug with
rulesHelpersin whichrule.rule.meta.allowProviderMismatchOnRuleFilterwas erroring due to
database validation errors to instead refer torule.meta.allowProviderMismatchOnRuleFilter - Added
allowProviderMismatchOnRuleFilterto themetafield ofrulesin/api/lib/schemass
- Fixed a small bug with
- CUMULUS-4458
- Fixed a small bug with
message_consumerlambda env and function variable names to match so the lambda env varallowProviderMismatchOnRuleFiltercan be properly used when set
- Fixed a small bug with