Example #1
0
        internal static string GetNotifyDescription(OpenBond.WorkerNotificationArgs notificationArgs, IList <long> semiStableHashes)
        {
            using (var sbPool = Pools.GetStringBuilder())
            {
                var sb = sbPool.Instance;

                if (semiStableHashes?.Count > 0)
                {
                    sb.Append("NotifyPipResults: ");
                    AppendSemiStableHashes(sb, semiStableHashes);
                }

                if (notificationArgs.ExecutionLogData != null && notificationArgs.ExecutionLogData.Count > 0)
                {
                    sb.AppendFormat("ExecutionLogData: Size={0}, SequenceNumber={1}", notificationArgs.ExecutionLogData.Count, notificationArgs.ExecutionLogBlobSequenceNumber);
                }

                if (notificationArgs.ForwardedEvents?.Count > 0)
                {
                    sb.AppendFormat("ForwardedEvents: Count={0}", notificationArgs.ForwardedEvents.Count);
                }

                return(sb.ToString());
            }
        }
        public Task <RpcCallResult <Unit> > NotifyAsync(OpenBond.WorkerNotificationArgs message, IList <long> semiStableHashes)
        {
            var grpcMessage = message.ToGrpc();

            return(m_connectionManager.CallAsync(
                       (callOptions) => m_client.NotifyAsync(grpcMessage, options: callOptions),
                       DistributionHelpers.GetNotifyDescription(message, semiStableHashes)));
        }
Example #3
0
        public Task <RpcCallResult <Unit> > NotifyAsync(OpenBond.WorkerNotificationArgs message, IList <long> semiStableHashes)
        {
            var grpcMessage = message.ToGrpc(m_senderInfo);

            return(m_connectionManager.CallAsync(
                       (callOptions) => m_client.NotifyAsync(grpcMessage, options: callOptions),
                       "Notify"));
        }
        public static WorkerNotificationArgs ToGrpc(this OpenBond.WorkerNotificationArgs message)
        {
            var workerNotificationArgs = new WorkerNotificationArgs()
            {
                WorkerId = message.WorkerId,
                ExecutionLogBlobSequenceNumber = message.ExecutionLogBlobSequenceNumber,
                ExecutionLogData = message.ExecutionLogData.ToByteString(),
            };

            foreach (var i in message.CompletedPips)
            {
                workerNotificationArgs.CompletedPips.Add(new PipCompletionData()
                {
                    ExecuteStepTicks = i.ExecuteStepTicks,
                    PipIdValue       = i.PipIdValue,
                    QueueTicks       = i.QueueTicks,
                    ResultBlob       = i.ResultBlob.ToByteString(),
                    Step             = i.Step,
                    ThreadId         = i.ThreadId,
                    StartTimeTicks   = i.StartTimeTicks
                });
            }

            foreach (var i in message.ForwardedEvents)
            {
                var eventMessage = new EventMessage()
                {
                    EventId       = i.EventId,
                    EventKeywords = i.EventKeywords,
                    EventName     = i.EventName,
                    Id            = i.Id,
                    Level         = i.Level,
                    Text          = i.Text,
                };

                if (i.PipProcessErrorEvent != null)
                {
                    eventMessage.PipProcessErrorEvent = new global::BuildXL.Distribution.Grpc.PipProcessErrorEvent()
                    {
                        PipSemiStableHash   = i.PipProcessErrorEvent.PipSemiStableHash,
                        PipDescription      = i.PipProcessErrorEvent.PipDescription,
                        PipSpecPath         = i.PipProcessErrorEvent.PipSpecPath,
                        PipWorkingDirectory = i.PipProcessErrorEvent.PipWorkingDirectory,
                        PipExe                 = i.PipProcessErrorEvent.PipExe,
                        OutputToLog            = i.PipProcessErrorEvent.OutputToLog,
                        MessageAboutPathsToLog = i.PipProcessErrorEvent.MessageAboutPathsToLog,
                        PathsToLog             = i.PipProcessErrorEvent.PathsToLog,
                        ExitCode               = i.PipProcessErrorEvent.ExitCode,
                        OptionalMessage        = i.PipProcessErrorEvent.OptionalMessage,
                        ShortPipDescription    = i.PipProcessErrorEvent.ShortPipDescription
                    };
                }

                workerNotificationArgs.ForwardedEvents.Add(eventMessage);
            }

            return(workerNotificationArgs);
        }
Example #5
0
        /// <summary>
        /// Notifies the worker of pip completions
        /// </summary>
        public async Task <RpcCallResult <Unit> > NotifyAsync(OpenBond.WorkerNotificationArgs message, IList <long> semiStableHashes)
        {
            var internalBondMessage = message.ToInternalBond();

            var result = await m_proxyManager.Call <WorkerNotificationArgs, Void>(
                internalBondMessage,
                functionName : "Notify",
                description : DistributionHelpers.GetNotifyDescription(message, semiStableHashes));

            return(result.ToUnit());
        }
Example #6
0
        public Task <RpcCallResult <Unit> > NotifyAsync(OpenBond.WorkerNotificationArgs message, IList <long> semiStableHashes, CancellationToken cancellationToken = default)
        {
            Contract.Assert(m_initialized);

            var grpcMessage = message.ToGrpc();

            return(m_connectionManager.CallAsync(
                       async(callOptions) => await m_client.NotifyAsync(grpcMessage, options: callOptions),
                       DistributionHelpers.GetNotifyDescription(message, semiStableHashes),
                       cancellationToken: cancellationToken));
        }
Example #7
0
        public static WorkerNotificationArgs ToInternalBond(this OpenBond.WorkerNotificationArgs message)
        {
            var workerNotificationArgs = new WorkerNotificationArgs()
            {
                BuildId    = message.BuildId,
                SenderId   = message.SenderId,
                SenderName = message.SenderName,
                WorkerId   = message.WorkerId,
                ExecutionLogBlobSequenceNumber = message.ExecutionLogBlobSequenceNumber,
                ExecutionLogData = new BondBlob(message.ExecutionLogData),
            };

            foreach (var i in message.CompletedPips)
            {
                workerNotificationArgs.CompletedPips.Add(new PipCompletionData()
                {
                    ExecuteStepTicks = i.ExecuteStepTicks,
                    PipIdValue       = i.PipIdValue,
                    QueueTicks       = i.QueueTicks,
                    ResultBlob       = new BondBlob(i.ResultBlob),
                    Step             = i.Step
                });
            }

            foreach (var i in message.ForwardedEvents)
            {
                workerNotificationArgs.ForwardedEvents.Add(new EventMessage()
                {
                    EventId       = i.EventId,
                    EventKeywords = i.EventKeywords,
                    EventName     = i.EventName,
                    Id            = i.Id,
                    Level         = i.Level,
                    Text          = i.Text
                });
            }

            return(workerNotificationArgs);
        }
        public static WorkerNotificationArgs ToGrpc(this OpenBond.WorkerNotificationArgs message, SenderInfo senderInfo)
        {
            var workerNotificationArgs = new WorkerNotificationArgs()
            {
                Sender   = senderInfo,
                WorkerId = message.WorkerId,
                ExecutionLogBlobSequenceNumber = message.ExecutionLogBlobSequenceNumber,
                ExecutionLogData = message.ExecutionLogData.ToByteString(),
            };

            foreach (var i in message.CompletedPips)
            {
                workerNotificationArgs.CompletedPips.Add(new PipCompletionData()
                {
                    ExecuteStepTicks = i.ExecuteStepTicks ?? 0,
                    PipIdValue       = i.PipIdValue,
                    QueueTicks       = i.QueueTicks ?? 0,
                    ResultBlob       = i.ResultBlob.ToByteString(),
                    Step             = i.Step
                });
            }

            foreach (var i in message.ForwardedEvents)
            {
                workerNotificationArgs.ForwardedEvents.Add(new EventMessage()
                {
                    EventId       = i.EventId,
                    EventKeywords = i.EventKeywords,
                    EventName     = i.EventName,
                    Id            = i.Id,
                    Level         = i.Level,
                    Text          = i.Text
                });
            }

            return(workerNotificationArgs);
        }