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("]"); }
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; } } }
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); } } }
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; } } }
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(']'); }
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("]"); }
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(']'); }
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); } } }