This version (2017/05/27 13:44) is a draft.
Approvals: 0/1

[02:16:44] *** ChanServ sets mode: +o temporalfox

[09:30:29] <matrium> hi, is there something like a recover for futures? like a right biased compose?

[09:37:11] <temporalfox> matrium what do you mean ?

[09:45:57] <matrium> @temporalfox: I have a computation that is a composition of monadic functions of the form A → Future<B>. One of the functions might fail but I can recover from that, depending on the exception.

[09:47:56] <temporalfox> what objects are you using ?

[09:48:31] <matrium> Given that Future is a Sum type like Either in other languages, I was looking for something like “recover”

[09:50:07] <matrium> recover(Future<T> future, Function<Throwable, Future<T» f) : Future<T> future

[09:55:06] <temporalfox> how do you call recover ?

[09:55:30] <temporalfox> ah I see

[09:55:37] <temporalfox> a bit like onErrorReturn in RxJava ?

[09:55:46] <temporalfox> (but with a future)

[09:56:14] <temporalfox> but isn't it like a flatMap a bit ?

[09:56:56] <matrium> temporalfox: well, my understanding was that flatMap is Future.compose

[09:57:01] <temporalfox> if the future is ok, the function applies the same value

[09:57:02] <temporalfox> ys

[09:57:03] <temporalfox> yes

[09:57:25] <temporalfox> compose is like flatMap, we called this way as it makes sounds less functionnal and more pragmatic

[09:57:48] <temporalfox> the future type does not aim to be much functionnal in vertx

[09:58:06] <temporalfox> yet it wants to provide basic features one expect to work with

[09:58:24] <temporalfox> I'd like some improvements though like

[09:58:29] <temporalfox> onSuccess / onError / onComplete

[09:58:37] <temporalfox> to ease its usage

[09:59:36] <matrium> one thing I'm missing as well is a Future<A>.compose(Future<B>) : Future<B>

[10:00:07] <matrium> like Future<A>.map(B) : Future<B>

[10:01:34] <matrium> should probably be Future<A>.compose(Supplier<Future<B») because of lazyness

[10:02:59] <temporalfox> what does compose(Future<B>) do ?

[10:03:17] <temporalfox> ah

[10:03:24] <temporalfox> with a constant

[10:03:40] <temporalfox> map(constant) was added for pragmatic reason as shortcut

[10:03:47] <temporalfox> like on AsyncResult

[10:04:00] <temporalfox> you can turn an AsyncResult<Foo> in an AsyncResult<Void> easily

[10:04:03] <temporalfox>

[10:04:09] <temporalfox> and often we have to do this conversion in vertx

[10:04:24] <temporalfox> so it avoids the idiom : if (ar.succeeded()) …

[10:04:51] <matrium> yes, but in some cases you just want to perform a certain operation, is the previous operation was successfull but you don't are about the result

[10:05:00] <matrium> is = if

[10:05:24] <temporalfox> it's like chaining a bit

[10:05:31] <temporalfox> but on completion hatever the result is

[10:06:43] <temporalfox> we don't support yet lazy values in the code generator

[10:06:54] <temporalfox> so it would be somehting like Function<Void, Future> which sucks a bit

[10:07:00] <matrium> if you have a function Future<A> f() {…}, you want to perform after a computation, you have to write .compose(x → f()), instead of just writing compose(this::f)

[10:07:17] <temporalfox> matrium makes sense

[10:08:05] <temporalfox> that would mean to support Supplier in the code generators

[10:08:53] <matrium> another cool thing would be a map_ (and compose_) for constant values, that accept a suppliert

[10:15:18] <temporalfox> what would it be ?

[10:18:25] <matrium> e.g. in scala the underscore at the end is an indicator, that the previous result is ignored

[10:20:01] <matrium> otherwise it can be a little tricky with implicit function conversion when calling an overloaded map

[10:21:14] <temporalfox> ok

[10:21:26] <temporalfox> do you know that vertx-lang-scala just got on central today ?

[10:22:33] <temporalfox> hi ppatiern

[10:22:40] <matrium> Nice to hear :-) unfortunately I'm forced to use Java for work :-/

[10:22:44] <ppatiern> hi temporalfox

[10:23:02] <temporalfox> matrium that being said you can give a try and provide feedback as you seem to have experience

[10:23:08] <temporalfox> ppatiern how is it going ?

[10:24:12] <ppatiern> after the first hour this morning … I had to switch on Hono … I'll come back to the Vert.x Kafka later today … I have to remove the connect and modifying tests that today use the create with the handler (that we don't need anymore)

[10:24:34] <temporalfox> ok

[10:24:38] <temporalfox> I will spend some time on doc

[10:24:43] <temporalfox> to ake it less compact

[10:24:45] <ppatiern> ok

[10:24:52] <temporalfox> i.e just break in sentences

[10:25:01] <ppatiern> ok

[10:25:07] <temporalfox> and I'll try to add other languages

[10:25:11] <temporalfox> and see what is missing around

[10:25:19] <temporalfox> also I'll try to make some rxdoc

[10:25:41] <ppatiern> when the release is supposed to be ?

[10:25:49] <ppatiern> I mean for the final 3.4.0

[10:27:34] <temporalfox> end of this month

[10:41:31] <ppatiern> ok .. it's even important for Hono and the Eclipse CQs related to the used MQTT server :-)

[10:51:45] <matrium> temporalfox: that's an example of the recover use case

[11:24:32] <ppatiern> temporalfox: do you know why IntelliJ gives me following error on compiling ?

[11:24:37] <ppatiern> Error:(7, 45) java: package io.vertx.rxjava.kafka.client.consumer does not exist

[11:24:41] <ppatiern> Error:(25, 11) java: cannot find symbol

[11:24:41] <ppatiern> symbol: class KafkaConsumer

[11:24:41] <ppatiern> location: class io.vertx.kafka.client.tests.RxConsumerTest

[11:24:45] <ppatiern> Error:(51, 16) java: cannot find symbol

[11:24:45] <ppatiern> symbol: variable KafkaConsumer

[11:24:45] <ppatiern> location: class io.vertx.kafka.client.tests.RxConsumerTest

[11:24:49] <ppatiern> the mvn compile works like a charm

[11:24:50] <temporalfox> do mvn clean compile

[11:25:07] <temporalfox> the class should be in target/annotations/…

[11:25:12] <temporalfox> check your IDE can see it

[11:25:14] <temporalfox> best

[11:25:16] <ppatiern> already done

[11:25:18] <temporalfox> do rm -rf .idea

[11:25:18] <ppatiern> nothing

[11:25:24] <temporalfox> rmoeve the .iml file

[11:25:26] <temporalfox> and reimport

[11:25:36] <temporalfox> it's because we added it after you imported the project

[11:25:40] <ppatiern> ok

[11:25:44] <ppatiern> I'll try thatnks

[11:28:55] <ppatiern> nothing …

[11:29:00] <ppatiern> rm -rf .idea

[11:29:03] <ppatiern> removed .iml

[11:29:07] <ppatiern> mvn clean compile

[11:29:09] <ppatiern> reimport

[11:29:11] <ppatiern> same error

[11:31:25] <temporalfox> ok

[11:31:27] <temporalfox> weird

[11:31:50] <temporalfox> are you on kafka ?

[11:35:07] <ppatiern> on kafka ?

[11:54:16] <ppatiern> temporalfox: even after a mvn clean compile I don't have a target/annotations folder

[11:54:52] <temporalfox> hum

[11:55:05] <ppatiern> the intellij compiler gives me the above errors but not signaling them on the source code (with a red line)

[11:55:08] <temporalfox> yes I asked because I will do stuff on this this afternoon

[11:55:25] <temporalfox> “ls target/generated-sources/annotations/io/vertx/”

[11:55:30] <temporalfox> so we can finish early this week

[11:55:38] <temporalfox> and integrate it in the stack and website

[11:55:44] <ppatiern> oh yes

[11:55:49] <ppatiern> I have that path

[11:56:12] <temporalfox> I said the wrong one :-)

[11:56:17] <temporalfox> but intellij should add it to the path

[11:56:34] <temporalfox> for me it is blue

[11:56:39] <temporalfox> with a small fan

[11:56:40] <ppatiern> the strange thing is that the error doesn't appear in the source code

[11:56:54] <temporalfox> “Generated Source Roots”

[11:57:02] <ppatiern> the intellisense is working and can see the class

[11:59:57] <ppatiern> in INtelliJ … the Source Folders are

[12:00:03] <ppatiern> src/man/Java … ok

[12:00:08] <ppatiern> src/main/generated … ok

[12:00:25] <ppatiern> and target/../annotations

[12:00:46] <ppatiern> target/generated-sources/annotations

[12:01:31] <temporalfox> so it works ?

[12:02:01] <ppatiern> nope

[12:02:15] <ppatiern> the intellisense can see it …

[12:02:20] <ppatiern> the compiler give me the errors

[12:05:14] <ppatiern> it compiles if I set a source folder the entire folder path to the KafkaConsumer (under io.vertx.rxjava.kafka.client)

[12:05:21] <ppatiern> but in this case the intellisense doesn't work !

[12:05:36] <ppatiern> what are your source folders in the project structure ?

[13:17:02] <temporalfox> I'm using default drag and drop of project folder on intellij icon in OSX

[13:36:20] <aslaikov> hi! is there anyone alive? :)

[13:43:45] <aslaikov> does anyone use vertx jdbc with postgres? I'm trying to make a POST request and make an insert to database but it all just hangs… here is the gist:

[13:59:26] <temporalfox> have you looked at the examples aslaikov ?

[14:00:03] <aslaikov> temporalfox, yup, it's almost from there :)

[14:00:47] <temporalfox> and the original exampl does not work ?

[14:01:40] <aslaikov> temporalfox, IDK honestly, I've just made my one as this example

[14:22:06] <msavy> if i have multiple HttpClients with different HttpClientOptions (e.g. different SSL configs), is an LRUCache of HttpClient a sensible thing to do?

[14:22:28] <msavy> and said HttpClients will be reused multiple times.

[14:22:47] <msavy> not quite sure whether there is already some magic under the covers to provide this (don't think so, but thought i'd check)

[17:34:24] <temporalfox> msavy I don't understand what your use case

[17:34:35] <temporalfox> ppatiern I'm gonna do some kafka things tonight

[17:34:39] <temporalfox> on the branch

[17:34:51] <temporalfox> hopefully we can converge on something by wedesneday

[17:35:01] <ppatiern> temporalfox: ok !

[17:35:43] <msavy> temporalfox: so, for example, let's imagine i'm proxying to 10 different APIs - hence i have 10 different HttpClients constructed with unique HttpClientOptions configurations.

[17:35:53] <temporalfox> btw ppatiern concerning doc : you can read the groovy file now it shows all the code

[17:36:00] <temporalfox> but before it shows “code not translatable”

[17:36:12] <temporalfox> that's how you endup using the translatable api

[17:36:41] <temporalfox> ah

[17:36:50] <temporalfox> you have something very dynamic

[17:37:01] <msavy> and i could keep them in an LRUMap rather than making a new client + configuration for each request that comes through to the same

[17:37:05] <temporalfox> btw in latest beta msavy you can now use ssl / non ssl in same client

[17:37:06] <msavy> to the same API*

[17:37:14] <temporalfox> so you don't need ssl / non ssl clients

[17:37:15] <msavy> temporalfox: ah, that's awesome, woo!

[17:37:28] <temporalfox> msavy and we added RequestOptions

[17:37:31] <temporalfox> to override

[17:37:39] <temporalfox> to use ssl = true / false

[17:37:43] <temporalfox> instead of overloading API

[17:37:53] <temporalfox> private String host;

[17:37:53] <temporalfox> private int port;

[17:37:54] <temporalfox> private boolean ssl;

[17:37:55] <temporalfox> private String uri;

[17:38:05] <msavy> so i can set the keystores at that point?

[17:38:10] <temporalfox> no

[17:38:16] <temporalfox> the keystores are at the client level

[17:38:30] <temporalfox> I did not want to make it too complex

[17:38:41] <temporalfox> given that there is now a pool for ssl and one for non ssl

[17:38:51] <temporalfox> (obviously)

[17:38:51] <msavy> makes sense. that's the main limitation for us. mutual TLS with different backends.

[17:39:02] <temporalfox> what is this use case ?

[17:39:25] <msavy> so, let's imagine you offer your API via apiman, and are colocated with lots of different providers

[17:39:28] <temporalfox> msavy you could do an LRUMap if you use keep alive otherwise its useless

[17:39:58] <msavy> you want to secure the connection between apiman and the backend, so people can't “call around” the gateway. people do that with MTLS (per API).

[17:39:58] <temporalfox> ok

[17:40:07] <temporalfox> and each provider has its own set of certs ?

[17:40:26] <temporalfox> one thing you could do

[17:40:34] <msavy> we do use keep-alive, yes

[17:40:46] <msavy> which is on by default afaik?

[17:40:52] <temporalfox> is to have your own TrustOptions implementation

[17:41:00] <temporalfox> and implement

[17:41:01] <temporalfox> default TrustManagerFactory getTrustManagerFactory(Vertx vertx) throws Exception {

[17:41:01] <temporalfox> return KeyStoreHelper.create1))

[23:31:45] <dfg> to keep a list on online users

VertxInternal) vertx, this).getTrustMgrFactory((VertxInternal) vertx); [17:41:03] <temporalfox> } [17:41:12] <temporalfox> but I don't know how it would work with respect to connection pool [17:41:17] <temporalfox> I don't think it would be a good idea [17:41:24] <temporalfox> yes keep alive is default [17:41:32] <msavy> hmm, yes, that's what i was wondering - specifically how the threadpool worked in this respect. ok, awesome. [17:41:41] <temporalfox> it's connection pool [17:41:44] <msavy> thanks for your advice. much appreciated! [17:42:01] <msavy> also, those new additions are great for us, i can simplify some of our code :) [17:42:10] <temporalfox> I think the best is that indeed you keep a Map<Provider, HttpClient> [17:42:22] <temporalfox> and keep the client as long as it has open connections [17:42:59] <temporalfox> msavy yes, having a good http client is important [17:43:19] <msavy> at the moment i seem to be leaking file-handles somewhere, trying to find exactly where [17:43:30] <msavy> i must have forgotten to close something [17:43:32] <temporalfox> that happens if you don't close things [17:43:46] <msavy> exactly, lol - but i haven't managed to track it down yet [17:43:55] <msavy> turns out this is a bit of a pain [17:44:15] <msavy> solution - just keep increasing the number of file handles ;-)!! [17:44:32] <msavy> (NB: joke; please don't do this) [17:45:04] <temporalfox> on osx, the number of handles is quite limited [17:45:11] <temporalfox> at some poitn we had leaks in vertx test suite [17:45:17] <temporalfox> so it was not passing anymore [17:45:19] <msavy> i raised it up to… [17:45:34] <temporalfox> I tracked them down with netstat [17:45:41] <temporalfox> and I don't remember what else [17:45:44] <msavy> 262144 [17:45:51] <temporalfox> I kept the default [17:46:12] <temporalfox> it's quite easy to forget that [17:46:22] <temporalfox> oen event loop == one descriptor [17:47:34] <msavy> thanks for your help temporalfox! [17:47:40] <temporalfox> no problem [17:47:43] <msavy> and yeah, this will be fun to find; only occurs during load testing. [17:47:45] <temporalfox> I'm happy to help [17:48:03] <temporalfox> I think that what I did was to match the code [17:48:12] <temporalfox> and capture a stack trace when it's created [17:48:17] <temporalfox> and print it in finalizer [17:48:23] <temporalfox> or something like that [17:48:24] <temporalfox> but it was in test suite [17:48:27] <msavy> hmm, interesting idea [17:48:28] <temporalfox> or I used a thread [17:48:35] <temporalfox> and long connetion where printed [17:48:52] <temporalfox> I think you can do that with byteman easily [17:49:00] <msavy> yeah, that's what the perf guys just suggested to me [17:49:26] <msavy> do you use mac btw? [17:49:36] <msavy> i added byteman to brew [17:50:19] <ppatiern> temporalfox: running a Vert.x application on OpenShift we received error on access denied because Vert.x tries to create a .vertx folder in the current dir. I just workaround the problem with vertx.disableFileCaching=true and vertx.disableFileCPResolving=true … but can you explain me better the use case of file caching needed and what is the FileCPResolving ? [17:50:45] <temporalfox> ppatiern it's because of loading resoures from a jar file in fatjar mode [17:50:49] <temporalfox> it's blocking [17:50:57] <temporalfox> so we don't want to block too much [17:51:45] <ppatiern> so it's needed when the application has some rsources to access ? [17:53:16] <ppatiern> disabling it means having application blocking but still working ? [17:53:29] <ppatiern> why two parameters ? what is the related mean for both of them ? [17:53:30] <temporalfox> yes it means it's going to go in the classloader thing [17:53:48] <temporalfox> vertx.disableFileCPResolving means loading files from jars [17:53:57] <temporalfox> like getResourceAsStream [17:54:02] <temporalfox> it's not the same [17:54:30] <ppatiern> so the file caching creates the .vertx folder right ? [17:54:46] <temporalfox> yes [17:54:53] <temporalfox> it's also use dby some other components [17:54:55] <temporalfox> like vertx web [17:55:05] <ppatiern> but the does FileCPResolving access to the disk for writing ? [17:55:24] <ppatiern> because on OpenShift I need both disabled [17:55:50] <ppatiern> and on Openshift you can't write in the current folder … you need an external volume [17:59:22] <temporalfox> no I think it will keep it in memory [17:59:23] <temporalfox> ppatiern [17:59:25] <temporalfox> props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); [17:59:34] <temporalfox> is it possible to use it with String ? [17:59:39] <temporalfox> and map ? [18:02:47] <ppatiern> instead of Properties and the enums you mean ? [18:03:11] <temporalfox> yes [18:03:12] <ppatiern> i.e. [18:03:22] <temporalfox> I'm trying to show ocnfig with map only [18:03:23] <temporalfox> in the doc [18:03:39] <ppatiern> map.put(“key_deserializer_class_….”, “org.apache.kafka….StringDeserializer”); [18:04:19] <ppatiern> yes because I used this way in my AMQP kafka bridge … even if for being polyglot we are losing a lot of Java cookies :-) [18:04:22] <temporalfox> ok [18:04:27] <temporalfox> yes but it's fine [18:04:34] <temporalfox> it's simple [18:04:38] <temporalfox> that's the important thing [18:06:57] <ppatiern> being polyglot ? [18:07:04] <temporalfox> no [18:07:11] <temporalfox> wether you use a string or a class [18:07:15] <temporalfox> actually a string is more readable [18:07:18] <temporalfox> that a constant [18:07:24] <temporalfox> or a class literal [18:07:46] <ppatiern> but more error prone [18:08:27] <temporalfox> [18:08:36] <temporalfox> I'm pushing there the docs editing [18:09:28] <temporalfox> I hope to finish that tonight [18:09:35] <temporalfox> it should be ok you did most of it :-) [18:09:38] <ppatiern> the “Getting topic partitions information” is at a lower level .. it's wrong (my fault) can you fix it [18:09:42] <temporalfox> just breaking it down into smaller pieces [18:10:01] <ppatiern> it should be at same level of others [18:10:03] <temporalfox> yes [18:10:07] <temporalfox> I removed one level of indent [18:10:13] <temporalfox> with Getting Started [18:10:22] <temporalfox> should do the same with mqtt-server [18:10:28] <ppatiern> ah ok [18:10:40] <temporalfox> it's more readable [18:10:50] <ppatiern> agree [18:10:52] <temporalfox> docs is readable by being linear and small chunks [18:11:04] <temporalfox> I'm just taking your doc [18:11:10] <temporalfox> and break it into small chunks [18:11:54] <ppatiern> you know better than me the right format for the doc [18:12:02] <temporalfox> I pushed the indent [18:12:08] <ppatiern> btw just coming back to disableFileCPResolving, you said that it doesn't try to write on disk … but with this enabled … a Vert.x app on OpenShift doesn't run with access denied error :( [18:12:10] <temporalfox> maybe :-) [18:12:32] <temporalfox> I htink to run vertx on openshift the best is to reach clement [18:12:37] <temporalfox> he has the best advices for openshift [18:13:17] <ppatiern> ok thanks ! [18:13:27] <temporalfox> I told him you are looking for him :-) [18:13:35] <cescoffier> hi [18:13:36] <temporalfox> cescoffier is there :-) [18:13:41] <cescoffier> @ppatiern looking for me ? [18:13:50] <temporalfox> ppatiern wants all the best advices for running vertx on openshift [18:14:29] <cescoffier> use the fabric8 maven plugin and everything is going to be almost automatic [18:14:35] <ppatiern> cescoffier: I was writing an email … but you could read the conversation I had with Julien [18:15:00] <ppatiern> but I want to know the meaning of file caching and disableFileCPResolving that I need always to disable [18:15:16] <ppatiern> in order to avoid “denied access” … so like something is trying to write in the local folder [18:15:36] <cescoffier> so, the hint is…. relocate .vertx to /tmp [18:15:46] <cescoffier> what are you using to deploy on openshift ? [18:15:54] <cescoffier> f-m-p ? docker file ? [18:15:57] <cescoffier> template ? [18:16:06] <ppatiern> I use the fabric8 plugin just to generate yaml files [18:16:16] <ppatiern> I don't want and automatic deployment for now [18:16:32] <ppatiern> just generated yml files and then deploy them manually [18:16:46] <cescoffier> are you using a recent fabric8 mavne plugin ? [18:17:05] <cescoffier> it should generate a yaml file with a java -jar …. -Dvertx.baseCacheDir=/tmp [18:17:10] <cescoffier> (let me check the exact name) [18:18:43] <cescoffier> - name: JAVA_OPTIONS [18:18:43] <cescoffier> value: -Dvertx.cacheDirBase=/tmp [18:19:15] <ppatiern> can you give me a reference link for that … thanks ! [18:20:46] <cescoffier> it's actually generated by the fabric8 mavne plugin if it detects a vert.x app [18:21:16] <cescoffier> [18:21:59] <ppatiern> thanks ! [18:22:36] <ppatiern> btw the current Eclipse Hono project uses the docker maven plugin … I'm converging to use only the fabric8 [18:22:48] <cescoffier> here you have plenty of examples: [18:22:55] <ppatiern> but for now the docker plugin is still there for building docker image and the fabric8 is there for yml generation [18:23:11] <cescoffier> hum… not anymore [18:23:19] <ppatiern> but I'll converge to use only fabric8 plugin for building images and yaml files [18:23:27] <cescoffier> you can't access the docker registry of an openshift anymore [18:23:39] <cescoffier> (except if you open it explicitely) [18:24:09] <cescoffier> the “only” “work-everywherE” way is S2I [18:24:20] <ppatiern> I know [18:24:25] <cescoffier> fortunately the fabric8 maven plugin do s2i build for you [18:25:57] <ppatiern> yes [18:26:50] <aslaikov> all: any chance someone does use vertx with postgres? :) [18:27:50] <cescoffier> if you are still using the docker way, just use something like: [18:28:37] <cescoffier> sorry, wrong link: [18:29:09] <cescoffier> aslaikov : yes, either with the vert.x jdbc client, or the vertx-postgres-client [18:29:44] <aslaikov> cescoffier, hi mate! :) could you please take a look at [18:30:07] <aslaikov> cescoffier, it just hangs on this post and I don't know what should I do… [18:31:14] <cescoffier> what does this: “ SQLConnection conn = ctx.get(“conn”);” [18:31:53] <cescoffier> I'm not sure you can do that. You should open a new connection in your method and close it [18:33:27] <aslaikov> cescoffier, but I have a wildcard route which saves connection to context [18:34:16] <cescoffier> this is not the right method: addHeadersEndHandler [18:34:52] <aslaikov> cescoffier, and my get and delete routes are working very well, only this post isn't… :( [18:35:04] <aslaikov> cescoffier, why? [18:35:29] <cescoffier> because this method is closing the connection just after having sent the header, not the payload [18:36:01] <cescoffier> well, in your case it should not matter, as you don't write the header in advance [18:36:34] <cescoffier> are you sure it hangs in the JDBC call ? [18:36:54] <aslaikov> cescoffier, no I'm not sure [18:38:24] <aslaikov> cescoffier, all I know is that curl tells me that upload completely sent off, and database connection is created [18:38:44] <cescoffier> can you get the json body ? [18:39:05] <cescoffier> you may have an exception somewhere [18:41:37] <aslaikov> cescoffier, I did try already to do like this: [19:07:29] <aslaikov> cescoffier, I believe it hangs at get methods… at getInteger() and getFloat() especially. Now I have getString() only and Integer.parseInt() and Double.parseDouble() my insert works :) [19:07:40] <aslaikov> cescoffier, but query failing :( [19:42:05] <myghty> hm [19:42:11] <myghty> I never got fabric8 running :/ [19:42:25] <myghty> but never really tried, installed it, booted it, did not work, stopped it :D [21:05:00] <cescoffier> myghty : we were speaking of the fabric8 maven plugin, not fabric8 runtime. [21:05:20] <cescoffier> I believe ppatiern is trying to deploy on Kubernetes / Openshift [21:07:52] <myghty> ch007m: ah :) [21:08:34] <myghty> ch007m: sorry I meant cescoffier [23:14:07] <pikajude> what's the best way to hook into vertx so that i can manually log http responses [23:31:26] <dfg> Is it possible to do something on session Timeout in vertx ? Like session.onTimeout( () → disconnectUser(session.getParam(“userId”