示例#1
0
        public virtual async Task <IReadOnlyList <PartitionKeyRange> > TryGetOverlappingRangesAsync(
            string collectionRid,
            Range <string> range,
            ITrace trace,
            bool forceRefresh = false)
        {
            using (ITrace childTrace = trace.StartChild("Try Get Overlapping Ranges", TraceComponent.Routing, Tracing.TraceLevel.Info))
            {
                Debug.Assert(ResourceId.TryParse(collectionRid, out ResourceId collectionRidParsed), "Could not parse CollectionRid from ResourceId.");

                CollectionRoutingMap routingMap =
                    await this.TryLookupAsync(collectionRid, null, null, CancellationToken.None, childTrace);

                if (forceRefresh && routingMap != null)
                {
                    routingMap = await this.TryLookupAsync(collectionRid, routingMap, null, CancellationToken.None, childTrace);
                }

                if (routingMap == null)
                {
                    DefaultTrace.TraceWarning(string.Format("Routing Map Null for collection: {0} for range: {1}, forceRefresh:{2}", collectionRid, range.ToString(), forceRefresh));
                    return(null);
                }

                return(routingMap.GetOverlappingRanges(range));
            }
        }
示例#2
0
        public async Task <IReadOnlyList <PartitionKeyRange> > TryGetOverlappingRangesAsync(
            string collectionRid,
            Range <string> range,
            bool forceRefresh = false)
        {
            ResourceId collectionRidParsed;

            Debug.Assert(ResourceId.TryParse(collectionRid, out collectionRidParsed), "Could not parse CollectionRid from ResourceId.");

            CollectionRoutingMap routingMap =
                await this.TryLookupAsync(collectionRid, null, CancellationToken.None);

            if (forceRefresh && routingMap != null)
            {
                routingMap = await this.TryLookupAsync(collectionRid, routingMap, CancellationToken.None);
            }

            if (routingMap == null)
            {
                DefaultTrace.TraceInformation(string.Format("Routing Map Null for collection: {0} for range: {1}, forceRefresh:{2}", collectionRid, range.ToString(), forceRefresh));
                return(null);
            }

            return(routingMap.GetOverlappingRanges(range));
        }