- Fix
util:cleanup
script (callloadDataObjectIdCache
first) - Allow changing default log level using environment variable (
COLOSSUS_DEFAULT_LOG_LEVEL
) - Allow adjusting cleanup constants via env (
CLEANUP_MIN_REPLICATION_THRESHOLD
,CLEANUP_NEW_OBJECT_EXPIRATION_PERIOD
) - Error handling: Clearer warning messages if unexpected response encountered during sync (ie. 404)
- Bump @joystream/types to Petra version
- Bump deps @polkadot/api v10.7.1
- Nara release.
- Set the
server.requestTimeout
option inhttp.Server
instance to 0 to disable the timeout. This was default behaviour pre Node.js18.x
- Replaced
Query-Node
API withStorage-Squid
Graphql API. This is a breaking change and requires the--queryNodeEndpoint
configuration option to be replaced with--storageSquidEndpoint
.
-
Fix processing large arrays causing high cpu during sync and cleanup runs #5033
-
Fix task runner to avoid ending prematurely on individual task failure #5033
- Bug fix: call stack size exceeded error - #5021
- Bug fix: moveFile instead of rename to support moving files across volumes #5024
- FIX unhandled
error
events on superagent. #4988,#5007 - General improvements when setting up uploads and temp folder. Ensure local data objects cache is not polluted by other than object id file names.
- Added constraint on temp, pending, logs, and uploads folder needing to be at different paths, and added two new optional
--tempFolder
and--pendingFolder
arguments to specify full path to these folders. This is in preparation for future releases where we will be moving to use different storage backends. #5000 - Improve operator url selection and avoid connecting to self. #4993
- Various bug fixes that were introduced in v3.9.0 in accept pending objects service. #5016
- Syncing worker improvement, no longer relying on
/api/v1/state/data-objects
endpoint to determine which hosts to sync from. #5014
- FIX: Added event handler to handle
error
event onsuperagent.get
instance. Previously the unhandled error was causing the application to crash.
- Increase default interval between sync runs. Start sync run immediately do not wait initial interval on startup before starting sync. Adds additional optional argument to specify retry interval on failure. #4924
- Add background pruning worker to delete data objects which the node is no longer obligated to store. New optional argument
--cleanup
and--cleanupInterval
- Added new
AcceptPendingObjectsService
that is responsible for periodically sending batchaccept_pending_data_objects
for all the pending data objects. ThePOST /files
endpoint now no longer calls theaccept_pending_data_objects
extrinsic for individual uploads, instead, it registers all the pending objects withAcceptPendingObjectsService
- Updated
/state/data
endpoint response headers to return data objects status too i.e. (pending
oraccepted
) - FIX: Increase the default timeout value in the
extrinsicWrapper
function to match the transaction validity in the transaction pool
- Hotfix: Fix call stack size exceeded when handling large number of initial object to sync.
- Changed Elasticsearch transport to use data streams instead of regular indices. Removed
--elasticSearchIndex
option and replaced with--elasticSearchIndexPrefix
. Node ID from config will be automatically appended to the index name.
- Bumped
winston-elasticsearch
package verion - FIX: Added error handler to caught exception in
ElasticsearchTransport
and gracefully log them
- Disable open-api express response validation if NODE_ENV == 'production'. This should improve response times when serving assets. #4810
- Include
nodeEnv
in/api/v1/status
response, to help detect mis-configured nodes.
- Updates
leader:update-bag
CLI command toleader:update-bags
to accept multiple bag ids as input. This allows the command to be used to update storage buckets of multiple bags in a single batched transaction.
- Collosus can now store multiple keys in it's keyring.
- The
--accountUri
and--password
args can be used multiple times to add multiple keys. This adds support for worker to use different transactor accounts for each bucket. - Added
--keyStore
argument for all commands to configure a directory containing multiple key files to the keyring. - Server can run and to serve specific buckets, by passing a comma separated list of bucket ids with the
--buckets
argument. - Renamed
--operatorId
argument to--workerId
in operator commands for consistency.
- FIX
sendExtrinsic
: The send extrinsic function (which is a wrapper around PolkadotJStx.signAndSend
function) has been fixed to handle the case when tx has been finalized before the callback registered intx.signAndSend
would run.
- Integrates OpenTelemetry API/SDK with Colossus for exporting improved tracing logs & metrics to Elasticsearch. Adds
./start-elasticsearch-stack.sh
script to bootstrap elasticsearch services (Elasticsearch + Kibana + APM Server) with all the required configurations.
- Added option 'none' to 'logFileChangeFrequency' argument. The default is still 'daily'. 'none' prevents log rotaion on time basis and only rotates when max size for logs files is reached.
- Added customization options for Elasticsearch logging. Users can now specify index name and auth options.
- FIX #4773 Cleanup temporary files created when upload fails.
- Updated
joystream/types
and@joystream/metadata-protobuf
dependencies. - Dropped
sudo
based dev commands
@joystream/types
dependency version bump for consistency with mainnet release versioning
- Adds connected query-node's state information to the
/status
endpoint. - Refactors
QueryNodeApi
initialization (single instance instead of multiple ones) to have persistent apollo client caching, since previously a new client was being initialized for each request leading to entirely new cache object every time.
- FIX
getAllAssignedDataObjects
: The query to get all assigned objects during sync has been refactored into smaller queries. Each query will now provide no more than 1000 storage bag ids in the input to avoid hitting the request size limit (see: #4615). - Improved error logging for Apollo GraphQL request errors.
- Carthage/Mainnet release: Breaking change for files upload endpoint, the parameters except the file itself i.e.,
dataObjectId
,storageBucketId
andbagId
are removed from the request body and are now part of the query string. This allows the pre-validation of the request params to validate the request before the complete file is uploaded successfully, - API request/response types are now autogenerated from the openapi schema,
- Autogenerated API client library (
@joystream/storage-node-client
) is now part of the storage node codebase.