示例#1
0
        private StatementPrepareEvent GetStatementPrepareEvent(BsonDocument startEvent, BsonDocument endEvent)
        {
            StatementPrepareEvent statementPrepareEvent = new StatementPrepareEvent();

            // Retrieve each associated event.
            var sessionEvents = GetEventsForRange(startEvent, endEvent).ToList();

            if (!sessionEvents.Any())
            {
                return(statementPrepareEvent);
            }

            // Process each associated event.
            foreach (var sessionEvent in sessionEvents)
            {
                string message = BsonDocumentHelper.GetString("message", sessionEvent);
                if (String.IsNullOrWhiteSpace(message))
                {
                    continue;
                }

                if (!message.Contains("StatementPrepare") && !message.StartsWith("Compiling query"))
                {
                    if (String.IsNullOrWhiteSpace(statementPrepareEvent.Query))
                    {
                        statementPrepareEvent.Query = message.Trim();
                    }
                    else
                    {
                        statementPrepareEvent.Query = String.Format("{0} {1}", statementPrepareEvent.Query, message.Trim());
                    }
                }

                if (message.Contains("stmt_guid="))
                {
                    var guidSegments = message.Split(' ').Last().Split('=');
                    if (guidSegments.Length > 1)
                    {
                        int guid;
                        if (Int32.TryParse(guidSegments[1], out guid))
                        {
                            statementPrepareEvent.Guid = guid;
                        }
                    }
                }

                if (message.Contains("StatementPrepare: OK"))
                {
                    statementPrepareEvent.Success = true;
                }

                if (message.Contains("StatementPrepare: FAILED"))
                {
                    statementPrepareEvent.Success = false;
                    statementPrepareEvent.Error   = message.Replace("StatementPrepare: FAILED, error=", "");
                }
            }

            return(statementPrepareEvent);
        }
示例#2
0
        private BackgrounderJob AppendDetailsToJob(BackgrounderJob job, BsonDocument endEvent, IMongoCollection <BsonDocument> collection)
        {
            var endTime          = BsonDocumentHelper.GetDateTime("ts", endEvent);
            var eventsInJobRange = MongoQueryHelper.GetEventsInRange(collection, job.WorkerId, job.BackgrounderId, job.StartTime, endTime).ToList();

            // Append all errors associated with job.
            job.Errors = CollectErrorsForJob(job, eventsInJobRange);

            // Append details for certain job types of interest.
            if (job.JobType.Equals("refresh_extracts") || job.JobType.Equals("increment_extracts"))
            {
                var extractJobDetail = new BackgrounderExtractJobDetail(job, GetVqlSessionServiceEvents(eventsInJobRange));
                if (!string.IsNullOrEmpty(extractJobDetail.VizqlSessionId))
                {
                    job.BackgrounderJobDetail = extractJobDetail;
                }
            }
            else if (job.JobType.Equals("single_subscription_notify"))
            {
                var eventList = new List <BsonDocument>(GetVqlSessionServiceEvents(eventsInJobRange));
                eventList.AddRange(GetSubscriptionRunnerEvents(eventsInJobRange));

                var subscriptionJobDetail = new BackgrounderSubscriptionJobDetail(job, eventList);
                if (!string.IsNullOrEmpty(subscriptionJobDetail.VizqlSessionId))
                {
                    job.BackgrounderJobDetail = subscriptionJobDetail;
                }
            }

            return(job);
        }
示例#3
0
        private IDictionary <int, StatementPrepareEvent> GetAllStatementPrepareEvents(IList <BsonDocument> sessionLines)
        {
            IDictionary <int, StatementPrepareEvent> statementPrepareEvents = new Dictionary <int, StatementPrepareEvent>();
            Queue <BsonDocument> lineQueue = new Queue <BsonDocument>();

            foreach (var line in sessionLines)
            {
                string message = BsonDocumentHelper.GetString("message", line);
                if (message.Contains("StatementPrepare"))
                {
                    lineQueue.Enqueue(line);
                }
            }

            lineQueue = SortByLogLine(lineQueue);

            while (lineQueue.Count >= 2)
            {
                StatementPrepareEvent prepareEvent = GetStatementPrepareEvent(lineQueue.Dequeue(), lineQueue.Dequeue());
                if (prepareEvent.Success)
                {
                    statementPrepareEvents[prepareEvent.Guid] = prepareEvent;
                }
            }

            return(statementPrepareEvents);
        }
示例#4
0
        protected string GetActionValue(BsonDocument document)
        {
            String message = BsonDocumentHelper.GetString("message", document);

            switch (message)
            {
            case ClusterControllerConstants.POSTGRES_START_AS_MASTER:
                return("StartAsMaster");

            case ClusterControllerConstants.POSTGRES_FAILOVER_AS_MASTER:
                return("FailoverAsMaster");

            case ClusterControllerConstants.POSTGRES_START_AS_SLAVE:
                return("StartAsSlave");

            case ClusterControllerConstants.POSTGRES_STOP:
                return("Stop");

            case ClusterControllerConstants.POSTGRES_RESTART:
                return("Restart");

            default:
                throw new Exception("No action for log message: " + message);
            }
        }
示例#5
0
        private IList <DataengineEvent> GetAllQueryExecuteEvents(int sessionId, IList <BsonDocument> sessionLines)
        {
            IList <DataengineEvent> queryExecuteEvents = new List <DataengineEvent>();
            Queue <BsonDocument>    lineQueue          = new Queue <BsonDocument>();

            foreach (var line in sessionLines)
            {
                string message = BsonDocumentHelper.GetString("message", line);
                if (message.Contains("QueryExecute"))
                {
                    lineQueue.Enqueue(line);
                }
            }

            lineQueue = SortByLogLine(lineQueue);

            while (lineQueue.Count >= 2)
            {
                try
                {
                    DataengineEvent queryExecuteEvent = GetDataEngineEvent(sessionId, "QueryExecute", lineQueue.Dequeue(), lineQueue.Dequeue());
                    // Filter out all (database null) queries, which are used for closing a connection.
                    if (!queryExecuteEvent.Query.Equals("(database null)"))
                    {
                        queryExecuteEvents.Add(queryExecuteEvent);
                    }
                }
                catch (Exception ex)
                {
                    Log.Error("Problem gathering QueryExecute event data on session:" + sessionId, ex);
                }
            }

            return(queryExecuteEvents);
        }
        public VizqlEndPartitionInterpreter(BsonDocument document)
        {
            ValidateArguments("end-partition-interpreter", document);
            SetEventMetadata(document);

            Elapsed = BsonDocumentHelper.GetDouble("elapsed", BsonDocumentHelper.GetValuesStruct(document));
        }
示例#7
0
        protected Guid GetEventHash(BsonDocument logLine)
        {
            string file = BsonDocumentHelper.GetString("file", logLine);
            int    line = BsonDocumentHelper.GetInt("line", logLine);

            return(HashHelper.GenerateHashGuid(Timestamp, TimestampOffset, Message, Worker, file, line));
        }
 protected ResourceManagerEvent(BsonDocument document, string processName)
 {
     ProcessName = processName;
     WorkerId    = BsonDocumentHelper.GetInt("worker", document);
     Timestamp   = BsonDocumentHelper.GetDateTime("ts", document);
     Pid         = BsonDocumentHelper.GetInt("pid", document);
     SetProcessId(document);
 }
示例#9
0
        public VizqlSetCollation(BsonDocument document)
        {
            SetEventMetadata(document);
            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Column    = values.GetString("column");
            Collation = values.GetString("collation");
        }
示例#10
0
 public ZookeeperError(BsonDocument document, Guid logsetHash)
     : base(document, logsetHash)
 {
     Severity  = BsonDocumentHelper.GetString("sev", document);
     Message   = BsonDocumentHelper.GetString("message", document);
     Class     = BsonDocumentHelper.GetString("class", document);
     EventHash = GetEventHash();
 }
 public ClusterControllerEvent(BsonDocument document, Guid logsetHash)
 {
     LogsetHash = logsetHash;
     Timestamp  = BsonDocumentHelper.GetDateTime("ts", document);
     Worker     = BsonDocumentHelper.GetString("worker", document);
     Filename   = String.Format(@"{0}\{1}", BsonDocumentHelper.GetString("file_path", document), BsonDocumentHelper.GetString("file", document));
     LineNumber = BsonDocumentHelper.GetInt("line", document);
 }
示例#12
0
        public TabadminAction(BsonDocument logLine, Guid logsetHash) : base(logLine, logsetHash)
        {
            // Split the message field into command and argument substrings.
            Match match = commandAndArgumentRegex.Match(BsonDocumentHelper.GetString("message", logLine));

            Command   = match.Groups["command"].Value;
            Arguments = match.Groups["arguments"].Value;
        }
        private string GetSessionSuffix(BsonDocument vqlSessionServiceEvent)
        {
            int    worker   = BsonDocumentHelper.GetInt("worker", vqlSessionServiceEvent);
            string fileName = BsonDocumentHelper.GetString("file", vqlSessionServiceEvent);
            string process  = fileName.Split('-')[1].Split('.')[0];

            return(worker + ":" + process);
        }
示例#14
0
        public VizqlSetCollation(BsonDocument document)
        {
            ValidateArguments("set-collation", document);
            SetEventMetadata(document);
            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Column    = BsonDocumentHelper.GetString("column", values);
            Collation = BsonDocumentHelper.GetString("collation", values);
        }
示例#15
0
        private static bool IsValidJobStartEvent(BsonDocument jobStartEvent, string jobType)
        {
            if (!jobStartEvent.Contains("message"))
            {
                return(false);
            }

            return(BsonDocumentHelper.GetString("message", jobStartEvent).StartsWith(String.Format("Running job of type :{0}", jobType)));
        }
示例#16
0
        public VizqlMessage(BsonDocument document)
        {
            ValidateArguments("msg", document);
            SetEventMetadata(document);

            Line    = BsonDocumentHelper.GetInt("line", document);
            Message = BsonDocumentHelper.GetString("v", document);
            Sev     = BsonDocumentHelper.GetString("sev", document);
        }
        public VizqlEndComputeQuickFilterState(BsonDocument document)
        {
            SetEventMetadata(document);
            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Elapsed = values.GetDouble("elapsed");
            Sheet   = values.GetString("sheet");
            View    = values.GetString("view");
        }
        public VizqlEndComputeQuickFilterState(BsonDocument document)
        {
            ValidateArguments("end-compute-quick-filter-state", document);
            SetEventMetadata(document);
            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Elapsed = BsonDocumentHelper.GetDouble("elapsed", values);
            Sheet   = BsonDocumentHelper.GetString("sheet", values);
            View    = BsonDocumentHelper.GetString("view", values);
        }
示例#19
0
        public VizqlEndUpdateSheet(BsonDocument document)
        {
            ValidateArguments("end-update-sheet", document);
            SetEventMetadata(document);
            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Elapsed = BsonDocumentHelper.GetDouble("elapsed", values);
            Sheet   = BsonDocumentHelper.GetString("sheet", values);
            View    = BsonDocumentHelper.GetString("view", values);
        }
示例#20
0
        public VizqlEndPrepareQuickFilterQueries(BsonDocument document)
        {
            ValidateArguments("end-prepare-quick-filter-queries", document);
            SetEventMetadata(document);
            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Elapsed = BsonDocumentHelper.GetDouble("elapsed", values);
            Sheet   = BsonDocumentHelper.GetString("sheet", values);
            View    = BsonDocumentHelper.GetString("view", values);
        }
示例#21
0
        private IEnumerable <BsonDocument> GetEventsForRange(BsonDocument startEvent, BsonDocument endEvent)
        {
            int    workerId  = BsonDocumentHelper.GetInt("worker", startEvent);
            string tid       = BsonDocumentHelper.GetString("tid", startEvent);
            string file      = BsonDocumentHelper.GetString("file", startEvent);
            int    startLine = BsonDocumentHelper.GetInt("line", startEvent);
            int    endLine   = BsonDocumentHelper.GetInt("line", endEvent);

            return(DataEngineMongoHelper.GetDataEngineEventsForLineRange(workerId, file, tid, startLine, endLine, dataengineCollection));
        }
示例#22
0
 public void SetEventMetadata(BsonDocument document)
 {
     VizqlSessionId  = BsonDocumentHelper.GetString("sess", document);
     ThreadId        = BsonDocumentHelper.GetString("tid", document);
     ApacheRequestId = BsonDocumentHelper.GetString("req", document);
     EventTimestamp  = BsonDocumentHelper.GetDateTime("ts", document);
     ProcessId       = BsonDocumentHelper.GetInt("pid", document);
     KeyType         = BsonDocumentHelper.GetKeyType(document);
     EventHash       = HashHelper.GenerateHashGuid(document.ToString());
 }
示例#23
0
 public SearchserverEvent(BsonDocument logLine, Guid logsetHash)
 {
     LogsetHash      = logsetHash;
     Timestamp       = BsonDocumentHelper.GetDateTime("ts", logLine);
     TimestampOffset = BsonDocumentHelper.GetString("ts_offset", logLine);
     Severity        = BsonDocumentHelper.GetString("sev", logLine);
     Message         = BsonDocumentHelper.GetString("message", logLine);
     Class           = BsonDocumentHelper.GetString("class", logLine);
     Worker          = BsonDocumentHelper.GetInt("worker", logLine);
     EventHash       = GetEventHash(logLine);
 }
        public VizqlEndSqlTempTableTuplesCreate(BsonDocument document)
        {
            SetEventMetadata(document);
            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Elapsed       = values.GetDouble("elapsed");
            ElapsedCreate = values.GetDouble("elapsed-create");
            ElapsedInsert = values.GetDouble("elapsed-insert");
            ProtocolId    = values.GetInt("protocol-id");
            TableName     = values.GetString("tablename");
        }
示例#25
0
        public VizqlDllVersionInfo(BsonDocument document)
        {
            SetEventMetadata(document);

            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Filename       = values.GetString("filename");
            ProductName    = values.GetString("product-name");
            FileVersion    = values.GetString("file-version");
            ProductVersion = values.GetString("product-version");
        }
示例#26
0
        public TableauServerVersion(BsonDocument document) : base(document)
        {
            Match match = versionRegex.Match(BsonDocumentHelper.GetString("message", document));

            Version     = match.Groups["shortVersion"].Value;
            VersionLong = match.Groups["longVersion"].Value;

            StartDate       = document.GetDateTime("ts");
            TimestampOffset = document.GetString("ts_offset");
            StartDateGmt    = (DateTime)DateTimeConversionHelper.ConvertDateTime(StartDate, TimestampOffset);
            EndDateGmt      = DateTimeConversionHelper.ConvertDateTime(EndDate, TimestampOffset);
        }
示例#27
0
 public VizqlQpBatchSummaryJob(string qpBatchSummaryEventGuid, BsonDocument document)
 {
     QpBatchSummaryEventGuid = qpBatchSummaryEventGuid;
     QueryId        = BsonDocumentHelper.GetInt("query-id", document);
     ProtocolId     = BsonDocumentHelper.GetNullableInt("protocol-id", document);
     Elapsed        = BsonDocumentHelper.GetNullableDouble("elapsed", document);
     OwnerComponent = BsonDocumentHelper.GetString("owner-component", document);
     OwnerDashboard = BsonDocumentHelper.GetString("owner-dashboard", document);
     OwnerWorksheet = BsonDocumentHelper.GetString("owner-worksheet", document);
     QueryAbstract  = BsonDocumentHelper.TruncateString(BsonDocumentHelper.GetString("query-abstract", document), 1024);
     QueryCompiled  = BsonDocumentHelper.TruncateString(BsonDocumentHelper.GetString("query-compiled", document), 1024);
 }
示例#28
0
        public VizqlProcessQuery(BsonDocument document)
        {
            SetEventMetadata(document);
            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            Error    = values.GetString("error");
            Cached   = values.GetBool("cached");
            Success  = values.GetBool("success");
            CacheHit = values.GetBool("cachehit");
            Elapsed  = values.GetDouble("elapsed");
            Query    = values.GetString("query");
        }
 public BackgrounderJobError(long backgrounderJobId, BsonDocument errorDocument)
 {
     BackgrounderJobId = backgrounderJobId;
     Timestamp         = BsonDocumentHelper.GetDateTime("ts", errorDocument);
     Site     = BsonDocumentHelper.GetString("site", errorDocument);
     Thread   = BsonDocumentHelper.GetString("thread", errorDocument);
     Severity = BsonDocumentHelper.GetString("sev", errorDocument);
     Class    = BsonDocumentHelper.GetString("class", errorDocument);
     Message  = BsonDocumentHelper.GetString("message", errorDocument);
     File     = String.Format(@"{0}\{1}", BsonDocumentHelper.GetString("file_path", errorDocument), BsonDocumentHelper.GetString("file", errorDocument));
     Line     = BsonDocumentHelper.GetInt("line", errorDocument);
 }
示例#30
0
        public VizqlConstructProtocolGroup(BsonDocument document)
        {
            SetEventMetadata(document);

            BsonDocument values = BsonDocumentHelper.GetValuesStruct(document);

            InConstructionCount  = values.GetNullableInt("in-construction-count");
            ClosedProtocolsCount = values.GetNullableInt("closed-protocols-count");
            ProtocolGroupId      = values.GetNullableInt("group-id");
            ConnectionLimit      = values.GetInt("connection-limit");
            Attributes           = values.GetString("attributes");
        }