Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added max async export support using separate AsyncBatchSpan/LogProcessor #1306

Merged
merged 11 commits into from
May 4, 2022

Conversation

DebajitDas
Copy link
Member

@DebajitDas DebajitDas commented Apr 1, 2022

Fixes #1239

Changes:

  1. Added separate asyncbatchspan/log processor as discussed.
  2. Added max async export support, where the number of running exports are tracked with unique id.
  3. If the running exports are busy and no callback is receieved, any new recordables are discarded.
  4. Added test case for AsyncShutdown if no callback is received. Shutdown should not block for ever.

Please provide a brief description of the changes here.

For significant contributions please make sure you have completed the following items:

  • CHANGELOG.md updated for non-trivial changes
  • Unit tests have been added
  • Changes in public API reviewed

@DebajitDas DebajitDas requested a review from a team April 1, 2022 08:59
std::move(exporter), 5, std::chrono::milliseconds(256), 5, is_async)));
provider->AddProcessor(std::unique_ptr<sdk::logs::LogProcessor>(
new sdk::logs::BatchLogProcessor(std::move(exporter), 5, std::chrono::milliseconds(256), 5
# ifdef ENABLE_ASYNC_EXPORT
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we add a CI build for ENABLE_ASYNC_EXPORT?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I will add on this PR

@DebajitDas DebajitDas changed the title Added max async export support [WIP] Added max async export support Apr 1, 2022
Copy link
Member

@owent owent left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are same problems between log processor and span processor.
Could you please add timeout mechanism for these two proccesors in case of the exporter miss the callback and add some tests about it to ensure the processors will not wait for ever?

@@ -236,45 +243,61 @@ void BatchLogProcessor::Export()
}
else
{
std::unique_ptr<AsyncExportData> export_data(new AsyncExportData());
export_data->recordables =
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we shouldn't save span of recordables here, it will be invalid after this function return.Also the std::unique_ptr<Recordable> in spans_arr may be moved into exporter after calling exporter_->Export and left all elements nullptr in it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, should we save any state for async export? If not, will atomic counter suffice to keep track of all running exports?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can't check which callback is missing or timeout, so we can't recover it if we only has the atomic counter.
According to open-telemetry/opentelemetry-specification#2434 (comment)_ and open-telemetry/opentelemetry-specification#2434, it's the responsibility of exporters to do the retry logic. I think we can just save a sequence or a id related to the callback , but not every recordable.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have one more query:
Lets assume max_async_export is set to 8. Now, no callbacks are received on all 8 async export calls. Now, what should we do before we make the 9th async export - Should we discard the recordables and do not make any export call ? What is your suggestion?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can just drop it, just like the sync mode.

Copy link
Member

@lalitb lalitb Apr 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to be clear of the question, if the max number of async requests is ongoing, and the circular queue is full, we should drop the incoming recordable ( as in sync mode).

if (is_export_async_)
{
std::unique_lock<std::mutex> lk(synchronization_data_->async_shutdown_m);
while (true)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we still need a indefinite loop to wait all running exports to finish in destructor? Or we may start to destroy a exporter when it's still running.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Waiting logic to wait on all running exports to finish is added in Shutdown function.

@@ -292,13 +315,6 @@ void BatchLogProcessor::NotifyCompletion(
synchronization_data->is_force_flush_notified.store(true, std::memory_order_release);
synchronization_data->force_flush_cv.notify_one();
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to call async_export_waker.notify_all() here, or all threads call Export and Shutdown will be blocked util timeout.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah will do this.

return export_data_storage_->running_async_exports.size() <= 0;
});

while (CleanUpGarbageAsyncData() == false)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we use async_export_waker to wait a event instead of busy wait here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you talking about async_export_waker.notify_all() to be called in other areas?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean while (CleanUpGarbageAsyncData() == false); is a busy wait. CleanUpGarbageAsyncData only lock async_export_data_m, and this lock has a very small critial section, it's almost busy wait when worker thread is exited when exporter is still exporting data in other thread.


for (int i = 0; i < num_logs; ++i)
{
if (i % 20 == 0)
{
std::this_thread::sleep_for(std::chrono::milliseconds(1));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need sleep here?I think it's better to use a condition_variable to get notify if we want to know when jobs are done and it's ready to send next round datas.
Sometimes the CI runner is slow and can not finish this job in 1 millisecond.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok will take care this.

@owent
Copy link
Member

owent commented Apr 1, 2022

@lalitb Could we add async-changes into .github/workflows/ci.yml ?

pull_request:
    branches: [ main, async-changes]

@lalitb
Copy link
Member

lalitb commented Apr 2, 2022

@lalitb Could we add async-changes into .github/workflows/ci.yml ?

pull_request:
    branches: [ main, async-changes]

Yes, we should add it, and can be removed once the feature branch is merged to main.

@owent
Copy link
Member

owent commented Apr 2, 2022

@lalitb Could we add async-changes into .github/workflows/ci.yml ?

pull_request:
    branches: [ main, async-changes]

Yes, we should add it, and can be removed once the feature branch is merged to main.

Thanks and I create #1309

void WaitForShutdownCompletion();
struct AsyncExportData
{
nostd::span<std::unique_ptr<Recordable>> recordables;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need a span of recordable here? It is just a reference and may get invalidated.

@DebajitDas DebajitDas changed the title [WIP] Added max async export support Added max async export support Apr 4, 2022
sudo ./ci/setup_ci_environment.sh
sudo ./ci/install_bazelisk.sh
- name: run tests
run: ./ci/do_ci.sh bazel.with_async_export
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you enable -DENABLE_ASYNC_EXPORT_PREVIEW for all jobs but left one without it?I think we also need benchmark,address sanitizer, thread sanitizer and so on for this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please point me to some examples to refer to for benchmark, address sanitizer and thread sanitizer for this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I missed something, bazel.asan, bazel.tsan and bazel.valgrind already enable async APIs now, but benchmark still use $BAZEL_OPTIONS, I think we should also use $BAZEL_OPTIONS_ASYNC.
And we should also add --copt=-DENABLE_ASYNC_EXPORT_PREVIEW or -DWITH_ASYNC_EXPORT_PREVIEW=ON into all actions in ci/do_ci.ps1, it's used on Windows.

sdk/src/logs/batch_log_processor.cc Outdated Show resolved Hide resolved
sdk/include/opentelemetry/sdk/trace/batch_span_processor.h Outdated Show resolved Hide resolved
@owent
Copy link
Member

owent commented Apr 4, 2022

@owent I have not added the test case of async forceflush when no callback is received. Because currently forceflush block indefinitely if no callback is recieved. It blocks at wait_result, because wait_result never becomes true. Need your help in Force Flush.

On my suggestion, we can use a LRU map to replace export_ids and export_ids_flag to resolve this problem. After calling Export(); in DoBackgroundWork(), we can peek all running but timeout exporting and force to call callback.

We can use list to store exporting id and the state to check if the callback already called(in case of we call callback in DoBackgroundWork() and then it be called again by exporters), and we can use id as key of a unordered_map and use the iterator of the list before as value to implement this LRU map,
here is a sample of lru_map in my project.

@DebajitDas
Copy link
Member Author

On my suggestion, we can use a LRU map to replace export_ids and export_ids_flag to resolve this problem. After calling Export(); in DoBackgroundWork(), we can peek all running but timeout exporting and force to call callback.

If we force call callback for all timed-out exports, we would free up the ids to be re-used by new exports. This way we would be allowing number of running exports > max_export_async. Do you have any thoughts on this?

@owent
Copy link
Member

owent commented Apr 4, 2022

On my suggestion, we can use a LRU map to replace export_ids and export_ids_flag to resolve this problem. After calling Export(); in DoBackgroundWork(), we can peek all running but timeout exporting and force to call callback.

If we force call callback for all timed-out exports, we would free up the ids to be re-used by new exports. This way we would be allowing number of running exports > max_export_async. Do you have any thoughts on this?

Maybe we can add a interface to notify exporter to abort timeout exporting? What your thought about it ?
@lalitb

@lalitb
Copy link
Member

lalitb commented Apr 5, 2022

Maybe we can add a interface to notify exporter to abort timeout exporting? What your thought about it ?
@lalitb

If there are max_export_async exports running forever, the processor should start ignoring the new exports. This is also the current behavior in the case of sequential exports. There may be underlying issues with the network, export endpoint, or the exporter logic, I don't think the processor should try to recover the situation. These are my view, but feel free to comment if they don't seem correct :)

@DebajitDas
Copy link
Member Author

Maybe we can add a interface to notify exporter to abort timeout exporting? What your thought about it ?
@lalitb

If there are max_export_async exports running forever, the processor should start ignoring the new exports. This is also the current behavior in the case of sequential exports. There may be underlying issues with the network, export endpoint, or the exporter logic, I don't think the processor should try to recover the situation. These are my view, but feel free to comment if they don't seem correct :)

Just to confirm, I am re-iterating what the behaviour is now in this PR

  1. In case of normal export calls, if all async exports are busy and no callbacks are recieved, any new exports would be discarded.
  2. In case of force-flush is being called and no callback is received, force-flush blocks indefinitely.
  3. In case shutdown or destructor is called, if any running exports do not return within timeout, shutdown will block till timeout and continue.

@lalitb
Copy link
Member

lalitb commented Apr 5, 2022

Just to confirm, I am re-iterating what the behaviour is now in this PR

  1. In case of normal export calls, if all async exports are busy and no callbacks are recieved, any new exports would be discarded.
  2. In case of force-flush is being called and no callback is received, force-flush blocks indefinitely.
  3. In case shutdown or destructor is called, if any running exports do not return within timeout, shutdown will block till timeout and continue.

Thanks for summarising - 1 and 3 look good to me. I need to check the force-flush code once again, but can't we make it return/fail (without changing the exporter interface) if exports don't return within the timeout. It should definitely not block indefinitely.

@DebajitDas
Copy link
Member Author

Just to confirm, I am re-iterating what the behaviour is now in this PR

  1. In case of normal export calls, if all async exports are busy and no callbacks are recieved, any new exports would be discarded.
  2. In case of force-flush is being called and no callback is received, force-flush blocks indefinitely.
  3. In case shutdown or destructor is called, if any running exports do not return within timeout, shutdown will block till timeout and continue.

Thanks for summarising - 1 and 3 look good to me. I need to check the force-flush code once again, but can't we make it return/fail (without changing the exporter interface) if exports don't return within the timeout. It should definitely not block indefinitely.

@owent I am not clear if there is any specific reason to keep ForceFlush blocking (even though there is timeout)? wait_result never becomes true even if timeout expires, without callback being called.

@lalitb
Copy link
Member

lalitb commented Apr 6, 2022

Just to confirm, I am re-iterating what the behaviour is now in this PR

  1. In case of normal export calls, if all async exports are busy and no callbacks are recieved, any new exports would be discarded.
  2. In case of force-flush is being called and no callback is received, force-flush blocks indefinitely.
  3. In case shutdown or destructor is called, if any running exports do not return within timeout, shutdown will block till timeout and continue.

Thanks for summarising - 1 and 3 look good to me. I need to check the force-flush code once again, but can't we make it return/fail (without changing the exporter interface) if exports don't return within the timeout. It should definitely not block indefinitely.

@owent I am not clear if there is any specific reason to keep ForceFlush blocking (even though there is timeout)? wait_result never becomes true even if timeout expires, without callback being called.

Even in the initial sync implementation for BatchSpanProcessor, force-flush block indefinitely, though specs clearly states it should abort/complete within the timeout. So seems we were never specs compliant :)

@DebajitDas
Copy link
Member Author

compliant

In that case, let me not touch ForceFlush for now in this PR. We can take up in separate PR to fix that. Do you agree?

@owent
Copy link
Member

owent commented Apr 6, 2022

compliant

In that case, let me not touch ForceFlush for now in this PR. We can take up in separate PR to fix that. Do you agree?

Agree. some exporters implement the timeout/abort while some do not, Ithink we can finish it in the future.

@lalitb
Copy link
Member

lalitb commented Apr 6, 2022

compliant

In that case, let me not touch ForceFlush for now in this PR. We can take up in separate PR to fix that. Do you agree?

Agree. some exporters implement the timeout/abort while some do not, Ithink we can finish it in the future.

Agree.

@codecov
Copy link

codecov bot commented Apr 6, 2022

Codecov Report

❗ No coverage uploaded for pull request base (async-changes@465158c). Click here to learn what that means.
The diff coverage is n/a.

Impacted file tree graph

@@               Coverage Diff                @@
##             async-changes    #1306   +/-   ##
================================================
  Coverage                 ?   91.46%           
================================================
  Files                    ?      220           
  Lines                    ?     8164           
  Branches                 ?        0           
================================================
  Hits                     ?     7466           
  Misses                   ?      698           
  Partials                 ?        0           

Copy link
Member

@owent owent left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@lalitb
Copy link
Member

lalitb commented Apr 6, 2022

LGTM

@owent There was a discussing with @DebajitDas on this PR in today's community meeting. We felt it would be better from maintainability prospective to introduce a separate AsyncBatchSpanProcessor / AsyncBatchLogProcessor and have the async changes for processor confined there. We can still have feature flag to enable/disable these two components. Let us know if that would be fine? We can afterwards see if similar thing can be done for Exporter.

@owent
Copy link
Member

owent commented Apr 7, 2022

LGTM

@owent There was a discussing with @DebajitDas on this PR in today's community meeting. We felt it would be better from maintainability prospective to introduce a separate AsyncBatchSpanProcessor / AsyncBatchLogProcessor and have the async changes for processor confined there. We can still have feature flag to enable/disable these two components. Let us know if that would be fine? We can afterwards see if similar thing can be done for Exporter.

That's fine. I think we need think about how to share codes with aync and async exporter by this way.

@DebajitDas DebajitDas changed the title Added max async export support Added max async export support using separate AsyncBatchSpan/LogProcessor Apr 14, 2022
Copy link
Member

@owent owent left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There a a lot similar code between async and sync processors and tests. Could we add some classes to maintain these codes instead of jusy copy them?

,
is_async
provider->AddProcessor(
std::unique_ptr<sdk::logs::LogProcessor>(new sdk::logs::AsyncBatchLogProcessor(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we create one test for AddProcessor and another for AsyncBatchLogProcessor, just like exporters/otlp/test/otlp_http_exporter_test.cc ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, done in the next PR

{
namespace logs
{
AsyncBatchLogProcessor::AsyncBatchLogProcessor(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can only remove this and only keep the constructor using const AsyncBatchLogProcessorOptions &options, just like AsyncBatchSpanProcessor. The similar constructor in BatchLogProcessor is just for compatibility.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, added in the PR

@DebajitDas
Copy link
Member Author

There a a lot similar code between async and sync processors and tests. Could we add some classes to maintain these codes instead of jusy copy them?

Can we make AsyncBatchSpanProcessor derived from BatchSpanProcessor ? This way we can reduce lots of duplicate code. What do you think?

@owent
Copy link
Member

owent commented Apr 19, 2022

There a a lot similar code between async and sync processors and tests. Could we add some classes to maintain these codes instead of jusy copy them?

Can we make AsyncBatchSpanProcessor derived from BatchSpanProcessor ? This way we can reduce lots of duplicate code. What do you think?

I think it's fine right now. AsyncBatchSpanProcessor has all members of BatchSpanProcessor in current implement.
What's your opinion about this way? @lalitb

@lalitb
Copy link
Member

lalitb commented Apr 19, 2022

I think it's fine right now. AsyncBatchSpanProcessor has all members of BatchSpanProcessor in current implement.
What's your opinion about this way? @lalitb

It looks me good idea to derive Async if that allows us to eliminate lots of duplicate code. Unless @owent you see any issue in this, will leave it to you to decide :)
I will be spending time over this weekend for in-depth review of exporter and processor changes.

@@ -77,21 +77,21 @@ class BatchLogProcessor : public LogProcessor
const BatchLogProcessorOptions &options);

/** Makes a new recordable **/
std::unique_ptr<Recordable> MakeRecordable() noexcept override;
virtual std::unique_ptr<Recordable> MakeRecordable() noexcept override;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should not add virtual keyword for overried methods. Clang will warning this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, will make the change.

* equal to max_queue_size.
*/
size_t max_export_batch_size = 512;
BatchSpanProcessorOptions options;
Copy link
Member

@owent owent Apr 20, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just want to discuss, is it simpiler to declare struct AsyncBatchSpanProcessorOptions : public BatchSpanProcessorOptions ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, this is much better.

Shutdown();
}
}
AsyncBatchLogProcessor::~AsyncBatchLogProcessor() {}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should shutdown here.If it's shutdown in destructor of base class. the AsyncBatchLogProcessor::Shutdown will not be called.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed

@@ -362,8 +145,8 @@ bool AsyncBatchLogProcessor::Shutdown(std::chrono::microseconds timeout) noexcep
GetWaitAdjustedTime(timeout, start_time);
// wait for all async exports to complete and return if timeout reached.
{
std::unique_lock<std::mutex> lock(synchronization_data_->async_export_data_m);
synchronization_data_->async_export_waker.wait_for(lock, timeout, [this] {
std::unique_lock<std::mutex> lock(export_data_storage_->async_export_data_m);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should loop wair_for scheduled_delay_millis_ in a loop until timeout is reached.When async_export_waker.notify_all() is called between predicate callback and the real lock operation.This may wait for ever.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not clear on this. Could you please elaborate on how this might wait forever or share some sample code which fixes this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just like BatchLogProcessor::ForceFlush at https:/DebajitDas/opentelemetry-cpp/blob/export-changes/sdk/src/logs/batch_log_processor.cc#L112.

The condition_variable::wait_for(...) implementation calls predicate callback and then lock API(pthread_mutex_lock for example). If condition_variable::notify_one() or condition_variable::notify_all() is call between callback and then lock API. Then this condition_variable will wait for timeout without notify any more, and timeout may be very large.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, for the clarification. I understood your concern here.
I re-looked into the BatchLogProcessor::ForceFlush at https:/DebajitDas/opentelemetry-cpp/blob/export-changes/sdk/src/logs/batch_log_processor.cc#L112. So it handles this case as follows:

  1. when the timeout is set as std::chrono::duration<Rep, Period>::max() or too large, we are waiting on conditiion variable for scheduled_delay_millis_ in loop untill the predicate is true.
  2. When the timeout is set as some finite value, we wait till timeout.

Now, if we introduce the above concept in Shutdown, then the predicate in case 1 above would never be true if no callback is called and hence it would block indefinitely. Is this valid then?

Copy link
Member

@owent owent Apr 25, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is the predicate counld be true, but the condition_variable may not be notified any more when shutdown.
Let's looks into the implement of wait_for in libstdc++ (GCC 11.2.0).

template<typename _Clock, typename _Duration, typename _Predicate>
bool wait_until(unique_lock<mutex>& __lock, const chrono::time_point<_Clock, _Duration>& __atime, _Predicate __p) {
  while (!__p())
    if (wait_until(__lock, __atime) == cv_status::timeout) // The real lock operation
      return __p();
  return true;
}

template<typename _Rep, typename _Period>
cv_status  wait_for(unique_lock<mutex>& __lock, const chrono::duration<_Rep, _Period>& __rtime) {
  using __dur = typename steady_clock::duration;
  return wait_until(__lock, steady_clock::now() + chrono::__detail::ceil<__dur>(__rtime));
}

And the threads run as below:

The thread call Shutdown() Background woker thread
while (!__p()) - __p() returns false
- export_data->export_ids.push(id);
- export_data->export_ids_flag[id - 1] = true; __p() should return true now
- export_data_storage->async_export_waker.notify_all(); notify_all() is just ignored because it not locked yet.
if (wait_until(__lock, __atime) == cv_status::timeout) - async_export_waker is locked now, and wait until __atime

What I mean is just let async_export_waker have a change to run __p() again and break this loop in this situation.
And this happened several times in CI jobswhen I pushed my first async version of OtlpHttpClient before.

@owent
Copy link
Member

owent commented Apr 21, 2022

BTW:

if(WITH_METRICS_PREVIEW)
  add_definitions(-DENABLE_METRICS_PREVIEW)
endif()

These scripts in CMakeLists.txt should be moved into api/CMakeLists.txt and be replaced by

if(WITH_METRICS_PREVIEW)
  target_compile_definitions(opentelemetry_api INTERFACE ENABLE_METRICS_PREVIEW)
endif()

Other options are already be moved in main branch. And we could merge from main some times later, could you please move ENABLE_METRICS_PREVIEW in this PR?

@DebajitDas
Copy link
Member Author

BTW:

if(WITH_METRICS_PREVIEW)
  add_definitions(-DENABLE_METRICS_PREVIEW)
endif()

These scripts in CMakeLists.txt should be moved into api/CMakeLists.txt and be replaced by

if(WITH_METRICS_PREVIEW)
  target_compile_definitions(opentelemetry_api INTERFACE ENABLE_METRICS_PREVIEW)
endif()

Other options are already be moved in main branch. And we could merge from main some times later, could you please move ENABLE_METRICS_PREVIEW in this PR?

You must be talking about moving WITH_ASYNC_EXPORT_PREVIEW instead.

@owent
Copy link
Member

owent commented Apr 22, 2022

BTW:

if(WITH_METRICS_PREVIEW)
  add_definitions(-DENABLE_METRICS_PREVIEW)
endif()

These scripts in CMakeLists.txt should be moved into api/CMakeLists.txt and be replaced by

if(WITH_METRICS_PREVIEW)
  target_compile_definitions(opentelemetry_api INTERFACE ENABLE_METRICS_PREVIEW)
endif()

Other options are already be moved in main branch. And we could merge from main some times later, could you please move ENABLE_METRICS_PREVIEW in this PR?

You must be talking about moving WITH_ASYNC_EXPORT_PREVIEW instead.

Yes, sorry for my mistake.

@owent owent mentioned this pull request Apr 28, 2022
3 tasks
Copy link
Member

@owent owent left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM now.

@lalitb lalitb merged commit c614258 into open-telemetry:async-changes May 4, 2022
owent added a commit to owent/opentelemetry-cpp that referenced this pull request Jun 7, 2022
commit c484d16
Merge: 0abf162 7e90dae
Author: WenTao Ou <[email protected]>
Date:   Tue Jun 7 10:57:25 2022 +0800

    Merge remote-tracking branch 'opentelemetry/main' into async-changes

    Signed-off-by: WenTao Ou <[email protected]>

    # Conflicts:
    #	CHANGELOG.md

commit 0abf162
Merge: cd3655f 5c8f476
Author: WenTao Ou <[email protected]>
Date:   Wed May 25 12:11:04 2022 +0800

    Merge remote-tracking branch 'opentelemetry/main' into merge_main_into_async-changes

commit cd3655f
Merge: d7b03e8 63803d1
Author: owent <[email protected]>
Date:   Fri May 20 14:28:31 2022 +0800

    Merge branch 'merge_async-changes_into_main' into merge_main_into_async-changes

    Signed-off-by: owent <[email protected]>

    # Conflicts:
    #	CHANGELOG.md
    #	CMakeLists.txt
    #	api/CMakeLists.txt
    #	api/include/opentelemetry/common/spin_lock_mutex.h
    #	ci/do_ci.ps1
    #	ci/do_ci.sh
    #	examples/common/metrics_foo_library/foo_library.cc
    #	examples/prometheus/prometheus.yml
    #	exporters/otlp/test/otlp_http_log_exporter_test.cc
    #	ext/src/http/client/curl/CMakeLists.txt

commit d7b03e8
Author: WenTao Ou <[email protected]>
Date:   Fri May 20 13:25:24 2022 +0800

    Merge main into async changes (open-telemetry#1411)

commit 0aebd6e
Author: WenTao Ou <[email protected]>
Date:   Mon May 16 23:26:41 2022 +0800

    Merge main into async changes (open-telemetry#1395)

commit 08a12b5
Author: WenTao Ou <[email protected]>
Date:   Thu May 12 00:51:48 2022 +0800

    Cocurrency otlp http session (open-telemetry#1317)

commit c614258
Author: DEBAJIT DAS <[email protected]>
Date:   Wed May 4 22:55:20 2022 +0530

     Added max async export support using separate AsyncBatchSpan/LogProcessor (open-telemetry#1306)

commit 465158c
Author: WenTao Ou <[email protected]>
Date:   Mon Apr 25 23:48:02 2022 +0800

    Merge `main` into `async-changes` (open-telemetry#1348)

    * install sdk config (open-telemetry#1273)

    * Bump actions/cache from 2 to 3 (open-telemetry#1277)

    * Add owent as an Approver (open-telemetry#1276)

    * add owent as reviewer

    * fix order

    * Disable benchmark action failure (open-telemetry#1284)

    * metrics exemplar round 1 (open-telemetry#1264)

    * [Metrics SDK] - fix spelling (AggregationTemporarily to AggregationTemporality) (open-telemetry#1288)

    * fix compilation error with protobuf 3.5 (open-telemetry#1289)

    * Fix span SetAttribute crash (open-telemetry#1283)

    * Synchronous Metric collection (Delta , Cumulative) (open-telemetry#1265)

    * Rename `http_client_curl` to `opentelemetry_http_client_curl` (open-telemetry#1301)

    Signed-off-by: owent <[email protected]>

    * Don't show coverage annotation for pull requests (open-telemetry#1304)

    * Implement periodic exporting metric reader (open-telemetry#1286)

    * Add `async-changes` branch to pull_request of github action (open-telemetry#1309)

    Signed-off-by: owent <[email protected]>

    * Add InstrumentationInfo and Resource to the metrics data to be exported. (open-telemetry#1299)

    * Excempt should be applied on issue instead of PR (open-telemetry#1316)

    * Bump codecov/codecov-action from 2.1.0 to 3 (open-telemetry#1318)

    * Move public definitions into `opentelemetry_api`. (open-telemetry#1314)

    Signed-off-by: owent <[email protected]>

    * Add building test without RTTI (open-telemetry#1294)

    * Remove implicitly deleted default constructor (open-telemetry#1267)

    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * [ETW Exporter] - ETW provider handle cleanup (open-telemetry#1322)

    * Bump actions/stale from 4 to 5 (open-telemetry#1323)

    * ostream metrics example (open-telemetry#1312)

    * Prepare v1.3.0 release (open-telemetry#1324)

    * Update yield logic for ARM processor (open-telemetry#1325)

    * Fix for open-telemetry#1292 (open-telemetry#1326)

    * Implement Merge and Diff operation for Histogram Aggregation (open-telemetry#1303)

    * fix metrics compiler warnings (open-telemetry#1328)

    * Replace deprecated googletest API (open-telemetry#1327)

    * Remove redundant tail / in CMake install (open-telemetry#1329)

    * dependencies image as artifact (open-telemetry#1333)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * metrics histogram example (open-telemetry#1330)

    * Link `opentelemetry_ext` with `opentelemetry_api` (open-telemetry#1336)

    * ostream metrics cmake (open-telemetry#1344)

    * Fix conflicts

    Signed-off-by: owent <[email protected]>

    * Using clang-format-10 to format codes(clang-format-14 has a different output)

    Signed-off-by: owent <[email protected]>

    Co-authored-by: Ehsan Saei <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Ben Landrum <[email protected]>
    Co-authored-by: jmanjon <[email protected]>

commit 73f3515
Author: WenTao Ou <[email protected]>
Date:   Wed Apr 6 15:41:42 2022 +0800

    Merge main into async changes (open-telemetry#1321)

commit ad3bdfe
Author: DEBAJIT DAS <[email protected]>
Date:   Thu Mar 31 09:56:24 2022 +0530

    Added feature flag for asynchronous export (open-telemetry#1295)

commit 15e7725
Author: WenTao Ou <[email protected]>
Date:   Tue Mar 29 13:09:11 2022 +0800

    Cocurrency otlp http session (open-telemetry#1281)

commit 729c2f8
Author: DEBAJIT DAS <[email protected]>
Date:   Tue Mar 22 23:47:14 2022 +0530

    Changing the type of callback function in Export function to std::function (open-telemetry#1278)

commit 6f53da3
Author: DEBAJIT DAS <[email protected]>
Date:   Mon Mar 21 19:31:51 2022 +0530

    Async callback Exporter to Processor changes  (open-telemetry#1275)

commit c3eaa9d
Author: WenTao Ou <[email protected]>
Date:   Mon Mar 21 14:41:51 2022 +0800

    Cocurrency otlp http session (open-telemetry#1274)
owent added a commit to owent/opentelemetry-cpp that referenced this pull request Jun 15, 2022
commit f357102
Author: WenTao Ou <[email protected]>
Date:   Wed Jun 15 22:40:39 2022 +0800

    Merge main into async changes (open-telemetry#1451)

    * install sdk config (open-telemetry#1273)

    * Bump actions/cache from 2 to 3 (open-telemetry#1277)

    * Add owent as an Approver (open-telemetry#1276)

    * add owent as reviewer

    * fix order

    * Disable benchmark action failure (open-telemetry#1284)

    * metrics exemplar round 1 (open-telemetry#1264)

    * [Metrics SDK] - fix spelling (AggregationTemporarily to AggregationTemporality) (open-telemetry#1288)

    * fix compilation error with protobuf 3.5 (open-telemetry#1289)

    * Fix span SetAttribute crash (open-telemetry#1283)

    * Synchronous Metric collection (Delta , Cumulative) (open-telemetry#1265)

    * Rename `http_client_curl` to `opentelemetry_http_client_curl` (open-telemetry#1301)

    Signed-off-by: owent <[email protected]>

    * Don't show coverage annotation for pull requests (open-telemetry#1304)

    * Implement periodic exporting metric reader (open-telemetry#1286)

    * Add `async-changes` branch to pull_request of github action (open-telemetry#1309)

    Signed-off-by: owent <[email protected]>

    * Add InstrumentationInfo and Resource to the metrics data to be exported. (open-telemetry#1299)

    * Excempt should be applied on issue instead of PR (open-telemetry#1316)

    * Bump codecov/codecov-action from 2.1.0 to 3 (open-telemetry#1318)

    * Move public definitions into `opentelemetry_api`. (open-telemetry#1314)

    Signed-off-by: owent <[email protected]>

    * Add building test without RTTI (open-telemetry#1294)

    * Remove implicitly deleted default constructor (open-telemetry#1267)

    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * [ETW Exporter] - ETW provider handle cleanup (open-telemetry#1322)

    * Bump actions/stale from 4 to 5 (open-telemetry#1323)

    * ostream metrics example (open-telemetry#1312)

    * Prepare v1.3.0 release (open-telemetry#1324)

    * Update yield logic for ARM processor (open-telemetry#1325)

    * Fix for open-telemetry#1292 (open-telemetry#1326)

    * Implement Merge and Diff operation for Histogram Aggregation (open-telemetry#1303)

    * fix metrics compiler warnings (open-telemetry#1328)

    * Replace deprecated googletest API (open-telemetry#1327)

    * Remove redundant tail / in CMake install (open-telemetry#1329)

    * dependencies image as artifact (open-telemetry#1333)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * metrics histogram example (open-telemetry#1330)

    * Link `opentelemetry_ext` with `opentelemetry_api` (open-telemetry#1336)

    * ostream metrics cmake (open-telemetry#1344)

    * prometheus exporter (open-telemetry#1331)

    * remove exporter registration to meter provider (open-telemetry#1350)

    * Bump github/codeql-action from 1 to 2 (open-telemetry#1351)

    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    * Add explicit type cast in baggage UrlDecode (open-telemetry#1353)

    * Fix scalar delete against array (open-telemetry#1356)

    * conditional include for codecvt header (open-telemetry#1355)

    * Add missing include guard (open-telemetry#1357)

    * Use latest TraceLoggingDynamic.h (open-telemetry#1354)

    * prometheus example (open-telemetry#1332)

    * Fix output time in metrics OStream exporter (open-telemetry#1346)

    * Simplify SDK Configuration: Use View with default aggregation if no matching View is configured (open-telemetry#1358)

    * Fix class member initialization order (open-telemetry#1360)

    * codecov ignore (open-telemetry#1364)

    * export opentelemetry_otlp_recordable (open-telemetry#1365)

    * Disable test on prometheus-cpp which not need (open-telemetry#1363)

    * Enable metric collection for Async Instruments - Delta and Cumulative  (open-telemetry#1334)

    * fix baggage propagation for empty/invalid baggage context (open-telemetry#1367)

    * Fix empty tracestate header propagation (open-telemetry#1373)

    * Bump docker/setup-qemu-action from 1 to 2 (open-telemetry#1375)

    * Add noexcept/const qualifier at missing places for Trace API. (open-telemetry#1374)

    * fix noxcept

    * fix etw

    * Bump docker/build-push-action from 2 to 3 (open-telemetry#1377)

    * Bump docker/setup-buildx-action from 1 to 2 (open-telemetry#1376)

    * [Metrics SDK] Remove un-necessary files. (open-telemetry#1379)

    * reuse temporal metric storage for sync storage (open-telemetry#1369)

    * Prometheus exporter meters and instrument name (open-telemetry#1378)

    * Fix sharing resource in batched exported spans (open-telemetry#1386)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * fix: missing link to nlohmann_json (open-telemetry#1390)

    * Getting started document using ostream exporter (open-telemetry#1394)

    Co-authored-by: Reiley Yang <[email protected]>

    * Connect async storage with async instruments (open-telemetry#1388)

    * get span_id from context when Logger::Log received invalid span_id  (open-telemetry#1398)

    * Alpine image (open-telemetry#1382)

    * Upgrade proto to v0.17.0, update log data model (open-telemetry#1383)

    * Prepare v1.4.0 release (open-telemetry#1404)

    * Fix vcpkg package name in doc (open-telemetry#1392)

    * Document Getting Started with Prometheus and Grafana (open-telemetry#1396)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * fix OTEL_INTERNAL_LOG_INFO (open-telemetry#1407)

    * fix: WaitOnSocket select error when sockfd above FD_SETSIZE (open-telemetry#1410)

    * [BUILD] fix nlohmann_json's (third party) include dir (open-telemetry#1415)

    * [Metrics API/SDK] - Pass state to async callback function. (open-telemetry#1408)

    * Copy string_view passed to ETW exporter in PropertyVariant (open-telemetry#1425)

    * Fix ETW log exporter header inclusion (open-telemetry#1426)

    * [Metrics SDK] Only record non-negative / finite / Non-NAN histogram values (open-telemetry#1427)

    * validate histogram value

    * handle Nan

    * add changelog

    * divide by 0 error on windows

    * fix markdown lint

    * Fix global log handle symbols when using dlopen (open-telemetry#1420)

    * Add attributes/dimensions to metrics ostream exporter (open-telemetry#1400)

    * Log current timestamp instead of epoch time (open-telemetry#1434)

    * install sdk-config.h (open-telemetry#1419)

    * Fix GettingStarted documentation for Jaeger HTTP exporter (open-telemetry#1347) (open-telemetry#1439)

    * fix histogram (open-telemetry#1440)

    * Upgrade nlohmann_json to 3.10.5 (open-telemetry#1438) (open-telemetry#1441)

    * Fixed broken link to OpenTelemetry.io (open-telemetry#1445) (open-telemetry#1446)

    Co-authored-by: Ehsan Saei <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Ben Landrum <[email protected]>
    Co-authored-by: jmanjon <[email protected]>
    Co-authored-by: Zsolt Bölöny <[email protected]>
    Co-authored-by: Leo Di Donato <[email protected]>
    Co-authored-by: Reiley Yang <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Hamed Mansouri <[email protected]>
    Co-authored-by: ztao <[email protected]>
    Co-authored-by: Flier Lu <[email protected]>
    Co-authored-by: Marc Alff <[email protected]>
    Co-authored-by: Marc Alff <[email protected]>

commit d7b03e8
Author: WenTao Ou <[email protected]>
Date:   Fri May 20 13:25:24 2022 +0800

    Merge main into async changes (open-telemetry#1411)

commit 0aebd6e
Author: WenTao Ou <[email protected]>
Date:   Mon May 16 23:26:41 2022 +0800

    Merge main into async changes (open-telemetry#1395)

commit 08a12b5
Author: WenTao Ou <[email protected]>
Date:   Thu May 12 00:51:48 2022 +0800

    Cocurrency otlp http session (open-telemetry#1317)

commit c614258
Author: DEBAJIT DAS <[email protected]>
Date:   Wed May 4 22:55:20 2022 +0530

     Added max async export support using separate AsyncBatchSpan/LogProcessor (open-telemetry#1306)

commit 465158c
Author: WenTao Ou <[email protected]>
Date:   Mon Apr 25 23:48:02 2022 +0800

    Merge `main` into `async-changes` (open-telemetry#1348)

    * install sdk config (open-telemetry#1273)

    * Bump actions/cache from 2 to 3 (open-telemetry#1277)

    * Add owent as an Approver (open-telemetry#1276)

    * add owent as reviewer

    * fix order

    * Disable benchmark action failure (open-telemetry#1284)

    * metrics exemplar round 1 (open-telemetry#1264)

    * [Metrics SDK] - fix spelling (AggregationTemporarily to AggregationTemporality) (open-telemetry#1288)

    * fix compilation error with protobuf 3.5 (open-telemetry#1289)

    * Fix span SetAttribute crash (open-telemetry#1283)

    * Synchronous Metric collection (Delta , Cumulative) (open-telemetry#1265)

    * Rename `http_client_curl` to `opentelemetry_http_client_curl` (open-telemetry#1301)

    Signed-off-by: owent <[email protected]>

    * Don't show coverage annotation for pull requests (open-telemetry#1304)

    * Implement periodic exporting metric reader (open-telemetry#1286)

    * Add `async-changes` branch to pull_request of github action (open-telemetry#1309)

    Signed-off-by: owent <[email protected]>

    * Add InstrumentationInfo and Resource to the metrics data to be exported. (open-telemetry#1299)

    * Excempt should be applied on issue instead of PR (open-telemetry#1316)

    * Bump codecov/codecov-action from 2.1.0 to 3 (open-telemetry#1318)

    * Move public definitions into `opentelemetry_api`. (open-telemetry#1314)

    Signed-off-by: owent <[email protected]>

    * Add building test without RTTI (open-telemetry#1294)

    * Remove implicitly deleted default constructor (open-telemetry#1267)

    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * [ETW Exporter] - ETW provider handle cleanup (open-telemetry#1322)

    * Bump actions/stale from 4 to 5 (open-telemetry#1323)

    * ostream metrics example (open-telemetry#1312)

    * Prepare v1.3.0 release (open-telemetry#1324)

    * Update yield logic for ARM processor (open-telemetry#1325)

    * Fix for open-telemetry#1292 (open-telemetry#1326)

    * Implement Merge and Diff operation for Histogram Aggregation (open-telemetry#1303)

    * fix metrics compiler warnings (open-telemetry#1328)

    * Replace deprecated googletest API (open-telemetry#1327)

    * Remove redundant tail / in CMake install (open-telemetry#1329)

    * dependencies image as artifact (open-telemetry#1333)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * metrics histogram example (open-telemetry#1330)

    * Link `opentelemetry_ext` with `opentelemetry_api` (open-telemetry#1336)

    * ostream metrics cmake (open-telemetry#1344)

    * Fix conflicts

    Signed-off-by: owent <[email protected]>

    * Using clang-format-10 to format codes(clang-format-14 has a different output)

    Signed-off-by: owent <[email protected]>

    Co-authored-by: Ehsan Saei <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Ben Landrum <[email protected]>
    Co-authored-by: jmanjon <[email protected]>

commit 73f3515
Author: WenTao Ou <[email protected]>
Date:   Wed Apr 6 15:41:42 2022 +0800

    Merge main into async changes (open-telemetry#1321)

commit ad3bdfe
Author: DEBAJIT DAS <[email protected]>
Date:   Thu Mar 31 09:56:24 2022 +0530

    Added feature flag for asynchronous export (open-telemetry#1295)

commit 15e7725
Author: WenTao Ou <[email protected]>
Date:   Tue Mar 29 13:09:11 2022 +0800

    Cocurrency otlp http session (open-telemetry#1281)

commit 729c2f8
Author: DEBAJIT DAS <[email protected]>
Date:   Tue Mar 22 23:47:14 2022 +0530

    Changing the type of callback function in Export function to std::function (open-telemetry#1278)

commit 6f53da3
Author: DEBAJIT DAS <[email protected]>
Date:   Mon Mar 21 19:31:51 2022 +0530

    Async callback Exporter to Processor changes  (open-telemetry#1275)

commit c3eaa9d
Author: WenTao Ou <[email protected]>
Date:   Mon Mar 21 14:41:51 2022 +0800

    Cocurrency otlp http session (open-telemetry#1274)
owent added a commit to owent/opentelemetry-cpp that referenced this pull request Jun 17, 2022
commit daf5091
Author: WenTao Ou <[email protected]>
Date:   Fri Jun 17 14:49:27 2022 +0800

    Implement open-telemetry/opentelemetry-specification#2452 (open-telemetry#1456)

    * install sdk config (open-telemetry#1273)

    * Bump actions/cache from 2 to 3 (open-telemetry#1277)

    * Add owent as an Approver (open-telemetry#1276)

    * add owent as reviewer

    * fix order

    * Disable benchmark action failure (open-telemetry#1284)

    * metrics exemplar round 1 (open-telemetry#1264)

    * [Metrics SDK] - fix spelling (AggregationTemporarily to AggregationTemporality) (open-telemetry#1288)

    * fix compilation error with protobuf 3.5 (open-telemetry#1289)

    * Fix span SetAttribute crash (open-telemetry#1283)

    * Synchronous Metric collection (Delta , Cumulative) (open-telemetry#1265)

    * Rename `http_client_curl` to `opentelemetry_http_client_curl` (open-telemetry#1301)

    Signed-off-by: owent <[email protected]>

    * Don't show coverage annotation for pull requests (open-telemetry#1304)

    * Implement periodic exporting metric reader (open-telemetry#1286)

    * Add `async-changes` branch to pull_request of github action (open-telemetry#1309)

    Signed-off-by: owent <[email protected]>

    * Add InstrumentationInfo and Resource to the metrics data to be exported. (open-telemetry#1299)

    * Excempt should be applied on issue instead of PR (open-telemetry#1316)

    * Bump codecov/codecov-action from 2.1.0 to 3 (open-telemetry#1318)

    * Move public definitions into `opentelemetry_api`. (open-telemetry#1314)

    Signed-off-by: owent <[email protected]>

    * Add building test without RTTI (open-telemetry#1294)

    * Remove implicitly deleted default constructor (open-telemetry#1267)

    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * [ETW Exporter] - ETW provider handle cleanup (open-telemetry#1322)

    * Bump actions/stale from 4 to 5 (open-telemetry#1323)

    * ostream metrics example (open-telemetry#1312)

    * Prepare v1.3.0 release (open-telemetry#1324)

    * Update yield logic for ARM processor (open-telemetry#1325)

    * Fix for open-telemetry#1292 (open-telemetry#1326)

    * Implement Merge and Diff operation for Histogram Aggregation (open-telemetry#1303)

    * fix metrics compiler warnings (open-telemetry#1328)

    * Replace deprecated googletest API (open-telemetry#1327)

    * Remove redundant tail / in CMake install (open-telemetry#1329)

    * dependencies image as artifact (open-telemetry#1333)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * metrics histogram example (open-telemetry#1330)

    * Link `opentelemetry_ext` with `opentelemetry_api` (open-telemetry#1336)

    * ostream metrics cmake (open-telemetry#1344)

    * prometheus exporter (open-telemetry#1331)

    * remove exporter registration to meter provider (open-telemetry#1350)

    * Bump github/codeql-action from 1 to 2 (open-telemetry#1351)

    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    * Add explicit type cast in baggage UrlDecode (open-telemetry#1353)

    * Fix scalar delete against array (open-telemetry#1356)

    * conditional include for codecvt header (open-telemetry#1355)

    * Add missing include guard (open-telemetry#1357)

    * Use latest TraceLoggingDynamic.h (open-telemetry#1354)

    * prometheus example (open-telemetry#1332)

    * Fix output time in metrics OStream exporter (open-telemetry#1346)

    * Simplify SDK Configuration: Use View with default aggregation if no matching View is configured (open-telemetry#1358)

    * Fix class member initialization order (open-telemetry#1360)

    * codecov ignore (open-telemetry#1364)

    * export opentelemetry_otlp_recordable (open-telemetry#1365)

    * Disable test on prometheus-cpp which not need (open-telemetry#1363)

    * Enable metric collection for Async Instruments - Delta and Cumulative  (open-telemetry#1334)

    * fix baggage propagation for empty/invalid baggage context (open-telemetry#1367)

    * Fix empty tracestate header propagation (open-telemetry#1373)

    * Bump docker/setup-qemu-action from 1 to 2 (open-telemetry#1375)

    * Add noexcept/const qualifier at missing places for Trace API. (open-telemetry#1374)

    * fix noxcept

    * fix etw

    * Bump docker/build-push-action from 2 to 3 (open-telemetry#1377)

    * Bump docker/setup-buildx-action from 1 to 2 (open-telemetry#1376)

    * [Metrics SDK] Remove un-necessary files. (open-telemetry#1379)

    * reuse temporal metric storage for sync storage (open-telemetry#1369)

    * Prometheus exporter meters and instrument name (open-telemetry#1378)

    * Fix sharing resource in batched exported spans (open-telemetry#1386)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * fix: missing link to nlohmann_json (open-telemetry#1390)

    * Getting started document using ostream exporter (open-telemetry#1394)

    Co-authored-by: Reiley Yang <[email protected]>

    * Connect async storage with async instruments (open-telemetry#1388)

    * get span_id from context when Logger::Log received invalid span_id  (open-telemetry#1398)

    * Alpine image (open-telemetry#1382)

    * Upgrade proto to v0.17.0, update log data model (open-telemetry#1383)

    * Prepare v1.4.0 release (open-telemetry#1404)

    * Fix vcpkg package name in doc (open-telemetry#1392)

    * Document Getting Started with Prometheus and Grafana (open-telemetry#1396)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * fix OTEL_INTERNAL_LOG_INFO (open-telemetry#1407)

    * fix: WaitOnSocket select error when sockfd above FD_SETSIZE (open-telemetry#1410)

    * [BUILD] fix nlohmann_json's (third party) include dir (open-telemetry#1415)

    * [Metrics API/SDK] - Pass state to async callback function. (open-telemetry#1408)

    * Copy string_view passed to ETW exporter in PropertyVariant (open-telemetry#1425)

    * Fix ETW log exporter header inclusion (open-telemetry#1426)

    * [Metrics SDK] Only record non-negative / finite / Non-NAN histogram values (open-telemetry#1427)

    * validate histogram value

    * handle Nan

    * add changelog

    * divide by 0 error on windows

    * fix markdown lint

    * Fix global log handle symbols when using dlopen (open-telemetry#1420)

    * Add attributes/dimensions to metrics ostream exporter (open-telemetry#1400)

    * Log current timestamp instead of epoch time (open-telemetry#1434)

    * install sdk-config.h (open-telemetry#1419)

    * Fix GettingStarted documentation for Jaeger HTTP exporter (open-telemetry#1347) (open-telemetry#1439)

    * fix histogram (open-telemetry#1440)

    * Upgrade nlohmann_json to 3.10.5 (open-telemetry#1438) (open-telemetry#1441)

    * Fixed broken link to OpenTelemetry.io (open-telemetry#1445) (open-telemetry#1446)

    * Fix variables inizialization (open-telemetry#1430)

    * Remove `AsyncBatch*Processor`, implement [opentelemetry-specification#2452](open-telemetry/opentelemetry-specification#2452)

    Signed-off-by: WenTao Ou <[email protected]>

    * Remove invalid changelog

    Signed-off-by: WenTao Ou <[email protected]>

    * Fix compiling problems without `ENABLE_ASYNC_EXPORT`

    Signed-off-by: WenTao Ou <[email protected]>

    * Always return `ExportResult::kSuccess`

    Signed-off-by: WenTao Ou <[email protected]>

    Co-authored-by: Ehsan Saei <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Ben Landrum <[email protected]>
    Co-authored-by: jmanjon <[email protected]>
    Co-authored-by: Zsolt Bölöny <[email protected]>
    Co-authored-by: Leo Di Donato <[email protected]>
    Co-authored-by: Reiley Yang <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Hamed Mansouri <[email protected]>
    Co-authored-by: ztao <[email protected]>
    Co-authored-by: Flier Lu <[email protected]>
    Co-authored-by: Marc Alff <[email protected]>
    Co-authored-by: Marc Alff <[email protected]>
    Co-authored-by: univisionsrl <[email protected]>

commit f357102
Author: WenTao Ou <[email protected]>
Date:   Wed Jun 15 22:40:39 2022 +0800

    Merge main into async changes (open-telemetry#1451)

    * install sdk config (open-telemetry#1273)

    * Bump actions/cache from 2 to 3 (open-telemetry#1277)

    * Add owent as an Approver (open-telemetry#1276)

    * add owent as reviewer

    * fix order

    * Disable benchmark action failure (open-telemetry#1284)

    * metrics exemplar round 1 (open-telemetry#1264)

    * [Metrics SDK] - fix spelling (AggregationTemporarily to AggregationTemporality) (open-telemetry#1288)

    * fix compilation error with protobuf 3.5 (open-telemetry#1289)

    * Fix span SetAttribute crash (open-telemetry#1283)

    * Synchronous Metric collection (Delta , Cumulative) (open-telemetry#1265)

    * Rename `http_client_curl` to `opentelemetry_http_client_curl` (open-telemetry#1301)

    Signed-off-by: owent <[email protected]>

    * Don't show coverage annotation for pull requests (open-telemetry#1304)

    * Implement periodic exporting metric reader (open-telemetry#1286)

    * Add `async-changes` branch to pull_request of github action (open-telemetry#1309)

    Signed-off-by: owent <[email protected]>

    * Add InstrumentationInfo and Resource to the metrics data to be exported. (open-telemetry#1299)

    * Excempt should be applied on issue instead of PR (open-telemetry#1316)

    * Bump codecov/codecov-action from 2.1.0 to 3 (open-telemetry#1318)

    * Move public definitions into `opentelemetry_api`. (open-telemetry#1314)

    Signed-off-by: owent <[email protected]>

    * Add building test without RTTI (open-telemetry#1294)

    * Remove implicitly deleted default constructor (open-telemetry#1267)

    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * [ETW Exporter] - ETW provider handle cleanup (open-telemetry#1322)

    * Bump actions/stale from 4 to 5 (open-telemetry#1323)

    * ostream metrics example (open-telemetry#1312)

    * Prepare v1.3.0 release (open-telemetry#1324)

    * Update yield logic for ARM processor (open-telemetry#1325)

    * Fix for open-telemetry#1292 (open-telemetry#1326)

    * Implement Merge and Diff operation for Histogram Aggregation (open-telemetry#1303)

    * fix metrics compiler warnings (open-telemetry#1328)

    * Replace deprecated googletest API (open-telemetry#1327)

    * Remove redundant tail / in CMake install (open-telemetry#1329)

    * dependencies image as artifact (open-telemetry#1333)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * metrics histogram example (open-telemetry#1330)

    * Link `opentelemetry_ext` with `opentelemetry_api` (open-telemetry#1336)

    * ostream metrics cmake (open-telemetry#1344)

    * prometheus exporter (open-telemetry#1331)

    * remove exporter registration to meter provider (open-telemetry#1350)

    * Bump github/codeql-action from 1 to 2 (open-telemetry#1351)

    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    * Add explicit type cast in baggage UrlDecode (open-telemetry#1353)

    * Fix scalar delete against array (open-telemetry#1356)

    * conditional include for codecvt header (open-telemetry#1355)

    * Add missing include guard (open-telemetry#1357)

    * Use latest TraceLoggingDynamic.h (open-telemetry#1354)

    * prometheus example (open-telemetry#1332)

    * Fix output time in metrics OStream exporter (open-telemetry#1346)

    * Simplify SDK Configuration: Use View with default aggregation if no matching View is configured (open-telemetry#1358)

    * Fix class member initialization order (open-telemetry#1360)

    * codecov ignore (open-telemetry#1364)

    * export opentelemetry_otlp_recordable (open-telemetry#1365)

    * Disable test on prometheus-cpp which not need (open-telemetry#1363)

    * Enable metric collection for Async Instruments - Delta and Cumulative  (open-telemetry#1334)

    * fix baggage propagation for empty/invalid baggage context (open-telemetry#1367)

    * Fix empty tracestate header propagation (open-telemetry#1373)

    * Bump docker/setup-qemu-action from 1 to 2 (open-telemetry#1375)

    * Add noexcept/const qualifier at missing places for Trace API. (open-telemetry#1374)

    * fix noxcept

    * fix etw

    * Bump docker/build-push-action from 2 to 3 (open-telemetry#1377)

    * Bump docker/setup-buildx-action from 1 to 2 (open-telemetry#1376)

    * [Metrics SDK] Remove un-necessary files. (open-telemetry#1379)

    * reuse temporal metric storage for sync storage (open-telemetry#1369)

    * Prometheus exporter meters and instrument name (open-telemetry#1378)

    * Fix sharing resource in batched exported spans (open-telemetry#1386)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * fix: missing link to nlohmann_json (open-telemetry#1390)

    * Getting started document using ostream exporter (open-telemetry#1394)

    Co-authored-by: Reiley Yang <[email protected]>

    * Connect async storage with async instruments (open-telemetry#1388)

    * get span_id from context when Logger::Log received invalid span_id  (open-telemetry#1398)

    * Alpine image (open-telemetry#1382)

    * Upgrade proto to v0.17.0, update log data model (open-telemetry#1383)

    * Prepare v1.4.0 release (open-telemetry#1404)

    * Fix vcpkg package name in doc (open-telemetry#1392)

    * Document Getting Started with Prometheus and Grafana (open-telemetry#1396)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * fix OTEL_INTERNAL_LOG_INFO (open-telemetry#1407)

    * fix: WaitOnSocket select error when sockfd above FD_SETSIZE (open-telemetry#1410)

    * [BUILD] fix nlohmann_json's (third party) include dir (open-telemetry#1415)

    * [Metrics API/SDK] - Pass state to async callback function. (open-telemetry#1408)

    * Copy string_view passed to ETW exporter in PropertyVariant (open-telemetry#1425)

    * Fix ETW log exporter header inclusion (open-telemetry#1426)

    * [Metrics SDK] Only record non-negative / finite / Non-NAN histogram values (open-telemetry#1427)

    * validate histogram value

    * handle Nan

    * add changelog

    * divide by 0 error on windows

    * fix markdown lint

    * Fix global log handle symbols when using dlopen (open-telemetry#1420)

    * Add attributes/dimensions to metrics ostream exporter (open-telemetry#1400)

    * Log current timestamp instead of epoch time (open-telemetry#1434)

    * install sdk-config.h (open-telemetry#1419)

    * Fix GettingStarted documentation for Jaeger HTTP exporter (open-telemetry#1347) (open-telemetry#1439)

    * fix histogram (open-telemetry#1440)

    * Upgrade nlohmann_json to 3.10.5 (open-telemetry#1438) (open-telemetry#1441)

    * Fixed broken link to OpenTelemetry.io (open-telemetry#1445) (open-telemetry#1446)

    Co-authored-by: Ehsan Saei <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Ben Landrum <[email protected]>
    Co-authored-by: jmanjon <[email protected]>
    Co-authored-by: Zsolt Bölöny <[email protected]>
    Co-authored-by: Leo Di Donato <[email protected]>
    Co-authored-by: Reiley Yang <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Hamed Mansouri <[email protected]>
    Co-authored-by: ztao <[email protected]>
    Co-authored-by: Flier Lu <[email protected]>
    Co-authored-by: Marc Alff <[email protected]>
    Co-authored-by: Marc Alff <[email protected]>

commit d7b03e8
Author: WenTao Ou <[email protected]>
Date:   Fri May 20 13:25:24 2022 +0800

    Merge main into async changes (open-telemetry#1411)

commit 0aebd6e
Author: WenTao Ou <[email protected]>
Date:   Mon May 16 23:26:41 2022 +0800

    Merge main into async changes (open-telemetry#1395)

commit 08a12b5
Author: WenTao Ou <[email protected]>
Date:   Thu May 12 00:51:48 2022 +0800

    Cocurrency otlp http session (open-telemetry#1317)

commit c614258
Author: DEBAJIT DAS <[email protected]>
Date:   Wed May 4 22:55:20 2022 +0530

     Added max async export support using separate AsyncBatchSpan/LogProcessor (open-telemetry#1306)

commit 465158c
Author: WenTao Ou <[email protected]>
Date:   Mon Apr 25 23:48:02 2022 +0800

    Merge `main` into `async-changes` (open-telemetry#1348)

    * install sdk config (open-telemetry#1273)

    * Bump actions/cache from 2 to 3 (open-telemetry#1277)

    * Add owent as an Approver (open-telemetry#1276)

    * add owent as reviewer

    * fix order

    * Disable benchmark action failure (open-telemetry#1284)

    * metrics exemplar round 1 (open-telemetry#1264)

    * [Metrics SDK] - fix spelling (AggregationTemporarily to AggregationTemporality) (open-telemetry#1288)

    * fix compilation error with protobuf 3.5 (open-telemetry#1289)

    * Fix span SetAttribute crash (open-telemetry#1283)

    * Synchronous Metric collection (Delta , Cumulative) (open-telemetry#1265)

    * Rename `http_client_curl` to `opentelemetry_http_client_curl` (open-telemetry#1301)

    Signed-off-by: owent <[email protected]>

    * Don't show coverage annotation for pull requests (open-telemetry#1304)

    * Implement periodic exporting metric reader (open-telemetry#1286)

    * Add `async-changes` branch to pull_request of github action (open-telemetry#1309)

    Signed-off-by: owent <[email protected]>

    * Add InstrumentationInfo and Resource to the metrics data to be exported. (open-telemetry#1299)

    * Excempt should be applied on issue instead of PR (open-telemetry#1316)

    * Bump codecov/codecov-action from 2.1.0 to 3 (open-telemetry#1318)

    * Move public definitions into `opentelemetry_api`. (open-telemetry#1314)

    Signed-off-by: owent <[email protected]>

    * Add building test without RTTI (open-telemetry#1294)

    * Remove implicitly deleted default constructor (open-telemetry#1267)

    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * [ETW Exporter] - ETW provider handle cleanup (open-telemetry#1322)

    * Bump actions/stale from 4 to 5 (open-telemetry#1323)

    * ostream metrics example (open-telemetry#1312)

    * Prepare v1.3.0 release (open-telemetry#1324)

    * Update yield logic for ARM processor (open-telemetry#1325)

    * Fix for open-telemetry#1292 (open-telemetry#1326)

    * Implement Merge and Diff operation for Histogram Aggregation (open-telemetry#1303)

    * fix metrics compiler warnings (open-telemetry#1328)

    * Replace deprecated googletest API (open-telemetry#1327)

    * Remove redundant tail / in CMake install (open-telemetry#1329)

    * dependencies image as artifact (open-telemetry#1333)

    Co-authored-by: Lalit Kumar Bhasin <[email protected]>

    * metrics histogram example (open-telemetry#1330)

    * Link `opentelemetry_ext` with `opentelemetry_api` (open-telemetry#1336)

    * ostream metrics cmake (open-telemetry#1344)

    * Fix conflicts

    Signed-off-by: owent <[email protected]>

    * Using clang-format-10 to format codes(clang-format-14 has a different output)

    Signed-off-by: owent <[email protected]>

    Co-authored-by: Ehsan Saei <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Lalit Kumar Bhasin <[email protected]>
    Co-authored-by: Tom Tan <[email protected]>
    Co-authored-by: Ben Landrum <[email protected]>
    Co-authored-by: jmanjon <[email protected]>

commit 73f3515
Author: WenTao Ou <[email protected]>
Date:   Wed Apr 6 15:41:42 2022 +0800

    Merge main into async changes (open-telemetry#1321)

commit ad3bdfe
Author: DEBAJIT DAS <[email protected]>
Date:   Thu Mar 31 09:56:24 2022 +0530

    Added feature flag for asynchronous export (open-telemetry#1295)

commit 15e7725
Author: WenTao Ou <[email protected]>
Date:   Tue Mar 29 13:09:11 2022 +0800

    Cocurrency otlp http session (open-telemetry#1281)

commit 729c2f8
Author: DEBAJIT DAS <[email protected]>
Date:   Tue Mar 22 23:47:14 2022 +0530

    Changing the type of callback function in Export function to std::function (open-telemetry#1278)

commit 6f53da3
Author: DEBAJIT DAS <[email protected]>
Date:   Mon Mar 21 19:31:51 2022 +0530

    Async callback Exporter to Processor changes  (open-telemetry#1275)

commit c3eaa9d
Author: WenTao Ou <[email protected]>
Date:   Mon Mar 21 14:41:51 2022 +0800

    Cocurrency otlp http session (open-telemetry#1274)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants