- Refactored Repository and RavenStorage to allow injection of a TestRepository (using an in-memory database for unit tests)
- Made several fixes to comply with unit tests (notably RavenDistributedLock and RavenJobQueue)
- Merged fixes from xinix00 pull request #11 (https://github.com/RefreshingIO/hangfire-ravendb/pull/11)
+ JobWrapper instead of JSON text as Job parameter, is better in finding types (for example interfaces)
+ Method/Property JsonConverters for RavenDB, needed for the InvocationData replacement
~ Namespace fix (HangFire vs Hangfire (capital F)
- InvocationData, RavenDB is already a JSON database, so had no purpose to Serialize and Deserialize job data
.. Updated Hangfire.Core to latest 1.6.3 dependency
.. Downgraded Newtonsoft.Json to version matching RavenDB. Will be upgraded in RavenDB 3.5.
+ Better use of RavenDB
-- Naming of entities (removed baseEntity)
-- Added job history
-- Removing of Poll for Jobs (using RavenDB changes observer pattern)
+ Removed static Repository, now passed through via RavenStorage class
+ Updated to target latest Hangfire.Core and RavenDB.Client
+ Added Hangfire/RavenJobs index
- Static members and methods caused the locking to work incorrectly:
- Lock heartbeat was updated only for the last acquired lock.
- Incorrect resource was locked in certain situations.
- Incorrect resource lock was released (latest resource instead of
the resource that was actually locked).
- Incorrect condition for checking if lock is already acquired by
someone else fixed.
- Dead lock detection fixed.