Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connection leak with hot reload after #5 fix #8

Closed
nsphung opened this issue May 13, 2014 · 22 comments
Closed

Connection leak with hot reload after #5 fix #8

nsphung opened this issue May 13, 2014 · 22 comments

Comments

@nsphung
Copy link

nsphung commented May 13, 2014

Hello,

Now, in my tests suite, I often have this kind of java core dump:

Stack: [0x000000011a64b000,0x000000011a74b000],  sp=0x000000011a7375a0,  free space=945k
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 292  java.net.SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I (0 bytes) @ 0x0000000102866067 [0x0000000102866000+0x67]
J 293 C1 java.net.SocketInputStream.read([BIII)I (290 bytes) @ 0x000000010286b3a4 [0x000000010286ae40+0x564]
J 290 C1 java.net.SocketInputStream.read([BII)I (15 bytes) @ 0x000000010286a27c [0x000000010286a1c0+0xbc]
J 5280 C1 java.io.BufferedInputStream.fill()V (233 bytes) @ 0x0000000102a1f84c [0x0000000102a1f1c0+0x68c]
J 33 C1 java.io.BufferedInputStream.read1([BII)I (108 bytes) @ 0x00000001027d856c [0x00000001027d83a0+0x1cc]
J 31 C1 java.io.BufferedInputStream.read([BII)I (113 bytes) @ 0x00000001027d66ec [0x00000001027d6460+0x28c]
j  sun.net.www.http.HttpClient.parseHTTPHeader(Lsun/net/www/MessageHeader;Lsun/net/ProgressSource;Lsun/net/www/protocol/http/HttpURLConnection;)Z+51
j  sun.net.www.http.HttpClient.parseHTTP(Lsun/net/www/MessageHeader;Lsun/net/ProgressSource;Lsun/net/www/protocol/http/HttpURLConnection;)Z+56
J 6356 C1 sun.net.www.protocol.http.HttpURLConnection.getInputStream0()Ljava/io/InputStream; (2019 bytes) @ 0x000000010355d084 [0x000000010355c140+0xf44]
J 6355 C1 sun.net.www.protocol.http.HttpURLConnection.getInputStream()Ljava/io/InputStream; (56 bytes) @ 0x00000001035599a4 [0x00000001035594a0+0x504]
j  com.couchbase.client.vbucket.ConfigurationProviderHTTP.readToString(Ljava/net/URLConnection;)Ljava/lang/String;+48
j  com.couchbase.client.vbucket.ConfigurationProviderHTTP.readPools(Ljava/lang/String;)V+40
j  com.couchbase.client.vbucket.ConfigurationProviderHTTP.getBucketConfiguration(Ljava/lang/String;)Lcom/couchbase/client/vbucket/config/Bucket;+53
j  com.couchbase.client.vbucket.provider.BucketConfigurationProvider.bootstrapHttp()Z+34
j  com.couchbase.client.vbucket.provider.BucketConfigurationProvider.bootstrap()Lcom/couchbase/client/vbucket/config/Bucket;+13
j  com.couchbase.client.vbucket.provider.BucketConfigurationProvider.getConfig()Lcom/couchbase/client/vbucket/config/Bucket;+11
j  com.couchbase.client.CouchbaseConnectionFactory.getVBucketConfig()Lcom/couchbase/client/vbucket/config/Config;+4
j  com.couchbase.client.CouchbaseClient.<init>(Lcom/couchbase/client/CouchbaseConnectionFactory;)V+3
j  org.reactivecouchbase.CouchbaseBucket.connect()Lorg/reactivecouchbase/CouchbaseBucket;+125
j  org.reactivecouchbase.ReactiveCouchbaseDriver.bucket(Lscala/collection/immutable/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Lorg/reactivecouchbase/CouchbaseBucket;+48
j  org.reactivecouchbase.play.plugins.CouchbasePlugin.org$reactivecouchbase$play$plugins$CouchbasePlugin$$connect(Lcom/typesafe/config/ConfigObject;)V+314
j  org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2$$anonfun$apply$1.apply(Lcom/typesafe/config/ConfigObject;)V+8
j  org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2$$anonfun$apply$1.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
J 3647 C2 scala.collection.AbstractIterator.foreach(Lscala/Function1;)V (6 bytes) @ 0x0000000102fb239c [0x0000000102fb2320+0x7c]
J 4966 C2 scala.collection.AbstractIterable.foreach(Lscala/Function1;)V (6 bytes) @ 0x0000000102e72138 [0x0000000102e720e0+0x58]
j  org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2.apply(Ljava/util/List;)Ljava/util/List;+15
j  org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
J 7495 C2 scala.Option.map(Lscala/Function1;)Lscala/Option; (31 bytes) @ 0x00000001038f25a4 [0x00000001038f24e0+0xc4]
j  org.reactivecouchbase.play.plugins.CouchbasePlugin.onStart()V+38
j  play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Lplay/api/Plugin;)V+1
j  play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
J 3623 C2 scala.collection.immutable.List.foreach(Lscala/Function1;)V (32 bytes) @ 0x0000000102f7defc [0x0000000102f7de40+0xbc]
j  play.api.Play$$anonfun$start$1.apply$mcV$sp()V+17
j  play.api.Play$$anonfun$start$1.apply()V+1
j  play.api.Play$$anonfun$start$1.apply()Ljava/lang/Object;+1
j  play.utils.Threads$.withContextClassLoader(Ljava/lang/ClassLoader;Lscala/Function0;)Ljava/lang/Object;+16
j  play.api.Play$.start(Lplay/api/Application;)V+32
j  play.api.test.PlayRunners$class.running(Lplay/api/test/PlayRunners;Lplay/api/test/FakeApplication;Lscala/Function0;)Ljava/lang/Object;+8
j  play.api.test.Helpers$.running(Lplay/api/test/FakeApplication;Lscala/Function0;)Ljava/lang/Object;+3
j  play.api.test.WithApplication.around(Lscala/Function0;Lorg/specs2/execute/AsResult;)Lorg/specs2/execute/Result;+17
j  org.specs2.mutable.Around$class.delayedInit(Lorg/specs2/mutable/Around;Lscala/Function0;)V+16
j  play.api.test.WithApplication.delayedInit(Lscala/Function0;)V+2

I'm launching tests where I'm not reusing the same connection to Couchbase each time (meaning lots of val driver = ReactiveCouchbaseDriver() and then driver.shutdown() at the end). Am I doing something wrong ?

For the hot reload, after several code modification in my application, I have the following now:

java.net.SocketException: Socket operation on non-socket
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:150)
        at java.net.SocketInputStream.read(SocketInputStream.java:121)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:701)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:672)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1534)
        at sun.net.www.protocol.http.HttpURLConnection.access$200(HttpURLConnection.java:90)
        at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1431)
        at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1429)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessController.doPrivileged(AccessController.java:713)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1428)
        at com.couchbase.client.vbucket.ConfigurationProviderHTTP.readToString(ConfigurationProviderHTTP.java:423)
        at com.couchbase.client.vbucket.ConfigurationProviderHTTP.readPools(ConfigurationProviderHTTP.java:209)
        at com.couchbase.client.vbucket.ConfigurationProviderHTTP.getBucketConfiguration(ConfigurationProviderHTTP.java:146)
        at com.couchbase.client.vbucket.provider.BucketConfigurationProvider.bootstrapHttp(BucketConfigurationProvider.java:320)
        at com.couchbase.client.vbucket.provider.BucketConfigurationProvider.bootstrap(BucketConfigurationProvider.java:116)
        at com.couchbase.client.vbucket.provider.BucketConfigurationProvider.getConfig(BucketConfigurationProvider.java:348)
        at com.couchbase.client.CouchbaseConnectionFactory.getVBucketConfig(CouchbaseConnectionFactory.java:317)
        at com.couchbase.client.CouchbaseClient.<init>(CouchbaseClient.java:255)
        at org.reactivecouchbase.CouchbaseBucket.connect(Couchbase.scala:53)
        at org.reactivecouchbase.ReactiveCouchbaseDriver.bucket(Couchbase.scala:203)
        at org.reactivecouchbase.play.plugins.CouchbasePlugin.org$reactivecouchbase$play$plugins$CouchbasePlugin$$connect(CouchbasePlugin.scala:47)
        at org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2$$anonfun$apply$1.apply(CouchbasePlugin.scala:27)
        at org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2$$anonfun$apply$1.apply(CouchbasePlugin.scala:27)
        at scala.collection.Iterator$class.foreach(Iterator.scala:727)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
        at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
        at org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2.apply(CouchbasePlugin.scala:27)
        at org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2.apply(CouchbasePlugin.scala:26)
        at scala.Option.map(Option.scala:145)
        at org.reactivecouchbase.play.plugins.CouchbasePlugin.onStart(CouchbasePlugin.scala:26)
        at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:88)
        at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:88)
        at scala.collection.immutable.List.foreach(List.scala:318)
        at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:88)
        at play.api.Play$$anonfun$start$1.apply(Play.scala:88)
        at play.api.Play$$anonfun$start$1.apply(Play.scala:88)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:18)
        at play.api.Play$.start(Play.scala:87)
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:139)
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112)
        at scala.Option.map(Option.scala:145)
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112)
        at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110)
        at scala.util.Success.flatMap(Try.scala:200)
        at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:110)
        at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:102)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
        at scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
        at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
        at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
@mathieuancelin
Copy link
Member

Hi,

how many is a lot ?

@nsphung
Copy link
Author

nsphung commented May 13, 2014

At least 50 times (manually like described above + each time I'm using play.api.test.WithApplication, it seems to reallocate a couchbase connection).

@mathieuancelin
Copy link
Member

Yes the withApplication will also create a connection for each bucket referenced in your application.conf file.

Why don't you use PlayCouchbase.bucket("bucket2") instead of creating your own connection ?

@nsphung
Copy link
Author

nsphung commented May 13, 2014

Ok I have tried with PlayCouchbase.bucket("bucket2") and it doesn't solve the issue (with tests and same with the hot reload)

@mathieuancelin
Copy link
Member

Are you sure you're using the last snapshot ?

@nsphung
Copy link
Author

nsphung commented May 13, 2014

Yes, I have use play update / sbt update to make sure and define "org.reactivecouchbase" %% "reactivecouchbase-core" % "0.2-SNAPSHOT" & "org.reactivecouchbase" %% "reactivecouchbase-play" % "0.2-SNAPSHOT" on my build.sbt file.

@mathieuancelin
Copy link
Member

Do you know if tests are launched sequentially or in parallel ?

@nsphung
Copy link
Author

nsphung commented May 13, 2014

I have tried with these parameter in Play (2.2.2) + add args(isolated = true, sequential=true) in my Specs2 tests. This doesn't help.

fork in Test := false
parallelExecution in Test := false

Maybe it's related to this old issue in Play playframework/playframework#849

@mariussoutier
Copy link

I'm experiencing these core dumps as well while developing with ~run. I'm also seeing an error where the driver no longer connects to Couchbase and just reports something along the lines of "Cannot find $bucketname".

@mathieuancelin
Copy link
Member

Hi,

does it happen frequently ?
How many reloads ?

@mariussoutier
Copy link

Usually between two and five.

@mathieuancelin
Copy link
Member

That's low :(

Couchbase version ?

@mariussoutier
Copy link

I'm running 2.5.1-1083-rel

@mathieuancelin
Copy link
Member

I'll try to fix that as soon as possible guys

@mathieuancelin
Copy link
Member

Hey guys,

I've just pushed a new SNAPSHOT.

Can you try it please ?

@mariussoutier
Copy link

Unfortunately no, after a few compile+reload in ~run mode, I still get:

play.api.UnexpectedException: Unexpected exception[ConfigurationException: Configuration for bucket "xxx" was not found in server list ([http://127.0.0.1:8091/pools]).]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:148) ~[play_2.10.jar:2.2.3]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.3]
    at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.3]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110) ~[play_2.10.jar:2.2.3]
    at scala.util.Success.flatMap(Try.scala:200) ~[scala-library.jar:na]
Caused by: com.couchbase.client.vbucket.ConfigurationException: Configuration for bucket "xxx" was not found in server list ([http://127.0.0.1:8091/pools]).
    at com.couchbase.client.vbucket.ConfigurationProviderHTTP.readPools(ConfigurationProviderHTTP.java:274) ~[couchbase-client-1.3.2.jar:1.3.2]
    at com.couchbase.client.vbucket.ConfigurationProviderHTTP.getBucketConfiguration(ConfigurationProviderHTTP.java:146) ~[couchbase-client-1.3.2.jar:1.3.2]
    at com.couchbase.client.CouchbaseConnectionFactory.getVBucketConfig(CouchbaseConnectionFactory.java:313) ~[couchbase-client-1.3.2.jar:1.3.2]
    at com.couchbase.client.CouchbaseClient.<init>(CouchbaseClient.java:252) ~[couchbase-client-1.3.2.jar:1.3.2]
    at org.reactivecouchbase.CouchbaseBucket.connect(Couchbase.scala:53) ~[reactivecouchbase-core_2.10-0.2-SNAPSHOT.jar:0.2-SNAPSHOT]
    at org.reactivecouchbase.ReactiveCouchbaseDriver.bucket(Couchbase.scala:201) ~[reactivecouchbase-core_2.10-0.2-SNAPSHOT.jar:0.2-SNAPSHOT]

But no core dumps.

@mathieuancelin
Copy link
Member

Are you sure bucket "xxx" exists ?

Because here, it's a pure Couchbase exception saying that bucket "xxx" isn't present on your 127.0.0.1 server.

@mariussoutier
Copy link

:) Of course, I'm reading from and writing to it. It works for the first few requests. It works in all unit tests. Using run instead of ~run is also a lot more stable, but eventually the same error occurs.

@mathieuancelin
Copy link
Member

Okay,

I just can't reproduce the issue on my machine.

Is it possible to create a small application to reproduce the issue so I can try to reproduce it ?

@mariussoutier
Copy link

Since I have no idea what causes the issue, it will be a little difficult to build a project that safely reproduces the error. I'll see what I can do.
For now, all I can say is that is happens in a project that consists of 7 sbt sub-projects, all of which are Play 2.2.3 apps.

@nsphung
Copy link
Author

nsphung commented May 19, 2014

Now I'm getting java core dump from hot reload too:

Stack: [0x0000000116936000,0x0000000116a36000],  sp=0x0000000116a233d0,  free space=948k
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  java.net.SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I+0
J 16501 C1 java.net.SocketInputStream.read([BIII)I (290 bytes) @ 0x0000000105d87264 [0x0000000105d86d00+0x564]
J 16500 C1 java.net.SocketInputStream.read([BII)I (15 bytes) @ 0x000000010531f87c [0x000000010531f7c0+0xbc]
J 11854 C1 java.io.BufferedInputStream.fill()V (233 bytes) @ 0x000000010547c40c [0x000000010547c100+0x30c]
J 12587 C2 java.io.BufferedInputStream.read([BII)I (113 bytes) @ 0x000000010567246c [0x0000000105672280+0x1ec]
j  sun.net.www.http.HttpClient.parseHTTPHeader(Lsun/net/www/MessageHeader;Lsun/net/ProgressSource;Lsun/net/www/protocol/http/HttpURLConnection;)Z+51
j  sun.net.www.http.HttpClient.parseHTTP(Lsun/net/www/MessageHeader;Lsun/net/ProgressSource;Lsun/net/www/protocol/http/HttpURLConnection;)Z+56
j  sun.net.www.protocol.http.HttpURLConnection.getInputStream0()Ljava/io/InputStream;+327
j  sun.net.www.protocol.http.HttpURLConnection.access$200(Lsun/net/www/protocol/http/HttpURLConnection;)Ljava/io/InputStream;+1
j  sun.net.www.protocol.http.HttpURLConnection$9.run()Ljava/io/InputStream;+4
j  sun.net.www.protocol.http.HttpURLConnection$9.run()Ljava/lang/Object;+1
v  ~StubRoutines::call_stub
J 232  java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (0 bytes) @ 0x0000000103b3fe23 [0x0000000103b3fdc0+0x63]
J 18454 C1 java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object; (37 bytes) @ 0x00000001061f570c [0x00000001061f53e0+0x32c]
j  sun.net.www.protocol.http.HttpURLConnection.getInputStream()Ljava/io/InputStream;+35
j  com.couchbase.client.vbucket.ConfigurationProviderHTTP.readToString(Ljava/net/URLConnection;)Ljava/lang/String;+48
j  com.couchbase.client.vbucket.ConfigurationProviderHTTP.readPools(Ljava/lang/String;)V+40
j  com.couchbase.client.vbucket.ConfigurationProviderHTTP.getBucketConfiguration(Ljava/lang/String;)Lcom/couchbase/client/vbucket/config/Bucket;+53
j  com.couchbase.client.vbucket.provider.BucketConfigurationProvider.bootstrapHttp()Z+34
j  com.couchbase.client.vbucket.provider.BucketConfigurationProvider.bootstrap()Lcom/couchbase/client/vbucket/config/Bucket;+13
j  com.couchbase.client.vbucket.provider.BucketConfigurationProvider.getConfig()Lcom/couchbase/client/vbucket/config/Bucket;+11
j  com.couchbase.client.CouchbaseConnectionFactory.getVBucketConfig()Lcom/couchbase/client/vbucket/config/Config;+4
j  com.couchbase.client.CouchbaseClient.<init>(Lcom/couchbase/client/CouchbaseConnectionFactory;)V+3
j  org.reactivecouchbase.CouchbaseBucket.connect()Lorg/reactivecouchbase/CouchbaseBucket;+125
j  org.reactivecouchbase.ReactiveCouchbaseDriver.bucket(Lscala/collection/immutable/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Lorg/reactivecouchbase/CouchbaseBucket;+48
j  org.reactivecouchbase.play.plugins.CouchbasePlugin.org$reactivecouchbase$play$plugins$CouchbasePlugin$$connect(Lcom/typesafe/config/ConfigObject;)V+314
j  org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2$$anonfun$apply$1.apply(Lcom/typesafe/config/ConfigObject;)V+8
j  org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2$$anonfun$apply$1.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
J 13179 C1 scala.collection.AbstractIterator.foreach(Lscala/Function1;)V (6 bytes) @ 0x0000000105829a24 [0x0000000105829820+0x204]
J 13200 C1 scala.collection.AbstractIterable.foreach(Lscala/Function1;)V (6 bytes) @ 0x0000000105833b4c [0x0000000105833960+0x1ec]
j  org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2.apply(Ljava/util/List;)Ljava/util/List;+15
j  org.reactivecouchbase.play.plugins.CouchbasePlugin$$anonfun$onStart$2.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
J 13699 C1 scala.Option.map(Lscala/Function1;)Lscala/Option; (31 bytes) @ 0x00000001044f9344 [0x00000001044f9040+0x304]
j  org.reactivecouchbase.play.plugins.CouchbasePlugin.onStart()V+38
j  play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Lplay/api/Plugin;)V+1
j  play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
J 16763 C2 scala.collection.immutable.List.foreach(Lscala/Function1;)V (32 bytes) @ 0x0000000105e325bc [0x0000000105e32500+0xbc]
j  play.api.Play$$anonfun$start$1.apply$mcV$sp()V+17
j  play.api.Play$$anonfun$start$1.apply()V+1
j  play.api.Play$$anonfun$start$1.apply()Ljava/lang/Object;+1
j  play.utils.Threads$.withContextClassLoader(Ljava/lang/ClassLoader;Lscala/Function0;)Ljava/lang/Object;+16
j  play.api.Play$.start(Lplay/api/Application;)V+32
j  play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(Ljava/lang/ClassLoader;)Lscala/util/Try;+81
j  play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
J 13699 C1 scala.Option.map(Lscala/Function1;)Lscala/Option; (31 bytes) @ 0x00000001044f9344 [0x00000001044f9040+0x304]
j  play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(Lscala/Option;)Lscala/util/Try;+9
j  play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(Ljava/lang/Object;)Ljava/lang/Object;+5
j  scala.util.Success.flatMap(Lscala/Function1;)Lscala/util/Try;+5
j  play.core.ReloadableApplication$$anonfun$get$1.apply()Lscala/util/Try;+100
j  play.core.ReloadableApplication$$anonfun$get$1.apply()Ljava/lang/Object;+1
j  scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1()Lscala/util/Try;+8
j  scala.concurrent.impl.Future$PromiseCompletingRunnable.run()V+5
j  scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec()Z+4
J 16794 C2 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(Lscala/concurrent/forkjoin/ForkJoinTask;)V (60 bytes) @ 0x0000000105e46d30 [0x0000000105e46be0+0x150]
j  scala.concurrent.forkjoin.ForkJoinPool.runWorker(Lscala/concurrent/forkjoin/ForkJoinPool$WorkQueue;)V+11
j  scala.concurrent.forkjoin.ForkJoinWorkerThread.run()V+14

It happens after 4-5 code modifications

@mathieuancelin
Copy link
Member

That's just weird.

I tried with a 2.2 and 2.5 server on a sample app with ~run.
The app was polling responses like crazy and I did like 30 changes in the code (which result in a reload) and nothing happened.

Can you both describe your env. (JVM, Couchbase server, project structure, etc ...) ?

Maybe you can try to provide a virtual machine with your env. and app so I can try it myself and debug it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants