feat: frontend server (#242)

* feat/frontend-server
 ### Add Frontend Service Protocol Buffers
 - Introduced a new Protocol Buffers file `server.proto` in `proto/greptime/v1/frontend/`.
 - Defined the `Frontend` service with an RPC method `ListProcess`.
 - Added message definitions for `ListProcessRequest`, `ListProcessResponse`, and `ProcessInfo`.
 - Included fields for process ID, catalog, schema, query, start timestamp, and client information in `ProcessInfo`.

Signed-off-by: Lei, HUANG <lhuang@greptime.com>

* feat/frontend-server:
 ### Update `server.proto` in `greptime/v1/frontend`

 - Added a newline at the end of the `ProcessInfo` message definition in `server.proto`.

Signed-off-by: Lei, HUANG <lhuang@greptime.com>

* feat/frontend-server:
 Add new proto file to build script

 - Updated `build.rs` to include `proto/greptime/v1/frontend/server.proto` in the build process.

Signed-off-by: Lei, HUANG <lhuang@greptime.com>

* add frontend mod

Signed-off-by: Lei, HUANG <lhuang@greptime.com>

* feat/frontend-server:
 **Add Frontend Info to ProcessInfo**

 - Updated `server.proto` to include a new field `frontend` in the `ProcessInfo` message, providing additional frontend information for processes.

Signed-off-by: Lei, HUANG <lhuang@greptime.com>

* feat/frontend-server:
 Update `server.proto` to modify data types and field names

 - Changed the data type of `id` from `uint64` to `string` in `ProcessInfo`.
 - Renamed field `schema` to `schemas` in `ProcessInfo`.

Signed-off-by: Lei, HUANG <lhuang@greptime.com>

* -

Signed-off-by: Lei, HUANG <lhuang@greptime.com>

* add catalog to ListProcessRequest

---------

Signed-off-by: Lei, HUANG <lhuang@greptime.com>
This commit is contained in:
Lei, HUANG
2025-06-12 10:45:14 +08:00
committed by GitHub
parent 454c52634c
commit 5f6119ac79
9 changed files with 5585 additions and 0 deletions
+1
View File
@@ -67,6 +67,7 @@ fn main() {
"proto/greptime/v1/meta/procedure.proto",
"proto/greptime/v1/region/server.proto",
"proto/greptime/v1/flow/server.proto",
"proto/greptime/v1/frontend/server.proto",
"proto/greptime/v1/index/bloom_filter.proto",
"proto/greptime/v1/index/inverted_index.proto",
"proto/prometheus/remote/remote.proto",
@@ -0,0 +1,90 @@
// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: greptime/v1/frontend/server.proto
#include "greptime/v1/frontend/server.pb.h"
#include "greptime/v1/frontend/server.grpc.pb.h"
#include <functional>
#include <grpcpp/support/async_stream.h>
#include <grpcpp/support/async_unary_call.h>
#include <grpcpp/impl/channel_interface.h>
#include <grpcpp/impl/client_unary_call.h>
#include <grpcpp/support/client_callback.h>
#include <grpcpp/support/message_allocator.h>
#include <grpcpp/support/method_handler.h>
#include <grpcpp/impl/rpc_service_method.h>
#include <grpcpp/support/server_callback.h>
#include <grpcpp/impl/codegen/server_callback_handlers.h>
#include <grpcpp/server_context.h>
#include <grpcpp/impl/service_type.h>
#include <grpcpp/support/sync_stream.h>
namespace greptime {
namespace v1 {
namespace frontend {
static const char* Frontend_method_names[] = {
"/greptime.v1.frontend.Frontend/ListProcess",
};
std::unique_ptr< Frontend::Stub> Frontend::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) {
(void)options;
std::unique_ptr< Frontend::Stub> stub(new Frontend::Stub(channel, options));
return stub;
}
Frontend::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options)
: channel_(channel), rpcmethod_ListProcess_(Frontend_method_names[0], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
{}
::grpc::Status Frontend::Stub::ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::greptime::v1::frontend::ListProcessResponse* response) {
return ::grpc::internal::BlockingUnaryCall< ::greptime::v1::frontend::ListProcessRequest, ::greptime::v1::frontend::ListProcessResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_ListProcess_, context, request, response);
}
void Frontend::Stub::async::ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response, std::function<void(::grpc::Status)> f) {
::grpc::internal::CallbackUnaryCall< ::greptime::v1::frontend::ListProcessRequest, ::greptime::v1::frontend::ListProcessResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ListProcess_, context, request, response, std::move(f));
}
void Frontend::Stub::async::ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response, ::grpc::ClientUnaryReactor* reactor) {
::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ListProcess_, context, request, response, reactor);
}
::grpc::ClientAsyncResponseReader< ::greptime::v1::frontend::ListProcessResponse>* Frontend::Stub::PrepareAsyncListProcessRaw(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) {
return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::greptime::v1::frontend::ListProcessResponse, ::greptime::v1::frontend::ListProcessRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_ListProcess_, context, request);
}
::grpc::ClientAsyncResponseReader< ::greptime::v1::frontend::ListProcessResponse>* Frontend::Stub::AsyncListProcessRaw(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) {
auto* result =
this->PrepareAsyncListProcessRaw(context, request, cq);
result->StartCall();
return result;
}
Frontend::Service::Service() {
AddMethod(new ::grpc::internal::RpcServiceMethod(
Frontend_method_names[0],
::grpc::internal::RpcMethod::NORMAL_RPC,
new ::grpc::internal::RpcMethodHandler< Frontend::Service, ::greptime::v1::frontend::ListProcessRequest, ::greptime::v1::frontend::ListProcessResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
[](Frontend::Service* service,
::grpc::ServerContext* ctx,
const ::greptime::v1::frontend::ListProcessRequest* req,
::greptime::v1::frontend::ListProcessResponse* resp) {
return service->ListProcess(ctx, req, resp);
}, this)));
}
Frontend::Service::~Service() {
}
::grpc::Status Frontend::Service::ListProcess(::grpc::ServerContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response) {
(void) context;
(void) request;
(void) response;
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
} // namespace greptime
} // namespace v1
} // namespace frontend
+262
View File
@@ -0,0 +1,262 @@
// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: greptime/v1/frontend/server.proto
// Original file comments:
// Copyright 2023 Greptime Team
//
// 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.
//
#ifndef GRPC_greptime_2fv1_2ffrontend_2fserver_2eproto__INCLUDED
#define GRPC_greptime_2fv1_2ffrontend_2fserver_2eproto__INCLUDED
#include "greptime/v1/frontend/server.pb.h"
#include <functional>
#include <grpcpp/generic/async_generic_service.h>
#include <grpcpp/support/async_stream.h>
#include <grpcpp/support/async_unary_call.h>
#include <grpcpp/support/client_callback.h>
#include <grpcpp/client_context.h>
#include <grpcpp/completion_queue.h>
#include <grpcpp/support/message_allocator.h>
#include <grpcpp/support/method_handler.h>
#include <grpcpp/impl/codegen/proto_utils.h>
#include <grpcpp/impl/rpc_method.h>
#include <grpcpp/support/server_callback.h>
#include <grpcpp/impl/codegen/server_callback_handlers.h>
#include <grpcpp/server_context.h>
#include <grpcpp/impl/service_type.h>
#include <grpcpp/impl/codegen/status.h>
#include <grpcpp/support/stub_options.h>
#include <grpcpp/support/sync_stream.h>
namespace greptime {
namespace v1 {
namespace frontend {
class Frontend final {
public:
static constexpr char const* service_full_name() {
return "greptime.v1.frontend.Frontend";
}
class StubInterface {
public:
virtual ~StubInterface() {}
// List all running processes on frontend.
virtual ::grpc::Status ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::greptime::v1::frontend::ListProcessResponse* response) = 0;
std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::greptime::v1::frontend::ListProcessResponse>> AsyncListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::greptime::v1::frontend::ListProcessResponse>>(AsyncListProcessRaw(context, request, cq));
}
std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::greptime::v1::frontend::ListProcessResponse>> PrepareAsyncListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::greptime::v1::frontend::ListProcessResponse>>(PrepareAsyncListProcessRaw(context, request, cq));
}
class async_interface {
public:
virtual ~async_interface() {}
// List all running processes on frontend.
virtual void ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response, std::function<void(::grpc::Status)>) = 0;
virtual void ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
};
typedef class async_interface experimental_async_interface;
virtual class async_interface* async() { return nullptr; }
class async_interface* experimental_async() { return async(); }
private:
virtual ::grpc::ClientAsyncResponseReaderInterface< ::greptime::v1::frontend::ListProcessResponse>* AsyncListProcessRaw(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) = 0;
virtual ::grpc::ClientAsyncResponseReaderInterface< ::greptime::v1::frontend::ListProcessResponse>* PrepareAsyncListProcessRaw(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) = 0;
};
class Stub final : public StubInterface {
public:
Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
::grpc::Status ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::greptime::v1::frontend::ListProcessResponse* response) override;
std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::greptime::v1::frontend::ListProcessResponse>> AsyncListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::greptime::v1::frontend::ListProcessResponse>>(AsyncListProcessRaw(context, request, cq));
}
std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::greptime::v1::frontend::ListProcessResponse>> PrepareAsyncListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) {
return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::greptime::v1::frontend::ListProcessResponse>>(PrepareAsyncListProcessRaw(context, request, cq));
}
class async final :
public StubInterface::async_interface {
public:
void ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response, std::function<void(::grpc::Status)>) override;
void ListProcess(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
private:
friend class Stub;
explicit async(Stub* stub): stub_(stub) { }
Stub* stub() { return stub_; }
Stub* stub_;
};
class async* async() override { return &async_stub_; }
private:
std::shared_ptr< ::grpc::ChannelInterface> channel_;
class async async_stub_{this};
::grpc::ClientAsyncResponseReader< ::greptime::v1::frontend::ListProcessResponse>* AsyncListProcessRaw(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) override;
::grpc::ClientAsyncResponseReader< ::greptime::v1::frontend::ListProcessResponse>* PrepareAsyncListProcessRaw(::grpc::ClientContext* context, const ::greptime::v1::frontend::ListProcessRequest& request, ::grpc::CompletionQueue* cq) override;
const ::grpc::internal::RpcMethod rpcmethod_ListProcess_;
};
static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
class Service : public ::grpc::Service {
public:
Service();
virtual ~Service();
// List all running processes on frontend.
virtual ::grpc::Status ListProcess(::grpc::ServerContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response);
};
template <class BaseClass>
class WithAsyncMethod_ListProcess : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
public:
WithAsyncMethod_ListProcess() {
::grpc::Service::MarkMethodAsync(0);
}
~WithAsyncMethod_ListProcess() override {
BaseClassMustBeDerivedFromService(this);
}
// disable synchronous version of this method
::grpc::Status ListProcess(::grpc::ServerContext* /*context*/, const ::greptime::v1::frontend::ListProcessRequest* /*request*/, ::greptime::v1::frontend::ListProcessResponse* /*response*/) override {
abort();
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
void RequestListProcess(::grpc::ServerContext* context, ::greptime::v1::frontend::ListProcessRequest* request, ::grpc::ServerAsyncResponseWriter< ::greptime::v1::frontend::ListProcessResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
}
};
typedef WithAsyncMethod_ListProcess<Service > AsyncService;
template <class BaseClass>
class WithCallbackMethod_ListProcess : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
public:
WithCallbackMethod_ListProcess() {
::grpc::Service::MarkMethodCallback(0,
new ::grpc::internal::CallbackUnaryHandler< ::greptime::v1::frontend::ListProcessRequest, ::greptime::v1::frontend::ListProcessResponse>(
[this](
::grpc::CallbackServerContext* context, const ::greptime::v1::frontend::ListProcessRequest* request, ::greptime::v1::frontend::ListProcessResponse* response) { return this->ListProcess(context, request, response); }));}
void SetMessageAllocatorFor_ListProcess(
::grpc::MessageAllocator< ::greptime::v1::frontend::ListProcessRequest, ::greptime::v1::frontend::ListProcessResponse>* allocator) {
::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
static_cast<::grpc::internal::CallbackUnaryHandler< ::greptime::v1::frontend::ListProcessRequest, ::greptime::v1::frontend::ListProcessResponse>*>(handler)
->SetMessageAllocator(allocator);
}
~WithCallbackMethod_ListProcess() override {
BaseClassMustBeDerivedFromService(this);
}
// disable synchronous version of this method
::grpc::Status ListProcess(::grpc::ServerContext* /*context*/, const ::greptime::v1::frontend::ListProcessRequest* /*request*/, ::greptime::v1::frontend::ListProcessResponse* /*response*/) override {
abort();
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
virtual ::grpc::ServerUnaryReactor* ListProcess(
::grpc::CallbackServerContext* /*context*/, const ::greptime::v1::frontend::ListProcessRequest* /*request*/, ::greptime::v1::frontend::ListProcessResponse* /*response*/) { return nullptr; }
};
typedef WithCallbackMethod_ListProcess<Service > CallbackService;
typedef CallbackService ExperimentalCallbackService;
template <class BaseClass>
class WithGenericMethod_ListProcess : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
public:
WithGenericMethod_ListProcess() {
::grpc::Service::MarkMethodGeneric(0);
}
~WithGenericMethod_ListProcess() override {
BaseClassMustBeDerivedFromService(this);
}
// disable synchronous version of this method
::grpc::Status ListProcess(::grpc::ServerContext* /*context*/, const ::greptime::v1::frontend::ListProcessRequest* /*request*/, ::greptime::v1::frontend::ListProcessResponse* /*response*/) override {
abort();
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
};
template <class BaseClass>
class WithRawMethod_ListProcess : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
public:
WithRawMethod_ListProcess() {
::grpc::Service::MarkMethodRaw(0);
}
~WithRawMethod_ListProcess() override {
BaseClassMustBeDerivedFromService(this);
}
// disable synchronous version of this method
::grpc::Status ListProcess(::grpc::ServerContext* /*context*/, const ::greptime::v1::frontend::ListProcessRequest* /*request*/, ::greptime::v1::frontend::ListProcessResponse* /*response*/) override {
abort();
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
void RequestListProcess(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
}
};
template <class BaseClass>
class WithRawCallbackMethod_ListProcess : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
public:
WithRawCallbackMethod_ListProcess() {
::grpc::Service::MarkMethodRawCallback(0,
new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
[this](
::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ListProcess(context, request, response); }));
}
~WithRawCallbackMethod_ListProcess() override {
BaseClassMustBeDerivedFromService(this);
}
// disable synchronous version of this method
::grpc::Status ListProcess(::grpc::ServerContext* /*context*/, const ::greptime::v1::frontend::ListProcessRequest* /*request*/, ::greptime::v1::frontend::ListProcessResponse* /*response*/) override {
abort();
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
virtual ::grpc::ServerUnaryReactor* ListProcess(
::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/) { return nullptr; }
};
template <class BaseClass>
class WithStreamedUnaryMethod_ListProcess : public BaseClass {
private:
void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
public:
WithStreamedUnaryMethod_ListProcess() {
::grpc::Service::MarkMethodStreamed(0,
new ::grpc::internal::StreamedUnaryHandler<
::greptime::v1::frontend::ListProcessRequest, ::greptime::v1::frontend::ListProcessResponse>(
[this](::grpc::ServerContext* context,
::grpc::ServerUnaryStreamer<
::greptime::v1::frontend::ListProcessRequest, ::greptime::v1::frontend::ListProcessResponse>* streamer) {
return this->StreamedListProcess(context,
streamer);
}));
}
~WithStreamedUnaryMethod_ListProcess() override {
BaseClassMustBeDerivedFromService(this);
}
// disable regular version of this method
::grpc::Status ListProcess(::grpc::ServerContext* /*context*/, const ::greptime::v1::frontend::ListProcessRequest* /*request*/, ::greptime::v1::frontend::ListProcessResponse* /*response*/) override {
abort();
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}
// replace default version of method with streamed unary
virtual ::grpc::Status StreamedListProcess(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::greptime::v1::frontend::ListProcessRequest,::greptime::v1::frontend::ListProcessResponse>* server_unary_streamer) = 0;
};
typedef WithStreamedUnaryMethod_ListProcess<Service > StreamedUnaryService;
typedef Service SplitStreamedService;
typedef WithStreamedUnaryMethod_ListProcess<Service > StreamedService;
};
} // namespace frontend
} // namespace v1
} // namespace greptime
#endif // GRPC_greptime_2fv1_2ffrontend_2fserver_2eproto__INCLUDED
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+51
View File
@@ -0,0 +1,51 @@
// Copyright 2023 Greptime Team
//
// 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 greptime.v1.frontend;
option java_package = "io.greptime.v1.frontend";
option java_outer_classname = "Server";
option go_package = "github.com/GreptimeTeam/greptime-proto/go/greptime/v1/frontend";
service Frontend {
// List all running processes on frontend.
rpc ListProcess(ListProcessRequest) returns (ListProcessResponse);
}
message ListProcessRequest {
string catalog = 1;
}
message ListProcessResponse {
repeated ProcessInfo processes = 1;
}
message ProcessInfo {
// ID.
uint64 id = 1;
// Catalog of process.
string catalog = 2;
// Involved schemas.
repeated string schemas = 3;
// Query string.
string query = 4;
// Start time.
int64 start_timestamp = 5;
// Client info.
string client = 6;
// Frontend info of process.
string frontend = 7;
}
+1
View File
@@ -19,6 +19,7 @@ use crate::v1::value::ValueData;
pub const GREPTIME_GRPC_DESC: &[u8] = tonic::include_file_descriptor_set!("greptime_grpc_desc");
pub mod flow;
pub mod frontend;
pub mod index;
pub mod meta;
pub mod region;
+15
View File
@@ -0,0 +1,15 @@
// Copyright 2023 Greptime Team
//
// 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.
tonic::include_proto!("greptime.v1.frontend");