Exemple #1
0
        private static void ProbabilisticMappingQATest(string dbPath)
        {
            var loader = loadDB(dbPath);
            var graph  = new ComposedGraph(loader.DataLayer);
            var qa     = new PoolComputation.ProbabilisticQA.ProbabilisticQAModule(graph, new CallStorage(null));


            var denotation1 = graph.GetNode("Barack Obama");
            var q1          = "Who is United States of America president?";

            var denotation2 = graph.GetNode("Vladimir Putin");
            var q2          = "Who is Russia president?";

            var q3          = "Who is Czech republic president?";
            var denotation3 = graph.GetNode("Miloš Zeman");

            qa.AdviceAnswer(q1, false, denotation1);
            qa.AdviceAnswer(q2, false, denotation2);
            qa.Optimize(100);


            var pool = new ContextPool(graph);
            //   var a1 = qa.GetAnswer(q1, pool).ToArray();
            var a3      = qa.GetAnswer(q3, pool).ToArray();
            var repl_a1 = qa.GetAnswer(q1, pool).ToArray();

            throw new NotImplementedException();
        }
Exemple #2
0
        public Task Get()
        {
            var ids             = HttpContext.Request.Query["id"];
            var metadataOnly    = GetBoolValueQueryString("metadata-only", required: false) ?? false;
            var transformerName = GetStringQueryString("transformer", required: false);

            Transformer transformer = null;

            if (string.IsNullOrEmpty(transformerName) == false)
            {
                transformer = Database.TransformerStore.GetTransformer(transformerName);
                if (transformer == null)
                {
                    throw new TransformerDoesNotExistsException("No transformer with the name: " + transformerName);
                }
            }

            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (context.OpenReadTransaction())
                {
                    if (ids.Count > 0)
                    {
                        GetDocumentsById(context, ids, transformer, metadataOnly);
                    }
                    else
                    {
                        GetDocuments(context, transformer, metadataOnly);
                    }

                    return(Task.CompletedTask);
                }
        }
        public Task GetReplicationIncomingRejectionInfo()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = new DynamicJsonArray();
                    foreach (var statItem in Database.DocumentReplicationLoader.IncomingRejectionStats)
                    {
                        data.Add(new DynamicJsonValue
                        {
                            ["Key"] = new DynamicJsonValue
                            {
                                ["SourceDatabaseId"]   = statItem.Key.SourceDatabaseId,
                                ["SourceDatabaseName"] = statItem.Key.SourceDatabaseName,
                                ["SourceMachineName"]  = statItem.Key.SourceMachineName,
                                ["SourceUrl"]          = statItem.Key.SourceUrl
                            },
                            ["Value"] = new DynamicJsonArray(statItem.Value.Select(x => new DynamicJsonValue
                            {
                                ["Reason"] = x.Reason,
                                ["When"]   = x.When
                            }))
                        });
                    }

                    context.Write(writer, data);
                }

            return(Task.CompletedTask);
        }
Exemple #4
0
        public Task GetRunningSubscriptionHistory()
        {
            var ids = HttpContext.Request.Query["id"];

            if (ids.Count == 0)
            {
                throw new ArgumentException("The 'id' query string parameter is mandatory");
            }

            long id;

            if (long.TryParse(ids[0], out id) == false)
            {
                throw new ArgumentException("The 'id' query string parameter must be a valid long");
            }

            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
            {
                context.OpenReadTransaction();
                HttpContext.Response.StatusCode = 200;

                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = Database.SubscriptionStorage.GetRunningSubscriptionConnectionHistory(context, id);
                    context.Write(writer, data);
                    writer.Flush();
                }
            }
            return(Task.CompletedTask);
        }
        public Task GetReplicationConflictsById()
        {
            var docId = GetQueryStringValueAndAssertIfSingleAndNotEmpty("docId");
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                    using (context.OpenReadTransaction())
                    {
                        var conflicts = context.DocumentDatabase.DocumentsStorage.GetConflictsFor(context, docId);
                        var array     = new DynamicJsonArray();
                        foreach (var conflict in conflicts)
                        {
                            array.Add(new DynamicJsonValue
                            {
                                ["Key"]          = conflict.Key,
                                ["ChangeVector"] = conflict.ChangeVector.ToJson(),
                                ["Doc"]          = conflict.Doc
                            });
                        }

                        context.Write(writer, array);

                        HttpContext.Response.StatusCode = 200;
                        return(Task.CompletedTask);
                    }
        }
        internal IEnumerable <NodeReference> Evaluate(string question, StructuredInterpretation structuredInterpretation)
        {
            var matchingCover = getMatchingCover(question, structuredInterpretation.FeatureKey);
            var constraints   = structuredInterpretation.GeneralConstraints.Zip(matchingCover.GetInstanceNodes
                                                                                    (Graph), Tuple.Create);

            HashSet <NodeReference> topicNodes = null;

            foreach (var constraint in constraints)
            {
                var constraintSet = constraint.Item1.FindSet(constraint.Item2, Graph);
                if (topicNodes == null)
                {
                    topicNodes = constraintSet;
                }
                else
                {
                    topicNodes.IntersectWith(constraintSet);
                }
            }

            var pool = new ContextPool(Graph);

            pool.Insert(topicNodes.ToArray());

            foreach (var constraint in structuredInterpretation.DisambiguationConstraints)
            {
                constraint.Execute(pool);
            }

            return(pool.ActiveNodes);
        }
Exemple #7
0
        public Task GetCollectionStats()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (context.OpenReadTransaction())
                {
                    var collections = new DynamicJsonValue();
                    var result      = new DynamicJsonValue
                    {
                        ["NumberOfDocuments"] = Database.DocumentsStorage.GetNumberOfDocuments(context),
                        ["Collections"]       = collections
                    };

                    foreach (var collectionStat in Database.DocumentsStorage.GetCollections(context))
                    {
                        collections[collectionStat.Name] = collectionStat.Count;
                    }

                    using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                        context.Write(writer, result);
                }

            return(Task.CompletedTask);
        }
        public Task Compact()
        {
            var name = GetQueryStringValueAndAssertIfSingleAndNotEmpty("name");

            var index = Database.IndexStore.GetIndex(name);

            if (index == null)
            {
                HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
                return(Task.CompletedTask);
            }

            var token       = CreateOperationToken();
            var operationId = Database.Operations.GetNextOperationId();

            Database.Operations.AddOperation(
                "Compact index: " + index.Name,
                DatabaseOperations.PendingOperationType.IndexCompact,
                onProgress => Task.Factory.StartNew(() => index.Compact(onProgress), token.Token), operationId, token);

            JsonOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    writer.WriteOperationId(context, operationId);
                }

            return(Task.CompletedTask);
        }
        public async Task Put()
        {
            var name = GetQueryStringValueAndAssertIfSingleAndNotEmpty("name");

            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
            {
                var json = await context.ReadForMemoryAsync(RequestBodyStream(), name);

                var transformerDefinition = JsonDeserializationServer.TransformerDefinition(json);
                transformerDefinition.Name = name;

                var transformerId = Database.TransformerStore.CreateTransformer(transformerDefinition);

                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    writer.WriteStartObject();

                    writer.WritePropertyName(("Transformer"));
                    writer.WriteString(name);
                    writer.WriteComma();

                    writer.WritePropertyName(("TransformerId"));
                    writer.WriteInteger(transformerId);

                    writer.WriteEndObject();
                }
            }
        }
Exemple #10
0
        private void btnConfirm_Click(object sender, EventArgs e)
        {
            var uid = txtUid.Text.Trim();
            var pwd = txtPwd.Text.Trim();

            if (string.IsNullOrEmpty(uid))
            {
                XtraMessageBox.Show("登录名不能为空!");
                return;
            }
            if (string.IsNullOrEmpty(pwd))
            {
                XtraMessageBox.Show("密码不能为空!");
                return;
            }

            //query from db
            var db = ContextPool.GetContext();
            var yh = db.T_YH.SingleOrDefault(o => o.F_YHBH == uid && o.F_YHMM == pwd);

            if (yh == null)
            {
                XtraMessageBox.Show("用户命或密码不正确!");
                return;
            }

            //success
            DialogResult    = DialogResult.Yes;
            _authorizedUser = yh;
            Close();
        }
        public async Task PostCreateSampleData()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
            {
                using (context.OpenReadTransaction())
                {
                    foreach (var collection in Database.DocumentsStorage.GetCollections(context))
                    {
                        if (collection.Count > 0 && collection.Name != CollectionName.SystemCollection)
                        {
                            throw new InvalidOperationException("You cannot create sample data in a database that already contains documents");
                        }
                    }
                }

                using (var sampleData = typeof(SampleDataHandler).GetTypeInfo().Assembly.GetManifestResourceStream("Raven.Server.Web.Studio.EmbeddedData.Northwind_3.5.35168.ravendbdump"))
                {
                    using (var stream = new GZipStream(sampleData, CompressionMode.Decompress))
                    {
                        var importer = new SmugglerImporter(Database);

                        await importer.Import(context, stream);
                    }
                }
            }
        }
        public Task GetReplicationReconnectionQueue()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = new DynamicJsonArray();
                    foreach (var queueItem in Database.DocumentReplicationLoader.ReconnectQueue)
                    {
                        data.Add(new DynamicJsonValue
                        {
                            ["Url"]                  = queueItem.Url,
                            ["Database"]             = queueItem.Database,
                            ["Disabled"]             = queueItem.Disabled,
                            ["IgnoredClient"]        = queueItem.IgnoredClient,
                            ["SkipIndexReplication"] = queueItem.SkipIndexReplication,
                            ["SpecifiedCollections"] = queueItem.SpecifiedCollections
                        });
                    }

                    context.Write(writer, data);
                }
            return(Task.CompletedTask);
        }
        public Task GetAllTombstones()
        {
            var start = GetIntValueQueryString("start", false) ?? 0;
            var take  = GetIntValueQueryString("take", false) ?? 1024;

            HttpContext.Response.StatusCode = 200;
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                    using (context.OpenReadTransaction())
                    {
                        var tombstones =
                            context.DocumentDatabase.DocumentsStorage.GetTombstonesFrom(context, 0, start, take).ToList();
                        var array = new DynamicJsonArray();
                        foreach (var tombstone in tombstones)
                        {
                            array.Add(new DynamicJsonValue
                            {
                                ["Key"]          = tombstone.Key.ToString(),
                                ["Collection"]   = tombstone.Collection.ToString(),
                                ["Etag"]         = tombstone.Etag,
                                ["DeletedEtag"]  = tombstone.DeletedEtag,
                                ["ChangeVector"] = tombstone.ChangeVector.ToJson()
                            });
                        }

                        context.Write(writer, array);
                    }

            return(Task.CompletedTask);
        }
        public Task GetReplicationIncomingActivityTimes()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = new DynamicJsonArray();
                    foreach (var item in Database.DocumentReplicationLoader.IncomingLastActivityTime)
                    {
                        data.Add(new DynamicJsonValue
                        {
                            ["Key"] = new DynamicJsonValue
                            {
                                ["SourceDatabaseId"]   = item.Key.SourceDatabaseId,
                                ["SourceDatabaseName"] = item.Key.SourceDatabaseName,
                                ["SourceMachineName"]  = item.Key.SourceMachineName,
                                ["SourceUrl"]          = item.Key.SourceUrl
                            },
                            ["Value"] = item.Value
                        });
                    }

                    context.Write(writer, data);
                }
            return(Task.CompletedTask);
        }
        public Task GetTestSqlConnection()
        {
            try
            {
                var factoryName      = GetStringQueryString("factoryName", true);
                var connectionString = GetStringQueryString("connectionString", true);
                RelationalDatabaseWriter.TestConnection(factoryName, connectionString);
                HttpContext.Response.StatusCode = 204; // No Content
            }
            catch (Exception ex)
            {
                HttpContext.Response.StatusCode = 400; // Bad Request

                JsonOperationContext context;
                using (ContextPool.AllocateOperationContext(out context))
                {
                    using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                    {
                        context.Write(writer, new DynamicJsonValue
                        {
                            ["Error"]     = "Connection failed",
                            ["Exception"] = ex.ToString(),
                        });
                    }
                }
            }

            return(Task.CompletedTask);
        }
        public Task GetReplicationOugoingFailureStats()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = new DynamicJsonArray();
                    foreach (var item in Database.DocumentReplicationLoader.OutgoingFailureInfo)
                    {
                        data.Add(new DynamicJsonValue
                        {
                            ["Key"] = new DynamicJsonValue
                            {
                                ["Url"]                  = item.Key.Url,
                                ["Database"]             = item.Key.Database,
                                ["Disabled"]             = item.Key.Disabled,
                                ["IgnoredClient"]        = item.Key.IgnoredClient,
                                ["SkipIndexReplication"] = item.Key.SkipIndexReplication,
                                ["SpecifiedCollections"] = item.Key.SpecifiedCollections
                            },
                            ["Value"] = new DynamicJsonValue
                            {
                                ["ErrorCount"] = item.Value.ErrorCount,
                                ["NextTimout"] = item.Value.NextTimout
                            }
                        });
                    }

                    context.Write(writer, data);
                }
            return(Task.CompletedTask);
        }
Exemple #17
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                var db  = ContextPool.GetContext();
                var blh = Request["blh"];
                Jcxx = db.T_JCXX.SingleOrDefault(o => o.F_BLH == blh);
                if (Jcxx == null)
                {
                    Response.Redirect("NotDataFound.aspx");
                }

                double referenceValue = 0;
                var    seriesName     = "";
                var    seriesName2    = "";
                if (Jcxx.F_BLK == "EBV")
                {
                    seriesName  = "结果值(copy/mL)";
                    seriesName2 = "参考值(copy/mL)";
                }
                else if (Jcxx.F_BLK == "HBV")
                {
                    seriesName  = "结果值(IU/mL)";
                    seriesName2 = "参考值(IU/mL)";
                }
                WebChartControl1.Series[0].Name = seriesName;
                WebChartControl1.Series[1].Name = seriesName2;
            }
        }
Exemple #18
0
        public async Task Put()
        {
            var name = GetQueryStringValueAndAssertIfSingleAndNotEmpty("name");

            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
            {
                var json = await context.ReadForDiskAsync(RequestBodyStream(), name);

                var indexDefinition = JsonDeserializationServer.IndexDefinition(json);
                if (indexDefinition.Maps == null || indexDefinition.Maps.Count == 0)
                {
                    throw new ArgumentException("Index must have a 'Maps' fields");
                }

                indexDefinition.Name = name;

                var indexId = Database.IndexStore.CreateIndex(indexDefinition);

                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    writer.WriteStartObject();

                    writer.WritePropertyName(("Index"));
                    writer.WriteString((name));
                    writer.WriteComma();

                    writer.WritePropertyName(("IndexId"));
                    writer.WriteInteger(indexId);

                    writer.WriteEndObject();
                }
            }
        }
Exemple #19
0
        public void Run(ContextPool context)
        {
            var start = context.GetSubstitution(SemanticOrigin.StartNode);
            var layer = context.GetPathLayer(start, Path.Edges);

            context.RemoveWhere((node) => !layer.Contains(node));
        }
Exemple #20
0
        public Task OperationsGet()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
            {
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    writer.WriteStartArray();

                    var first = true;

                    foreach (var operation in Database.Operations.GetAll())
                    {
                        if (first == false)
                        {
                            writer.WriteComma();
                        }
                        first = false;

                        writer.WriteObject(context.ReadObject(operation.ToJson(), "operation"));
                    }

                    writer.WriteEndArray();
                }
            }

            return(Task.CompletedTask);
        }
Exemple #21
0
        private IEnumerable <NodeReference> evaluate(StructuredInterpretation interpretation, QuestionEvidence question)
        {
            HashSet <NodeReference> inputSet = null;

            for (var i = 0; i < _generalFeatureNodes.Length; ++i)
            {
                var generalNode = _generalFeatureNodes[i];
                var featureNode = question.GetFeatureNode(generalNode, Graph);
                var constraint  = interpretation.GetGeneralConstraint(i);
                if (inputSet == null)
                {
                    inputSet = constraint.FindSet(featureNode, Graph);
                }
                else
                {
                    inputSet.IntersectWith(constraint.FindSet(featureNode, Graph));
                }
            }

            var pool = new ContextPool(Graph);

            pool.Insert(inputSet.ToArray());
            foreach (var distinguishConstraint in interpretation.DisambiguationConstraints)
            {
                distinguishConstraint.Execute(pool);
            }
            return(pool.ActiveNodes);
        }
Exemple #22
0
 public void Dispose()
 {
     if (_context != null)
     {
         ContextPool.Return(_context);
         _context = null;
     }
 }
Exemple #23
0
        static void Main(string[] args)
        {
            #region MyRegion

//            Application.EnableVisualStyles();
//            Application.SetCompatibleTextRenderingDefault(false);
//            Application.Run(new Form1());

            #endregion

            string yhm;

            //获取要启动的exe文件名
            string exeName    = "pathnetrpt";
            var    sourceName = AppDomain.CurrentDomain.FriendlyName.ToUpper().Replace(".EXE", "");
            if (sourceName.Split('_').Length > 1)
            {
                exeName = sourceName.Split('_')[1];
            }


            //验证病理exe是否存在
            if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + $"\\{exeName}.exe") == false)
            {
                MessageBox.Show("未找到朗珈病理系统启动程序,请将单点登录程序放在朗珈主程序文件夹中.");
                Application.Exit();
            }

            //验证入参
            if (args.Length == 0)
            {
                MessageBox.Show("无法启动:没有传入用户登录信息.");
                Application.Exit();
            }
            if (args[0].Split('|').Length != 2)
            {
                MessageBox.Show("无法启动:用户登录参数的数量不正确.");
                Application.Exit();
            }

            //解密用户名
            var userInfo = args[0].Split('|');
            yhm = AESDecrypt(userInfo[0], userInfo[1]);

            //查询对应的用户
            db = ContextPool.GetContext();
            var yh = db.T_YH.SingleOrDefault(o => o.F_YHM == yhm);

            //如果用户不存在,新建用户并弹出提示
            if (yh == null)
            {
                yh = CreateYh(yhm);
                MessageBox.Show("您没有朗珈病理系统登录权限,已为您自动新建朗珈用户,请联系朗珈病理系统管理员为您修改权限和密码.");
            }

            //调用PathQc
            Process.Start(exeName + ".exe", yh.F_YHM + "," + yh.F_YHMM);
        }
Exemple #24
0
        public void EfTest()
        {
            PathnetEntities db  = ContextPool.GetContext();
            var             lst = (from o in db.T_JCXX
                                   orderby o.F_BLH
                                   select o).Skip(10).Take(5).ToList();

            Assert.AreEqual(lst.Count, 5);
        }
        public Task Delete()
        {
            DocumentsOperationContext context;
            var returnContextToPool = ContextPool.AllocateOperationContext(out context); // we don't dispose this as operation is async

            ExecuteQueryOperation((runner, indexName, query, options, onProgress, token) => runner.ExecuteDeleteQuery(indexName, query, options, context, onProgress, token),
                                  context, returnContextToPool, DatabaseOperations.PendingOperationType.DeleteByIndex);
            return(Task.CompletedTask);
        }
Exemple #26
0
        public Task Delete()
        {
            DocumentsOperationContext context;
            var returnContextToPool = ContextPool.AllocateOperationContext(out context);

            ExecuteCollectionOperation((runner, collectionName, options, onProgress, token) => Task.Run(() => runner.ExecuteDelete(collectionName, options, context, onProgress, token)),
                                       context, returnContextToPool, DatabaseOperations.PendingOperationType.DeleteByCollection);
            return(Task.CompletedTask);
        }
Exemple #27
0
        public void Run(ContextPool context)
        {
            var pushStart = context.GetSubstitution(SemanticOrigin.StartNode);

            foreach (var path in SemanticOrigin.Paths)
            {
                context.Push(pushStart, path);
            }
        }
        public Task RunningQueries()
        {
            var indexes = Database
                          .IndexStore
                          .GetIndexes()
                          .ToList();

            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    writer.WriteStartObject();
                    foreach (var index in indexes)
                    {
                        writer.WritePropertyName(index.Name);
                        writer.WriteStartArray();

                        var isFirstInternal = true;
                        foreach (var query in index.CurrentlyRunningQueries)
                        {
                            if (isFirstInternal == false)
                            {
                                writer.WriteComma();
                            }

                            isFirstInternal = false;

                            writer.WriteStartObject();

                            writer.WritePropertyName((nameof(query.Duration)));
                            writer.WriteString(query.Duration.ToString());
                            writer.WriteComma();

                            writer.WritePropertyName((nameof(query.QueryId)));
                            writer.WriteInteger(query.QueryId);
                            writer.WriteComma();

                            writer.WritePropertyName((nameof(query.StartTime)));
                            writer.WriteString(query.StartTime.GetDefaultRavenFormat());
                            writer.WriteComma();

                            writer.WritePropertyName((nameof(query.QueryInfo)));
                            writer.WriteIndexQuery(context, query.QueryInfo);

                            writer.WriteEndObject();
                        }

                        writer.WriteEndArray();
                    }

                    writer.WriteEndObject();
                }

            return(Task.CompletedTask);
        }
Exemple #29
0
        private async Task WaitForIndexesAsync(TimeSpan timeout, long lastEtag, HashSet <string> modifiedCollections)
        {
            // waitForIndexesTimeout=timespan & waitForIndexThrow=false (default true)
            // waitForspecificIndex=specific index1 & waitForspecificIndex=specific index 2

            if (modifiedCollections.Count == 0)
            {
                return;
            }

            var throwOnTimeout = GetBoolValueQueryString("waitForIndexThrow", required: false) ?? true;

            var indexesTask = new List <Task>();

            var indexesToCheck = GetImpactedIndexesToWaitForToBecomeNonStale(modifiedCollections);

            var sp = Stopwatch.StartNew();

            while (true)
            {
                indexesTask.Clear();

                DocumentsOperationContext context;
                using (ContextPool.AllocateOperationContext(out context))
                    using (context.OpenReadTransaction())
                    {
                        foreach (var index in indexesToCheck)
                        {
                            if (index.IsStale(context, lastEtag))
                            {
                                indexesTask.Add(index.WaitForNextIndexingRound());
                            }
                        }
                    }

                if (indexesTask.Count == 0)
                {
                    return;
                }

                var remaining = timeout - sp.Elapsed;
                if (remaining < TimeSpan.Zero)
                {
                    break; // will throw timeout exception
                }
                indexesTask.Add(Task.Delay(remaining));

                await Task.WhenAny(indexesTask);
            }
            if (throwOnTimeout)
            {
                throw new TimeoutException(
                          $"After waiting for {sp.Elapsed}, could not verify that {indexesToCheck.Count} " +
                          $"indexes has caught up with the changes as of etag: {lastEtag}");
            }
        }
        public Task GetAll()
        {
            var name = GetStringQueryString("name", required: false);

            var start    = GetStart();
            var pageSize = GetPageSize();

            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    TransformerDefinition[] transformerDefinitions;
                    if (string.IsNullOrEmpty(name))
                    {
                        transformerDefinitions = Database.TransformerStore
                                                 .GetTransformers()
                                                 .OrderBy(x => x.Name)
                                                 .Skip(start)
                                                 .Take(pageSize)
                                                 .Select(x => x.Definition)
                                                 .ToArray();
                    }
                    else
                    {
                        var transformer = Database.TransformerStore.GetTransformer(name);
                        if (transformer == null)
                        {
                            HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
                            return(Task.CompletedTask);
                        }

                        transformerDefinitions = new[] { transformer.Definition };
                    }

                    writer.WriteStartArray();

                    var isFirst = true;
                    foreach (var transformerDefinition in transformerDefinitions)
                    {
                        if (isFirst == false)
                        {
                            writer.WriteComma();
                        }

                        isFirst = false;

                        writer.WriteTransformerDefinition(context, transformerDefinition);
                    }

                    writer.WriteEndArray();
                }

            return(Task.CompletedTask);
        }