コード例 #1
0
ファイル: QueryRunner.cs プロジェクト: yitaom2/ravendb
        public override async Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response,
                                                                  IStreamQueryResultWriter <BlittableJsonReaderObject> writer, OperationCancelToken token)
        {
            ObjectDisposedException lastException = null;

            for (var i = 0; i < NumberOfRetries; i++)
            {
                try
                {
                    documentsContext.CloseTransaction();
                    await GetRunner(query).ExecuteStreamIndexEntriesQuery(query, documentsContext, response, writer, token);

                    return;
                }
                catch (ObjectDisposedException e)
                {
                    if (Database.DatabaseShutdown.IsCancellationRequested)
                    {
                        throw;
                    }

                    lastException = e;
                }
            }

            throw CreateRetriesFailedException(lastException);
        }
コード例 #2
0
 public StreamDocumentIndexEntriesQueryResult(HttpResponse response, IStreamQueryResultWriter <BlittableJsonReaderObject> writer, OperationCancelToken token) : base(response, writer, token)
 {
     if (response.HasStarted)
     {
         throw new InvalidOperationException("You cannot start streaming because response has already started.");
     }
 }
コード例 #3
0
        protected StreamQueryResult(HttpResponse response, IStreamQueryResultWriter <T> writer, OperationCancelToken token)
        {
            if (response.HasStarted)
            {
                throw new InvalidOperationException("You cannot start streaming because response has already started.");
            }

            _writer = writer;
            _token  = token;
        }
コード例 #4
0
ファイル: QueryRunner.cs プロジェクト: ikvm/ravendb
        public override async Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, QueryOperationContext queryContext, HttpResponse response,
                                                                  IStreamQueryResultWriter <BlittableJsonReaderObject> writer, bool ignoreLimit, OperationCancelToken token)
        {
            Exception lastException = null;

            for (var i = 0; i < NumberOfRetries; i++)
            {
                try
                {
                    queryContext.CloseTransaction();
                    await GetRunner(query).ExecuteStreamIndexEntriesQuery(query, queryContext, response, writer, ignoreLimit, token);

                    return;
                }
                catch (ObjectDisposedException e)
                {
                    if (Database.DatabaseShutdown.IsCancellationRequested)
                    {
                        throw;
                    }

                    lastException = e;

                    await WaitForIndexBeingLikelyReplacedDuringQuery();
                }
                catch (OperationCanceledException e)
                {
                    if (Database.DatabaseShutdown.IsCancellationRequested)
                    {
                        throw;
                    }

                    if (token.Token.IsCancellationRequested)
                    {
                        throw;
                    }

                    lastException = e;

                    await WaitForIndexBeingLikelyReplacedDuringQuery();
                }
            }

            throw CreateRetriesFailedException(lastException);
        }
コード例 #5
0
        public override async Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response, IStreamQueryResultWriter <BlittableJsonReaderObject> writer, OperationCancelToken token)
        {
            var index = GetIndex(query.Metadata.IndexName);

            using (QueryRunner.MarkQueryAsRunning(index.Name, query, token, true))
            {
                await index.StreamIndexEntriesQuery(response, writer, query, documentsContext, token);
            }
        }
コード例 #6
0
        public override Task ExecuteStreamQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response, IStreamQueryResultWriter <Document> writer,
                                                OperationCancelToken token)
        {
            var result = new StreamDocumentQueryResult(response, writer, token);

            documentsContext.OpenReadTransaction();

            FillCountOfResultsAndIndexEtag(result, query.Metadata, documentsContext);

            var collection = GetCollectionName(query.Metadata.CollectionName, out var indexName);

            using (QueryRunner.MarkQueryAsRunning(indexName, query, token))
            {
                result.IndexName = indexName;

                ExecuteCollectionQuery(result, query, collection, documentsContext, pulseReadingTransaction: true, token.Token);

                result.Flush();

                return(Task.CompletedTask);
            }
        }
コード例 #7
0
 public override Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response,
                                                     IStreamQueryResultWriter <BlittableJsonReaderObject> writer, OperationCancelToken token)
 {
     throw new NotSupportedException("Collection query is handled directly by documents storage so index entries aren't created underneath");
 }
コード例 #8
0
ファイル: FaultyInMemoryIndex.cs プロジェクト: ikvm/ravendb
 public override Task StreamQuery(HttpResponse response, IStreamQueryResultWriter <Document> writer, IndexQueryServerSide query, QueryOperationContext queryContext, OperationCancelToken token)
 {
     throw new NotSupportedException($"Index {Name} is in-memory implementation of a faulty index", _e);
 }
コード例 #9
0
 public abstract Task ExecuteStreamQuery(IndexQueryServerSide query, QueryOperationContext queryContext, HttpResponse response,
                                         IStreamQueryResultWriter <Document> writer, OperationCancelToken token);
コード例 #10
0
 public abstract Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response,
                                                     IStreamQueryResultWriter <BlittableJsonReaderObject> writer, OperationCancelToken token);
コード例 #11
0
        public override async Task ExecuteStreamQuery(IndexQueryServerSide query, QueryOperationContext queryContext, HttpResponse response, IStreamQueryResultWriter <Document> writer, OperationCancelToken token)
        {
            var index = GetIndex(query.Metadata.IndexName);

            queryContext.WithIndex(index);

            using (QueryRunner.MarkQueryAsRunning(index.Name, query, token, true))
            {
                await index.StreamQuery(response, writer, query, queryContext, token);
            }
        }
コード例 #12
0
ファイル: InvalidQueryRunner.cs プロジェクト: ikvm/ravendb
 public override Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, QueryOperationContext queryContext, HttpResponse response,
                                                     IStreamQueryResultWriter <BlittableJsonReaderObject> writer, bool ignoreLimit, OperationCancelToken token)
 {
     throw new NotSupportedException(ErrorMessage);
 }
コード例 #13
0
ファイル: InvalidQueryRunner.cs プロジェクト: ikvm/ravendb
 public override Task ExecuteStreamQuery(IndexQueryServerSide query, QueryOperationContext queryContext, HttpResponse response, IStreamQueryResultWriter <Document> writer,
                                         OperationCancelToken token)
 {
     throw new NotSupportedException(ErrorMessage);
 }
コード例 #14
0
        public override async Task ExecuteStreamQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response, IStreamQueryResultWriter <Document> writer,
                                                      OperationCancelToken token)
        {
            var index = await MatchIndex(query, true, customStalenessWaitTimeout : TimeSpan.FromSeconds(60), documentsContext, token.Token);

            await index.StreamQuery(response, writer, query, documentsContext, token);
        }
コード例 #15
0
        public override async Task ExecuteStreamQuery(IndexQueryServerSide query, QueryOperationContext queryContext, HttpResponse response, IStreamQueryResultWriter <Document> writer, OperationCancelToken token)
        {
            using (var context = QueryOperationContext.Allocate(Database, needsServerContext: false))
            {
                var result = new StreamDocumentQueryResult(response, writer, token)
                {
                    IndexName = Constants.Documents.Indexing.DummyGraphIndexName
                };
                result = await ExecuteQuery(result, query, context, null, token);

                result.Flush();
            }
        }
コード例 #16
0
ファイル: GraphQueryRunner.cs プロジェクト: yitaom2/ravendb
 public override Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response, IStreamQueryResultWriter <BlittableJsonReaderObject> writer,
                                                     OperationCancelToken token)
 {
     throw new NotImplementedException();
 }
コード例 #17
0
ファイル: GraphQueryRunner.cs プロジェクト: yitaom2/ravendb
        public override async Task ExecuteStreamQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response, IStreamQueryResultWriter <Document> writer, OperationCancelToken token)
        {
            var result = new StreamDocumentQueryResult(response, writer, token)
            {
                IndexName = Constants.Documents.Indexing.DummyGraphIndexName
            };

            result = await ExecuteQuery(result, query, documentsContext, null, token);

            result.Flush();
        }
コード例 #18
0
 public abstract Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, QueryOperationContext queryContext, HttpResponse response,
                                                     IStreamQueryResultWriter <BlittableJsonReaderObject> writer, bool ignoreLimit, OperationCancelToken token);
コード例 #19
0
        public override Task ExecuteStreamQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response, IStreamQueryResultWriter <Document> writer,
                                                OperationCancelToken token)
        {
            var result = new StreamDocumentQueryResult(response, writer, token);

            documentsContext.OpenReadTransaction();

            FillCountOfResultsAndIndexEtag(result, query.Metadata, documentsContext);

            ExecuteCollectionQuery(result, query, query.Metadata.CollectionName, documentsContext, token.Token);

            result.Flush();

            return(Task.CompletedTask);
        }
コード例 #20
0
        public override async Task ExecuteStreamQuery(IndexQueryServerSide query, QueryOperationContext queryContext, HttpResponse response, IStreamQueryResultWriter <Document> writer,
                                                      OperationCancelToken token)
        {
            var index = await MatchIndex(query, true, customStalenessWaitTimeout : TimeSpan.FromSeconds(60), token.Token);

            queryContext.WithIndex(index);

            using (QueryRunner.MarkQueryAsRunning(index.Name, query, token, isStreaming: true))
            {
                await index.StreamQuery(response, writer, query, queryContext, token);
            }
        }
コード例 #21
0
        public override Task ExecuteStreamIndexEntriesQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response, IStreamQueryResultWriter <BlittableJsonReaderObject> writer, OperationCancelToken token)
        {
            var index = GetIndex(query.Metadata.IndexName);

            return(index.StreamIndexEntriesQuery(response, writer, query, documentsContext, token));
        }
コード例 #22
0
        public override async Task ExecuteStreamQuery(IndexQueryServerSide query, DocumentsOperationContext documentsContext, HttpResponse response, IStreamQueryResultWriter <Document> writer, OperationCancelToken token)
        {
            Exception lastException = null;

            for (var i = 0; i < NumberOfRetries; i++)
            {
                try
                {
                    await GetRunner(query).ExecuteStreamQuery(query, documentsContext, response, writer, token);

                    return;
                }
                catch (ObjectDisposedException e)
                {
                    if (Database.DatabaseShutdown.IsCancellationRequested)
                    {
                        throw;
                    }

                    lastException = e;

                    await WaitForIndexBeingLikelyReplacedDuringQuery();
                }
                catch (OperationCanceledException e)
                {
                    if (Database.DatabaseShutdown.IsCancellationRequested)
                    {
                        throw;
                    }

                    if (token.Token.IsCancellationRequested)
                    {
                        throw;
                    }

                    lastException = e;

                    await WaitForIndexBeingLikelyReplacedDuringQuery();
                }
            }

            throw CreateRetriesFailedException(lastException);
        }