▲ | eallam a day ago | |||||||
Very common issues were: forgetting to put non-determistic code inside of steps (deterministic code can be put outside of steps, but non-deterministic = boom), incorrect use of cache keys (people would put dynamic data inside the cache key). Another issue we hit pretty frequently that a single step would take longer than the serverless function timeout it was running on (this was before we ran our own compute platform). Another issue was speed, especially with more complicated tasks with hundreds of steps: the amount of data that needed serializing/deserializing became pretty huge. Oh yea, that was another thing (it's coming back to me now), there were lots of fun surprises about data being serialized/deserialized and changing shape (e.g. you couldn't have a step that just returned a class instance, for example) which caused tons of bugs. | ||||||||
▲ | doctorpangloss 20 hours ago | parent [-] | |||||||
You keep saying deterministic… What are you actually trying to say? Based on your docs: I mean googling “deterministic temporal.dev” brings up nothing. I found other libraries and I get it. I assume you mean, “replayable by our engine,” but that would give away: replayability of most code in all the languages you support is hopelessly out of scope. “Pure” isn’t even a useful constraint - lots of code looks pure, but basically none of Python is, because you will alloc by so much as sneezing and hence you can OOM. Why promise the world? | ||||||||
|