0.2.0 (2025-04-04)
TL;DR
- Completely new UI.
- Add support for FileSystem connections.
- Add support for simple tranformations within transfer - filter files, filter rows, change columns.
- Add support for incremental read strategy.
- Add support for running transfers by schedule.
- Add support for changing SparkSession resource limits.
Huge thanks to @dmitry-pedchenko, @maxim-lixakov, @IlyasDevelopment, @Zabilsya.
Breaking Changes
- Implement a single error handling format to improve consistency (#95)
- Change response format for
GET /v1/groups- add current user role for each group (#97) - Change response format for
GET /v1/groups/:id- add current user role for group (#109) - Now migrations are executed in a dedicated one-off container, instead of being run as a part of
backendcontainer. (#163) - Delete transfers, queues and groups records instead of marking them as deleted (#168)
- Move the
typefield from nestedconnection_datafield to the root level of theConnectionresponse. (#169) - Decouple
auth_data.typefrom the connection type (e.g.postgres) and link it to the authentication type (e.g.basic). (#169) - Add deletion of connections records instead of marking them as deleted (#170)
- Use PUT instead of PATCH for
ConnectionandTransfermodels (#215) - Return new connection and transfer object in
POST /v1/transfer/copyandPOST /v1/connection/copyendpoints. - Change response status from 200 to 204 for all
DELETEendpoints.
Features
- Add hive to known types (#67)
- Allow search for groups, users, connections, transfers, queues (#92, #94, #99, #100, #101, #103)
- Add filters for connections, transfers and runs (#94, #102, #106)
- Implement a scheduler to run celery tasks on a schedule. This can be done by setting
Transfer.is_scheduled=TrueandTransfer.schedule="..."(cron-like expression). The Run model now has atypefield with optionsMANUALandSCHEDULED. (#114) - Add GET
v1/monitoring/metricsendpoint to provide basic HTTP server metrics in Prometheus format (#121) - Implemented
KeycloakAuthProviderfor Single Sign-On (SSO) authentication.(#123) - Implemented
DummyAuthProviderfor development and testing environments. (#123) - Add API schemas for new DB sources - Clickhouse, MSSQL, MySQL (#124, #125, #126, #160)
- Add logic for handling FTP, FTPS, SFTP, Samba, WebDAV transfers (#189, #191, #192, #194)
- Add API schemas for file sources - SFTP, FTP, FTPS, WebDAV, Samba (#187)
- Add API schemas for file formats - Excel, XML, ORC, Parquet (#140, #142, #143, #144)
- Add compression options to file formats CSV, JSON, JSONLine, Excel, ORC, Parquet, XML (#159, #161)
- Add transformations for Transfers with dataframe row filtering (#184)
- Add transformations for Transfers with dataframe column filtering (#186)
- Add transformations for Transfers with file filtering (#198)
- Add
increment_byfield tostrategy_params(#202) - Implement increment strategy for transfers with file sources (#209)
- Implement increment strategy for transfers with database sources (#211)
- Add
resourcesfield toTransfer. (#214) - Add
file_name_templatefield totarget_params(#196, #201)
Improvements
- Updated
Usermodel to includeemail,first_name,middle_name, andlast_namefields, all optional. (#123) - Read env variable
SYNCMASTER__ENTRYPOINT__SUPERUSERSto promote users toSUPERUSERrole during server startup. (#137) - Enabled dynamic selection of authentication provider via environment variable
SYNCMASTER__AUTH__PROVIDER. (#123) - Enable parallel reading from JDBC sources. (#219)
- Reset HWM when changing strategy from
incrementaltofull. (#217) - Grant read-only permissions for the previous group owner when ownership is transferred (#135)
Bug Fixes
- Use Hadoop AWS
magiccommiter only if transfer target is S3. (#46) - Check that
service_nameandsidare mutually exclusive when editing Oracle connection. (#52) - Queue name is unique within a group, new field
slugis globally-unique. (#54, #119) - Prohibit updating connection type it if there is a transfer associated with this connection. (#55)
- Fix error when
is_scheduledfield value was ignored. (#57) - Group without any users assigned was missing in groups list. (#62)
- Dump connection credentials while starting a transfer. (#63)