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

Update LogRecord batching processor behavior description #4409

Open
wants to merge 14 commits into
base: main
Choose a base branch
from

Conversation

JDUNNIN
Copy link

@JDUNNIN JDUNNIN commented Feb 10, 2025

Fixes #4402

Changes

@JDUNNIN JDUNNIN requested review from a team as code owners February 10, 2025 13:22
Copy link

linux-foundation-easycla bot commented Feb 10, 2025

CLA Not Signed

@JDUNNIN JDUNNIN requested a review from cijothomas February 11, 2025 12:36
Copy link
Member

@pellared pellared left a comment

Choose a reason for hiding this comment

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

Can you sign the CLA?

@JDUNNIN
Copy link
Author

JDUNNIN commented Feb 14, 2025

Can you sign the CLA?

Hopefully soon yes, waiting on it.

@JDUNNIN JDUNNIN requested a review from pellared February 14, 2025 11:48
@pellared pellared changed the title Add more description to OTEL_BSP_SCHEDULE_DELAY and OTEL_BLRP_SCHEDUL… Update LogRecord batching processor behavior description Feb 14, 2025
@pellared pellared added area:sdk Related to the SDK spec:logs Related to the specification/logs directory spec:trace Related to the specification/trace directory clarification clarify ambiguity in specification labels Feb 14, 2025
@pellared
Copy link
Member

Please also update the PR description as it is outdated.

Comment on lines 427 to 428
- `scheduledDelayMillis` after the processor is constructed OR the first `LogRecord`
is received by the log record processor.
Copy link
Member

Choose a reason for hiding this comment

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

Why would we want to have the 2nd part? Asking this question more coming from "why do we want to have complex rules instead of simple rules".

  • the first LogRecord is received by the log record processor.

Copy link
Author

Choose a reason for hiding this comment

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

I was bringing this documentation in line with how the trace batching processor describes behaviour. I'm happy to make changes (with direction) in this PR or could there be another issue to address this part of the specification for both logs and trace batching?

My original issue was with environment variables not referring back to related parts of the SDKs, and us finding this "missing" content for logs is extras that have been suggested as improvements. Typical case of the more you look, the more you find :)

Copy link
Member

Choose a reason for hiding this comment

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

I see that you were trying to get the spec from Trace and copy it to Log. But IMHO, the trace section itself is not very clear. (I am sure I have discussed this before, but not able to find that discussion anymore!!)

https://github.com/open-telemetry/opentelemetry-specification/pull/4409/files#r1968141138 - This comment has my suggested wording for both trace/log. See if it is simpler and yet conveys the full intent.

The processor SHOULD export a batch when any of the following happens AND the
previous export call has returned:

- `scheduledDelayMillis` after the processor is constructed OR the first `LogRecord`
Copy link
Member

Choose a reason for hiding this comment

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

the first LogRecord
is received by the log record processor.

Why export when first record is received 🤔 ?

Copy link
Member

@pellared pellared Feb 14, 2025

Choose a reason for hiding this comment

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

I think that the original author meant "delay after first record'. Probably this could be clarified, but I do not feel it has to be done in this PR.

Copy link

This PR was marked stale due to lack of activity. It will be closed in 7 days.

@github-actions github-actions bot added the Stale label Feb 22, 2025
@@ -425,6 +425,21 @@ representations to the configured `LogRecordExporter`.
The processor MUST synchronize calls to `LogRecordExporter`'s `Export`
to make sure that they are not invoked concurrently.

The processor SHOULD export a batch when any of the following happens AND the
Copy link
Member

Choose a reason for hiding this comment

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

Batching processor

This is an implementation of the LogRecordProcessor which create batches
of LogRecords and passes the export-friendly ReadableLogRecord
representations to the configured LogRecordExporter.
The processor MUST synchronize calls to LogRecordExporter's Export
to make sure that they are not invoked concurrently.

A batch SHOULD be exported when any of the following conditions are met:

  • The scheduled delay (scheduledDelayMillis) elapses.
  • The queue contains at least maxExportBatchSize LogRecords.
  • ForceFlush is called.
  • Shutdown is called.

If the queue is empty when an export is triggered, the processor MAY either export an empty batch or skip the export and consider it complete immediately.

^Wording suggestion.

Additional notes from implementing this:
I don't think the spec has explicitly clarified the following, so I went with my own interpretations!

  1. Does time taken for export be considered? For example, should export gets triggered at consistent times T,T+d,T+2d,T+2d
    Or
    T, T+e1+d, T+e2+2d... where e1,e2 represents the time take for the export itself
  2. What happens if export() takes more time than the interval itself? Should the next export() be skipped? or attempted?

@JDUNNIN
Copy link
Author

JDUNNIN commented Feb 26, 2025

I've unpicked the changes that are in discussion for wider general improvements and raised a follow up issue referencing the discussions here #4434.

This PR now just adds the links as needed and hopefully is OK. Sorry, still waiting on CLA...

@JDUNNIN JDUNNIN requested a review from cijothomas February 26, 2025 16:54
Copy link
Member

@cijothomas cijothomas left a comment

Choose a reason for hiding this comment

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

Thanks.
Could you create an issue to fix the actual content in a follow up.

@JDUNNIN
Copy link
Author

JDUNNIN commented Feb 26, 2025

@cijothomas I raised #4434

reyang
reyang previously approved these changes Feb 26, 2025
@reyang
Copy link
Member

reyang commented Feb 26, 2025

@JDUNNIN can you clear the CLA?

image

@reyang reyang dismissed their stale review February 26, 2025 17:18

CLA is not clear

@pellared
Copy link
Member

pellared commented Feb 26, 2025

@JDUNNIN can you clear the CLA?

From #4409 (comment):

Sorry, still waiting on CLA...

@github-actions github-actions bot removed the Stale label Feb 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:sdk Related to the SDK clarification clarify ambiguity in specification spec:logs Related to the specification/logs directory spec:trace Related to the specification/trace directory
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add more description for OTEL_BSP_SCHEDULE_DELAY
4 participants