Fork me on GitHub
#onyx
<
2016-04-22
>
aspra09:04:43

What happens with the scenario that the batch-write on the output plugin fails in terms of segment acking and retrying? Would that mean that the retry-segment will be called for all the root segments in the batch?

lucasbradstreet09:04:14

Yes, that's right

aspra09:04:22

Does it use the bookkeeper in the background to achieve this?

lucasbradstreet09:04:24

It keeps the pending segments in memory and depends on the input source being replayable

aspra09:04:11

What makes an input plugin replayable?

lucasbradstreet10:04:29

The plugin's ability to read from the input source more than once

aspra10:04:08

yeah ok, so the plugin takes care of it.

rasom11:04:13

http://www.onyxplatform.org/docs/user-guide/latest/scheduling.html > For example, if you have 2 jobs - A and B, you’d give each of this percentage values - say 70% and 30%, respectively. If you had 100 virtual peers running, 70 would be allocated to A, and 30 to B. If you then added 100 more peers to the cluster, job A would be allocated 140 peers, and job B 30.

rasom11:04:41

Seems that there should be >and job B 60

jeroenvandijk12:04:45

Is there an example somewhere?

lucasbradstreet12:04:11

Batch primitives were cancelled in favour of better streaming techniques. We may pick them up again in the future

jeroenvandijk12:04:53

Ah ok, good to know. I thought i was missing something

acron12:04:51

I'm seeing 'Stopping task lifecycle' messages in the Onyx log, but my plugin doesn't seem to be seeing the seal-resource call

acron12:04:36

Curious - do 'input' jobs not get seal-resource?

lucasbradstreet13:04:55

I believe the idea is for seal-resource to be called to close off the output stream when the job is done e.g. in the case of core async write a :done to the channel

acron13:04:23

Ok, fair enough

acron13:04:39

I'm having a hard time understanding how best to 'close' my reader. I'd like to use a sentinel like ':done' but I end up just passing :done along the workflow, which isn't what I want, clearly. Usually, during read-batch I am returning {:onyx.core/batch [state]} where state is (t/input id message) - what should I return/do after I see that sentinel?

acron13:04:01

If I return nothing then onyx.api/await-job-completion hangs in my test

lucasbradstreet13:04:53

You need to make sure drained? returns true after there are no more messages left and all messages have been acked

acron13:04:22

drained? isn't being called

acron13:04:52

In fact, drained is only called when I return the :done key

acron13:04:37

I realise this code is old, but I'm using it for inspiration

lucasbradstreet13:04:22

Oh I think you need to return done too

gardnervickers13:04:24

I believe the code works fine, we just dropped read support because we didnt want folks using it thinking that it could checkpoint/recover.

acron13:04:19

@gardnervickers: Yes, it does work fine, but my downstream workflow is receiving :done.

lucasbradstreet13:04:54

Is your downstream task receiving the done or is it being put on the medium by the output plugin?

acron13:04:37

It's weird, I have a my reader, then a function, then an output async channel

acron13:04:49

The async channel is returning me :done

acron13:04:04

I'm adding logging now to the function to see if that sees the :done

acron13:04:24

I've moved some lifecycle stuff around and the problem has disappeared now...but for a while I was definitely getting :done on an output async chan

acron13:04:34

Is :done used as a sentinel globally?

acron13:04:58

If my reader returned :foo would the effect be the same?

lucasbradstreet13:04:49

Yeah, you should get it on a core.async output channel, if you're using the core.async plugin

lucasbradstreet13:04:57

Nope, it needs to be :done

acron14:04:24

Ok, thanks again guys. The mist continues to lift, slowly but surely.

michaeldrogalis14:04:49

@rasom: Can you please open an issue on GitHub for those things? Happy to fix them if I can find them later.

lucasbradstreet15:04:41

@rasom: thanks for the report, we definitely appreciate them

dg16:04:16

Is onyx a reasonable choice for a continuous integration style app? It's not computationally intense, but the work has many steps with a complex dependency tree.

michaeldrogalis16:04:48

@dg: Yeah, I think it would do well in that domain. The Windowing features should help a lot. We're missing first class iteration right now, but the workarounds are reasonable, and we expect to land iteration within 6 months.

dg16:04:40

Cool, thanks. Didn't want to dive in too deep if someone here said, "no it's just for big data processing, dummy"

michaeldrogalis16:04:20

Hehe, not at all. Happy to answer any questions, including beginner material. simple_smile