Reactive Microservices for the JVM

Overview

Gitter Join the contributors chat at https://gitter.im/lagom/contributors Build Status Open Source Helpers

Lagom - The Reactive Microservices Framework

Lagom is a Swedish word meaning just right, sufficient. Microservices are about creating services that are just the right size, that is, they have just the right level of functionality and isolation to be able to adequately implement a scalable and resilient system.

Lagom focuses on ensuring that your application realizes the full potential of the Reactive Manifesto while delivering a high productivity development environment, and seamless production deployment experience.

Learn More

License

Copyright (C) Lightbend Inc. (https://www.lightbend.com).

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Comments
  • handle no body as a valid input

    handle no body as a valid input

    Purpose

    Allow sending requests with no body without throwing an exception. Some services might define their input as Option but currently you must send body with your request if the service has an input even if the body is {}.

    My fix checks if the input byte stream is empty and if so it returns an empty JsObject instead of throwing DeserializationException.

    Notes

    Please let me know if tests are necessary because I could not find tests for MessageSerializer.

    topic:service-api 
    opened by idoshamun 47
  • Multiple descriptors with a Lagom service

    Multiple descriptors with a Lagom service

    In a Lagom service it is possible to describe multiple service classes that each contain a separate descriptor:

    abstract class PaymentApplication(context: LagomApplicationContext) extends LagomApplication(context) with AhcWSComponents {
    
      override lazy val lagomServer = LagomServer.forServices(
        bindService[CreditService].to(wire[CreditServiceImpl]),
        bindService[DebitService].to(wire[DebitServiceImpl])
      )
    }
    

    If the service names are different in each descriptor, then an invalid bundle.conf for ConductR is generated that leads to Connection refused responses for services (see Scenario 1). Using the same service name across the different descriptors is not allowed because Lagom in development mode, the deployment of the first descriptor succeeds but the second fails (see Scenario 2).

    We need to find a solution that works both in ConductR and in Lagom development mode (and for other deployment tools). The LagomServer.forServices declaration allows to bind multiple several service interfaces, i.e. several descriptors that can contain different service names. Therefore, from a Lagom perspective only Scenario 1 is valid. This scenario would work for ConductR if the different service endpoints would use the same bind port.

    This issue occurs both with Lagom Java and Scala 1.3.1.

    Scenario 1

    If both descriptors in the service interface use a different name, e.g. named(“credit”) and named(“debit”) then the following bundle.conf is generated:

    components = {
      lagom-service-impl = {
        description      = "lagom-service-impl"
        file-system-type = "universal"
        start-command    = ["lagom-service-impl/bin/lagom-service-impl", "-J-Xms134217728", "-J-Xmx134217728", "-Dhttp.address=$CREDIT_BIND_IP", "-Dhttp.port=$CREDIT_BIND_PORT", "-Dplay.crypto.secret=6c61676f6d2d736572766963652d696d706c"]
        endpoints = {
          "credit" = {
            bind-protocol = "http"
            bind-port     = 0
            service-name  = "credit"
            acls          = [
              {
                http = {
                  requests = [
                    {
                      path-beg = "/credit"
                    }
                  ]
                }
              }
            ]
          },
          "debit" = {
            bind-protocol = "http"
            bind-port     = 0
            service-name  = "debit"
            acls          = [
              {
                http = {
                  requests = [
                    {
                      path-beg = "/debit"
                    }
                  ]
                }
              }
            ]
          },
          "akka-remote" = {
            bind-protocol = "tcp"
            bind-port     = 0
            services      = []
          }
        }
      }
    }
    

    Two endpoints (debit and credit) are created. This conceptually does not work for ConductR because each endpoint gets assigned a different bind port and when starting the Lagom application (see start-command) then the bind IP and bind port of only the first service is taken ("-Dhttp.address=$CREDIT_BIND_IP", "-Dhttp.port=$CREDIT_BIND_PORT”). As a result, the credit endpoint is accessible in ConductR but the debit endpoints are returning a Connection refused error. This is because no Netty server has been started on the bind port of the debit service.

    Scenario 2

    If both descriptors in the service interface use a same name, e.g. named(“paymentservice”) and named(“paymentservice”) then the following bundle.conf is generated:

    components = {
      lagom-service-impl = {
        description      = "lagom-service-impl"
        file-system-type = "universal"
        start-command    = ["lagom-service-impl/bin/lagom-service-impl", "-J-Xms134217728", "-J-Xmx134217728", "-Dhttp.address=$PAYMENTSERVICE_BIND_IP", "-Dhttp.port=$PAYMENTSERVICE_BIND_PORT", "-Dplay.crypto.secret=6c61676f6d2d736572766963652d696d706c"]
        endpoints = {
          "paymentservice" = {
            bind-protocol = "http"
            bind-port     = 0
            service-name  = "paymentservice"
            acls          = [
              {
                http = {
                  requests = [
                    {
                      path-beg = "/credit"
                    }
                  ]
                }
              },
              {
                http = {
                  requests = [
                    {
                      path-beg = "/debit"
                    }
                  ]
                }
              }
            ]
          },
          "akka-remote" = {
            bind-protocol = "tcp"
            bind-port     = 0
            services      = []
          }
        }
      }
    }
    

    Now, the HTTP endpoints of both services classes are merged into one ConductR endpoint “paymentservice”. While this solves the start-command issue, this bundle.conf seems to be invalid. When loading the bundle onto ConductR, I receive a broken pipe error which usually indicates that the bundle.conf is invalid

    conduct load /Users/mj/workspace/sbt-conductr/sbt-conductr-tester/lagom-java-bundle/lagom-service-impl/target/bundle/lagom-service-impl-v0-42eb32075b87b72dd1e8571a6453ab9d2339674927f5bd381b1bf7b5afa0e7c1.zip
    Retrieving bundle..
    Retrieving file:///Users/mj/workspace/sbt-conductr/sbt-conductr-tester/lagom-java-bundle/lagom-service-impl/target/bundle/lagom-service-impl-v0-42eb32075b87b72dd1e8571a6453ab9d2339674927f5bd381b1bf7b5afa0e7c1.zip
    Loading bundle to ConductR..
    Error: Unable to contact ConductR.
    Error: Reason: ('Connection aborted.', BrokenPipeError(32, 'Broken pipe'))
    Error: Start the ConductR sandbox with: sandbox run IMAGE_VERSION
    Also, this service declaration does not work in Lagom development mode. When there’s two different descriptors with the same name in development mode, the deployment of the first descriptor succeeds but the second fails (or vice versa) because it considers it’s already deployed.
    

    Additional info In sbt-conductr we already have a integration test in place that tests Scenario 2. If this scenario is invalid then the integration test should be invalid as well. I’ve created an additional integration test for Lagom Scala for testing purposes as well: https://github.com/typesafehub/sbt-conductr/pull/223. Maybe this integration test was valid from a ConductR perspective when we were still using the “services” endpoint format and not the “acls” endpoint format?!

    type:defect 
    opened by markusjura 40
  • Issue-355: Rename lagom dev mode components

    Issue-355: Rename lagom dev mode components

    #Pull Request Checklist

    • [x] Have you read through the contributor guidelines?
    • [x] Have you signed the Lightbend CLA?
    • [ ] Have you added copyright headers to new files?
    • [ ] Have you updated the documentation?
    • [ ] Have you added tests for any changed functionality?

    Fixes

    Fixes #355

    Purpose

    The PR renamed all related lagom dev mode components are renamed only at the file level (the class name are unchanged). This way the code is less confusing for someone trying to understand the code and the difference can be made between user facing code and internal lagom code.

    Background Context

    I take this approach (rename only the file and not the class) to keep changes in the code base small.

    References

    Are there any relevant issues / PRs / mailing lists discussions?

    topic:dev-environment 
    opened by ralphlaude 32
  • Subscribe to topics to receive keys along with messages

    Subscribe to topics to receive keys along with messages

    Pull Request Checklist

    Fixes

    Fixes #xxxx

    Purpose

    When Lagom services want to subscribe to topics produced outside of Lagom, the key is sometimes required to process the full semantics of the message/event payload. The current broker Subscriber interfaces atLeastOnce and atMostOnceSource discard the key (or event tag) and only present the message/event payload. New, parallel interfaces atLeastOnceWithKey and atMostOnceSourceWithKey expose the key to allow more flexibility interfacing with external topics.

    Background Context

    The approach tries to expose the underlying key which is already just under the surface of the interface. The goal is minimum disruption and minimum duplication (DRY).

    References

    See Gitter discussion from August 10, 2017 2:48 PM

    type:improvement topic:message-broker-api 
    opened by jdutton 29
  • Netty LEAK detector blocks Cassandra driver from connecting

    Netty LEAK detector blocks Cassandra driver from connecting

    As reported by @TimPigden on Gitter: (details may have been lost in porting the conversation here)

    At some point in the development of a rather large lagom app this stackTrace started to appear:

    
    java.lang.NullPointerException: null
        at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011)
        at java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:1535)
        at io.netty.util.internal.ConcurrentSet.add(ConcurrentSet.java:48)
        at io.netty.channel.group.DefaultChannelGroup.add(DefaultChannelGroup.java:133)
        at io.netty.channel.group.DefaultChannelGroup.add(DefaultChannelGroup.java:40)
        at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:154)
        at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:141)
    

    and after few attempts the following error is logged:

    [error] i.n.u.ResourceLeakDetector - LEAK: You are creating too many HashedWheelTimer instances.  HashedWheelTimer is a shared resource that must be reused across the JVM,so that only a few instances are created.
    [warn] a.p.c.s.CassandraSnapshotStore - Failed to connect to Cassandra and initialize. It will be retried on demand. Caused by: failed to create a child event loop
    

    This seems related to https://groups.google.com/forum/#!topic/lagom-framework/rkJqvLo9uug which caused https://github.com/netty/netty/issues/6225 that removed the LeakDetector.

    At the moment we don't have the steps to reproduce but @TimPigden is kindly reviewing his environment and setup to provide more info.

    Lagom depends on Netty 4.0.x for HTTP communications. Lagom excludes Cassandra's transitive Netty dependencies. Lagom whitelists Netty's 3.10.6.Final since that can coexist with 4.0.x family.

    I think we need to bump Netty to 4.1.9.Final where the LeakDetector was removed.

    opened by ignasi35 29
  • [WIP] Use a Java formatter #1003

    [WIP] Use a Java formatter #1003

    Pull Request Checklist

    Fixes

    Fixes #1003

    Purpose

    What does this PR do?

    Applies autoformatting during build to the Java code sources

    Background Context

    This sbt-formatter was menthioned in the issue

    References

    Are there any relevant issues / PRs / mailing lists discussions?

    type:improvement topic:build/tests closed:declined 
    opened by MysterionRise 28
  • Investigate how we could swap ServiceLocator in Dev Mode in Guice

    Investigate how we could swap ServiceLocator in Dev Mode in Guice

    This is particularly useful when integrating with a ServiceLocator based on Akka Discovery.

    We should have a ServiceLocator based on Akka Discovery (work in progress here) that can be used in Dev and in Prod. As such we can swap Akka Discovery implementations accordingly.

    opened by octonato 27
  • Cassandra fails on runAll command

    Cassandra fails on runAll command

    Lagom Version (2.5.x / etc)

    1.1 Activator 1.3.10

    API (Scala / Java / Neither / Both)

    Java

    Operating System (Ubuntu 15.10 / MacOS 10.10 / Windows 10)

    MacOS 10.11.6

    JDK (Oracle 1.8.0_72, OpenJDK 1.8.x, Azul Zing)

    1.8.0_66

    When I try runAll command. Project fails to start services. Error is about cassandra. Command prints the log below:

    [info] Starting embedded Cassandra server
    .......Exception (java.lang.NullPointerException) encountered during startup: null
    2016-09-06 12:55:06,990 ERROR org.apache.cassandra.service.CassandraDaemon - Exception encountered during startup
    java.lang.NullPointerException: null
        at org.apache.cassandra.db.RowUpdateBuilder.builder(RowUpdateBuilder.java:118) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.db.RowUpdateBuilder.add(RowUpdateBuilder.java:287) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.db.RowUpdateBuilder.add(RowUpdateBuilder.java:274) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.schema.SchemaKeyspace.makeCreateKeyspaceMutation(SchemaKeyspace.java:389) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.schema.SchemaKeyspace.makeCreateKeyspaceMutation(SchemaKeyspace.java:396) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.schema.SchemaKeyspace.saveSystemKeyspacesSchema(SchemaKeyspace.java:267) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.db.SystemKeyspace.finishStartup(SystemKeyspace.java:469) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:327) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:549) ~[cassandra-all-3.0.2.jar:3.0.2]
        at akka.persistence.cassandra.testkit.CassandraLauncher$.start(CassandraLauncher.scala:113) [akka-persistence-cassandra_2.11-0.13.jar:0.13]
        at akka.persistence.cassandra.testkit.CassandraLauncher$.main(CassandraLauncher.scala:56) [akka-persistence-cassandra_2.11-0.13.jar:0.13]
        at akka.persistence.cassandra.testkit.CassandraLauncher.main(CassandraLauncher.scala) [akka-persistence-cassandra_2.11-0.13.jar:0.13]
    java.lang.NullPointerException
        at org.apache.cassandra.db.RowUpdateBuilder.builder(RowUpdateBuilder.java:118)
        at org.apache.cassandra.db.RowUpdateBuilder.add(RowUpdateBuilder.java:287)
        at org.apache.cassandra.db.RowUpdateBuilder.add(RowUpdateBuilder.java:274)
        at org.apache.cassandra.schema.SchemaKeyspace.makeCreateKeyspaceMutation(SchemaKeyspace.java:389)
        at org.apache.cassandra.schema.SchemaKeyspace.makeCreateKeyspaceMutation(SchemaKeyspace.java:396)
        at org.apache.cassandra.schema.SchemaKeyspace.saveSystemKeyspacesSchema(SchemaKeyspace.java:267)
        at org.apache.cassandra.db.SystemKeyspace.finishStartup(SystemKeyspace.java:469)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:327)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:549)
        at akka.persistence.cassandra.testkit.CassandraLauncher$.start(CassandraLauncher.scala:113)
        at akka.persistence.cassandra.testkit.CassandraLauncher$.main(CassandraLauncher.scala:56)
        at akka.persistence.cassandra.testkit.CassandraLauncher.main(CassandraLauncher.scala)
    2016-09-06 12:55:06,994 ERROR org.apache.cassandra.service.CassandraDaemon - Exception in thread Thread[main,5,main]
    java.lang.RuntimeException: Exception encountered during startup
        at org.apache.cassandra.service.CassandraDaemon.exitOrFail(CassandraDaemon.java:686) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:579) ~[cassandra-all-3.0.2.jar:3.0.2]
        at akka.persistence.cassandra.testkit.CassandraLauncher$.start(CassandraLauncher.scala:113) ~[akka-persistence-cassandra_2.11-0.13.jar:0.13]
        at akka.persistence.cassandra.testkit.CassandraLauncher$.main(CassandraLauncher.scala:56) ~[akka-persistence-cassandra_2.11-0.13.jar:0.13]
        at akka.persistence.cassandra.testkit.CassandraLauncher.main(CassandraLauncher.scala) ~[akka-persistence-cassandra_2.11-0.13.jar:0.13]
    Caused by: java.lang.NullPointerException: null
        at org.apache.cassandra.db.RowUpdateBuilder.builder(RowUpdateBuilder.java:118) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.db.RowUpdateBuilder.add(RowUpdateBuilder.java:287) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.db.RowUpdateBuilder.add(RowUpdateBuilder.java:274) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.schema.SchemaKeyspace.makeCreateKeyspaceMutation(SchemaKeyspace.java:389) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.schema.SchemaKeyspace.makeCreateKeyspaceMutation(SchemaKeyspace.java:396) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.schema.SchemaKeyspace.saveSystemKeyspacesSchema(SchemaKeyspace.java:267) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.db.SystemKeyspace.finishStartup(SystemKeyspace.java:469) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:327) ~[cassandra-all-3.0.2.jar:3.0.2]
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:549) ~[cassandra-all-3.0.2.jar:3.0.2]
        ... 3 common frames omitted
    ................................
    [info] Cassandra server is not yet started.
    
    opened by Kml55 27
  • [WIP] Improve PE testkit

    [WIP] Improve PE testkit

    Fixes #1348.

    This is currently untested. I wanted to get eyes on it before I invest time in publishing locally and futzing around with other projects. That should be straightforward once the API gets OK'd.

    opened by erip 24
  • ConductR/Cassandra deployment uses wrong keyspace names

    ConductR/Cassandra deployment uses wrong keyspace names

    Deploying Lagom with Cassandra as a Persistent Entity backend in ConductR fails to create a keyspace per service. This causes collisions on cluster-related persistent data.

    API / Versions Java/Scala

    I could reproduce it at least with:

    addSbtPlugin("com.lightbend.lagom" % "lagom-sbt-plugin" % "1.3.1")
    addSbtPlugin("com.lightbend.conductr" % "sbt-conductr" % "2.3.0")
    

    running on sandbox 2.0.2. Haven't regression-tested in Lagom 1.2.x or sandbox 1.x.

    Expected

    1. Create a Lagom project
    2. Deploy in ConductR
    3. Lagom creates a keyspace per service and uses that for snapshots, journal and read-side.

    Actual

    1. Create a Lagom project
    2. Deploy in ConductR
    3. the keyspaces created ignore the service name and fallback to the default values of: lagom, lagom_read and lagom_snapshot. All services use the same three keyspaces.
    type:defect 
    opened by ignasi35 23
  • Lagom 1.5.0-RC1 shows problems forming cluster

    Lagom 1.5.0-RC1 shows problems forming cluster

    Are you looking for help?

    Lagom Version (1.2.x / 1.3.x / etc)

    1.5.0-RC1

    API (Scala / Java / Neither / Both)

    Java

    Operating System

    Ubuntu 18.04

    Linux hostname 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

    JDK openjdk:8-jre-alpine docker image

    Library Dependencies

    Expected Behavior

    Akka cluster started discovers all nodes and creates cluster

     hello-v1-0-snapshot-6ddc7455d9-22cqx › hello
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:22.504Z [info] akka.event.slf4j.Slf4jLogger [] - Slf4jLogger started
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:22.639Z [info] akka.remote.Remoting [sourceThread=main, akkaSource=akka.remote.Remoting, sourceActorSystem=application, akkaTimestamp=22:58:22.625UTC] - Starting remoting
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:23.062Z [info] akka.remote.Remoting [sourceThread=main, akkaTimestamp=22:58:23.057UTC, akkaSource=akka.remote.Remoting, sourceActorSystem=application] - Remoting started; listening on addresses :[akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:23.068Z [info] akka.remote.Remoting [sourceThread=main, akkaTimestamp=22:58:23.067UTC, akkaSource=akka.remote.Remoting, sourceActorSystem=application] - Remoting now listens on addresses: [akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:23.115Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaTimestamp=22:58:23.114UTC, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application] - Cluster Node [akka.tcp://[email protected]:10001] - Starting up, Akka version [2.5.16] ...
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:23.342Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application, akkaTimestamp=22:58:23.341UTC] - Cluster Node [akka.tcp://[email protected]:10001] - Registered cluster JMX MBean [akka:type=Cluster]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:23.342Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaTimestamp=22:58:23.342UTC, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application] - Cluster Node [akka.tcp://[email protected]:10001] - Started up successfully
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:23.619Z [info] akka.cluster.Cluster(akka://application) [sourceThread=application-akka.actor.default-dispatcher-3, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application, akkaTimestamp=22:58:23.619UTC] - Cluster Node [akka.tcp://[email protected]:10001] - No seed-nodes configured, manual cluster join required
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:25.594Z [info] akka.management.cluster.bootstrap.ClusterBootstrap [sourceThread=main, akkaTimestamp=22:58:25.593UTC, akkaSource=ClusterBootstrap(akka://application), sourceActorSystem=application] - Bootstrap using default `akka.discovery` mechanism: KubernetesApiSimpleServiceDiscovery
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:25.600Z [info] akka.management.cluster.bootstrap.ClusterBootstrap [sourceThread=main, akkaTimestamp=22:58:25.600UTC, akkaSource=ClusterBootstrap(akka://application), sourceActorSystem=application] - Initiating bootstrap procedure using akka.discovery method...
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:25.641Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application, akkaTimestamp=22:58:25.641UTC] - Locating service members. Using discovery [akka.discovery.kubernetes.KubernetesApiSimpleServiceDiscovery], join decider [akka.management.cluster.bootstrap.LowestAddressJoinDecider]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:25.642Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application, akkaTimestamp=22:58:25.642UTC] - Looking up [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:25.842Z [info] akka.actor.ActorSystemImpl [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:25.842UTC, akkaSource=akka.actor.ActorSystemImpl(application), sourceActorSystem=application] - Querying for pods with label selector: [appName=hello]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:25.921Z [info] akka.management.AkkaManagement [sourceThread=main, akkaTimestamp=22:58:25.921UTC, akkaSource=AkkaManagement(akka://application), sourceActorSystem=application] - Including HTTP management routes for ClusterBootstrap
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:25.929Z [info] akka.management.cluster.bootstrap.ClusterBootstrap [sourceThread=main, akkaTimestamp=22:58:25.928UTC, akkaSource=ClusterBootstrap(akka://application), sourceActorSystem=application] - Got self contact point address: http://172.17.0.11:10002
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:25.995Z [info] akka.management.AkkaManagement [sourceThread=main, akkaTimestamp=22:58:25.994UTC, akkaSource=AkkaManagement(akka://application), sourceActorSystem=application] - Including HTTP management routes for ApplicationStatus
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:26.005Z [info] akka.management.AkkaManagement [sourceThread=main, akkaTimestamp=22:58:26.005UTC, akkaSource=AkkaManagement(akka://application), sourceActorSystem=application] - Binding Akka Management (HTTP) endpoint to: 172.17.0.11:10002
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:26.295Z [info] akka.management.AkkaManagement [sourceThread=application-akka.actor.default-dispatcher-17, akkaSource=AkkaManagement(akka://application), sourceActorSystem=application, akkaTimestamp=22:58:26.295UTC] - Bound Akka Management (HTTP) endpoint to: 172.17.0.11:10002
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:26.700Z [info] com.lightbend.rp.asyncdns.AsyncDnsResolver [sourceThread=application-akka.actor.default-dispatcher-4, akkaTimestamp=22:58:26.699UTC, akkaSource=akka.tcp://[email protected]:10001/system/IO-DNS/async-dns/$a, sourceActorSystem=application] - Using the following DNS nameservers: /10.96.0.10:53
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:26.824Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-2, akkaTimestamp=22:58:26.823UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Looking up [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:26.838Z [info] akka.actor.ActorSystemImpl [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:26.838UTC, akkaSource=akka.actor.ActorSystemImpl(application), sourceActorSystem=application] - Querying for pods with label selector: [appName=hello]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.243Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-2, akkaTimestamp=22:58:27.243UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.9:51234: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.412Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-4, akkaTimestamp=22:58:27.412UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Located service members based on: [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]: [ResolvedTarget(172-17-0-11.default.pod.cluster.local,Some(10002),Some(/172.17.0.11)), ResolvedTarget(172-17-0-9.default.pod.cluster.local,Some(10002),Some(/172.17.0.9)), ResolvedTarget(172-17-0-10.default.pod.cluster.local,Some(10002),Some(/172.17.0.10))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.448Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-4, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application, akkaTimestamp=22:58:27.448UTC] - Located service members based on: [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]: [ResolvedTarget(172-17-0-11.default.pod.cluster.local,Some(10002),Some(/172.17.0.11)), ResolvedTarget(172-17-0-9.default.pod.cluster.local,Some(10002),Some(/172.17.0.9)), ResolvedTarget(172-17-0-10.default.pod.cluster.local,Some(10002),Some(/172.17.0.10))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.467Z [info] com.lightbend.cinnamon.prometheus.httpserver.PrometheusHttpServer [sourceThread=main, akkaTimestamp=22:58:27.466UTC, akkaSource=PrometheusHttpServer, sourceActorSystem=application] - Starting Prometheus HTTP server at http://0.0.0.0:9001 ...
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.490Z [info] com.sun.net.httpserver [] - HttpServer created http null
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.492Z [info] com.sun.net.httpserver [] - context created: /
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.492Z [info] com.sun.net.httpserver [] - context created: /metrics
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.498Z [info] cinnamon.prometheus.PrometheusBackend [sourceThread=main, akkaTimestamp=22:58:27.497UTC, akkaSource=PrometheusBackend, sourceActorSystem=application] - Created PrometheusExporter [cinnamon.prometheus.http-server]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.500Z [info] cinnamon.backend.CinnamonBackends [sourceThread=main, akkaTimestamp=22:58:27.497UTC, akkaSource=CinnamonBackends, sourceActorSystem=application] - Created Backend [cinnamon.prometheus]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.637Z [info] akka.management.cluster.bootstrap.LowestAddressJoinDecider [sourceThread=application-akka.actor.default-dispatcher-3, akkaTimestamp=22:58:27.637UTC, akkaSource=LowestAddressJoinDecider(akka://application), sourceActorSystem=application] - Discovered [3] contact points, confirmed [0], which is less than the required [3], retrying
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.709Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:27.709UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.715Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-4, akkaTimestamp=22:58:27.713UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.11:55222: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.721Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-4, akkaTimestamp=22:58:27.721UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.742Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-18, akkaTimestamp=22:58:27.741UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:27.945Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:27.945UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.10:47170: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.529Z [info] play.api.Play [] - Application started (Prod)
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.570Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:28.568UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.9:51234: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.616Z [info] play.core.server.AkkaHttpServer [] - Listening for HTTP on /172.17.0.11:10000
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.665Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:28.664UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Looking up [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.669Z [info] akka.actor.ActorSystemImpl [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:28.669UTC, akkaSource=akka.actor.ActorSystemImpl(application), sourceActorSystem=application] - Querying for pods with label selector: [appName=hello]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.708Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-15, akkaTimestamp=22:58:28.708UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Located service members based on: [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]: [ResolvedTarget(172-17-0-11.default.pod.cluster.local,Some(10002),Some(/172.17.0.11)), ResolvedTarget(172-17-0-9.default.pod.cluster.local,Some(10002),Some(/172.17.0.9)), ResolvedTarget(172-17-0-10.default.pod.cluster.local,Some(10002),Some(/172.17.0.10))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.837Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:28.837UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.11:55222: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.845Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:28.844UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.873Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-15, akkaTimestamp=22:58:28.872UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:28.943Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application, akkaTimestamp=22:58:28.943UTC] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:29.039Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:29.039UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.10:47170: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:29.684Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:29.683UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.9:51234: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:29.833Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-15, akkaTimestamp=22:58:29.832UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Looking up [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:29.837Z [info] akka.actor.ActorSystemImpl [sourceThread=application-akka.actor.default-dispatcher-15, akkaTimestamp=22:58:29.837UTC, akkaSource=akka.actor.ActorSystemImpl(application), sourceActorSystem=application] - Querying for pods with label selector: [appName=hello]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:29.926Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:29.925UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:30.025Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:30.024UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Located service members based on: [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]: [ResolvedTarget(172-17-0-11.default.pod.cluster.local,Some(10002),Some(/172.17.0.11)), ResolvedTarget(172-17-0-9.default.pod.cluster.local,Some(10002),Some(/172.17.0.9)), ResolvedTarget(172-17-0-10.default.pod.cluster.local,Some(10002),Some(/172.17.0.10))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:30.025Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:30.025UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.11:55222: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:30.031Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:30.030UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:30.074Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:30.074UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:30.262Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:30.261UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.10:47170: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:30.763Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:30.762UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.9:51234: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.004Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:31.004UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.113Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:31.112UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Looking up [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.117Z [info] akka.actor.ActorSystemImpl [sourceThread=application-akka.actor.default-dispatcher-15, akkaTimestamp=22:58:31.117UTC, akkaSource=akka.actor.ActorSystemImpl(application), sourceActorSystem=application] - Querying for pods with label selector: [appName=hello]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.140Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:31.139UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Located service members based on: [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]: [ResolvedTarget(172-17-0-11.default.pod.cluster.local,Some(10002),Some(/172.17.0.11)), ResolvedTarget(172-17-0-9.default.pod.cluster.local,Some(10002),Some(/172.17.0.9)), ResolvedTarget(172-17-0-10.default.pod.cluster.local,Some(10002),Some(/172.17.0.10))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.197Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:31.197UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.11:55222: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.202Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-15, akkaTimestamp=22:58:31.202UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.250Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:31.249UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.461Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:31.460UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.10:47170: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:31.842Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:31.841UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.9:51234: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.138Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-4, akkaTimestamp=22:58:32.137UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.243Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:32.242UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Looking up [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.248Z [info] akka.actor.ActorSystemImpl [sourceThread=application-akka.actor.default-dispatcher-3, akkaTimestamp=22:58:32.247UTC, akkaSource=akka.actor.ActorSystemImpl(application), sourceActorSystem=application] - Querying for pods with label selector: [appName=hello]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.265Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-3, akkaTimestamp=22:58:32.264UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Located service members based on: [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]: [ResolvedTarget(172-17-0-11.default.pod.cluster.local,Some(10002),Some(/172.17.0.11)), ResolvedTarget(172-17-0-9.default.pod.cluster.local,Some(10002),Some(/172.17.0.9)), ResolvedTarget(172-17-0-10.default.pod.cluster.local,Some(10002),Some(/172.17.0.10))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.312Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:58:32.312UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.408Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:32.408UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.11:55222: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.413Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:32.413UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.619Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-4, akkaTimestamp=22:58:32.618UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.10:47170: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.641Z [info] akka.management.cluster.bootstrap.LowestAddressJoinDecider [sourceThread=application-akka.actor.default-dispatcher-4, akkaTimestamp=22:58:32.640UTC, akkaSource=LowestAddressJoinDecider(akka://application), sourceActorSystem=application] - Exceeded stable margins without locating seed-nodes, however this node [172.17.0.11:10002,172-17-0-11.default.pod.cluster.local:10002] is NOT the lowest address out of the discovered endpoints in this deployment, thus NOT joining self. Expecting node [ResolvedTarget(172-17-0-10.default.pod.cluster.local,Some(10002),Some(/172.17.0.10))] (out of [ResolvedTarget(172-17-0-11.default.pod.cluster.local,Some(10002),Some(/172.17.0.11)), ResolvedTarget(172-17-0-9.default.pod.cluster.local,Some(10002),Some(/172.17.0.9)), ResolvedTarget(172-17-0-10.default.pod.cluster.local,Some(10002),Some(/172.17.0.10))]) to perform the self-join and initiate the cluster.
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:32.991Z [info] akka.management.cluster.bootstrap.contactpoint.HttpClusterBootstrapRoutes [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:32.990UTC, akkaSource=HttpClusterBootstrapRoutes(akka://application), sourceActorSystem=application] - Bootstrap request from 172.17.0.9:51234: Contact Point returning 0 seed-nodes ([Set()])
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:33.360Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-3, akkaTimestamp=22:58:33.360UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [0] seed-nodes []
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:33.362Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:33.362UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Looking up [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:33.369Z [info] akka.actor.ActorSystemImpl [sourceThread=application-akka.actor.default-dispatcher-15, akkaTimestamp=22:58:33.368UTC, akkaSource=akka.actor.ActorSystemImpl(application), sourceActorSystem=application] - Querying for pods with label selector: [appName=hello]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:33.431Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:33.430UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Contact point [akka.tcp://[email protected]:10001] returned [1] seed-nodes [akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:33.434Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:33.434UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Joining [akka.tcp://[email protected]:10001] to existing cluster [akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:34.240Z [info] akka.cluster.JoinSeedNodeProcess [sourceThread=application-akka.actor.default-dispatcher-2, akkaTimestamp=22:58:34.239UTC, akkaSource=akka.tcp://[email protected]:10001/system/cluster/core/daemon/joinSeedNodeProcess-1, sourceActorSystem=application] - Received InitJoinAck message from [Actor[akka.tcp://[email protected]:10001/system/cluster/core/daemon#-1843587823]] to [akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:34.381Z [info] akka.cluster.Cluster(akka://application) [sourceThread=application-akka.actor.default-dispatcher-2, akkaTimestamp=22:58:34.381UTC, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application] - Cluster Node [akka.tcp://[email protected]:10001] - Welcome from [akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:34.607Z [info] akka.cluster.singleton.ClusterSingletonProxy [sourceThread=application-akka.actor.default-dispatcher-17, akkaTimestamp=22:58:34.606UTC, akkaSource=akka.tcp://[email protected]:10001/user/cassandraOffsetStorePrepare-singletonProxy, sourceActorSystem=application] - Singleton identified at [akka.tcp://[email protected]:10001/user/cassandraOffsetStorePrepare-singleton/singleton]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:35.691Z [info] akka.cluster.singleton.ClusterSingletonManager [sourceThread=application-akka.actor.default-dispatcher-16, akkaTimestamp=22:58:35.690UTC, akkaSource=akka.tcp://[email protected]:10001/system/sharding/HelloEntityCoordinator, sourceActorSystem=application] - ClusterSingletonManager state change [Start -> Younger]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:35.692Z [info] akka.cluster.singleton.ClusterSingletonManager [sourceThread=application-akka.actor.default-dispatcher-2, akkaTimestamp=22:58:35.691UTC, akkaSource=akka.tcp://[email protected]:10001/system/sharding/kafkaProducer-hello-eventsCoordinator, sourceActorSystem=application] - ClusterSingletonManager state change [Start -> Younger]
    hello-v1-0-snapshot-6ddc7455d9-22cqx hello 2018-12-01T22:58:35.692Z [info] akka.cluster.singleton.ClusterSingletonManager [sourceThread=application-akka.actor.default-dispatcher-18, akkaTimestamp=22:58:35.692UTC, akkaSource=akka.tcp://[email protected]:10001/user/cassandraOffsetStorePrepare-singleton, sourceActorSystem=application] - ClusterSingletonManager state change [Start -> Younger]
    

    Actual Behavior

    Akka cluster started discovery does not start and/or cluster nodes not found

    + hello-v1-0-snapshot-6ddc7455d9-9gx5g › hello
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:45.294Z [info] akka.event.slf4j.Slf4jLogger [] - Slf4jLogger started
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:45.334Z [info] akka.remote.Remoting [sourceThread=main, akkaSource=akka.remote.Remoting, sourceActorSystem=application, akkaTimestamp=22:52:45.332UTC] - Starting remoting
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:45.586Z [info] akka.remote.Remoting [sourceThread=main, akkaTimestamp=22:52:45.585UTC, akkaSource=akka.remote.Remoting, sourceActorSystem=application] - Remoting started; listening on addresses :[akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:45.589Z [info] akka.remote.Remoting [sourceThread=main, akkaTimestamp=22:52:45.588UTC, akkaSource=akka.remote.Remoting, sourceActorSystem=application] - Remoting now listens on addresses: [akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:45.619Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaTimestamp=22:52:45.619UTC, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application] - Cluster Node [akka.tcp://[email protected]:10001] - Starting up, Akka version [2.5.18] ...
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:45.781Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application, akkaTimestamp=22:52:45.774UTC] - Cluster Node [akka.tcp://[email protected]:10001] - Registered cluster JMX MBean [akka:type=Cluster]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:45.781Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaTimestamp=22:52:45.774UTC, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application] - Cluster Node [akka.tcp://[email protected]:10001] - Started up successfully
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:45.955Z [info] akka.cluster.Cluster(akka://application) [sourceThread=application-akka.actor.default-dispatcher-5, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application, akkaTimestamp=22:52:45.954UTC] - Cluster Node [akka.tcp://[email protected]:10001] - No seed-nodes configured, manual cluster join required
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:47.664Z [info] akka.management.cluster.bootstrap.ClusterBootstrap [sourceThread=main, akkaSource=ClusterBootstrap(akka://application), sourceActorSystem=application, akkaTimestamp=22:52:47.664UTC] - Bootstrap using default `akka.discovery` mechanism: KubernetesApiSimpleServiceDiscovery
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:47.672Z [info] akka.management.cluster.bootstrap.ClusterBootstrap [sourceThread=main, akkaTimestamp=22:52:47.671UTC, akkaSource=ClusterBootstrap(akka://application), sourceActorSystem=application] - Initiating bootstrap procedure using akka.discovery method...
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:47.740Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:52:47.739UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Locating service members. Using discovery [akka.discovery.kubernetes.KubernetesApiSimpleServiceDiscovery], join decider [akka.management.cluster.bootstrap.LowestAddressJoinDecider]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:47.744Z [info] akka.management.cluster.bootstrap.internal.BootstrapCoordinator [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:52:47.740UTC, akkaSource=akka.tcp://[email protected]:10001/system/bootstrapCoordinator, sourceActorSystem=application] - Looking up [Lookup(hello,Some(akka-mgmt-http),Some(tcp))]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.070Z [info] akka.management.AkkaManagement [sourceThread=main, akkaSource=AkkaManagement(akka://application), sourceActorSystem=application, akkaTimestamp=22:52:48.070UTC] - Including HTTP management routes for ClusterBootstrap
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.094Z [info] akka.actor.ActorSystemImpl [sourceThread=application-akka.actor.default-dispatcher-5, akkaTimestamp=22:52:48.093UTC, akkaSource=akka.actor.ActorSystemImpl(application), sourceActorSystem=application] - Querying for pods with label selector: [appName=hello]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.113Z [info] akka.management.cluster.bootstrap.ClusterBootstrap [sourceThread=main, akkaTimestamp=22:52:48.111UTC, akkaSource=ClusterBootstrap(akka://application), sourceActorSystem=application] - Got self contact point address: http://172.17.0.9:10002
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.254Z [info] akka.management.AkkaManagement [sourceThread=main, akkaTimestamp=22:52:48.252UTC, akkaSource=AkkaManagement(akka://application), sourceActorSystem=application] - Including HTTP management routes for ApplicationStatus
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.263Z [info] akka.management.AkkaManagement [sourceThread=main, akkaTimestamp=22:52:48.261UTC, akkaSource=AkkaManagement(akka://application), sourceActorSystem=application] - Binding Akka Management (HTTP) endpoint to: 172.17.0.9:10002
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.295Z [info] akka.remote.RemoteActorRefProvider$RemotingTerminator [sourceThread=application-akka.remote.default-remote-dispatcher-7, akkaTimestamp=22:52:48.294UTC, akkaSource=akka.tcp://[email protected]:10001/system/remoting-terminator, sourceActorSystem=application] - Shutting down remote daemon.
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.303Z [info] akka.remote.RemoteActorRefProvider$RemotingTerminator [sourceThread=application-akka.remote.default-remote-dispatcher-7, akkaTimestamp=22:52:48.301UTC, akkaSource=akka.tcp://[email protected]:10001/system/remoting-terminator, sourceActorSystem=application] - Remote daemon shut down; proceeding with flushing remote transports.
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.379Z [warn] play.api.http.HttpConfiguration [] - 
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello Your secret key is very short, and may be vulnerable to dictionary attacks.  Your application may not be secure.
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello The application secret should ideally be 32 bytes of completely random input, encoded in base64.
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello To set the application secret, please read http://playframework.com/documentation/latest/ApplicationSecret
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello           
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.480Z [info] akka.remote.Remoting [sourceThread=application-akka.actor.default-dispatcher-2, akkaTimestamp=22:52:48.480UTC, akkaSource=akka.remote.Remoting, sourceActorSystem=application] - Remoting shut down
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.481Z [info] akka.remote.RemoteActorRefProvider$RemotingTerminator [sourceThread=application-akka.remote.default-remote-dispatcher-7, akkaTimestamp=22:52:48.480UTC, akkaSource=akka.tcp://[email protected]:10001/system/remoting-terminator, sourceActorSystem=application] - Remoting shut down.
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.601Z [info] akka.event.slf4j.Slf4jLogger [] - Slf4jLogger started
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.617Z [info] akka.remote.Remoting [sourceThread=main, akkaSource=akka.remote.Remoting, sourceActorSystem=application, akkaTimestamp=22:52:48.614UTC] - Starting remoting
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.801Z [info] akka.remote.Remoting [sourceThread=main, akkaSource=akka.remote.Remoting, sourceActorSystem=application, akkaTimestamp=22:52:48.798UTC] - Remoting started; listening on addresses :[akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.803Z [info] akka.remote.Remoting [sourceThread=main, akkaTimestamp=22:52:48.799UTC, akkaSource=akka.remote.Remoting, sourceActorSystem=application] - Remoting now listens on addresses: [akka.tcp://[email protected]:10001]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.804Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaTimestamp=22:52:48.800UTC, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application] - Cluster Node [akka.tcp://[email protected]:10001] - Starting up, Akka version [2.5.18] ...
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.838Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaTimestamp=22:52:48.837UTC, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application] - Cluster Node [akka.tcp://[email protected]:10001] - Registered cluster JMX MBean [akka:type=Cluster]
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.838Z [info] akka.cluster.Cluster(akka://application) [sourceThread=main, akkaTimestamp=22:52:48.837UTC, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application] - Cluster Node [akka.tcp://[email protected]:10001] - Started up successfully
    hello-v1-0-snapshot-6ddc7455d9-9gx5g hello 2018-12-01T22:52:48.862Z [info] akka.cluster.Cluster(akka://application) [sourceThread=application-akka.actor.default-dispatcher-4, akkaSource=akka.cluster.Cluster(akka://application), sourceActorSystem=application, akkaTimestamp=22:52:48.861UTC] - Cluster Node [akka.tcp://[email protected]:10001] - No seed-nodes configured, manual cluster join required
    

    Reproducible Test Case

    https://github.com/thinkmorestupidless/lagom-maven-cinnamon-kubernetes/pull/1 this is a minimal example over https://github.com/thinkmorestupidless/lagom-maven-cinnamon-kubernetes which uses Lagom 1.4.8 which works.

    opened by schrepfler 22
  • Kafka client upgrade

    Kafka client upgrade

    Hello, i have problem with Lagom kafka client: im getting a lot of messages Node 0 was unable to process the fetch request [...] INVALID_FETCH_SESSION_EPOCH I found that this error is fixed in kafka client version 2.3, and i found that lagom uses 2.1.1 version of client.

    It is possible to update kafka client in lagom?

    opened by Randerspl 0
  • At-most-once for Read Side Processor

    At-most-once for Read Side Processor

    Currently if a Read Side Processors persists an event that gets rejected by the DB (e.g. by violating certain columns constraints) the stream restarts and tries again until manual resolution was applied.

    This is probably the desired approach in most cases but it would be good to provide the option to continue the processor by skipping the failed event in case the users explicitly opts in for this approach.

    opened by sebastian-alfers 1
  • `atLeastOnce` Kafka Consumer not restarting on error

    `atLeastOnce` Kafka Consumer not restarting on error

    Using atLeastOnce this comment descries the expected behaviour. However both java and scala do stop the consumer once the stream errors instead of restarting it.

    opened by sebastian-alfers 0
  • Lagom bom-pom includes transitive dependencies

    Lagom bom-pom includes transitive dependencies

    Lagom bom-pom includes transitive dependencies which makes it very hard to change them. My understanding of bom-pom is that it should only include the modules of the library, so it is bound to the same version.

    Transitive dependencies then should be managed by each module separately, if it needs override or not, but it should not be present in the bom-pom.

    The problem with bom-pom is that it effectively replaces the bom-pom in my pom.xml with all of the dependencies in the bom-pom. This leads to

    1. The included dependency acts as if my module imported it directly (hard to debug)
    2. I can't override transitive dependencies unless stating them explicitely.

    See the example below.

    Lagom Version 1.6.7

    API Java

    Docker openjdk:17

    JDK docker - openjdk:17

    Actual behaviour

    I discovered the behaviour when upgrading mockito in my project. Excerpt from my pom.xml:

                <dependency>
                    <groupId>com.lightbend.lagom</groupId>
                    <artifactId>lagom-maven-dependencies</artifactId>
                    <version>${lagom.version}</version>
                    <scope>import</scope>
                    <type>pom</type>
                </dependency>
                
                ...
         
                <dependency>
                    <groupId>org.mockito</groupId>
                    <artifactId>mockito-bom</artifactId>
                    <version>4.5.1</version>
                    <scope>import</scope>
                    <type>pom</type>
                </dependency>
    

    Now in one of my my modules, I import mockito-core. The expectation is that I have mockito-core on 4.5.1 and its correct dependencies dependencies. Running mvn dependency:tree results in following info:

    [INFO] \- org.mockito:mockito-core:jar:3.2.4:test
    [INFO]    +- net.bytebuddy:byte-buddy:jar:1.10.5:test
    [INFO]    +- net.bytebuddy:byte-buddy-agent:jar:1.10.5:test
    [INFO]    \- org.objenesis:objenesis:jar:2.6:test
    

    leading, to my surprise, with completely random version of mockito-core and (correct deps to version 3.2.4) its dependencies. Because of the bom-pom nature, it was harder to find where this 3.2.4 version actually comes from and it was lagom bom-pom.

    Now the best part. If I explicitely import mockito-core 4.5.1, I end up with correct version of mockito-core however wrong version of its transitive dependencies (and when debugging these, it seems like they came of out nowhere).

    [INFO] \- org.mockito:mockito-core:jar:4.5.1:test
    [INFO]    +- net.bytebuddy:byte-buddy:jar:1.10.5:test
    [INFO]    +- net.bytebuddy:byte-buddy-agent:jar:1.10.5:test
    [INFO]    \- org.objenesis:objenesis:jar:2.6:test
    

    This is, again, because lagom bom-pom explicitely states these (byte-buddy, byte-agent, objenesis) in the bom-pom.

    In the end I can achieve the change by swapping the order in the pom.xml and by explicitely stating all mockito-core dependencies to the correct version.

    Expected behaviour

    Changing mockito-core version (or mockito bom-pom) should not cause such mayhem in the dependencies. It should change the mockito-core version to the correct version and then include the correct transitive dependecies on its own.

    Because of the content of lagom bom-pom I believe updating mockito is not the only library which can cause this.

    Regards K.

    opened by ktulinger 1
  • re-enable test for code in docs

    re-enable test for code in docs

    I had disable the tests for the code in the docs when we were migrating to GH Actions. I don't remember why it was failing, so let's try again and see what CI will tell us.

    opened by octonato 2
  • [epic] reduce repository maintenance cost

    [epic] reduce repository maintenance cost

    Right now we have too many branches and procedures to maintain Lagom. In the coming days, I will be performing the following changes:

    • [x] Start to migrate out of TravisCI. The goal is to move to GH Actions.
    • [x] Branch 1.6.x will become main and configured as the main branch of this repo.
    • [x] Change GH Actions to build main instead of master. This include PR builds and cron jobs.
    • [ ] Update dependencies. Expecting scala steward to send PRs to bring 1.6.x up-to-date. If not, we need to do manually.
    • [ ] Add release by tagging from GitHub.

    The reason why I'm adding the migration to GH Action as first in the list is because I believe that as soon as we change the repo to use main, Scala Steward will start to send lots of PRs. Doing that while still using TravisCI will be a waste of our time. Builds will pile-up, will require us to keep cancelling them to let other builds to pass, etc. We will be fighting an useless fight.

    After that, Lagom will follow the Akka approach, ie: maintenance releases are cut from main branch.

    The current master will become obsolete. Open PRs targeting master will need to be re-pointed to the new main.

    We have a few PRs in master that we need to port to the new main. So far, I have identified two PRs that could be ported. None of them are crucial, so we are not in a hurry to port them.

    • https://github.com/lagom/lagom/pull/3164
    • https://github.com/lagom/lagom/pull/3238
    opened by octonato 2
Releases(1.6.8-RC1)
  • 1.6.8-RC1(Feb 10, 2022)

    What's Changed

    • Release from tag by @octonato in https://github.com/lagom/lagom/pull/3332
    • fix pom generation by @octonato in https://github.com/lagom/lagom/pull/3334
    • Move Lagom GitHub actions by @octonato in https://github.com/lagom/lagom/pull/3331
    • Update scala-xml to 2.0.1 by @octonato in https://github.com/lagom/lagom/pull/3333
    • remove obsolete travis build by @octonato in https://github.com/lagom/lagom/pull/3335
    • update mergify settings by @octonato in https://github.com/lagom/lagom/pull/3336
    • Show GitHub workflow as CI badge by @ennru in https://github.com/lagom/lagom/pull/3340
    • fix a bug of run-on-role by @autumn-n in https://github.com/lagom/lagom/pull/3339

    New Contributors

    • @autumn-n made their first contribution in https://github.com/lagom/lagom/pull/3339

    Full Changelog: https://github.com/lagom/lagom/compare/1.6.7...1.6.8-RC1

    Source code(tar.gz)
    Source code(zip)
  • 1.6.7(Dec 14, 2021)

    As previously explained in the Lightbend blog post, Lagom doesn't use log4j 2 directly, but it can be included as an opt-in.

    With this release, the log4j version that can be included in a Lagom application is upgraded to version 2.15.0, the version that addresses the CVE-2021-44228 vulnerability.

    Moreover, we discover that the Kafka broker library used in dev-mode was including an old version of log4j (v1.2.17) and that for no reason. This was never a real concern because this library is never deployed on a running Lagom application, but to avoid confusion and false alarms this obsolete dependency has been removed.

    What's Changed

    • [1.6.x] Upgrade to log4j 2.15 to address CVE-2021-44228 by @octonato in https://github.com/lagom/lagom/pull/3325
    • Hint that upgrading to Akka HTTP 10.2 is fine (backport #3319) by @mergify in https://github.com/lagom/lagom/pull/3326
    • remove explicit dependency on log4j in kafka brokers by @octonato in https://github.com/lagom/lagom/pull/3327

    Full Changelog: https://github.com/lagom/lagom/compare/1.6.6...1.6.7

    Source code(tar.gz)
    Source code(zip)
  • 1.6.6(Dec 6, 2021)

    What's Changed

    • Fixed wrong reference to Cassandra in documentation for JdbcPersistenceComponents by @m-daros in https://github.com/lagom/lagom/pull/3279
    • Improve EventTag ReadSide storage with Cassandra documentation by @gabizou in https://github.com/lagom/lagom/pull/3283
    • Remove WhiteSource plugin (backport #3298) by @mergify in https://github.com/lagom/lagom/pull/3302
    • Preparation for 1.6.6 release - dependency updates by @octonato in https://github.com/lagom/lagom/pull/3322
    • update dependencies to satisfy validateDependencies check by @octonato in https://github.com/lagom/lagom/pull/3323

    New Contributors

    • @gabizou made their first contribution in https://github.com/lagom/lagom/pull/3283

    Full Changelog: https://github.com/lagom/lagom/compare/1.6.5...1.6.6

    Source code(tar.gz)
    Source code(zip)
  • 1.6.5(Apr 9, 2021)

    We are pleased to announce the release of Lagom Framework 1.6.5. This is the latest stable release of Lagom 1.6.x series.

    :green_book: What's new?

    This release includes a few improvements and fixes:

    • Bumps to Latest Akka 2.6.14 and Play 2.8.8
    • Maven BOM for Lagom artifacts
    • Bumps to Jackson 2.11.4 (read more on this version bump side-effects on the Akka 2.6.14 release notes)

    For more details, see the full list of changes.

    :bow: Credits

    Thanks to the community for their detailed bug reports and contributions. Special thanks to the following contributors who helped with this release:

    commits   added  removed  author
       11     137      75 Renato Cavalcanti
       11      52     137 Ignasi Marimon-Clos
        5     224      43 Sergey Morgunov
        4      25       4 Enno Runne
        4      60      33 Johan Andrén
        3      15      13 Anthony Cheng
        2      52       2 Arnout Engelen
        2       2       2 Marcos Pereira
        1      50       2 Vladimir Kornyshev
    

    Thanks to Lightbend for their continued sponsorship of the Lagom core team's efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.5-RC1(Nov 6, 2020)

  • 1.6.4(Aug 26, 2020)

    We are pleased to announce the release of Lagom Framework 1.6.4. This is the latest stable release of Lagom 1.6.x series.

    :green_book: What's new?

    This release includes a few improvements and fixes:

    • Lagom now ships with the Akka Split-Brain Resolver recently open-sourced. That is part of bumping the Akka dependency to 2.6.8. (#3018)
    • Command handlers in Persistent Entities can now overwrite the default behavior. (#3011)
    • Play-JSON schema migrations support future schema version to better handle evolutions with forward-one compatibility. (#3019)

    For more details see the full list of changes.

    :bow: Credits

    Thanks to the community for their detailed bug reports and contributions. Special thanks to the following contributors who helped with this release: Ignasi Marimon-Clos, Patrik Nordwall, Enno Runne.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team's efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.3(Jul 24, 2020)

    We are pleased to announce the release of Lagom Framework 1.6.3. This is the latest stable release of Lagom 1.6.x series.

    Note: for a rolling upgrade, you should first migrate to 1.6.2. More details in the documentation

    :green_book: Changelog

    • Bump Akka to 2.6.5 (#2925)
    • Bump Play to 2.8.2 (#2934)
    • Bump other dependencies (#2962)

    For more details see the full list of changes.

    :bow: Credits

    Thanks to the community for their detailed bug reports and contributions. Special thanks to the following contributors who helped with this release: Julien Roubieu, Ignasi Marimon-Clos, Renato Cavalcanti. And a special mention to our contributor Sergey Morgunov for his continued efforts and for stepping up and accepting the challenge to run the release.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team's efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.2(Apr 24, 2020)

    We are pleased to announce the release of Lagom Framework 1.6.2. This is the latest stable release of Lagom 1.6.x series.

    Changelog

    This release mainly includes bug fixes.

    A few highlights:

    • Fixed bug in Service client where HeaderFilter was not honoring the status code change for strict calls #2750 by @Munandermaan
    • Upgrade to Akka Persistence Cassandra v0.103 #2758 by @ignasi35
    • Projections SPI for Telemetry #2727 by @ignasi35
    • Fixed different behavior for maybeLogException in Scala/Java DSLs #2809 by @ihostage
    • Upgrade to Akka v2.6.4 #2837 by @scala-steward

    For more details see the full list of changes.

    Credits

    Thanks to the community for their detailed bug reports and contributions. Special thanks to the following contributors who helped with this release: Ignasi Marimon-Clos, Renato Cavalcanti, Johannes Rudolph, Patrik Nordwall, Munandermaan, Qiuyang Nie, Sergey Morgunov, Dale Wijnand.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team's efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.1(Feb 25, 2020)

    We are pleased to announce the release of Lagom Framework 1.6.1. This is the latest stable release of Play 1.6.x series.

    Changelog

    This release mainly includes bug fixes.

    A few highlights:

    • Allow port-name and protocol overrides for mapped services #2603 by @renatocaval
    • Upgrade to Akka 2.6.3 #2654 by @renatocaval
    • Update KafkaSubscriberActor #2651 fixing #2607 by @Munandermaan
    • Exception whitelist doesn't work on CircuitBreakersPanel (Javadsl). The failure metric of circuit breakers is incorrect #2660 by @ihostage
    • Upgrade Akka Persistence JDBC v3.5.3 #2693 by @renatocaval
    • Document Lagom 1.5.3 build breaking change #2717 by @jmerljak
    • Upgrade akka-persistence-cassandra to 0.102 #2720 by @scala-steward / @ignasi35
    • Upgrade to Play 2.8.1 #2726 by @renatocaval

    For more details see the full list of changes.

    Credits

    Thanks to the community for their detailed bug reports and contributions. Special thanks to the following contributors who helped with this release: Renato Cavalcanti, Ignasi Marimon-Clos, Dale Wijnand, Marcos Pereira, Munander Maan, Sergey Morgunov, Arnout Engelen, jakob Merljak, Johan Andrén.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team's efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.0(Dec 13, 2019)

    📣 Lagom 1.6 Released

    We are happy to announce the availability of Lagom 1.6.0. This is the GA release of Lagom 1.6.0 and is production ready. We invite all our users to upgrade.

    This version builds on top of the 2.8.x series of Play and Akka 2.6. See GitHub for the full list of commits.

    📗 What is new?

    Here’s a list of the most relevant improvements.

    Akka Typed and Akka Persistence Typed

    Lagom 1.6 is based on the new Akka 2.6 release and has integrated support for Akka Typed.

    As presented in the announcement for Akka 2.6, the new Akka Actor APIs (known as Akka Typed) represent a major shift in the Akka ecosystem towards type-safety and more explicit guidance with Actors. We’re happy to bring this to all Lagom users as well.

    Lagom includes dependency injection support for typed Actors in Akka 2.6 through Play.

    While the Lagom Persistence API is still supported and maintained, the new Akka Persistence API (Scala/Java) in Akka 2.6 is now the recommended default for persistence. This provides a more flexible API that gives you more control over some lower-level details while retaining some of the guided approaches that Lagom introduced. Akka Persistence can coexist with existing persistent entities, and the same read-side processor and topic producer APIs fully support both types of entities.

    Jackson serialization

    For Java API, Lagom now uses the Akka Jackson serializer, which is an improved version of the serializer in Lagom 1.5. You can find more information about the Akka Jackson serializer in the Akka documentation.

    It is compatible with Lagom 1.5 in both directions. See our migration guide (Scala/Java) for detailed information in case you are upgrading an existing Lagom application.

    For Scala API, in addition to play-json support, Akka Jackson serializer is now also supported. Akka Jackson serialization is especially useful when using Akka Persistence Typed API as it allows serialization of ActorRef[T] typically used when encoding command replies.

    Stop and Resume Projections

    Lagom 1.6 has a new API to programmatically stop and resume projections (Scala/Java) (Read Side Processors and Topic Producers) allowing users to control when a projection should start, stop or resume.

    Support for Scala 2.13 and Java 11

    Lagom 1.6 supports the latest Scala version (2.13), LTS Java version (11), and sbt 1.3, as well as the earlier Scala 2.12 and Java 8 versions.

    Scala 2.13 brings in a few performance improvements for its collection and async (Future) APIs. Although Java users are not exposed directly to Scala APIs, the Lagom itself is built in Scala and uses many Scala dependencies. That said, updating to Scala v2.13 is also beneficial for Java API users.

    Multiple changes in default behaviors

    • Kafka client defaults to only 1 max inflight request per connection. This can mean a drop in throughput but also increases guarantees against duplication or reordering of messages.
    • persistence sharding uses ddata strategy instead of persistence
    • JSON compression only triggers for payloads bigger than 32kb
    • java.time.* serializes using ISO-8601instead of custom Jackson formats (only affects Java Lagom users)

    🗺 Migrating from previous versions

    This release introduces minimal changes over the 1.6.0-RC3. Therefore if you already moved to that version, the upgrade should be trivial. If you are still using Lagom 1.5.x, we recommend you first migrate to the latest version available of Lagom 1.5 series and then migrate to Lagom 1.6. If you are using a version older than 1.5.x, you should migrate one version at a time. For example: from 1.4.9 to 1.4.15 (because 1.4.15 is 1.4.latest), then from 1.4.15 to 1.5.latest and finally to 1.6.x. Read the appropriate release notes and migration guides (Java / Scala) on each step.

    🙇 Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release:

    commits   added  removed  author
        249   25624    14553  Ignasi Marimon-Clos
        202   13607     7824  Renato Cavalcanti
        147    8846     3755  Marcos Pereira
         93    1704     2856  Dale Wijnand
         20     260      178  Tim Moore
         13     534      508  Patrik Nordwall
          6     200      155  Sergey Morgunov
          4      16       10  Alden Torres
          4      39       27  Enno Runne
          3      10        9  Martynas Mickevičius
          2       2        2  Abhiknoldur
          2     755      385  James Roper
          2      35       11  Ruth Stento
          1       3       46  Sethi, Kunal
          1       7        7  Juan Marin Otero
          1       7        7  Matthias Kurz
          1       2        2  Prashant Sharma
          1       0        0  0xflotus
          1       1        1  norfe
          1       0        6  Fabian Grutsch
          1       2        2  Fran Bermejo
          1       1        1  Johannes Rudolph
          1      24        1  Corey Auger
          1      10        0  Zhonglai Zhang
          1      72       60  Michael Liarakos
          1      27        3  Dmitriy Grigoryev
          1      23        1  Stephan Emmerich
          1       2        2  Steve Swing
    
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-RC3(Dec 9, 2019)

    Dear Lagom Community,

    The Lagom Team is pleased to announce the release of Lagom 1.6.0-RC3. This is the third Release Candidate of Lagom 1.6.x series. Like the milestone releases, one of our major goals is to get feedback, so please let us know if something isn't working or you see something that should be improved. But unlike the milestones, we are now freezing the APIs and other changes, and we intended to promote the release candidate to 1.6.0 final if no critical issues are reported. If you are the author of a Lagom module, we would recommend checking out this release to see how it will affect your module.

    Asides from the critical fixes listed below, this release mostly contained lots of documentation updates in preparation for the release. You can see the full list of changes in the GitHub milestone.

    :green_book: Changes in 1.6.0-RC3

    See the full list of changes here:

    1. All changes

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Lagom 1.6.0-RC2 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release:

    • Ignasi Marimon-Clos: @ignasi35
    • Marcos Pereira: @marcospereira
    • Renato Cavalcanti: @renatocaval
    • Dale Wijnand: @dwijnand
    • Juan Marin Otero: @jmarin
    Source code(tar.gz)
    Source code(zip)
  • 1.5.5(Dec 5, 2019)

    We are pleased to announce the release of Lagom Framework 1.5.5. This is the latest stable release of Play 1.5.x series.

    Changelog

    This release mainly includes security and overall fixes.

    For more details see the full list of changes.

    Credits

    Thanks to the community for their detailed bug reports and contributions. Special thanks to the following contributors who helped with this release: Renato Cavalcanti, Dale Wijnand, Ignasi Marimon-Clos, Tim Moore, Sergey Morgunov, Stephan Emmerich, Enno Runne, Marcos Pereira.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team's efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-RC2(Nov 8, 2019)

    Dear Lagom Community,

    The Lagom Team is pleased to announce the release of Lagom 1.6.0-RC2. This is the second Release Candidate of Lagom 1.6.x series. Like the milestone releases, one of our major goals is to get feedback, so please let us know if something isn't working or you see something that should be improved. But unlike the milestones, we are now freezing the APIs and other changes, and we intended to promote the release candidate to 1.6.0 final if no critical issues are reported. If you are the author of a Lagom module, we would recommend checking out this release to see how it will affect your module.

    Asides from the critical fixes listed below, this release mostly contained lots of documentation updates in preparation for the release. You can see the full list of changes in the GitHub milestone.

    :green_book: Changes in 1.6.0-RC2

    As mentioned above, this release mostly contained critical fixes:

    1. DB (Slick/JPA) shutdown must happen after cluster is shut down: We discovered and fixed a problem in the shutdown ordering of JPA and Slick DBs. #2426
    2. Unbreaking lagom-persistence-couchbase: Unexpectedly an internal API change broke lagom-persistence-couchbase. Thanks to the Akka Team resolving the underlying issue that had driven the API change, we were able to revert the change and, therefore, unbreak lagom-persistence-couchbase. #2414/#2416
    3. Add Akka and Play versions to LagomVersion: We added akka, akkaHttp, and play to com.lightbend.lagom.core.LagomVersion, which can be used to help align these versions in Lagom applications. #2408

    See the full list of changes here:

    1. GitHub milestone
    2. All changes

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Lagom 1.6.0-RC2 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release:

    • Ignasi Marimon-Clos: @ignasi35
    • Marcos Pereira: @marcospereira
    • Renato Cavalcanti: @renatocaval
    • Dale Wijnand: @dwijnand
    • Sergey Morgunov: @ihostage
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-RC1(Nov 1, 2019)

    Dear Lagom Community,

    The Lagom Team is pleased to announce the release of Lagom 1.6.0-RC1. This is the first Release Candidate of Lagom 1.6.x series. Like the milestone releases, one of our major goals is to get feedback, so please let us know if something isn't working or you see something that should be improved. But unlike the milestones, we are now freezing the APIs and other changes, and we intended to promote the release candidate to 1.6.0 final if no critical issues are reported. If you are the author of a Lagom module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in the GitHub milestone.

    :green_book: Changes in 1.6.0-RC1

    Some of the most relevant changes are:

    1. Akka 2.6.0-RC2: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 releases to discover possible integrations problems sooner than later. See Akka 2.6.0-RC1 and 2.6.0-RC2 announcements.
    2. Play 2.8.0-RC1: similarly we're tracking the release cadence of Play.

    See the full list of changes here:

    1. GitHub milestone
    2. All changes

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Lagom 1.6.0-RC1 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release:

    • Renato Cavalcanti @renatocaval
    • Ignasi Marimon-Clos: @ignasi35
    • Will Sargent: @wsargent
    • Marcos Pereira: @marcospereira
    • Dale Wijnand: @dwijnand
    • Tim Moore: @timmoore
    • Patrik Nordwall: @patriknw
    • Johannes Rudolph: @jrudolph
    • Fabian Grutsch: @fg-devs
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-M7(Oct 21, 2019)

  • 1.5.4(Oct 4, 2019)

    The Lagom team has released the versions 1.5.4. For a list of the specific changes in Lagom 1.5.4, see the change log.

    Highlights

    • #2240 Override default discovery method
    • #2280 Default to only 1 max inflight request per connection

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release: Ignasi Marimon-Clos, Tim Moore, Matthias Kurz, Renato Cavalcanti.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-M6(Oct 7, 2019)

    The Play Team is pleased to announce the release of Lagom 1.6.0-M6. This is the fifth milestone release of Lagom 1.6.x series. Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Lagom module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Pause and resume projections: after surfacing a design flaw, the implementation has been review and simplified. There are small API changes wrt Lagom 1.6.0-M5. Please test it out to see how it will work for your application.
    2. Kafka default settings: Lagom now defaults to only 1 max inflight request per connection (https://github.com/lagom/lagom/pull/2220). This can mean a drop in throughtput but also increases guarantees against duplication or reordering of messages.
    3. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions.

    See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.5.3(Sep 4, 2019)

    The Lagom team has released the versions 1.5.3 (due to an error during the release we had to skip 1.5.2). For a list of the specific changes in Lagom 1.5.3, see the change log.

    Highlights

    • #2191 Bump Akka to 2.5.25, which backports some of Akka 2.6's serializers, allowing rolling upgrades between Akka 2.5 and Akka 2.6, and, thus, between Lagom 1.5 and Lagom 1.6.
    • #2174 Fix cross-building (++/+) Lagom apps
    • #2165 Update to Scala 2.12.9
    • #1979 Fix akka.discovery.method in dev-mode
    • #1960 Setup default discovery methods
    • #1948 Fix the Akka Discovery ServiceLocator module ids for Java and Scala DSLs
    • #1950 Use Maven's built-in check of version for Lagom-Maven-Plugin
    • #1924 Add protobuf akka serializers

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release: Renato Cavalcanti, Dale Wijnand, Ignasi Marimon-Clos, Marcos Pereira, Sergey Morgunov, Tim Moore, fgonzalez, Dmitriy Grigoryev.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.15(Aug 22, 2019)

    The Play Team is pleased to announce the release of Lagom Framework 1.4.15. This is the latest stable release of Lagom 1.4.x series.

    Lagom 1.4.15 includes a backport of https://github.com/lagom/lagom/pull/2161 to fix a problem that appears when running tasks across multiple Scala versions, for example, sbt +publishLocal. There are also minor internal changes and documentation fixes. For a list of the specific changes in Lagom 1.4.15 see the change log (1.4.15).

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Play core team’s efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-M5(Aug 21, 2019)

    The Play Team is pleased to announce the release of Lagom 1.6.0-M5. This is the fourth milestone release of Lagom 1.6.x series. Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Lagom module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Akka 2.6.0-M5: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later.
    2. Play 2.8.0-M4: we did a milestone release for Play a few days ago, and this Lagom milestone is already using that too.
    3. Pause and resume projections: we are introducing basic support to pause and resume read sides and topic producers by tagName. This is not complete yet, but you can test and see how it will work for your application.
    4. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions. The most relevant updates were jackson-databind to 2.9.9.3, Alpakka Kafka Connector 1.0.5, and Akka HTTP 10.1.9.

    See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release: Marcos Pereira, Ignasi Marimon-Clos, Renato Cavalcanti, Dale Wijnand, Scala Steward, Tim Moore.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-M4(Jul 11, 2019)

    The Play Team is pleased to announce the release of Lagom 1.6.0-M4. This is the third milestone release of Lagom 1.6.x series. Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Lagom module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Akka 2.6.0-M4: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later.
    2. Play 2.8.0-M3: we did a milestone release for Play a few days ago, and this Lagom milestone is already using that too.
    3. Scala 2.13 support: this is the first Lagom release that supports Scala 2.13. You can now use Scala 2.13 for both your sbt and Maven projects.
    4. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions.

    See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release: Ignasi Marimon-Clos, Dale Wijnand, Marcos Pereira, Alden Torres, Renato Cavalcanti, Scala Steward.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-M3(Jul 2, 2019)

    The Play Team is pleased to announce the release of Lagom 1.6.0-M3. This is the second milestone release of Lagom 1.6.x series. Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Lagom module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Akka 2.6.0-M3: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later.
    2. Play 2.8.0-M2: we did a milestone release for Play a few days ago, and this Lagom milestone is already using that too.
    3. Scala 2.13 is a high priority for Lagom 1.6 but there still are a few details to iron. Meanwhile, we've made some code improvements in preparing to cross-compile for Scala 2.12 and 2.13.
    4. Multiple changes in default behaviors: persistence sharding uses ddata strategy instead of persistence, JSON compression only triggers for payloads bigger than 32kb, java.time.* serializes using ISO-8601instead of custom Jackson formats (only affects Java Lagom users), etc...
    5. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions.

    See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release: Marcos Pereira, Ignasi Marimon-Clos, Renato Cavalcanti, Patrik Nordwall, Dale Wijnand, Scala Steward, norfe, Tim Moore, Play Team.

    Source code(tar.gz)
    Source code(zip)
  • 1.6.0-M2(Jun 3, 2019)

    The Play Team is pleased to announce the release of Lagom 1.6.0-M2. This is the first milestone release of Lagom 1.6.x series. Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Lagom module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Akka 2.6.0-M2: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later.
    2. Play 2.8.0-M1: we did a milestone release for Play a few days ago, and this Lagom milestone is already using that too.
    3. Java 11 support: Lagom 1.6.0 applications will support Java 11. We still have work to do, but this milestone already updates some dependencies to versions that have better support for Java 11 and increase our testing surface using it.
    4. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions.

    See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release: Abhiknoldur, Alden Torres, Dale Wijnand, Dmitriy Grigoryev, Enno Runne, Ignasi Marimon-Clos, James Roper, Marcos Pereira, Play Team, Renato Cavalcanti, Ruth Stento, Scala steward, Sergey Morgunov, Sethi, Kunal, Steve Swing, Tim Moore.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.14(May 17, 2019)

    The Play Team is pleased to announce the release of Lagom Framework 1.4.14. This is the latest stable release of Lagom 1.4.x series.

    Lagom 1.4.14 includes a backport of https://github.com/lagom/lagom/pull/1773. Special thanks to @ihostage for the fix.

    For a list of the specific changes in Lagom 1.4.14 see the change log (1.4.14).

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Play core team’s efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.13(May 15, 2019)

    The Play Team is pleased to announce the release of Lagom Framework 1.4.13. This is the latest stable release of Lagom 1.4.x series.

    Lagom 1.4.13 brings in Play 2.6.23 and a new version of play-ws (v1.1.13) that includes an important bug fix on streamed calls. In case of an error, after a connection is established, the error is now properly propagated. See playframework/play-ws#340

    For a list of the specific changes in Lagom 1.4.13 see the change log (1.4.13).

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Play core team’s efforts. Lightbend offers commercial support for Lagom.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.12(May 3, 2019)

    These releases bring into Lagom a new Service Locator implementation, based on Akka's Service Discovery. This component was previously released as an apart library, lagom-akka-discovery-service-locator, and intended to be a replacement for the Service Locator previously offered by Lightbend Orchestration.

    In order to allow a smoother transition for Lagom 1.4 users, we decided to include it in 1.4.12. So users can choose to first migrate their Lagom 1.4 application to Akka Service Discovery and then to Lagom 1.5. Of course, this is not a required step. It is also possible to migrate directly from Lagom 1.4 and Lightbend Orchestration to Lagom 1.5 and Akka Service Discovery.

    For more information, consult the corresponding documentation for Akka Discovery integration:

    For a list of the specific changes in Lagom 1.4.12 see the change log (1.4.12).

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release: Renato Cavalcanti, Steve Swing, Ignasi Marimon-Clos, Dale Wijnand, Tim Moore, Alden Torres.

    Source code(tar.gz)
    Source code(zip)
  • 1.5.1(May 3, 2019)

    These releases bring into Lagom a new Service Locator implementation, based on Akka's Service Discovery. This component was previously released as an apart library, lagom-akka-discovery-service-locator, and intended to be a replacement for the Service Locator previously offered by Lightbend Orchestration.

    For more information, consult the corresponding documentation for Akka Discovery integration:

    For a list of the specific changes in Lagom 1.5.1, see the change log (1.5.1).

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release: Renato Cavalcanti, Steve Swing, Ignasi Marimon-Clos, Dale Wijnand, Tim Moore, Alden Torres.

    Source code(tar.gz)
    Source code(zip)
  • 1.5.0(Apr 16, 2019)

    We are happy to announce the availability of Lagom 1.5.0. This is the GA release of Lagom 1.5.0 and is production ready. We invite all our users to upgrade.

    This version builds on top of the 2.7.x series of Play, Alpakka Kafka 1.0, and the latest improvements on Akka and Akka Management. See GitHub for the full list of commits.

    Here’s a list of the most relevant improvements.

    Akka Management

    Akka Management is a suite of tools for operating Akka powered applications. Akka Management uses a dedicated HTTP port to expose a few routes allowing remote inspection of the state of the Akka Actor System. For example, if the process is a member of an Akka Cluster, these endpoints will report if the node already joined the cluster.

    Lagom exposes the Akka Management HTTP port out of the box. Lagom will add Health Check routes by default. You can reuse library provided health checks or plugin your own. For example, Lagom uses cluster status to determine when the node is healthy. This is called Cluster Membership Check and is provided by the Akka Cluster HTTP Management library.

    Another improvement Lagom 1.5 introduces, thanks to the adoption of Akka Management, is the simpler, more robust cluster formation via Akka Cluster Bootstrap. Instead of using a static list of seed nodes or relying on convoluted custom scripts to build the list of seed nodes dynamically, Cluster Bootstrap discovers the existing nodes via plugins adapting Akka Cluster Bootstrap to your orchestration environment (e.g. Kubernetes, Marathon). A static list of seed nodes is still supported but we recommend migrating to Cluster Bootstrap.

    Deployment with Kubernetes or Red Hat OpenShift

    Lagom 1.5.0 will no longer support Lightbend Orchestration (which was Incubating). Despite accelerating the first deployment, using Lightbend Orchestration was producing friction and reducing flexibility to tune the deployment. Moving forward, there will be no automated handling of the deployment and the suggested way is to manually maintain the production settings, the deployment descriptors and related scripts.

    If you are targeting OpenShift or Kubernetes environments the new Guide to Deploy Lightbend Applications covers all the steps and details (including a sample application) to set up and tune your system.

    Akka gRPC integration

    Lagom 1.5.0 introduces incubating support for Akka gRPC for cross-service communication. The original HTTP/JSON-based transport is not disappearing but, instead, Lagom introduces gRPC so users can choose to expose alternative transports increasing the adoption of their services.

    This feature drove some smaller improvements which non-gRPC users will also welcome. Lagom already supported HTTP/2 since it is built on top of Play. In Lagom 1.5 we’ve reviewed all the necessary pieces so HTTP/2 can also be used on dev mode. In the same spirit, it is now also possible to use encrypted (TLS) communication on dev mode.

    As a final improvement driven by the adoption of gRPC, Lagom 1.5 now supports Additional Routers (Java API / Scala API), which lets you embed any vanilla Play Router into a Lagom service. You are now able to easily reuse the Play and Akka building blocks whenever the Lagom API is not enough to complete the task at hand. Using Additional Routers it is trivial to reuse Play code you already had or extend Lagom with low-level features supported in Play but not exposed in Lagom directly (such as uploading files).

    Couchbase Persistence Support

    Lagom 1.5 also offers optional support for Couchbase as a new database option for persistent entities and read side processors through the Akka Persistence Couchbase module. Currently available in an Incubating early access release, Akka Persistence Couchbase has been built to work with Lagom 1.5 and the 1.0 release is coming soon. See the documentation for Couchbase Persistent Entities and Couchbase Read-Side support for more details.

    Migrating from previous versions

    This release introduces very little changes over the 1.5.0-RC2 so if you already moved to that version the upgrade should be trivial. If you are still using Lagom 1.4.x we recommend you first migrate to the latest version available of Lagom 1.4 series and then migrate to Lagom 1.5. If you are using a version older than 1.4.x, you should migrate one version at a time. For example: from 1.3.9 to 1.3.11 (because 1.3.11 is 1.3.latest), then from 1.3.11 to 1.4.latest and finally to 1.5.x. Read the appropriate release notes and migration guides (Java / Scala) on each step.

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release:

    commits author    
         53 Ignasi Marimon-Clos
         37 Renato Cavalcanti
         20 Tim Moore
         16 Dale Wijnand
         15 Elijah Rippeth
         11 Marcos Pereira
          4 Martynas Mickevičius
          3 Ayush Prashar
          2 Alden Torres
          1 sullis
          1 danielklein45
          1 Zhonglai Zhang
          1 Sergey Morgunov
          1 Riccardo Sirigu
          1 Prashant Sharma
          1 Piyush Goyal
          1 Kunal sethi
          1 João Guitana
          1 Ido Shamun
          1 Enno
          1 Corey Auger
          1 Brent Eritou
          1 0xflotus
    
    Source code(tar.gz)
    Source code(zip)
  • 1.5.0-RC2(Mar 6, 2019)

    We are happy to announce the availability of Lagom 1.5.0-RC2. This is the second release candidate of Lagom 1.5.0. We expect this to be considerably more stable than the milestone releases, not only in terms of functionality but we are also moving closer to the idea of freezing the APIs. Our plan is to later promote this release candidate to a stable release if we don't find major issues.

    Because of that, and as with milestones, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If there are changes not well documented in javadocs, scaladocs or our migration guides, please, let us know so that we can improve them before the general availability release.

    Highlights

    Deployment

    Since version 1.5.0-RC2 Lagom no longer supports Lightbend Orchestration. If you depend on Lightbend Orchestration to produce your Dockerfile and deployment specs (Kubernetes or DC/OS) refer to the Lagom 1.5 Migration Guide.

    If your deployment target is OpenShift you can also refer to the Deploying Lightbend applications to OpenShift guide.

    Upgrades for major dependencies

    There is also a brand new integration with Akka Management providing an easier way to do cluster bootstrap, health-checks enabled by default, and works better with our new implementation of ServiceLocator based on Akka Discovery.

    See GitHub for the full list of commits and the issues and pull requests assigned to the 1.5.0-RC2 milestone.

    Updating a Lagom project to version 1.5.0-RC2

    First, make sure you read the Lagom 1.5 Migration Guide for Scala or Java.

    To update an sbt project, change the version of lagom-sbt-plugin in your project/plugins.sbt file.

    To update a Maven project, change the lagom.version property in your top-level pom.xml.

    After updating, it is recommended to fix any new deprecation warnings you see when compiling or running your services.

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release:

    commits  added  removed  author
         13    767      362   Renato Cavalcanti
          7   1090      697   Ignasi Marimon-Clos
          4    176      100   Marcos Pereira
          2      6        5   Martynas Mickevičius
          2     55       36   Dale Wijnand
          1     10        0   Zhonglai Zhang
          1     24       18   Enno
          1      2        2   Fran Bermejo
          1      2        2   Prashant Sharma
    
    Source code(tar.gz)
    Source code(zip)
  • 1.4.11(Mar 6, 2019)

    The Lagom team has released Lagom 1.4.11.

    This release upgrades Akka to resolve a compatibility problem with Lightbend Orchestration 1.7.3.

    Highlights

    • Updates Akka to version 2.5.20 which stabilizes some APIs and brings bug fixes.

    If you are a user of Lightbend Orchestration you will have to upgrade your dependency of the sbt-reactive-app plugin to 1.7.3.

    See GitHub for the full list of commits and the issues and pull requests assigned to the 1.4.11 milestone.

    Updating a Lagom project to version 1.4.11

    To update an sbt project, change the version of lagom-sbt-plugin in your project/plugins.sbt file.

    To update a Maven project, change the lagom.version property in your top-level pom.xml.

    After updating, it is recommended to fix any new deprecation warnings you see when compiling or running your services.

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

    Special thanks to the following contributors who helped with this release:

    commits  added  removed  author
    1            4        2  Renato Cavalcanti
    1           23       10  Ignasi Marimon-Clos
    1            1        1  Marcos Pereira
    1            3        3  Tim Moore
    1           26        7  Dale Wijnand
    
    Source code(tar.gz)
    Source code(zip)
Owner
Lagom Framework
Reactive Microservices on the JVM.
Lagom Framework
Vert.x is a tool-kit for building reactive applications on the JVM

Vert.x Core This is the repository for Vert.x core. Vert.x core contains fairly low-level functionality, including support for HTTP, TCP, file system

Eclipse Vert.x 13.3k Jan 8, 2023
A reactive Java framework for building fault-tolerant distributed systems

Atomix Website | Javadoc | Slack | Google Group A reactive Java framework for building fault-tolerant distributed systems Please see the website for f

Atomix 2.3k Dec 29, 2022
A reactive dataflow engine, a data stream processing framework using Vert.x

?? NeonBee Core NeonBee is an open source reactive dataflow engine, a data stream processing framework using Vert.x. Description NeonBee abstracts mos

SAP 33 Jan 4, 2023
Fault tolerance and resilience patterns for the JVM

Failsafe Failsafe is a lightweight, zero-dependency library for handling failures in Java 8+, with a concise API for handling everyday use cases and t

Jonathan Halterman 3.9k Dec 29, 2022
Fibers, Channels and Actors for the JVM

Quasar Fibers, Channels and Actors for the JVM Getting started Add the following Maven/Gradle dependencies: Feature Artifact Core (required) co.parall

Parallel Universe 4.5k Dec 25, 2022
Build highly concurrent, distributed, and resilient message-driven applications on the JVM

Akka We believe that writing correct concurrent & distributed, resilient and elastic applications is too hard. Most of the time it's because we are us

Akka Project 12.6k Jan 3, 2023
Reactive Microservices for the JVM

Lagom - The Reactive Microservices Framework Lagom is a Swedish word meaning just right, sufficient. Microservices are about creating services that ar

Lagom Framework 2.6k Dec 30, 2022
Reactive Streams Utilities - Future standard utilities library for Reactive Streams.

Reactive Streams Utilities This is an exploration of what a utilities library for Reactive Streams in the JDK might look like. Glossary: A short gloss

Lightbend 61 May 27, 2021
SpringBoot show case application for reactive-pulsar library (Reactive Streams adapter for Apache Pulsar Java Client)

Reactive Pulsar Client show case application Prerequisites Cloning reactive-pulsar Running this application requires cloning https://github.com/lhotar

Lari Hotari 9 Nov 10, 2022
Vert.x is a tool-kit for building reactive applications on the JVM

Vert.x Core This is the repository for Vert.x core. Vert.x core contains fairly low-level functionality, including support for HTTP, TCP, file system

Eclipse Vert.x 13.3k Jan 8, 2023
RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.

RxJava: Reactive Extensions for the JVM RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-base

ReactiveX 46.7k Dec 30, 2022
Discord4J is a fast, powerful, unopinionated, reactive library to enable quick and easy development of Discord bots for Java, Kotlin, and other JVM languages using the official Discord Bot API.

Discord4J is a fast, powerful, unopinionated, reactive library to enable quick and easy development of Discord bots for Java, Kotlin, and other JVM languages using the official Discord Bot API.

null 1.5k Jan 4, 2023
Reactive Streams Specification for the JVM

Reactive Streams The purpose of Reactive Streams is to provide a standard for asynchronous stream processing with non-blocking backpressure. The lates

null 4.5k Dec 30, 2022
Non-Blocking Reactive Foundation for the JVM

Reactor Core Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactive Extensions inspired API and efficient event streaming s

Reactor 4.4k Dec 30, 2022
A reactive Java framework for building fault-tolerant distributed systems

Atomix Website | Javadoc | Slack | Google Group A reactive Java framework for building fault-tolerant distributed systems Please see the website for f

Atomix 2.3k Dec 29, 2022
LINE 4.1k Jan 2, 2023
Reactive Programming for Android

Reactive Programming for Android Agera is a set of classes and interfaces to help write functional, asynchronous, and reactive applications for Androi

Google 7.3k Jan 5, 2023
Immutable in-memory R-tree and R*-tree implementations in Java with reactive api

rtree In-memory immutable 2D R-tree implementation in java using RxJava Observables for reactive processing of search results. Status: released to Mav

Dave Moten 999 Dec 20, 2022