Fork me on GitHub
Drew Verlee02:11:00

@colinhicks i just loaded up the onyx blueprint and i’m getting some behavior i’m having trouble understanding. The heights of the graphs on the page keep increasing. Visually this looks like their marching downwards. I assume this is something todo with my setup, any ideas?


@drewverlee, that's not intentional 🙂. The graph code tries to guess the dimensions of its containing element before it calculates the graph dimensions. I bet the surrounding div doesn't have a width.


If that's the case, a quick fix would be to add something like .graph-container {max-width: 500px;} to the css

Drew Verlee02:11:51

Hmm, ok I'll see what I can do in the morning.


If it's not straightforward, mind creating an issue in onyx blueprint?

Drew Verlee03:11:00

@colinhicks i made an issue, loos like it only happsn on firefox. When will i learn to just stick with chrome...


Just pushed a change to address the tutorial graph marching in FF, @drewverlee. Thanks for reporting it!


I saw some CQRS stuff based on onyx but looking at learn-onyx I'm not immediately seeing how one would make a thing where inputs/outputs are HTTP requests/responses — is that an unnatural thing to do with onyx? If not are there any places where I can read more about this kind of thing?


In CQRS you'd tend to have your queries hit some kind of materialized view of your data, I don't think you'd want to put them through the same path your commands take.


The cheat sheet says that :onyx.core/results is “A map of read segment to a vector of segments produced by applying the function of this task” but in v0.9.12, I get a map with the keys [:tree :acks :segments :retries] in an after batch lifecycle.


@gardnervickers ok but even for Commands you eventually want to deliver a response with some status code etc, no?


@martinklepsch the command response only needs to say that your system successfully received and durably persisted the command.


@akiel: that's outdated. We need to fix the documentation


Ok Thanks. I found my way to the new structure.


You can get the segments under segments


I use tree, because I like to have the input-output mapping


@gardnervickers thanks, guess I should read up on some CQRS basics 🙂


@martinklepsch I believe input to onyx should be available for retries, so instead of directly feeding onyx from http requests, they should first be published to a log such as Kafka


If it helps, think about a database tx-log. The tx log in a db is what tables/views/triggers are all built from. CQRS/ES is just making that tx log an explicit feature in our systems that can be interacted with.


So generally speaking is request/response kind of stuff is out of scope for onyx?


That way, instead of having MySQL’s tx-log only able to build MySQL tables or fire MySQL triggers, you can choose how your log is interpreted and what views/tables of it are persisted.


Yes, Onyx does not support request/response out of the box.


@martinklepsch In CQRS the events are aquivalent to responses in REST.


Events are the action phase in CQRS/ES, bill-customer, add-friend, create-user.


An the events say that a command was sucessful.


So a client has to listen to the event stream.


Successful in that it was persisted only, it does not carry any application level notion of "successfulness"


A command is in imperative like add-friend and the event say friend-added is the successful (in app terms) outcome of the command.


Isn't bill-customer a command? customer-billed would be event.


@akiel great timing :)


two people can’t be wrong 🙂


However you want to relay successful processing of a command is an application level concern. The important thing is to persist the original command. System state and as a result command completion can be derived from the current position in your log.


Ok, thanks folks!


hopefully cqrs/es doesn't turn into rest-kind "you are doing it wrong" paradigm. We have used just simple cqrs for years, without es. Great for building complex uis (both front & back).


@ikitommi Do you have written something about your usage of CQRS?


Sorry, no. But talked about it in the first clojutre (2012) & about Kekkonen in ClojureD this year. Could write something.


Ah Kekkonen ok I remember. Thanks.


Hi guys, any way to pass argument to an flow-condition function? like (defn match? [seg my-function-to-match])


I miss the kill job button in the dashboard Am I blind?