List of the most important changes for each release.
- Adds support for Python 3.13
- Adds conditional index to improve deserialization queries
- Adds support for Python 3.12
- Squashes old migrations to prevent issues with old SQLite versions
- Drops support for Python 2.7
- Upgrades cryptography library to 40.0.2, the latest version that supports Python 3.6
- Upgrades M2Crypto to 0.41.0
- Upgrades Django to version 3
- Upgrades django-mptt to a version greater than 0.10 for Django 3 compatibility
- Upgrades djangorestframework to a version greater than 3.10 for Django 3 compatibility
- Upgrades django-ipware to version 4.0.2, the latest version that supports Python 3.6
- Drops usage of "value_from_object_json_compatible" on fields and instead inspects booleans for "morango_serialize_to_string" attribute to determine if the field value_to_string method should be used for serialization and to_python used for deserialization
- Removes support for MorangoMPTT models
- Supersedes 0.7.0
- Drops support for Python 3.4 and 3.5
- Upgrades cryptography library to 3.3.2, the latest version that supports Python 2.7
- The
cleanupsyncs
management command now only cleans up sync sessions if also inactive forexpiration
amount of time - Fixes issue accessing index on queryset in
cleanupsyncs
management command
- Prevent creation of Deleted and HardDeleted models during deserialization to allow propagation of syncable objects that are recreated after a previous deletion without causing a merge conflict.
- Added
client-instance-id
,server-instance-id
,sync-filter
,push
andpull
arguments tocleanupsyncs
management command - Added option for resuming a sync to ignore the
SyncSession
's existingprocess_id
- Added custom user agent to sync HTTP requests
- Fixed documentation build issues
- Makefile no longer defines shell with explicit path
- Added dedicated
client_instance_id
andserver_instance_id
fields toSyncSession
- Renamed
client_instance
andserver_instance
fields onSyncSession
toclient_instance_json
andserver_instance_json
respectively
- Fixes issue causing overflow error during lengthy syncs
- Fixes issue that caused discrepancies between the client's and server's sync state
- Fixes issue with transaction isolation persisting longer than intended
- Capture and retry transaction isolation errors that occur when conflicting concurrent updates are made during the transaction
- Replace serializable transaction isolation using a separate DB connection for Postgres with advisory locking.
- Added deferred processing of foreign keys to allow bulk processing and to improve performance.
- Eliminated extraneous SQL queries for the transfer session when querying for buffers.
- Added database index to Store's partition field to improve querying performance.
- Fixes Django migration issue introduced in 0.6.7 allowing nullable fields with PostgreSQL backends
- Fixes un-ordered selection of buffers during sync which can allow duplicates to be synced with PostgreSQL backends
- Moves updating of database counters to occur in the same DB transaction as updates to the Store
- Adds setting to disable reduction of FSICs when calculating them for a set of partitions
- Fixes subset syncing issues by introducing new FSIC v2 format
- Updates transfer status fields to be nullable and corrects prior migration
- Adds an asymmetry to FSIC calculation to ensure all matching data is synced.
- Adds support for defining custom instance info returned from info API and during sync session creation
- Updates
cleanupsyncs
management command to only close sync sessions if there are no other related transfer sessions active - Fixes issue syncing with Morangos pre-0.6.0 causing pushed records to not be dequeued
- Sets queuing limit of 100k combined FSICs between client and server
- Fixes SQL expression tree error when there are many FSICs, up to 100k limit
- Adds additional
ids
argument tocleanupsyncs
management command
- Fixes issue with
assert
statement removal during python optimization
- Fixes issue handling database counters which caused repeat syncing of unchanged data
- Fixes slow performance due to excessive use of
sleep
- Fix to set counters on
TransferSession
after serialization - Fix capabilities request header as it should be prefixed with
HTTP
- Fix issues with flow of transfer operations
- Logging and error handling improvements
- Track the
TransferSession
that last modified aStore
record - Add state attributes to
TransferSession
for persisting its stage and status during a sync - Update the timestamp of the last activity for a
SyncSession
andTransferSession
during a sync - Add support for resuming a sync
- Add support for configuring custom handling of transfer operations
- Add support for handling transfer operations asynchronously
- Add management command for garbage collection of buffer data
- Speed up instance ID calculation by skipping hostname check
- Allow MAC address to be overridden by envvar for instance_id calculation
- Don't die on session deletion when transfersession.records_total is None
- Cache the instance ID on app load, to avoid database lockup issues
- Split up
SyncClient
and fix bandwidth tracking (#85)
- Deserialization improvements (#84)
- Increase the stability of the Instance ID so it doesn't change as frequently (#83)
- Add serialized isolation level decorator for postgres transactions (#77)
- Bug fixes and performance improvements
- Enforce serializable isolation connection for postgres
- Fix for not sending correct cert chain
- Retry logic to better handle flaky network connections
- Introduce ALLOW_CERTIFICATE_PUSHING to support Cloud Kolibri
- Overall project refactor
- Small fixes
- Switch from file-based caching to Django's lru_cache for sqlite max vars
- fixes issue where GET requests with body payload fails
- adds gzipping capability on buffer post requests
- parametrizes chunk size to allow it to be set when initiating sync sessions
- remove unused files in dist
- Added fix for writing CACHE file on windows
- Added fix for writing CACHE file to user directory
- Added inverse CSR endpoints for pushing data to a server
- various performance improvements
- allow for hard deletion which purges data and is able to propagate to other devices
- Add transactions around queuing into buffer and dequeuing into store
- Mute signals before deserialization/saving store models
- removed logic of loading scope definition fixtures (delegated to main application)
- added support for postgres database backend
- First working version for morango
- make requirements more flexible
- Add in model name to uuid calc.