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>
dbernal 2018-04-25T14:56:51.000145Z

Is there a limit on the number of downstream segments that can be generated by a task? Say there's one segment coming in and from that segment the task generates 30K segments that need to be passed downstream, would Onyx be able to handle this use case?

michaeldrogalis 2018-04-25T15:04:07.000334Z

@dbernal There's not a conceptual limit, but you're going to want to be cognizant of the memory limits on the peer doing that kind of expansion - especially since segments are batched.

dbernal 2018-04-25T15:18:35.000925Z

@michaeldrogalis Do you know what kind of error might be thrown when that's the case? I'm seeing and ArrayOutOfBounds error on a task that does this and haven't been able to figure out what's causing it. It happens during a prepare-batch lifecycle and the index in question is 20,000 so I thought that it might be some sort of limit

michaeldrogalis 2018-04-25T15:40:13.000518Z

@dbernal Can I get the full stacktrace?

michaeldrogalis 2018-04-25T15:40:31.000269Z

You might be running into the default configured limit of the maximum size of an Aeron message.

lucasbradstreet 2018-04-25T15:49:50.000015Z

Ah I know what this is. This is a hardcoded limit in onyx.

michaeldrogalis 2018-04-25T15:51:20.000536Z

I didn't know that, hah.

lucasbradstreet 2018-04-25T15:53:03.000800Z

Indeed. We can either add a parameter or we can expand it. You should be a little worried about generating that many messages from very few messages, as all of the messages generated will be inbetween two barriers.

lucasbradstreet 2018-04-25T15:57:46.000875Z

If it’s an occasional thing then it will probably drain correctly through the barriers. I’d be worried if it was, say, 20000 messages creating 30000 messages for example

dbernal 2018-04-25T16:01:15.000877Z

@lucasbradstreet @michaeldrogalis ah ok good to know! In my case it's 1 segment generating something close to 100,000 in some cases. It might make more sense to read in the 100,000 segments from SQL instead of generating them so it's possible for me to change the workflow to do so

michaeldrogalis 2018-04-25T16:01:52.000201Z

Yeah, would highly recommend having a more proportional set of messages flowing throughout. It'll be much easier to manage.

👍 1
dbernal 2018-04-25T16:02:55.000030Z

sounds good. I'll go ahead and do that instead. Thanks for all the help once again!

kenny 2018-04-25T16:05:02.000247Z

Have you guys seen this exception?

Exception in thread "Thread-30" java.lang.NoClassDefFoundError: org/agrona/LangUtil
        at org.agrona.IoUtil.delete(IoUtil.java:141)
        at io.aeron.CommonContext.deleteAeronDirectory(CommonContext.java:359)
        at onyx.messaging.aeron.embedded_media_driver$delete_aeron_directory_safe.invokeStatic(embedded_media_driver.clj:8)
        at onyx.messaging.aeron.embedded_media_driver$delete_aeron_directory_safe.invoke(embedded_media_driver.clj:7)
        at onyx.messaging.aeron.embedded_media_driver.EmbeddedMediaDriver$fn__33945.invoke(embedded_media_driver.clj:36)
        at clojure.lang.AFn.run(AFn.java:22)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.agrona.LangUtil
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
It consistently occurs at the end of my tests.

lucasbradstreet 2018-04-25T16:08:18.000247Z

@kenny that’s pretty odd. That class should exist.

lucasbradstreet 2018-04-25T16:08:22.000475Z

Which onyx version?

kenny 2018-04-25T16:13:27.000777Z

@lucasbradstreet 0.12.7.

kenny 2018-04-25T16:14:37.000201Z

It occurs after all the tests have ran.

Ran 2 tests containing 9 assertions.
0 failures, 0 errors.
Exception in thread "Thread-32" java.lang.NoClassDefFoundError: org/agrona/LangUtil
        at org.agrona.IoUtil.delete(IoUtil.java:141)
        at io.aeron.CommonContext.deleteAeronDirectory(CommonContext.java:359)
        at onyx.messaging.aeron.embedded_media_driver$delete_aeron_directory_safe.invokeStatic(embedded_media_driver.clj:8)
        at onyx.messaging.aeron.embedded_media_driver$delete_aeron_directory_safe.invoke(embedded_media_driver.clj:7)
        at onyx.messaging.aeron.embedded_media_driver.EmbeddedMediaDriver$fn__38268.invoke(embedded_media_driver.clj:36)
        at clojure.lang.AFn.run(AFn.java:22)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.agrona.LangUtil
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 7 more

lucasbradstreet 2018-04-25T16:29:01.000665Z

Thanks, I’ll give it a look

kenny 2018-04-25T16:29:52.000061Z

It's from this call https://github.com/onyx-platform/onyx/blob/0.12.x/src/onyx/messaging/aeron/embedded_media_driver.clj#L36. I am running the tests with boot test. If I run them with lein test I do not get the error. Boot must cause some issues with shutdown hooks?

lucasbradstreet 2018-04-25T17:12:50.000666Z

Interesting. Yeah, might be a problem where boot pod isolation is preventing access to the agrona jar?

lucasbradstreet 2018-04-25T17:13:13.000062Z

The weird thing is that it’s a missing class error

kenny 2018-04-25T17:48:02.000229Z

Right, it is strange. Boot run tests in a pod and pods have a special API for shutdown hooks: https://github.com/boot-clj/boot/blob/master/doc/boot.pod.md#shutdown-hooks.

lucasbradstreet 2018-04-25T18:12:10.000734Z

Ah. Sorry, we won’t be able to spend any time on that as we’re not boot users, but if you manage to track it down let us know.

1
2018-04-25T21:08:18.000607Z

Hey all. Anyone want to remind me where I saw the web page where you could build an Onyx Workflow in the browser?

lucasbradstreet 2018-04-25T21:22:23.000566Z

@campeterson I think this was the one https://colinhicks.github.io/onyx-blueprint/resources/public/workflow.html. It hasn’t been updated in a while though cc/@colinhicks

2018-04-25T21:23:16.000247Z

yep, that’s it. Thanks

joelsanchez 2018-04-25T21:49:26.000129Z

is it impossible to run onyx with 1.9?

lucasbradstreet 2018-04-25T21:50:40.000252Z

It should work fine. We use it with 1.9 internally.

joelsanchez 2018-04-25T22:05:39.000469Z

it's working now, idk why but I was getting something about com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor

lucasbradstreet 2018-04-25T22:13:26.000299Z

K. That wouldn’t be our code anyway