Byzantine Reality

Searching for Byzantine failures in the world around us

Python / Ruby SOAP Greatness

While working on our multi-language SOAP project, we’ve run into a number of interesting quirks. If you end up doing the same, you should certainly try out a number of “base cases” to make sure you get a good grip on it. For example, in Ruby, you can pass strings back and forth with no problem over SOAP (presumably this works the same way for Python-only communication).

Our problem comes in that one computer runs a Ruby SOAP server/client, and the other runs a Python SOAP server/client. We’ve seen that if the Python server returns the empty string “”, then the Ruby client will see it as a SOAP object (instead of just “”). It works fine for any other string, just not the empty string.

The problem is that this isn’t something you would have immediately recognized beforehand. This may be due to the fact that we’re using dynamic languages (perhaps we wouldn’t have this issue in Java), but as I haven’t tested it, I don’t know.

Anywho, that’s all for today! Make sure you start small and easy and once you’ve got the base assumptions about new technologies worked out, build on up from there. Happy coding!