提交 25956aab 编写于 作者: H heyanlong

fix bugs

上级 87512724
...@@ -619,6 +619,7 @@ static void request_init() { ...@@ -619,6 +619,7 @@ static void request_init() {
generate_context(); generate_context();
add_assoc_long(&SKYWALKING_G(UpstreamSegment), "application_instance", application_instance); add_assoc_long(&SKYWALKING_G(UpstreamSegment), "application_instance", application_instance);
add_assoc_long(&SKYWALKING_G(UpstreamSegment), "pid", getppid());
add_assoc_long(&SKYWALKING_G(UpstreamSegment), "application_id", application_id); add_assoc_long(&SKYWALKING_G(UpstreamSegment), "application_id", application_id);
add_assoc_long(&SKYWALKING_G(UpstreamSegment), "version", SKYWALKING_G(version)); add_assoc_long(&SKYWALKING_G(UpstreamSegment), "version", SKYWALKING_G(version));
SKY_ADD_ASSOC_ZVAL(&SKYWALKING_G(UpstreamSegment), "segment"); SKY_ADD_ASSOC_ZVAL(&SKYWALKING_G(UpstreamSegment), "segment");
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <cstdio> #include <cstdio>
#include <thread> #include <thread>
#include "json.hpp" #include "json.hpp"
#include <signal.h>
#include <grpcpp/grpcpp.h> #include <grpcpp/grpcpp.h>
#include <google/protobuf/util/json_util.h> #include <google/protobuf/util/json_util.h>
...@@ -46,7 +47,7 @@ using json = nlohmann::json; ...@@ -46,7 +47,7 @@ using json = nlohmann::json;
class GreeterClient { class GreeterClient {
public: public:
GreeterClient(std::shared_ptr<Channel> channel) GreeterClient(std::shared_ptr<Channel> channel)
: stub_(TraceSegmentService::NewStub(channel)) {} : stub_(TraceSegmentService::NewStub(channel)), discoveryStub_(InstanceDiscoveryService::NewStub(channel)) {}
int collect(UpstreamSegment request) { int collect(UpstreamSegment request) {
...@@ -70,8 +71,24 @@ public: ...@@ -70,8 +71,24 @@ public:
return 1; return 1;
} }
int heartbeat(ApplicationInstanceHeartbeat request) {
Downstream reply;
ClientContext context;
Status status = discoveryStub_->heartbeat(&context, request, &reply);
if (status.ok()) {
std::cout << "send heartbeat ok!" << std::endl;
} else {
std::cout << "send heartbeat error!" << status.error_message() << std::endl;
}
return 1;
}
private: private:
std::unique_ptr<TraceSegmentService::Stub> stub_; std::unique_ptr<TraceSegmentService::Stub> stub_;
std::unique_ptr<InstanceDiscoveryService::Stub> discoveryStub_;
}; };
int main(int argc, char **argv) { int main(int argc, char **argv) {
...@@ -94,6 +111,8 @@ int main(int argc, char **argv) { ...@@ -94,6 +111,8 @@ int main(int argc, char **argv) {
GreeterClient greeter(grpc::CreateChannel(argv[1], grpc::InsecureChannelCredentials())); GreeterClient greeter(grpc::CreateChannel(argv[1], grpc::InsecureChannelCredentials()));
std::map<int, int> appInstances;
std::map<int, long> sendTime;
while (1) { while (1) {
...@@ -104,6 +123,24 @@ int main(int argc, char **argv) { ...@@ -104,6 +123,24 @@ int main(int argc, char **argv) {
return 0; return 0;
} }
// heartbeat
for (auto &i: appInstances) {
struct timeval tv;
gettimeofday(&tv, NULL);
if(tv.tv_sec - sendTime[i.first] > 40) {
if (0 == kill(appInstances[i.first], 0)) {
sendTime[i.first] = tv.tv_sec;
std::cout << "send heartbeat ..." << std::endl;
ApplicationInstanceHeartbeat request;
request.set_applicationinstanceid(i.first);
request.set_heartbeattime(tv.tv_sec*1000 + tv.tv_usec/1000);
greeter.heartbeat(request);
}
}
}
while ((dir = readdir(dp)) != NULL) { while ((dir = readdir(dp)) != NULL) {
if (strcmp(".", dir->d_name) == 0 || strcmp("..", dir->d_name) == 0) { if (strcmp(".", dir->d_name) == 0 || strcmp("..", dir->d_name) == 0) {
continue; continue;
...@@ -148,6 +185,12 @@ int main(int argc, char **argv) { ...@@ -148,6 +185,12 @@ int main(int argc, char **argv) {
traceResult, std::regex("([\\-0-9]+)\\.(\\d+)\\.(\\d+)")); traceResult, std::regex("([\\-0-9]+)\\.(\\d+)\\.(\\d+)"));
if (valid) { if (valid) {
// add to map
if(!appInstances[j["application_instance"]]) {
appInstances[j["application_instance"]] = j["pid"];
sendTime[j["application_instance"]] = 0;
}
for (int i = 0; i < j["globalTraceIds"].size(); i++) { for (int i = 0; i < j["globalTraceIds"].size(); i++) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册