NMS-19752: Use compact wire marshalling for IPC and embedded payloads#8584
Open
JSimo wants to merge 1 commit into
Open
NMS-19752: Use compact wire marshalling for IPC and embedded payloads#8584JSimo wants to merge 1 commit into
JSimo wants to merge 1 commit into
Conversation
Add MarshallerProfile (WIRE/CONFIG) with unified marshaller setup and per-thread caching. RPC, sink, and tracing use the wire profile; config file embeds keep CONFIG marshal-time XSD validation. Split poller embedded marshalling by context: PollerWireClassObjectAdapter for RPC attributes (compact, no marshal XSD) and PollerClassObjectAdapter for poller-configuration.xml parameters. Marshal embedded payloads via DOMResult instead of marshal-to-string plus DocumentBuilder.parse. Add unit tests for wire/config profiles, poller adapter behavior, and RPC wire round-trips.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cleaned up the previous basic POC change on our end with not pretty printing the XML sent on Kafka. This change reduces CPU usage in our opennms instance by 1-2%. And more than halves the CPU usage of the marshalling. So not as fun as the enlinkd changes which reduced it by an entire cpu core. Currently running this in our full scale (50k nodes, 1mil+ interfaces) test instance successfully.
^Usage before fix, noticeable part.
No rush to review this, as it is an change, it though to be clear non-breaking and entirely compatible change for any minion listener. It is an part of an push to go through our forked 35.x branch see what POC changes we have that should be cleaned up and upstreamed.
Add MarshallerProfile (WIRE/CONFIG) with unified marshaller setup and per-thread caching. RPC, sink, and tracing use the wire profile; config file embeds keep CONFIG marshal-time XSD validation.
Split poller embedded marshalling by context: PollerWireClassObjectAdapter for RPC attributes (compact, no marshal XSD) and PollerClassObjectAdapter for poller-configuration.xml parameters. Marshal embedded payloads via DOMResult instead of marshal-to-string plus DocumentBuilder.parse.
Add unit tests for wire/config profiles, poller adapter behavior, and RPC wire round-trips.
All Contributors
Contribution Checklist
Once there is an issue, please:
${JIRA-ISSUE-NUMBER}: subject of pull requestDon't worry if this sounds like a lot, we can help you get things set up properly.
-smokein it to trigger smoke tests?foundation-*branch, does it try to avoid changing files in$OPENNMS_HOME/etc/?What's Next?
A PR should be assigned at least 2 reviewers. If you know that someone would be a good person to review your code, feel free to add them.
If you need help making additions or changes to the documentation related to your changes, please let us know.
In any case, if anything is unclear or you want help getting your PR ready for merge, please don't hesitate to say something in the comments here,
or in the #opennms-development chat channel.
Once reviewer(s) accept the PR and the branch passes continuous integration, the PR is eligible for merge.
At that time, if you have commit access (are an OpenNMS Group employee or a member of the OGP) you are welcome to merge the PR when you're ready.
Otherwise, a reviewer can merge it for you.
Thanks for taking time to contribute!
External References