diff options
author | 2018-03-05 14:49:00 -0800 | |
---|---|---|
committer | 2018-03-05 14:50:44 -0800 | |
commit | 922d1e671bc02086afdcfb8ae1636eefc53e0ee2 (patch) | |
tree | 7aa8c9973ff7d39c970a25dd88e58ad0b4ee30b8 /src/main/protobuf | |
parent | e225b6fd1a745aaeaef8c90b3b5b0485784b2d67 (diff) |
remote: Add interceptor for logging gRPC calls during remote execution/caching
This provides a io.grpc.ClientInterceptor implementation that can be used to log gRPC call information. The interceptor can select a logging handler to use based on the gRPC method being called (Watch, Execute, Write, etc) to build a LogEntry, which can then be logged after the call has finished. Unit tests for the interceptor are included.
In this change, the interceptor is never invoked, nor are there any handlers implemented for any gRPC methods. The interceptor also never tries to log any entries.
To avoid circular dependency issues (Remote library will depend on logger which depends on remote library for utils), I've factored out the utility classes from the remote library into their own directory/package as part of this change.
PiperOrigin-RevId: 187926516
Diffstat (limited to 'src/main/protobuf')
-rw-r--r-- | src/main/protobuf/BUILD | 20 | ||||
-rw-r--r-- | src/main/protobuf/remote_execution_log.proto | 36 |
2 files changed, 56 insertions, 0 deletions
diff --git a/src/main/protobuf/BUILD b/src/main/protobuf/BUILD index 2223fb5a4e..4154a17fa5 100644 --- a/src/main/protobuf/BUILD +++ b/src/main/protobuf/BUILD @@ -128,6 +128,25 @@ cc_proto_library( deps = [":execution_statistics_proto"], ) +proto_library( + name = "remote_execution_log_proto", + srcs = ["remote_execution_log.proto"], + deps = [ + "@googleapis//:google_devtools_remoteexecution_v1test_remote_execution_proto", + "@googleapis//:google_rpc_status_proto", + ], +) + +java_proto_library( + name = "remote_execution_log_java_proto", + deps = [":remote_execution_log_proto"], +) + +java_library_srcs( + name = "remote_execution_log_java_proto_srcs", + deps = [":remote_execution_log_java_proto"], +) + filegroup( name = "srcs", srcs = glob(["**"]), @@ -140,5 +159,6 @@ filegroup( ":command_server_java_grpc_srcs", ":option_filters_java_proto_srcs", ":profile_java_proto_srcs", + ":remote_execution_log_java_proto_srcs", ], ) diff --git a/src/main/protobuf/remote_execution_log.proto b/src/main/protobuf/remote_execution_log.proto new file mode 100644 index 0000000000..c685bd3fff --- /dev/null +++ b/src/main/protobuf/remote_execution_log.proto @@ -0,0 +1,36 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package remote_logging; + +import "google/devtools/remoteexecution/v1test/remote_execution.proto"; +import "google/rpc/status.proto"; + +option java_package = "com.google.devtools.build.lib.remote.logging"; + +// A single log entry for gRPC calls related to remote execution. +message LogEntry { + // Request metadata included in call. + google.devtools.remoteexecution.v1test.RequestMetadata metadata = 1; + + // Status of the call on close. + google.rpc.Status status = 2; + + // Full method name of the method called as returned from + // io.grpc.MethodDescriptor.getFullMethodName() (i.e. in format + // $FULL_SERVICE_NAME/$METHOD_NAME). + string method_name = 3; +} |