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

HPCC-32924 Override OTel TlsRandomNumberGenerator #19630

Open
wants to merge 1 commit into
base: candidate-9.10.x
Choose a base branch
from

Conversation

rpastrana
Copy link
Member

@rpastrana rpastrana commented Mar 17, 2025

  • Defines custom ID Generator based on overwritten random number generator logic
  • Avoids fork related random number logic issues

Type of change:

  • This change is a bug fix (non-breaking change which fixes an issue).
  • This change is a new feature (non-breaking change which adds functionality).
  • This change improves the code (refactor or other change that does not change the functionality)
  • This change fixes warnings (the fix does not alter the functionality or the generated code)
  • This change is a breaking change (fix or feature that will cause existing behavior to change).
  • This change alters the query API (existing queries will have to be recompiled)

Checklist:

  • My code follows the code style of this project.
    • My code does not create any new warnings from compiler, build system, or lint.
  • The commit message is properly formatted and free of typos.
    • The commit message title makes sense in a changelog, by itself.
    • The commit is signed.
  • My change requires a change to the documentation.
    • I have updated the documentation accordingly, or...
    • I have created a JIRA ticket to update the documentation.
    • Any new interfaces or exported functions are appropriately commented.
  • I have read the CONTRIBUTORS document.
  • The change has been fully tested:
    • I have added tests to cover my changes.
    • All new and existing tests passed.
    • I have checked that this change does not introduce memory leaks.
    • I have used Valgrind or similar tools to check for potential issues.
  • I have given due consideration to all of the following potential concerns:
    • Scalability
    • Performance
    • Security
    • Thread-safety
    • Cloud-compatibility
    • Premature optimization
    • Existing deployed queries will not be broken
    • This change fixes the problem, not just the symptom
    • The target branch of this pull request is appropriate for such a change.
  • There are no similar instances of the same problem that should be addressed
    • I have addressed them here
    • I have raised JIRA issues to address them separately
  • This is a user interface / front-end modification
    • I have tested my changes in multiple modern browsers
    • The component(s) render as expected

Smoketest:

  • Send notifications about my Pull Request position in Smoketest queue.
  • Test my draft Pull Request.

Testing:

Copy link

Jira Issue: https://hpccsystems.atlassian.net//browse/HPCC-32924

Jirabot Action Result:
Workflow Transition To: Merge Pending
Updated PR

@rpastrana
Copy link
Member Author

@ghalliday I'm not a proponent of copying the random.h classes into jlib, but I'm illustrating the obstacle we're facing if we want to patch our own version of TlsRandomNumberGenerator since it's not included in their header package. Our CustomIdGenerator could use a different random number generator.

@rpastrana rpastrana requested a review from ghalliday March 18, 2025 16:46
opentelemetry::trace::SpanId GenerateSpanId() noexcept override
{
uint8_t span_id_buf[trace_api::SpanId::kSize];
NotSharedOTelRandom::GenerateRandomBuffer(span_id_buf);
Copy link
Member Author

Choose a reason for hiding this comment

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

Instead of mimicking OTel's default behavior, we're free to introduce any other random data generator here

Copy link
Member

Choose a reason for hiding this comment

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

Yes. The otel random number generation structure seems unnecessarily complicated and inefficient, particularly their use of static variables. and multiple classes.

I think the 3 random number generator classes could be combined into one (a static accessor function) and then member functions to fill in the buffer. There are other things that could be made more efficient.

I would start by rationalizing the class structure.

@rpastrana rpastrana force-pushed the HPCC-32924-customOTelIDGenerator branch from f242b8a to ac0e8f9 Compare March 21, 2025 14:53
@rpastrana
Copy link
Member Author

@ghalliday please take a look at the proposed changes

Copy link
Member

@ghalliday ghalliday left a comment

Choose a reason for hiding this comment

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

@rpastrana looks good. Please squash and remove the commented out code.

@rpastrana rpastrana marked this pull request as ready for review March 31, 2025 18:53
- Defines custom ID Generator based on overwritten random number generator logic
- Avoids fork related random number logic issues

Signed-off-by: Rodrigo Pastrana <[email protected]>
@rpastrana rpastrana force-pushed the HPCC-32924-customOTelIDGenerator branch from ac0e8f9 to fce71e8 Compare March 31, 2025 19:15
@rpastrana
Copy link
Member Author

@ghalliday comments removed and commits squashed

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.

2 participants