RavenDB 1.0 Hot Fix release

time to read 3 min | 572 words

In has been a while since we released the last 1.0 build (960). In the meantime, we had done a lot of work on RavenDB to get it ready to 2.0.

But we also maintained, fixed bugs and in general learned a lot from things that happened for people in production. Just before we release 2.0, we decided to create a hot fix release, which contains a lot of the bug fixes that went into the product as a result of actual production experience for our existing 1.0 customers.

The bloody JSON.NET problem. The new hot fix build (992) uses Newtonsoft.Json 4.0.8. If you need to use the 4.5 version, you will need to either keep using build 975 or move to 2.0 (which resolved the problem completely). I am sorry about this, but there is really very little that we can do about it at this point.

Update: We had a problem in the studio in 990, so we fixed that in 992, please upgrade to that.

Changes:

  • Transactions:
    • Will only try to delete transactions from my resource manager
    • Allowing multiple concurrent startups
    • Fixing transaction rollback error
    • Avoiding recovering transactions when EnlistInDistributedTransactions= false
    • Making sure we use the appropriate database, whatever it is the default one or not
    • Making sure that we can use the proper database when we recover from a failure using DTC
    • RavenDB-620 Ensure dealing with recovered transactions properly
    • Notify DTC about recovery completed AFTER we finish processing all the failed transactions
    • Moving the way we are handling storage of the recovery information Instead of storing and recovering on the server, we store / recover locally
    • Making sure that creating a transaction in parallel isn't going to cause issues
    • RavenDB-529 NonAuthoritativeInformation does not consider the transaction timeout
    • Fixing an issue with local transaction identifier always being thought of as the same
  • Replication:
    • Avoiding NRE during conflict resolution
    • Proper cleanup of the transactions
    • Making it possible to disable compression for replication (using Raven/Replication/DisableCompression config option). Useful if you need to replicate to an older version of RavenDB
  • Database:
    • Making sure that deletes are properly atomic in multi threading scenarios
    • Making sure that we can get an error on optimistic concurrency delete inside transaction using munin
    • Moving Munin to Snapshot isolation mode
    • Making sure that all of Munin operations run withing a Read context
    • Better safety using Munin
    • Proper handling of disposing of the database tasks Will handle failed dbs nicely
    • Make sure that we have safe shutdown sequence for transactional storage
    • Making sure that we will cleanup the write marker after we did the complete index cleanup
  • IIS:
    • Database initialization is not happening on a separate thread, so a request timeout should not cause it to die mid way
    • More robust disposal sequence
    • More robust init sequence, will force disposal of the resources created during the db ctor
    • Making sure that we play more nicely with the way ASP.Net calls us during app domain shut down
    • Making sure that we register to the TenantDatabaseModified.Occured from ASP.Net as well
    • Make sure that the idle timeout and the shutdown timeout were reasonable values for what we need during shutdowns

Baring hot fixes for additional critical bugs, this is the last RavenDB 1.0 build