in reply to (OT) URL Pipes

If so, I'll have to ensure that this behavior finds a way to "mark" anything with irreversible side-effects or simply identify and disallow them.
So, you want a transaction. If all your actions are done in a database, then it's easy: just begin a transaction, commit if you succeed doing all parts of your pipe, rollback otherwise.

If everything happens in a filesystem, and you have a filesystem that allows snapshots on demand, it's pretty easy as well. Make a snapshot, do whatever you're doing, and if it fails halfway, restore from your snapshot.

On a grander scale, if all your data is on a SAN, you might want to take a business copy. Then you suspend a copy, do your business, and either resync from the live copy or the suspended copy, depending whether there's success or failure.

But without knowing more about the programs you're running, I can't suggest anything more specific.

Note however that this problem of needing to be able to rollback isn't related to whether you manage to encode all the steps in a single URL. If the request would be in the body of a POST request, you'd have the same problem. Or if you'd write it in a Perl program without the web overhead.

Perl --((8:>*