GithubHelp home page GithubHelp logo

Comments (4)

capflam avatar capflam commented on June 10, 2024 2

Unfortunately, it is not possible because there is no ruleset evaluation after haproxy has started to send the response to the client. And it is also not possible to mirror the request at this stage because it was already sent to the server and "cleared" from haproxy point of view. Once sent the request is no longer available. It is the reason why it is not possible to manipulate request headers from any response ruleset.

To avoid to wait the timeout expiration when the SPOA is not running, you must enable the health-checks on your SPOE servers. The best it to use the spop-check option.

Note, that even it is still under discussion, we are seriously thinking to deprecate the SPOE. Unfortunately it is still based on an old design, totally outdated. It must be refactored since a while but it is a huge piece of work. And for every new version, it is harder to make it working properly. We have to be realistic. If there is no investment on the SPOE, the best is to remove it.

from haproxy.

capflam avatar capflam commented on June 10, 2024 2

@shadyabhi no problem. Well indeed, there is no time invest to refactor the SPOE because it is not widely used.
The lua remains the recommended way to add small features. However it is not always possible to use lua for heavy processing. For now, there is no real solution to replace the SPOE. WASM was mentioned but I don't know if it is a good candidate. At the end, we really need some help on this subject. To find a replacement but also to work on it. However, the SPOE will be removed without any solution to replace it.

from haproxy.

shadyabhi avatar shadyabhi commented on June 10, 2024

Note, that even it is still under discussion, we are seriously thinking to deprecate the SPOE. Unfortunately it is still based on an old design, totally outdated. It must be refactored since a while but it is a huge piece of work. And for every new version, it is harder to make it working properly. We have to be realistic. If there is no investment on the SPOE, the best is to remove it.

@capflam I don't want to go too off-topic, but I'll appreciate a short answer if possible.

I'm guessing, there isn't a wide adoption of SPOE, which is why HAproxy might plan on deprecating it. With that as a remote possibility, what will be the replacement? Is lua filter API considered a recommended way, via Rust for example. Writing plain lua for complex stuff isn't very productive.

from haproxy.

mbrozzo avatar mbrozzo commented on June 10, 2024

@capflam thank you very much for your answer, I understand the problem. Being new to HAProxy, I did not know it was possible to use Lua scripts. I will explore the possibility of implementing an asynchronous mirroring feature using a Lua script, but I think that you should consider adding request mirroring as a core functionality of HAProxy (should I create a separate feature request?) like Nginx has. Mirroring requests is extremely useful for testing an infrastructure under real load.

from haproxy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.