Fork me on GitHub
#xtdb
<
2019-10-15
>
emil0r07:10:27

Hi juxt team. Do you have a timeline for a 1.0 release?

jonpither08:10:11

Hi @emil0r we are soon launching our official beta program to go out of alpha. As part of this we are looking to invite people/companies to try out Crux and give us their feedback.

jonpither08:10:41

There is an impending change coming first to the API - just the way you configure/start-up Crux nodes - we need to merge, test, and publish this first

JanisOlex08:10:05

so we are giving 🙂 need to tackle that multi-crux approach in one VM... or is it only my computer behaving weirdly?

jonpither08:10:08

@olekss.janis We tested and can't see a problem ourselves, but that's not to mean there isnt a problem somewhere. @ognivo might have a go with your gradle.tks to see if he can reproduce

JanisOlex08:10:59

It MIGHT be something with my computer, might be I will try the code on different computer later...

JanisOlex08:10:05

@jonpither but you most likely were testing using Clojure? It might be that using clojure, it somehow precompiles everything before start, and then does not have problems> I am invoking crux from kotlin -> and obviously then clojure runtime does compilation of functions during class loadtime or something... and that gets some strange clashes on classpath

jonpither08:10:16

yes my test was via Clojure. We'll try and test your setup

JanisOlex08:10:47

whole kotlin project

JanisOlex08:10:10

current code will work, as it is sequential, you need to uncomment commented code which does it in parallel

JanisOlex08:10:39

and remove 2nd instance of running the crux -> will drop the code snippet in second

JanisOlex08:10:19

this one just broke, pasting stacktrace

Ivan Fedorov09:10:53

yeah, I reproduced thanks! now trying my ways around compilation

JanisOlex08:10:24

@jonpither but there is question, is crux even designed to run several instances in the same VM? Might be I am simply breaking/asking some contract which was never promised in the first place and it is "limitation" of crux?

JanisOlex08:10:50

and then it is our problem to work around it

jonpither08:10:44

@olekss.janis ithere is no fundamental issue I'm aware of with running multiple nodes on the same VM. As long as you configure different directories for the K/V store and event log. That said, it hasn't been exhaustively tested, so I can't be 100% sure there isn't an issue.

JanisOlex08:10:32

I think if there is the issue, then it is not explicit crux problem, but something to do with me not understanding fully how embedded clojure behaves in such cases during runtime

jonpither08:10:09

if you have the bandwidth, you could try using a h2 database and the JDBC setup, just to poke Crux in a different way

Ivan Fedorov08:10:25
replied to a thread:whole kotlin project

thanks! checking it out

JanisOlex08:10:44

that was my backup plan, but looks like problem arises on some sub-component compilation, as I understand the clojure app can have .clj files inside without .class files, and when clojure starts working it compiles the functions during runtime... and it clashes on that... I don't think it's problem on DB -> I actually tried to use the rockdb or what was it's name... same result

jonpither08:10:25

could you AOT beforehand? - Require a bunch of namespaces

JanisOlex08:10:20

in theory I could, but will it dive inside crux dependencies... as all the breakages was on taonesso -> will clojure plugin find that? I doubt?

jonpither08:10:59

Could you show the error stack here?

JanisOlex08:10:14

hmmm it always is random -> will try to produce one

JanisOlex09:10:41

and don't try to find syntax error actually, it will be something similar in different places -> sometimes vars are not being found or something... it really looks like random race condition

Ivan Fedorov09:10:53
replied to a thread:whole kotlin project

yeah, I reproduced thanks! now trying my ways around compilation

JanisOlex09:10:49

Here I will paste build snippet which has needed stuff to get clojure inside kotlin project

JanisOlex09:10:39

this has this clojure build task with aotAll enabled, and it does look inside the sourcepath and compiles .clj files, but will it help going inside transitive .jars -> I doubt

jonpither09:10:32

yep, we will try AoT'ing first

JanisOlex09:10:31

ok I guess now you have everything to tackle the problem -> ability to repeat the problem and see if it's even fixable

JanisOlex09:10:28

the usecase in real life is that we have integrationTests running on pipelines, and those tests spin up several Corda nodes, which each has the service with the crux inside, and because integrationTest runner runs in one VM, getting this problem...

jonpither09:10:36

thanks @olekss.janis we will look into it - and we will raise an issue also

💪 4
Ivan Fedorov19:10:16

@olekss.janis hey. Thanks again for raising the issue and providing a full example project, that was really helpful! A PR with a fix is on its way here https://github.com/juxt/crux/pull/353

JanisOlex19:10:45

Ohh guys, if you can fix this in a day... that is so awesome. So I suppose at the end it will be some sort of version bump-up which I will change in my end, and then we get to the next bug 🙂

Ivan Fedorov19:10:13

@olekss.janis yeaahh ::)) how do you envision your final topology with Crux? RocksDB index and Kafka storage? Or jdbc store? Or you want stay with memdb ?

JanisOlex19:10:19

naah, we are in the first step -> crux indexing into, most likely some DB, as during runtime there will be usual DB, so would be normal to use it also for indexing

JanisOlex19:10:23

in real production case we won't have the race conditions, as there will be 1:1 between node and crux... We need crux to have that attribute based queries

JanisOlex19:10:25

in first phases it will be something out of box -> RocksDB I suppose

JanisOlex19:10:55

also we want to minimize dependencies, so that final deployment is not overblown

JanisOlex19:10:07

and thanks for reacting and trying to fix the bug 🙂 I appreciate it greately...

Ivan Fedorov19:10:05

Cool! So yeah, I’ll try RocksDB from Kotlin then 🙂 @olekss.janis