onyx

FYI: alternative Onyx :onyx: chat is at <https://gitter.im/onyx-platform/onyx> ; log can be found at <https://clojurians-log.clojureverse.org/onyx/index.html>
kenji_signifier 2018-01-25T00:39:45.000224Z

Hi, I’m in early design phase for the next project, and looking at Datomic Cloud as the storage. I think onyx datomic plugin uses peer api datomic.api, which is not supported by Datomic Cloud. Do you have a plan to add support for client api to the plugin?

niamu 2018-01-25T00:45:31.000142Z

@kenji_signifier There was discussion of that just the other day: https://clojurians.slack.com/archives/C051WKSP3/p1516653946000087

niamu 2018-01-26T07:42:29.000166Z

onyx-sql was just bumped to version 1.9.0 recently, so yes.

👍 1
michaeldrogalis 2018-01-26T16:06:33.000196Z

Bring it up to 1.9.0 - yup

👍 1
kenji_signifier 2018-01-27T08:27:37.000034Z

I spent some time to get familiar myself to datomic cloud and onyx. Here are the gaps I face;

kenji_signifier 2018-01-27T08:30:44.000028Z

the following fns don’t exist in client-api. entity, ident, log, next-t, and tempid. as @souenzzo suggested some fns may be re-written in client-api, but not sure for all of them. Majority of them are used in tests so re-writing tests might be an option but I’d like to minimize the deviations.

kenji_signifier 2018-01-27T08:32:41.000062Z

I managed to handle selective lib loading and abstraction by pushing down the impls under protocol.

kenji_signifier 2018-01-27T12:01:15.000043Z

Tomorrow I’m gonna try the approach to keep using peer api for tests, and incorporate on-prem client lib. The differences between on-prem and cloud client api are primarily in connection area so I hope it has good enough fidelity.

kenji_signifier 2018-01-29T00:07:00.000091Z

I made some progress and now can handle connections with peer, client via peer-server, and client via cloud. I’m going to spend some more time this weekend to convert tests to use client API so that I can run tests against Datomic cloud, too.

kenji_signifier 2018-02-03T11:31:37.000023Z

I managed to pass tx_output_test.clj in both peer and cloud. 8 more tests to go…

lucasbradstreet 2018-02-10T21:45:29.000021Z

Nice work! I’m pretty busy at the moment but I will try to get a quick review in ASAP.

niamu 2018-01-25T00:46:43.000112Z

They were going to investigate further to see what changes were necessary to support it, but the initial reaction was that it would be a small change.

kenji_signifier 2018-01-25T00:50:06.000300Z

@niamu, thx, i searched in slack but didn’t find it. Looks promising!

michaeldrogalis 2018-01-25T01:01:24.000199Z

Happy to take a patch if someone can make both version compatible, or add a parallel set of tasks

kenji_signifier 2018-01-25T04:34:47.000202Z

@michaeldrogalis I’m gonna give a shot this weekend.

lucasbradstreet 2018-01-25T04:37:15.000095Z

@kenji_signifier Great! Any questions, hit us up

kenji_signifier 2018-01-25T04:37:29.000067Z

thx

michaeldrogalis 2018-01-25T15:32:41.000950Z

@souenzzo Fantastic!

dbernal 2018-01-25T19:44:00.000076Z

Do all Onyx plugins have to be utilized as an input or output task? I'm guessing that's the only usable interface for a plugin right?

lucasbradstreet 2018-01-25T19:48:52.000608Z

output plugins can also be used on reduce tasks, but that’s almost the same thing as outputs

lucasbradstreet 2018-01-25T19:49:32.000563Z

We have discussed being able to make intermediate tasks outputs, and then flowing the messages further down, but we haven’t been able to figure out how to make it make sense.

dbernal 2018-01-25T19:50:26.000563Z

ah gotcha, that's kinda where I just got stuck. I was trying to make an output task flow into another output task and it didn't seem to work

lucasbradstreet 2018-01-25T19:50:52.000730Z

What’s the use case?

dbernal 2018-01-25T19:51:48.000884Z

just for dev experimentation. I wanted to save to Elasticsearch and make the result available in a channel as an async out task

lucasbradstreet 2018-01-25T19:52:28.000817Z

K. Yeah, I think the general approach we’d recommend for now is to make an intermediate task that does the transformation, then have it flow to an elasticsearch task as well as a core async task

dbernal 2018-01-25T19:56:24.000110Z

Right. Gotcha, yea that makes sense. Thanks!