Example #1
0
        private static void WriteJsonArray(RavenJArray array, CountingWriter sw, int width, int numberOfLines)
        {
            sw.WriteLine("[");
            sw.PushIndent();

            var isFirstItem = true;

            foreach (var token in array.Values())
            {
                if (sw.LinesWritten >= numberOfLines)
                {
                    break;
                }

                if (isFirstItem)
                {
                    isFirstItem = false;
                }
                else
                {
                    sw.WriteLine(",");
                }
                WriteValue(token, sw, width, numberOfLines);
            }
            sw.WriteLine("");
            sw.PopIndent();
            sw.Write("]");
        }
Example #2
0
        public static void MergeSingleHistory(RavenJArray history, Dictionary <string, RavenJObject> sourcesToVersionEntries, string documentId)
        {
            var historyValues = history.Values();

            foreach (var entry in historyValues)
            {
                var entryAsObject  = (RavenJObject)entry;
                var sourceAsString = entryAsObject[Constants.RavenReplicationSource].Value <string>();
                var versionAsLong  = entryAsObject[Constants.RavenReplicationVersion].Value <long>();

                if (sourceAsString == null)
                {
                    log.Error($"Failed to merge a single history entry for document id: '{documentId}'" +
                              $"because the raven replication source is null. Replication version: {versionAsLong}." +
                              $"Full history: {historyValues}");
                    continue;
                }

                RavenJObject val;
                RavenJToken  ravenReplicationVersion;
                if (sourcesToVersionEntries.TryGetValue(sourceAsString, out val) == false ||
                    val.TryGetValue(Constants.RavenReplicationVersion, out ravenReplicationVersion) == false ||
                    ravenReplicationVersion.Value <long>() < versionAsLong)
                {
                    sourcesToVersionEntries[sourceAsString] = entryAsObject;
                }
            }
        }
Example #3
0
        protected async override Task <IAsyncEnumerator <RavenJObject> > GetDocuments(RavenConnectionStringOptions src, Etag lastEtag, int take)
        {
            if (IsDocsStreamingSupported)
            {
                ShowProgress("Streaming documents from {0}, batch size {1}", lastEtag, take);
                return(await Commands.StreamDocsAsync(lastEtag, pageSize : take));
            }

            int retries = RetriesCount;

            while (true)
            {
                try
                {
                    RavenJArray documents = null;
                    var         url       = "/docs?pageSize=" + Math.Min(SmugglerOptions.BatchSize, take) + "&etag=" + lastEtag;
                    ShowProgress("GET " + url);
                    var request = CreateRequest(src, url);
                    request.ExecuteRequest(reader => documents = RavenJArray.Load(new JsonTextReader(reader)));

                    return(new AsyncEnumeratorBridge <RavenJObject>(documents.Values <RavenJObject>().GetEnumerator()));
                }
                catch (Exception e)
                {
                    if (retries-- == 0)
                    {
                        throw;
                    }
                    LastRequestErrored = true;
                    ShowProgress("Error reading from database, remaining attempts {0}, will retry. Error: {1}", retries, e);
                }
            }
        }
Example #4
0
 public static void MergeSingleHistory(RavenJArray history, Dictionary <string, RavenJObject> sourcesToVersionEntries)
 {
     foreach (var entry in history.Values())
     {
         var          entryAsObject  = (RavenJObject)entry;
         var          sourceAsString = entryAsObject[Constants.RavenReplicationSource].Value <string>();
         var          versionAsLong  = entryAsObject[Constants.RavenReplicationVersion].Value <long>();
         RavenJObject val;
         if (!sourcesToVersionEntries.TryGetValue(sourceAsString, out val) ||
             val[Constants.RavenReplicationVersion].Value <long>() < versionAsLong)
         {
             sourcesToVersionEntries[sourceAsString] = entryAsObject;
         }
     }
 }
Example #5
0
		private static void WriteJsonArray(RavenJArray array, StringWriter sw, int margin, int indent = 0)
		{
			sw.WriteLine('[');
			indent += 1;
			var isFirstItem = true;
			foreach (var token in array.Values())
			{
				if (isFirstItem)
					isFirstItem = false;
				else
					sw.WriteLine(',');
				Indent(sw, indent);
				WriteValue(token, sw, margin, indent);
			}
			sw.WriteLine();
			indent -= 1;
			Indent(sw, indent);
			sw.Write(']');
		}
Example #6
0
        private static void WriteJsonArray(RavenJArray array, CountingWriter sw, int width, int numberOfLines)
		{
			sw.WriteLine("[");
			sw.PushIndent();

			var isFirstItem = true;
			foreach (var token in array.Values())
			{
                if (sw.LinesWritten >= numberOfLines)
                    break;

				if (isFirstItem)
					isFirstItem = false;
				else
					sw.WriteLine(",");
                WriteValue(token, sw, width, numberOfLines);
			}
			sw.WriteLine("");
			sw.PopIndent();
			sw.Write("]");
		}
Example #7
0
        private static void WriteJsonArray(RavenJArray array, StringWriter sw, int margin, int indent = 0)
        {
            sw.WriteLine('[');
            indent += 1;
            var isFirstItem = true;

            foreach (var token in array.Values())
            {
                if (isFirstItem)
                {
                    isFirstItem = false;
                }
                else
                {
                    sw.WriteLine(',');
                }
                Indent(sw, indent);
                WriteValue(token, sw, margin, indent);
            }
            sw.WriteLine();
            indent -= 1;
            Indent(sw, indent);
            sw.Write(']');
        }
Example #8
0
        protected override Task <IAsyncEnumerator <RavenJObject> > GetDocuments(Etag lastEtag)
        {
            if (IsDocsStreamingSupported)
            {
                ShowProgress("Streaming documents from " + lastEtag);
                return(Commands.StreamDocsAsync(lastEtag));
            }

            int retries = RetriesCount;

            while (true)
            {
                try
                {
                    RavenJArray documents = null;
                    var         url       = "/docs?pageSize=" + SmugglerOptions.BatchSize + "&etag=" + lastEtag;
                    ShowProgress("GET " + url);
                    var request = CreateRequest(url);
                    request.ExecuteRequest(reader => documents = RavenJArray.Load(new JsonTextReader(reader)));

                    return(new CompletedTask <IAsyncEnumerator <RavenJObject> >(new AsyncEnumeratorBridge <RavenJObject>(documents.Values <RavenJObject>().GetEnumerator())));
                }
                catch (Exception e)
                {
                    if (retries-- == 0)
                    {
                        throw;
                    }
                    LastRequestErrored = true;
                    ShowProgress("Error reading from database, remaining attempts {0}, will retry. Error: {1}", retries, e, RetriesCount);
                }
            }
        }