3737#include " src/shared/metadata/metadata_state.h"
3838#include " src/table_store/table/table_store.h"
3939
40+ #include " opentelemetry/proto/collector/logs/v1/logs_service.grpc.pb.h"
4041#include " opentelemetry/proto/collector/metrics/v1/metrics_service.grpc.pb.h"
4142#include " opentelemetry/proto/collector/trace/v1/trace_service.grpc.pb.h"
4243#include " src/carnot/carnotpb/carnot.grpc.pb.h"
@@ -54,6 +55,9 @@ using MetricsStubGenerator = std::function<
5455using TraceStubGenerator = std::function<
5556 std::unique_ptr<opentelemetry::proto::collector::trace::v1::TraceService::StubInterface>(
5657 const std::string& address, bool insecure)>;
58+ using LogsStubGenerator = std::function<
59+ std::unique_ptr<opentelemetry::proto::collector::logs::v1::LogsService::StubInterface>(
60+ const std::string& address, bool insecure)>;
5761
5862/* *
5963 * ExecState manages the execution state for a single query. A new one will
@@ -69,15 +73,16 @@ class ExecState {
6973 udf::Registry* func_registry, std::shared_ptr<table_store::TableStore> table_store,
7074 const ResultSinkStubGenerator& stub_generator,
7175 const MetricsStubGenerator& metrics_stub_generator,
72- const TraceStubGenerator& trace_stub_generator, const sole::uuid& query_id ,
73- udf::ModelPool* model_pool, GRPCRouter* grpc_router = nullptr ,
76+ const TraceStubGenerator& trace_stub_generator, const LogsStubGenerator& logs_stub_generator ,
77+ const sole::uuid& query_id, udf::ModelPool* model_pool, GRPCRouter* grpc_router = nullptr ,
7478 std::function<void (grpc::ClientContext*)> add_auth_func = [](grpc::ClientContext*) {},
7579 ExecMetrics* exec_metrics = nullptr )
7680 : func_registry_(func_registry),
7781 table_store_ (std::move(table_store)),
7882 stub_generator_(stub_generator),
7983 metrics_stub_generator_(metrics_stub_generator),
8084 trace_stub_generator_(trace_stub_generator),
85+ logs_stub_generator_(logs_stub_generator),
8186 query_id_(query_id),
8287 model_pool_(model_pool),
8388 grpc_router_(grpc_router),
@@ -157,6 +162,19 @@ class ExecState {
157162 trace_service_stubs_pool_.push_back (std::move (stub_));
158163 return raw;
159164 }
165+ opentelemetry::proto::collector::logs::v1::LogsService::StubInterface* LogsServiceStub (
166+ const std::string& remote_address, bool insecure) {
167+ if (logs_service_stub_map_.contains (remote_address)) {
168+ return logs_service_stub_map_[remote_address];
169+ }
170+ std::unique_ptr<opentelemetry::proto::collector::logs::v1::LogsService::StubInterface> stub_ =
171+ logs_stub_generator_ (remote_address, insecure);
172+ opentelemetry::proto::collector::logs::v1::LogsService::StubInterface* raw = stub_.get ();
173+ logs_service_stub_map_[remote_address] = raw;
174+ // Push to the pool.
175+ logs_service_stubs_pool_.push_back (std::move (stub_));
176+ return raw;
177+ }
160178
161179 udf::ScalarUDFDefinition* GetScalarUDFDefinition (int64_t id) { return id_to_scalar_udf_map_[id]; }
162180
@@ -209,6 +227,7 @@ class ExecState {
209227 const ResultSinkStubGenerator stub_generator_;
210228 const MetricsStubGenerator metrics_stub_generator_;
211229 const TraceStubGenerator trace_stub_generator_;
230+ const LogsStubGenerator logs_stub_generator_;
212231 std::map<int64_t , udf::ScalarUDFDefinition*> id_to_scalar_udf_map_;
213232 std::map<int64_t , udf::UDADefinition*> id_to_uda_map_;
214233 const sole::uuid query_id_;
@@ -239,6 +258,15 @@ class ExecState {
239258 absl::flat_hash_map<std::string,
240259 opentelemetry::proto::collector::trace::v1::TraceService::StubInterface*>
241260 trace_service_stub_map_;
261+
262+ std::vector<
263+ std::unique_ptr<opentelemetry::proto::collector::logs::v1::LogsService::StubInterface>>
264+ logs_service_stubs_pool_;
265+ absl::flat_hash_map<std::string,
266+ opentelemetry::proto::collector::logs::v1::LogsService::StubInterface*>
267+ logs_service_stub_map_;
268+
269+ types::Time64NSValue time_now_;
242270};
243271
244272} // namespace exec
0 commit comments