This is an automated email from the ASF dual-hosted git repository.
astitcher pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git
The following commit(s) were added to refs/heads/main by this push:
new 1ad098c07 Replace jaeger exporter with otlp exporter
1ad098c07 is described below
commit 1ad098c0703276f7a013a16b208f2af4fd86f993
Author: Rakhi Kumari <[email protected]>
AuthorDate: Fri Apr 28 17:21:23 2023 +0530
Replace jaeger exporter with otlp exporter
---
.github/workflows/build.yml | 2 +-
c/src/tls/openssl.c | 38 ++++++++++++++------------------------
ci/otel.sh | 12 ++++++------
cpp/CMakeLists.txt | 3 +++
cpp/examples/CMakeLists.txt | 8 +++-----
cpp/examples/tracing_client.cpp | 12 +++++-------
cpp/examples/tracing_server.cpp | 13 +++++++------
cpp/tests.cmake | 2 +-
8 files changed, 40 insertions(+), 50 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index e45f36e8b..99963e202 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -64,7 +64,7 @@ jobs:
- name: OTel build/install
if: runner.os == 'Linux'
working-directory: ${{github.workspace}}
- run: sudo sh ./ci/otel.sh
+ run: sudo sh ./ci/otel.sh || echo "Couldn't build Opentelemetry,
continuing..."
shell: bash
- name: cmake configure
working-directory: ${{env.BuildDir}}
diff --git a/c/src/tls/openssl.c b/c/src/tls/openssl.c
index 0c3b6bd66..8c96a35d6 100644
--- a/c/src/tls/openssl.c
+++ b/c/src/tls/openssl.c
@@ -2112,8 +2112,7 @@ static void decrypt(pn_tls_t *tls) {
pbuffer_t *pending = next_decrypt_pending(tls);
bool peek_needed = false;
- bool decrypt_done = false;
- while (!decrypt_done) {
+ while (true) {
if (tls->pn_tls_err)
return;
@@ -2167,32 +2166,23 @@ static void decrypt(pn_tls_t *tls) {
}
// Done if not possible to move any more bytes from input to output bufs
- if ( (tls->dec_closed || !pending || tls->dec_wblocked) /* write side */ &&
- (!curr_result || tls->dec_rblocked) ) /* read side */ {
- decrypt_done = true;
- if (peek_needed && !tls->pn_tls_err && !tls->dec_closed) {
- // Set dec_rpending.
- // Make OpenSSL process input to at least first decrypted byte (if any)
- char unused;
- int pcount = SSL_peek(tls->ssl, &unused, 1);
- tls->dec_rpending = (pcount == 1);
- if (pcount <= 0) {
- check_error_reason(tls, pcount);
- }
+ if (tls->dec_closed) break;
+ if ((!pending || tls->dec_wblocked) // write side
+ && (!curr_result || tls->dec_rblocked)) // read side
+ break;
+ }
- // Peek may have made more room in buffer (i.e. handshake followed by
large
- // incomplete application record and dec_wblocked). If we did not
process an
- // application record, we must have processed at least one non-app
record.
- // No longer write blocked after peek. PROTON-2736.
- if (!tls->dec_rpending && tls->dec_wblocked) {
- decrypt_done = false;
- tls->dec_wblocked = false;
- }
- }
+ if (!tls->pn_tls_err && peek_needed) {
+ // Make OpenSSL examine the next buffered TLS record (if exists and
complete)
+ char unused;
+ int pcount = SSL_peek(tls->ssl, &unused, 1);
+ tls->dec_rpending = (pcount == 1);
+ if (pcount <= 0) {
+ check_error_reason(tls, pcount);
}
}
- if (!tls->handshake_ok && SSL_do_handshake(tls->ssl) == 1) {
+ if (!tls->pn_tls_err && !tls->handshake_ok && SSL_do_handshake(tls->ssl) ==
1) {
tls->handshake_ok = true;
tls->can_shutdown = true;
}
diff --git a/ci/otel.sh b/ci/otel.sh
index cc539c6cb..3e86a79c8 100644
--- a/ci/otel.sh
+++ b/ci/otel.sh
@@ -23,13 +23,13 @@ sudo apt-get update
# OTel dependencies
-sudo apt-get install libcurl4-openssl-dev
-sudo apt-get install libboost-locale-dev
-sudo apt-get install libthrift-dev
+sudo apt-get install libgtest-dev libgmock-dev libbenchmark-dev \
+ libcurl4-openssl-dev \
+ libprotobuf-dev protobuf-compiler
# Clone OpenTelemetry-cpp
-git clone -b v1.6.1 --recursive
https://github.com/open-telemetry/opentelemetry-cpp
+git clone -b v1.9.1 --recurse-submodules
https://github.com/open-telemetry/opentelemetry-cpp
# Build/Install OpenTelemetry-cpp
@@ -37,7 +37,7 @@ cd opentelemetry-cpp
mkdir build
cd build
-cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=ON
-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_TESTING=OFF
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_JAEGER=ON
-cmake --build . --target all
+cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=ON
-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_TESTING=OFF -DWITH_OTLP=ON
-DWITH_OTLP_HTTP=ON -DWITH_OTLP_GRPC=OFF
+cmake --build . --target all --config RelWithDebInfo
sudo cmake --install . --config RelWithDebInfo
cd ../..
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 4127b2f3e..4ef8a71d1 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -40,6 +40,9 @@ endif()
find_package(opentelemetry-cpp)
option(ENABLE_OPENTELEMETRYCPP "Use opentelemetry for distributed tracing"
${OPENTELEMETRY-CPP_FOUND})
if (ENABLE_OPENTELEMETRYCPP)
+ # This is a workaround because the otlp exporter requires protobuf but most
packaged versions
+ # of protobuf don't ship cmake config yet. We use this exporter in our
examples
+ find_package(Protobuf REQUIRED)
set(TRACING_SRC src/tracing_opentelemetry.cpp src/tracing_stub.cpp)
set(TRACING_LIBS opentelemetry-cpp::trace)
else()
diff --git a/cpp/examples/CMakeLists.txt b/cpp/examples/CMakeLists.txt
index 328e71ced..0fe54f21d 100644
--- a/cpp/examples/CMakeLists.txt
+++ b/cpp/examples/CMakeLists.txt
@@ -58,11 +58,9 @@ endforeach()
# Tracing examples
if (ENABLE_OPENTELEMETRYCPP)
-foreach(example
- tracing_client
- tracing_server)
- add_executable(${example} ${example}.cpp)
- target_link_libraries(${example} Proton::cpp opentelemetry-cpp::trace
opentelemetry-cpp::jaeger_trace_exporter
opentelemetry-cpp::ostream_span_exporter)
+ foreach(example tracing_client tracing_server)
+ add_executable(${example} ${example}.cpp)
+ target_link_libraries(${example} Proton::cpp opentelemetry-cpp::trace
opentelemetry-cpp::otlp_http_exporter)
endforeach()
endif()
diff --git a/cpp/examples/tracing_client.cpp b/cpp/examples/tracing_client.cpp
index 93f1239fc..471c61c7a 100644
--- a/cpp/examples/tracing_client.cpp
+++ b/cpp/examples/tracing_client.cpp
@@ -42,8 +42,7 @@
#include <opentelemetry/sdk/trace/tracer_provider.h>
#include <opentelemetry/trace/provider.h>
#include <opentelemetry/nostd/unique_ptr.h>
-#include <opentelemetry/exporters/jaeger/jaeger_exporter.h>
-#include <opentelemetry/exporters/ostream/span_exporter.h>
+#include <opentelemetry/exporters/otlp/otlp_http_exporter.h>
#include <opentelemetry/sdk/resource/resource.h>
#include <opentelemetry/trace/span.h>
@@ -150,11 +149,10 @@ int main(int argc, char **argv) {
// 2. Set the global trace provider.
// 3. Call proton::initOpenTelemetryTracer().
- opentelemetry::exporter::jaeger::JaegerExporterOptions opts;
-
- // Initialize Jaeger Exporter
- std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> exporter =
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter>(
- new opentelemetry::exporter::jaeger::JaegerExporter(opts));
+ // Initialize otlp http Exporter
+ opentelemetry::exporter::otlp::OtlpHttpExporterOptions options;
+ options.url = "localhost:4318";
+ auto exporter =
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter>(new
opentelemetry::exporter::otlp::OtlpHttpExporter(options));
// Set service-name
auto resource_attributes =
opentelemetry::sdk::resource::ResourceAttributes
diff --git a/cpp/examples/tracing_server.cpp b/cpp/examples/tracing_server.cpp
index aa6a6adb4..f0d863838 100644
--- a/cpp/examples/tracing_server.cpp
+++ b/cpp/examples/tracing_server.cpp
@@ -38,14 +38,14 @@
#include <opentelemetry/sdk/trace/tracer_provider.h>
#include <opentelemetry/trace/provider.h>
#include <opentelemetry/nostd/unique_ptr.h>
-#include <opentelemetry/exporters/jaeger/jaeger_exporter.h>
-#include <opentelemetry/exporters/ostream/span_exporter.h>
+#include <opentelemetry/exporters/otlp/otlp_http_exporter.h>
#include <opentelemetry/sdk/resource/resource.h>
#include <opentelemetry/trace/span.h>
#include <opentelemetry/trace/tracer.h>
#include <opentelemetry/trace/context.h>
+
opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider>
provider;
class server : public proton::messaging_handler {
@@ -111,10 +111,11 @@ int main(int argc, char **argv) {
// 2. Set the global trace provider
// 3. Call proton::initOpenTelemetryTracer()
- // Initialize Jaeger Exporter
- opentelemetry::exporter::jaeger::JaegerExporterOptions opts;
- std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> exporter =
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter>(
- new opentelemetry::exporter::jaeger::JaegerExporter(opts));
+ // Initialize otlp http Exporter
+ opentelemetry::exporter::otlp::OtlpHttpExporterOptions options;
+ options.url = "localhost:4318";
+ auto exporter =
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter>(new
opentelemetry::exporter::otlp::OtlpHttpExporter(options));
+
// Set service-name
auto resource_attributes =
opentelemetry::sdk::resource::ResourceAttributes
diff --git a/cpp/tests.cmake b/cpp/tests.cmake
index fd515eabf..a13a2e1e4 100644
--- a/cpp/tests.cmake
+++ b/cpp/tests.cmake
@@ -73,7 +73,7 @@ endif()
if (ENABLE_OPENTELEMETRYCPP)
add_cpp_test(tracing_test)
- target_link_libraries(tracing_test opentelemetry-cpp::trace
opentelemetry-cpp::jaeger_trace_exporter
opentelemetry-cpp::ostream_span_exporter)
+ target_link_libraries(tracing_test opentelemetry-cpp::trace
opentelemetry-cpp::ostream_span_exporter)
endif()
# TODO aconway 2018-10-31: Catch2 tests
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]