Closed jmrieger closed 2 years ago
Hello folks,
We've been having some discussions internally on how to support your use case in the least intrusive way possible.
First of all, I'd like to apologize in advance if i' missing something, since i'm not really familiar with Dynatrace, so i'm hoping i got things right.
It is my understanding that the issue you're having is due to our split sync/proxy being built with internal linkage against alpine's "musl" implementation of libc. According to the documentation you provided, this can be solved by forcing the use of the system linker.
We think this is a valid case and will do our best to support it, but we would rather not enforce it on every customer by making it a default setting. Mostly because it's not obvious to us what side effects this might have on every other customer which is using these applications. There are some comments in go's repo stating that the use of external linkage enforces a different mechanism to be used for thread creation, resulting in larger thread stack sizes. While we have no capacity to actually test this for example, we have customers with very high impressions/events traffic whose memory usage is already high enough.
As a counter proposal, we've been working on https://github.com/splitio/split-synchronizer/pull/196 to allow any extra custom build argument to be supplied should a certain customer need it.
For example, you can build the split-synchronizer
image by cloning the repo and running:
docker build -t SplitSync4Dynatrace -f docker/Dockerfile.synchronizer --build-arg EXTRA_BUILD_ARGS="-ldflags '-linkmode external'" .
This will allow any customer to pass any extra option that they might need for a special use case. You should be able to use a tool of your choice to automate customized image builds (with your specific requirements) as new versions are released.
For this version in particular, we will generate the image for you, and put it in dockerhub. We will provide the tag later today.
I hope this solution works for you. Thank you very much for you patience, Martin
@mredolatti - At a cursory review, the additional build arguments option you linked in #196 should fit our use case perfectly, and we can wait for that 5.1.0 tag to make its way to Dockerhub.
Glad to hear that :)
Here's the dockerhub tag for a split-synchronizer image built using the external linker: https://hub.docker.com/layers/split-synchronizer/splitsoftware/split-synchronizer/5.1.0.patch.rm/images/sha256-22b0ba2d8880efb455655097e9e46184947eb02cef6e2667c5955e7ae50d96a4?context=explore
Please let me know when you test it if it's working properly for you, or something needs to be fixed.
Thanks! Martin.
Split Synchronizer
What did you accomplish?
Added an additional build flag to support process monitoring in Dynatrace. Their guidance is shown here: https://www.dynatrace.com/support/help/technology-support/application-software/go/support/go-known-limitations#support-for-musl-libc
How do we test the changes introduced in this PR?
Extra Notes
I have tested this locally within my enterprise and confirmed that the changes behave as intended.