public override void AfterCommit(string key, RavenJObject document, RavenJObject metadata, Guid etag)
        {
            string databaseName = null;

            if (TryGetDatabase(key, out databaseName))
            {
                var selfInstance = InstanceEnumerator.EnumerateInstances().First(i => i.IsSelf);

                if (selfInstance.InstanceType == InstanceType.ReadWrite)
                {
                    // Ensure database exists:
                    foreach (var instance in InstanceEnumerator.EnumerateInstances().Where(i => !i.IsSelf))
                    {
                        using (var documentStore = new DocumentStore()
                        {
                            Url = instance.InternalUrl
                        })
                        {
                            log.Info("Ensuring database {0} exists on instance {1} at {2}", databaseName, instance.Id,
                                     instance.InternalUrl);

                            documentStore.Initialize();
                            documentStore.DatabaseCommands.EnsureDatabaseExists(databaseName);
                        }
                    }

                    ReplicationUtilities.UpdateReplication(selfInstance, InstanceEnumerator, databaseName);
                }
            }

            base.AfterCommit(key, document, metadata, etag);
        }
        public void Execute(Raven.Database.DocumentDatabase database)
        {
            // First step setup diagnostics:
            DiagnosticsProvider.Initialize();

            // And then storage:
            StorageProvider.Initialize();

            var storageDirectory = StorageProvider.GetDirectoryForDatabase(database.Name);

            log.Info("Setting storage directory for default database to: {0}", storageDirectory.FullName);
            database.Configuration.DataDirectory = storageDirectory.FullName;

            // Setup replication:
            var selfInstance = InstanceEnumerator.EnumerateInstances().First(i => i.IsSelf);

            if (selfInstance.InstanceType == InstanceType.ReadWrite)
            {
                ReplicationUtilities.UpdateReplication(selfInstance, InstanceEnumerator, database);
            }
        }