Fork me on GitHub
#onyx
<
2018-04-29
>
lucasbradstreet01:04:38

ZooKeeper is running on localhost:2181?

lucasbradstreet01:04:00

If you telnet to it and type “ruok” does it respond? Looks like a pretty clear connection issue

lucasbradstreet01:04:39

K. That’s pretty odd then. Does it ever work?

sparkofreason01:04:53

It always happens after a certain amount of work is sent through onyx. Since I'm working locally, ZK is used for checkpoints. perhaps related to that?

lucasbradstreet01:04:51

Yeah, that would make sense, especially if you’re using windows.

lucasbradstreet01:04:21

There’s a 1MB limit on the ZK znode size, and also if you’re not using onyx.api/gc-checkpoints then you will keep adding data to ZK

lucasbradstreet01:04:09

There’s a reason that insanely is in the config option to override it. I don’t really have a great way to prevent people from blowing their feet off there

sparkofreason01:04:41

Any recommendations for other checkpoint storage to use for local dev?

lucasbradstreet01:04:13

Others have had luck with a local S3 server written in go. I forget what its name was.

lucasbradstreet01:04:20

Maybe we should prevent the ZK override and just push people towards minio

lucasbradstreet01:04:50

You’ll still want to use gc-checkpoints though, because the checkpoints will keep growing otherwise

sparkofreason01:04:43

I'll give it a try. I am running checkpoint GC. but do have a lot of state being held, so it seems likely I'm drowning ZK.

lucasbradstreet01:04:24

Please let me know if it works out. Thanks!

sparkofreason01:04:22

Will do. Thanks for your help.

sparkofreason03:04:27

@lucasbradstreet minio worked great. Many thanks, that solved a huge headache.

lucasbradstreet03:04:30

Awesome. I might just disable the ZK windows feature and force people to use it instead.

👍 4
lmergen09:04:38

i have ran into various problems in dev with storing ABS state in zookeeper as well.. took me a while to realize the cause for my crashing ZK nodes

lmergen09:04:38

btw i'm reading the onyx-plugin template, and it's still a bit unclear to me what the difference between synced? and completed? means. sementally, i would say that the difference is that completed? means our internal buffer is empty, and synced? means that the remote database/whatever has actually written everything to disk ? still, it's a bit unclear to me what i should do where

jqmtor19:04:55

Maybe the docstrings in the protocol definitions help with understanding both functions a little better? https://github.com/onyx-platform/onyx/blob/0.12.x/src/onyx/plugin/protocols.clj#L28-L33

lmergen14:04:46

in other news: i've just pushed the first version of a Google Cloud Pub/Sub input and output plugin live, available here -- https://github.com/solatis/onyx-google-pubsub would love it if someone gave it a test ride as well, and provide some feedback / review the code. it's modeled after the amazon SQS plugin.

Aleh Atsman14:04:35

Can someone please explain to me, how does redeployment work in onyx? Should i just build new version uberjar and restart all my nodes one by one? Should i do some work manually, like stoping tasks etc?

lmergen15:04:45

@aleh_atsman you most likely want to use ABS snapshots and recover state of your jobs

lmergen15:04:42

^ you can do that using resume points

Aleh Atsman15:04:41

thx i see, so i need to change my job and add resume-point to it before submit

lucasbradstreet18:04:55

@aleh_atsman yes, you can setup a basic structure when you build job to only add the resume point if one exists

lucasbradstreet18:04:15

Though for certain jobs you should probably just fail there because it’s probably an error if it can’t find one on a redeploy

lucasbradstreet18:04:29

I might bang up an onyx-examples sample soon.

joelsanchez18:04:19

I have a few "paths" in my workflow which don't depend on each other, but I need them to arrive at a certain order in the final step do I need to have just one "path" in order to have this order?

joelsanchez18:04:17

customers need to be transacted before addresses, for example

lucasbradstreet18:04:31

That is certainly one way (probably the simplest way) to go. Another way would be to collect messages in a window and flush them as the dependencies are sorted out. I wouldn’t recommend this unless you have other reasons to do so though.

lucasbradstreet18:04:56

e.g. it’s really hard to handle the dependencies in other ways.

lucasbradstreet18:04:31

You can scale things out in a linear workflow like the above one by using :onyx/group-by(fn,key) which will make sure all of your messages with a certain key ends up on the same peer

joelsanchez18:04:16

yes, I was worrying about scalability. I'll follow your advice 🙂

lucasbradstreet19:04:43

Don’t be afraid to perform multiple operations in one task though. It’s better not to have too many tasks doing small things. Better to have slightly fatter tasks that you scale out in a parallel way

jqmtor19:04:16

@lucasbradstreet let me know if you have other recommendations for me. I hope I am not being too annoying with these requests 😛

lucasbradstreet19:04:56

s/annoying/awesome/

🙂 4
lucasbradstreet19:04:29

I’ll have a look for a next task. One thing I’ve been wanting to do for a while is include onyx-examples for onyx/type reduce, as well as a resume point example.

jqmtor19:04:51

that sounds good! I'll gladly look into that if you want.

lucasbradstreet19:04:08

Great! Let’s start with onyx/type :reduce

lucasbradstreet19:04:15

The first type I’m thinking is where you have a reduce task as a terminal node (rather than an output task) https://github.com/onyx-platform/onyx/blob/0.12.x/test/onyx/windowing/reduce_test.clj

lucasbradstreet19:04:37

The idea there is that you don’t have a plugin set, and you collect into a window and then use something like trigger/sync to output

lucasbradstreet19:04:00

If we could have an example like that in the style of https://github.com/onyx-platform/onyx-examples, that’d be great

lucasbradstreet19:04:20

Then I think we can link to it from the reduce docs too

lucasbradstreet19:04:45

I have another type of onyx/type :reduce example for you, but I’ll wait until this one is done before describing it.

lucasbradstreet19:04:12

I provide that reduce-test as an example of what’s going on, but you may want to change the example in ways that explain what’s going on better.

jqmtor19:04:37

Thanks for the explanation! 👍

lucasbradstreet19:04:42

No worries. Will be around if you have any more questions.

joelsanchez20:04:19

onyx is fantastic, yesterday I knew basically nothing and today I'm importing data from Prestashop into my Datomic-backed app at the speed of light

💯 28