internal void UpdateFrom(ReplicationClientConfiguration configuration)
        {
            if (configuration == null)
            {
                return;
            }

            if (configuration.FailoverBehavior.HasValue)
            {
                FailoverBehavior = configuration.FailoverBehavior.Value;
            }
        }
Exemple #2
0
        internal void UpdateFrom(ReplicationClientConfiguration configuration)
        {
            if (configuration == null)
            {
                return;
            }

            if (configuration.FailoverBehavior.HasValue)
            {
                FailoverBehavior = configuration.FailoverBehavior.Value;
            }

            if (configuration.RequestTimeSlaThresholdInMilliseconds.HasValue)
            {
                RequestTimeSlaThresholdInMilliseconds = configuration.RequestTimeSlaThresholdInMilliseconds.Value;
            }
        }
Exemple #3
0
        protected void RunReplication(IDocumentStore source, IDocumentStore destination,
                                      TransitiveReplicationOptions transitiveReplicationBehavior = TransitiveReplicationOptions.None,
                                      bool disabled      = false,
                                      bool ignoredClient = false,
                                      string apiKey      = null,
                                      string db          = null,
                                      string username    = null,
                                      string password    = null,
                                      string domain      = null,
                                      ReplicationClientConfiguration clientConfiguration = null)
        {
            db = db ?? (destination is DocumentStore ? ((DocumentStore)destination).DefaultDatabase : null);

            Console.WriteLine("Replicating from {0} to {1} with db = {2}.", source.Url, destination.Url, db ?? Constants.SystemDatabase);
            using (var session = source.OpenSession(db))
            {
                var replicationDestination = new ReplicationDestination
                {
                    Url = destination is EmbeddableDocumentStore ?
                          "http://localhost:" + (destination as EmbeddableDocumentStore).Configuration.Port :
                          destination.Url.Replace("localhost", "ipv4.fiddler"),
                    TransitiveReplicationBehavior = transitiveReplicationBehavior,
                    Disabled             = disabled,
                    IgnoredClient        = ignoredClient,
                    SkipIndexReplication = false //precaution
                };
                if (db != null)
                {
                    replicationDestination.Database = db;
                }
                if (apiKey != null)
                {
                    replicationDestination.ApiKey = apiKey;
                }
                if (username != null)
                {
                    replicationDestination.Username = username;
                    replicationDestination.Password = password;
                    replicationDestination.Domain   = domain;
                }

                SetupDestination(replicationDestination);
                Console.WriteLine("writing rep dests for " + db + " " + source.Url);
                session.Store(new ReplicationDocument
                {
                    Destinations        = { replicationDestination },
                    ClientConfiguration = clientConfiguration
                }, "Raven/Replication/Destinations");
                session.SaveChanges();
            }

            while (true)
            {
                using (var s = source.OpenSession(db))
                {
                    var doc = s.Load <ReplicationDocument>("Raven/Replication/Destinations");
                    if (string.IsNullOrWhiteSpace(doc.Source))
                    {
                        Thread.Sleep(100);
                        continue;
                    }
                    break;
                }
            }
        }