Conncection closed without response
I'm trying to deploy a hello bot onto a heroku dyno. I have the server working and I can actually get a bot's subscription link, but then DevBot gives me the error:
Failed to query: https://safe-reef-88300.herokuapp.com:443/bots/status.
Make sure your service is running and this url is visible
On the heroku logs I see this error:
2017-05-13T13:56:26.088066+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/bots/status" host=safe-reef-88300.herokuapp.com request_id=e59b09ec-da74-402f-a6b1-0c368e89f442 fwd="104.199.39.107" dyno=web.1 connect=0ms service=4ms status=503 bytes=0 protocol=https
In order to deploy the application to heroku, I prebuilt the bot on my machine, and then used a Null buildpack so heroku does no building on the server. I am running this in a free web dyno, and I have the https port exposed on 443. What would cause this error?
My echo.yaml is:
server:
applicationConnectors:
- type: http
port: 8049
- type: https
port: 443
keyStorePath: certs/keystore.jks
keyStorePassword: 123456
certAlias: myservercert
validateCerts: false
validatePeers: false
adminConnectors:
- type: http
port: 8051
# requestLog:
# appenders: []
auth: <bot token> # obtained from DevBot when running: show bot <name>
name: testbridge
accent: 2
cryptoDir: certs
when I run:
curl -ikv https://safe-reef-88300.herokuapp.com:443/bots/status
I am getting:
* Trying 54.225.154.132...
* Connected to safe-reef-88300.herokuapp.com (54.225.154.132) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: *.herokuapp.com
* Server certificate: DigiCert SHA2 High Assurance Server CA
* Server certificate: DigiCert High Assurance EV Root CA
> GET /bots/status HTTP/1.1
> Host: safe-reef-88300.herokuapp.com
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable
Do you still have your echo bot service running there? Do you have keystore.jsk file in ./certs/ dir?
Can you paste here your logs (current.log) or console output?
Service is still running. It shutdowns with lack of inactivity, but starts up as soon as a query comes.
I can see your request in the logs, and it has the same error as DevBot. I also tried the curl request a couple of times, with the same result. The keystore.jks (I'm assuming it needs .jks and not .jsk) is there and works properly, I can view it with keytool --list --keystore keystore.jks.
I do have the unlimited power policy jar files in ${JAVA_HOME}/jre/lib/security
Thanks. What is the output when you start the service? You should see something like this:
INFO [2017-05-13 20:59:02,277] org.eclipse.jetty.util.log: Logging initialized @4073ms
INFO [2017-05-13 20:59:02,400] io.dropwizard.server.DefaultServerFactory: Registering jersey handler with root path prefix: /
INFO [2017-05-13 20:59:02,401] io.dropwizard.server.DefaultServerFactory: Registering admin handler with root path prefix: /
INFO [2017-05-13 20:59:02,402] io.dropwizard.assets.AssetsBundle: Registering AssetBundle with name: assets for path /diagnosis/*
INFO [2017-05-13 20:59:02,447] io.dropwizard.assets.AssetsBundle: Registering AssetBundle with name: assets for path /assets/*
WARN [2017-05-13 20:59:02,448] io.dropwizard.jetty.setup.ServletEnvironment: Overriding the existing servlet registered with the name: assets
INFO [2017-05-13 20:59:02,471] io.dropwizard.server.DefaultServerFactory: Registering jersey handler with root path prefix: /
INFO [2017-05-13 20:59:02,472] io.dropwizard.server.DefaultServerFactory: Registering admin handler with root path prefix: /
INFO [2017-05-13 20:59:02,473] io.dropwizard.server.ServerFactory: Starting EchoService
INFO [2017-05-13 20:59:02,863] org.eclipse.jetty.setuid.SetUIDListener: Opened application@24f360b2{HTTP/1.1,[http/1.1]}{0.0.0.0:8049}
INFO [2017-05-13 20:59:02,865] org.eclipse.jetty.setuid.SetUIDListener: Opened application@60cf80e7{SSL,[ssl, http/1.1]}{0.0.0.0:443}
INFO [2017-05-13 20:59:02,868] org.eclipse.jetty.setuid.SetUIDListener: Opened admin@302fec27{HTTP/1.1,[http/1.1]}{0.0.0.0:8051}
INFO [2017-05-13 20:59:02,870] org.eclipse.jetty.server.Server: jetty-9.3.z-SNAPSHOT
INFO [2017-05-13 20:59:03,120] org.eclipse.jetty.util.ssl.SslContextFactory: x509=X509@2a492f2a(myservercert,h=[company.com],w=[]) for SslContextFactory@3277e499(file:///opt/echo/keystore.jks,null)
INFO [2017-05-13 20:59:03,619] io.dropwizard.jetty.HttpsConnectorFactory: Supported protocols: [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2]
INFO [2017-05-13 20:59:03,625] io.dropwizard.jetty.HttpsConnectorFactory: Supported cipher suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV, TLS_DH_anon_WITH_AES_256_GCM_SHA384, TLS_DH_anon_WITH_AES_128_GCM_SHA256, TLS_DH_anon_WITH_AES_256_CBC_SHA256, TLS_ECDH_anon_WITH_AES_256_CBC_SHA, TLS_DH_anon_WITH_AES_256_CBC_SHA, TLS_DH_anon_WITH_AES_128_CBC_SHA256, TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_DH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_DH_anon_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA, TLS_RSA_WITH_NULL_SHA256, TLS_ECDHE_ECDSA_WITH_NULL_SHA, TLS_ECDHE_RSA_WITH_NULL_SHA, SSL_RSA_WITH_NULL_SHA, TLS_ECDH_ECDSA_WITH_NULL_SHA, TLS_ECDH_RSA_WITH_NULL_SHA, TLS_ECDH_anon_WITH_NULL_SHA, SSL_RSA_WITH_NULL_MD5, TLS_KRB5_WITH_3DES_EDE_CBC_SHA, TLS_KRB5_WITH_3DES_EDE_CBC_MD5, TLS_KRB5_WITH_DES_CBC_SHA, TLS_KRB5_WITH_DES_CBC_MD5, TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA, TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5]
INFO [2017-05-13 20:59:04,626] io.dropwizard.jersey.DropwizardResourceConfig: The following paths were found for the configured resources:
POST /bots (com.wire.bots.sdk.server.resources.BotsResource)
GET /bots/status (com.wire.bots.sdk.server.resources.StatusResource)
POST /bots/{bot}/messages (com.wire.bots.sdk.server.resources.MessageResource)
POST /provider/diagnosis (com.wire.bots.sdk.server.resources.ProviderResource)
POST /provider/login (com.wire.bots.sdk.server.resources.ProviderResource)
GET /provider/services (com.wire.bots.sdk.server.resources.ProviderResource)
INFO [2017-05-13 20:59:04,628] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@43a51d00{/,null,AVAILABLE}
INFO [2017-05-13 20:59:04,643] io.dropwizard.setup.AdminEnvironment: tasks =
POST /tasks/prekeys (com.wire.bots.sdk.server.tasks.AvailablePrekeysTask)
POST /tasks/log-level (io.dropwizard.servlets.tasks.LogConfigurationTask)
POST /tasks/gc (io.dropwizard.servlets.tasks.GarbageCollectionTask)
POST /tasks/hello_task (com.wire.bots.echo.EchoService$1)
POST /tasks/conversation (com.wire.bots.sdk.server.tasks.ConversationTask)
POST /tasks/broadcast (com.wire.bots.sdk.server.tasks.BroadcastAllTask)
INFO [2017-05-13 20:59:04,647] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@63bde6c2{/,null,AVAILABLE}
INFO [2017-05-13 20:59:04,658] org.eclipse.jetty.server.AbstractConnector: Started application@24f360b2{HTTP/1.1,[http/1.1]}{0.0.0.0:8049}
INFO [2017-05-13 20:59:04,677] org.eclipse.jetty.server.AbstractConnector: Started application@60cf80e7{SSL,[ssl, http/1.1]}{0.0.0.0:443}
INFO [2017-05-13 20:59:04,678] org.eclipse.jetty.server.AbstractConnector: Started admin@302fec27{HTTP/1.1,[http/1.1]}{0.0.0.0:8051}
INFO [2017-05-13 20:59:04,678] org.eclipse.jetty.server.Server: Started @6476ms
That's pretty much what I'm getting. This is what I got exactly:
Starting process with command `java $JAVA_OPTS -Ddw.server.applicationConnectors[1].port=9677 -jar target/echo.jar server conf/echo.yaml`
2017-05-13T21:06:25.733245+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
2017-05-13T21:06:25.743523+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx350m -Xss512k -Dfile.encoding=UTF-8
2017-05-13T21:06:28.254832+00:00 app[web.1]: INFO [2017-05-13 21:06:28,249] org.eclipse.jetty.util.log: Logging initialized @2509ms
2017-05-13T21:06:28.365733+00:00 app[web.1]: INFO [2017-05-13 21:06:28,365] io.dropwizard.server.DefaultServerFactory: Registering jersey handler with root path prefix: /
2017-05-13T21:06:28.365778+00:00 app[web.1]: INFO [2017-05-13 21:06:28,365] io.dropwizard.server.DefaultServerFactory: Registering admin handler with root path prefix: /
2017-05-13T21:06:28.365926+00:00 app[web.1]: INFO [2017-05-13 21:06:28,365] io.dropwizard.assets.AssetsBundle: Registering AssetBundle with name: assets for path /diagnosis/*
2017-05-13T21:06:28.405334+00:00 app[web.1]: INFO [2017-05-13 21:06:28,405] io.dropwizard.assets.AssetsBundle: Registering AssetBundle with name: assets for path /assets/*
2017-05-13T21:06:28.405361+00:00 app[web.1]: WARN [2017-05-13 21:06:28,405] io.dropwizard.jetty.setup.ServletEnvironment: Overriding the existing servlet registered with the name: assets
2017-05-13T21:06:28.423401+00:00 app[web.1]: INFO [2017-05-13 21:06:28,423] io.dropwizard.server.DefaultServerFactory: Registering jersey handler with root path prefix: /
2017-05-13T21:06:28.423564+00:00 app[web.1]: INFO [2017-05-13 21:06:28,423] io.dropwizard.server.DefaultServerFactory: Registering admin handler with root path prefix: /
2017-05-13T21:06:28.426217+00:00 app[web.1]: INFO [2017-05-13 21:06:28,425] io.dropwizard.server.ServerFactory: Starting EchoService
2017-05-13T21:06:28.696954+00:00 app[web.1]: INFO [2017-05-13 21:06:28,696] org.eclipse.jetty.setuid.SetUIDListener: Opened application@5ae76500{HTTP/1.1,[http/1.1]}{0.0.0.0:8049}
2017-05-13T21:06:28.698521+00:00 app[web.1]: INFO [2017-05-13 21:06:28,698] org.eclipse.jetty.setuid.SetUIDListener: Opened application@6063d80a{SSL,[ssl, http/1.1]}{0.0.0.0:9677}
2017-05-13T21:06:28.698948+00:00 app[web.1]: INFO [2017-05-13 21:06:28,698] org.eclipse.jetty.setuid.SetUIDListener: Opened admin@1133ec6e{HTTP/1.1,[http/1.1]}{0.0.0.0:8051}
2017-05-13T21:06:28.701626+00:00 app[web.1]: INFO [2017-05-13 21:06:28,701] org.eclipse.jetty.server.Server: jetty-9.3.z-SNAPSHOT
2017-05-13T21:06:28.784118+00:00 app[web.1]: INFO [2017-05-13 21:06:28,783] org.eclipse.jetty.util.ssl.SslContextFactory: x509=X509@63f34b70(myservercert,h=[company.com],w=[]) for SslContextFactory@641856(file:///app/certs/keystore.jks,null)
2017-05-13T21:06:28.787248+00:00 heroku[web.1]: State changed from starting to up
2017-05-13T21:06:28.958197+00:00 app[web.1]: INFO [2017-05-13 21:06:28,957] io.dropwizard.jetty.HttpsConnectorFactory: Supported protocols: [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2]
2017-05-13T21:06:28.959227+00:00 app[web.1]: INFO [2017-05-13 21:06:28,959] io.dropwizard.jetty.HttpsConnectorFactory: Supported cipher suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV, TLS_DH_anon_WITH_AES_256_GCM_SHA384, TLS_DH_anon_WITH_AES_128_GCM_SHA256, TLS_DH_anon_WITH_AES_256_CBC_SHA256, TLS_ECDH_anon_WITH_AES_256_CBC_SHA, TLS_DH_anon_WITH_AES_256_CBC_SHA, TLS_DH_anon_WITH_AES_128_CBC_SHA256, TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_DH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_DH_anon_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA, TLS_RSA_WITH_NULL_SHA256, TLS_ECDHE_ECDSA_WITH_NULL_SHA, TLS_ECDHE_RSA_WITH_NULL_SHA, SSL_RSA_WITH_NULL_SHA, TLS_ECDH_ECDSA_WITH_NULL_SHA, TLS_ECDH_RSA_WITH_NULL_SHA, TLS_ECDH_anon_WITH_NULL_SHA, SSL_RSA_WITH_NULL_MD5, TLS_KRB5_WITH_3DES_EDE_CBC_SHA, TLS_KRB5_WITH_3DES_EDE_CBC_MD5, TLS_KRB5_WITH_DES_CBC_SHA, TLS_KRB5_WITH_DES_CBC_MD5, TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA, TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5]
2017-05-13T21:06:29.982064+00:00 app[web.1]: INFO [2017-05-13 21:06:29,981] io.dropwizard.jersey.DropwizardResourceConfig: The following paths were found for the configured resources:
2017-05-13T21:06:29.982077+00:00 app[web.1]:
2017-05-13T21:06:29.982078+00:00 app[web.1]: POST /bots (com.wire.bots.sdk.server.resources.BotsResource)
2017-05-13T21:06:29.982079+00:00 app[web.1]: GET /bots/status (com.wire.bots.sdk.server.resources.StatusResource)
2017-05-13T21:06:29.982080+00:00 app[web.1]: POST /bots/{bot}/messages (com.wire.bots.sdk.server.resources.MessageResource)
2017-05-13T21:06:29.982081+00:00 app[web.1]: POST /provider/diagnosis (com.wire.bots.sdk.server.resources.ProviderResource)
2017-05-13T21:06:29.982081+00:00 app[web.1]: POST /provider/login (com.wire.bots.sdk.server.resources.ProviderResource)
2017-05-13T21:06:29.982082+00:00 app[web.1]: GET /provider/services (com.wire.bots.sdk.server.resources.ProviderResource)
2017-05-13T21:06:29.982083+00:00 app[web.1]:
2017-05-13T21:06:29.984051+00:00 app[web.1]: INFO [2017-05-13 21:06:29,983] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@22590e3e{/,null,AVAILABLE}
2017-05-13T21:06:29.993133+00:00 app[web.1]: INFO [2017-05-13 21:06:29,992] io.dropwizard.setup.AdminEnvironment: tasks =
2017-05-13T21:06:29.993135+00:00 app[web.1]:
2017-05-13T21:06:29.993137+00:00 app[web.1]: POST /tasks/prekeys (com.wire.bots.sdk.server.tasks.AvailablePrekeysTask)
2017-05-13T21:06:29.993137+00:00 app[web.1]: POST /tasks/log-level (io.dropwizard.servlets.tasks.LogConfigurationTask)
2017-05-13T21:06:29.993138+00:00 app[web.1]: POST /tasks/gc (io.dropwizard.servlets.tasks.GarbageCollectionTask)
2017-05-13T21:06:29.993139+00:00 app[web.1]: POST /tasks/hello_task (com.wire.bots.echo.EchoService$1)
2017-05-13T21:06:29.993139+00:00 app[web.1]: POST /tasks/conversation (com.wire.bots.sdk.server.tasks.ConversationTask)
2017-05-13T21:06:29.993140+00:00 app[web.1]: POST /tasks/broadcast (com.wire.bots.sdk.server.tasks.BroadcastAllTask)
2017-05-13T21:06:29.993141+00:00 app[web.1]:
2017-05-13T21:06:29.999976+00:00 app[web.1]: INFO [2017-05-13 21:06:29,999] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@173f73e7{/,null,AVAILABLE}
2017-05-13T21:06:30.009664+00:00 app[web.1]: INFO [2017-05-13 21:06:30,009] org.eclipse.jetty.server.AbstractConnector: Started application@5ae76500{HTTP/1.1,[http/1.1]}{0.0.0.0:8049}
2017-05-13T21:06:30.014420+00:00 app[web.1]: INFO [2017-05-13 21:06:30,013] org.eclipse.jetty.server.AbstractConnector: Started application@6063d80a{SSL,[ssl, http/1.1]}{0.0.0.0:9677}
2017-05-13T21:06:30.018532+00:00 app[web.1]: INFO [2017-05-13 21:06:30,018] org.eclipse.jetty.server.AbstractConnector: Started admin@1133ec6e{HTTP/1.1,[http/1.1]}{0.0.0.0:8051}
2017-05-13T21:06:30.018797+00:00 app[web.1]: INFO [2017-05-13 21:06:30,018] org.eclipse.jetty.server.Server: Started @4280ms
The difference appears to be mostly Heroku's boilerplate that they put before log lines.
Sorry that this is so complicated, I'm probably missing something really simple.
In your logs:
Starting process with command java $JAVA_OPTS -Ddw.server.applicationConnectors[1].port=9677 -jar target/echo.jar server conf/echo.yaml
This means you are overriding your https port 443 specified in yaml with 9677 which is probably not opened.
2017-05-13T21:06:30.014420+00:00 app[web.1]: INFO [2017-05-13 21:06:30,013] org.eclipse.jetty.server.AbstractConnector: Started application@6063d80a{SSL,[ssl, http/1.1]}{0.0.0.0:9677}
Either open 9677 and update your URL with DevBot or change java command.
The way Heroku works you have to bind to a specific port they give (and changes with each instance) which they somehow reroute to port 443 for your specific instance (reference: https://stackoverflow.com/questions/9164915/node-js-eacces-error-when-listening-on-most-ports#comment11532456_9166332)
Anyway, I get this error when I run curl -ikv https://safe-reef-88300.herokuapp.com:9677/bots/status
* Hostname was NOT found in DNS cache
* Trying 54.197.233.136...
* connect to 54.197.233.136 port 9677 failed: Connection refused
* Failed to connect to safe-reef-88300.herokuapp.com port 9677: Connection refused
* Closing connection 0
curl: (7) Failed to connect to safe-reef-88300.herokuapp.com port 9677: Connection refused
It appears to only be listening on 443. Sorry for that little confusion with Heroku.
I see. OK so it's clear that Heroku is not routing traffic from 443 to 9677 correctly. I will try to investigate bot deployments to Heroku more on Monday. Meanwhile if you find a cause for this please elaborate it here so other people dont have to go through this. Thanks!
I will contact heroku support and see if they can help me in any way. I plan to release my edits to github once I get it working, so hopefully I'll have a template out soon.
One more thing. Can you verify that you provided Dev Bot with the correct string from pubkey.pem?
You can always update your pubkey by running: update bot <bot_name> and then pubkey
Same error even after I updated the pubkey.
I tried running a fresh copy of this git repository on my own machine (all I did was make and change the echo.yaml so it had access to the keystore and an open port) and tried curl -ikv localhost:4434/bots/status
With this result:
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 4434 (#0)
> GET /bots/status HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:4434
> Accept: */*
>
* Empty reply from server
* Connection #0 to host localhost left intact
curl: (52) Empty reply from server
It seems I'm getting the same error even without Heroku's weirdness.
I think this is fine:
If you try adding https like: curl -ikv https://localhost:4434/bots/status
You should see something like:
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 4434 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
* Server certificate: company.com
> GET /bots/status HTTP/1.1
> Host: localhost:4434
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Date: Mon, 15 May 2017 21:08:23 GMT
Date: Mon, 15 May 2017 21:08:23 GMT
< Content-Type: text/plain
Content-Type: text/plain
< Vary: Accept-Encoding
Vary: Accept-Encoding
< Content-Length: 8
Ah I right. That worked (though my Content-Length is 0, probably not an issue). Sorry for the confusion. I have a ticket in with Heroku, we'll see what they say.
Ok got a response back from Heroku. Supposedly, everything is forwarded as if 443 is bound, but the rep did say this, which might be our issue:
All HTTPS request will be sent to your apps port it is listening on. One thing to note that is the SSL connection is terminated before the request reaches your app and our routers send the request to your app via HTTP. Your app will only need to handle HTTP traffic.
Does the bot have an issue if it's receiving HTTP traffic?
Yes, that might be the problem. If you have a config like this:
server:
applicationConnectors:
- type: http
port: 8049
- type: https
port: 443
...
the bot expects https on port 443.
What you can do is try the following:
server:
applicationConnectors:
- type: http
port: 443
...
You probably can remove the whole config underneath type: https. If not, just change it into a different port that is not reachable from outside.
Well that seems to be doing better. I had the server bind it's http port to the public port and use that instead. However, Devbot still won't create the invite link.
I get this message in the logs when Devbot tries to contact the server:
2017-05-16T13:16:21.661444+00:00 heroku[router]: at=info method=GET path="/bots/status" host=safe-reef-88300.herokuapp.com request_id=bd3122ff-be46-4c78-b163-639baccd7473 fwd="104.199.39.107" dyno=web.1 connect=0ms service=12ms status=200 bytes=98 protocol=https
2017-05-16T13:16:21.661032+00:00 app[web.1]: 104.199.39.107 - - [16/May/2017:13:16:21 +0000] "GET /bots/status HTTP/1.1" 200 0 "-" "Jersey/2.23.2 (HttpUrlConnection 1.8.0_91)" 8
If I try curl -ikv https://safe-reef-88300.herokuapp.com/bots/status I get:
* Hostname was NOT found in DNS cache
* Trying 54.243.117.208...
* Connected to safe-reef-88300.herokuapp.com (54.243.117.208) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
* subject: C=US; ST=California; L=San Francisco; O=Heroku, Inc.; CN=*.herokuapp.com
* start date: 2017-04-19 00:00:00 GMT
* expire date: 2020-06-22 12:00:00 GMT
* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 High Assurance Server CA
* SSL certificate verify ok.
> GET /bots/status HTTP/1.1
> User-Agent: curl/7.35.0
> Host: safe-reef-88300.herokuapp.com
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
* Server Cowboy is not blacklisted
< Server: Cowboy
Server: Cowboy
< Connection: close
Connection: close
< Date: Tue, 16 May 2017 13:19:17 GMT
Date: Tue, 16 May 2017 13:19:17 GMT
< Vary: Accept-Encoding
Vary: Accept-Encoding
< Via: 1.1 vegur
Via: 1.1 vegur
<
* SSLv3, TLS alert, Client hello (1):
* Closing connection 0
* SSLv3, TLS alert, Client hello (1):
It seems to just not be sending anything back.
Edit: Would it help for you to have the bot token and name? This is a test bot that I'll delete after I have this working, so I don't mind that information being public.
What is your base_url for your bot? What is your bot name?
Bot name is testbridge, base url is https://safe-reef-88300.herokuapp.com. I'm probably missing something rather dumb, sorry to cause this much trouble.
Thanks. I think Wire Backend does not default to 443 for https. Can you change your base url to: https://safe-reef-88300.herokuapp.com:443
This should fix the glitch with the BE
Same issue:
2017-05-16T13:41:05.619462+00:00 heroku[router]: at=info method=GET path="/bots/status" host=safe-reef-88300.herokuapp.com request_id=2c219076-19d5-4a07-bc73-861667950701 fwd="104.199.39.107" dyno=web.1 connect=0ms service=14ms status=200 bytes=98 protocol=https
2017-05-16T13:41:05.623660+00:00 app[web.1]: 104.199.39.107 - - [16/May/2017:13:41:05 +0000] "GET /bots/status HTTP/1.1" 200 0 "-" "Jersey/2.23.2 (HttpUrlConnection 1.8.0_91)" 11
Curl command looks the same too.
Yes. If I try to add your bot to a conversation (Chrome console):
wire.app.repository.bot.add_bot("testbridge")
I get:
code: 502
label: "bad-gateway
"message: "The upstream service returned an invalid response."
Do you see POST /bots requests coming to your bot service?
BTW: Notice that your GET /bots/status HTTP/1.1" 200 0 returned Status=200 OK. This is valid response. It supposed to return 200 with empty body.
Ok. That's good to know. However I see no Post requests. Dev Bot has not yet succeeded in enabling the bot.
When I try to enable it, I get the same message:
2017-05-16T14:04:29.370155+00:00 heroku[router]: at=info method=GET path="/bots/status" host=safe-reef-88300.herokuapp.com request_id=890fdfd3-dc1b-4941-a590-7019a7ed666e fwd="104.199.39.107" dyno=web.1 connect=0ms service=9ms status=200 bytes=98 protocol=https
2017-05-16T14:04:29.370951+00:00 app[web.1]: 104.199.39.107 - - [16/May/2017:14:04:29 +0000] "GET /bots/status HTTP/1.1" 200 0 "-" "Jersey/2.23.2 (HttpUrlConnection 1.8.0_91)" 5
Of course, all Dev Bot says is "Failed to create invite link" and gives me no other information.
Can you show me the json you get from Dev Bot when you type: show bot <bot name>
Please obfuscate the token
Thanks!
{
"name" : "testbridge",
"description" : "testing bot",
"tags" : [ "tutorial" ],
"id" : "0e51fe20-efdc-44e3-898e-9e2e07d9386f",
"enabled" : true,
"auth_tokens" : [ "----------------------" ],
"assets" : [ ],
"base_url" : "https://safe-reef-88300.herokuapp.com:443"
}
Huh, apparently it is enabled, though it doesn't seem to be working right.
Thanks. You bot is enabled, but there seems to be the problem there. Your service is still returning error ( 403 this time) when Wire BE tries to call POST on /bots
curl -ikv -XPOST https://safe-reef-88300.herokuapp.com:443/bots -d'{}' -H"Content-type:application/json" -H"Authorization:token"
* Trying 107.21.125.200...
* Connected to safe-reef-88300.herokuapp.com (107.21.125.200) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: *.herokuapp.com
* Server certificate: DigiCert SHA2 High Assurance Server CA
* Server certificate: DigiCert High Assurance EV Root CA
> POST /bots HTTP/1.1
> Host: safe-reef-88300.herokuapp.com
> User-Agent: curl/7.43.0
> Accept: */*
> Content-type:application/json
> Authorization:token
> Content-Length: 2
>
* upload completely sent off: 2 out of 2 bytes
< HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
< Server: Cowboy
Server: Cowboy
< Connection: keep-alive
Connection: keep-alive
< Date: Tue, 16 May 2017 14:16:27 GMT
Date: Tue, 16 May 2017 14:16:27 GMT
< Content-Type: text/html;charset=iso-8859-1
Content-Type: text/html;charset=iso-8859-1
< Cache-Control: must-revalidate,no-cache,no-store
Cache-Control: must-revalidate,no-cache,no-store
< Content-Length: 236
Content-Length: 236
< Via: 1.1 vegur
Via: 1.1 vegur
<
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 403 Forbidden</title>
</head>
<body><h2>HTTP ERROR 403</h2>
<p>Problem accessing /bots. Reason:
<pre> Forbidden</pre></p>
</body>
</html>
* Connection #0 to host safe-reef-88300.herokuapp.com left intact
This is expectable as I don't have the token.
Can you verify that you have the correct token set in your yaml
Thanks
I had double checked that couple of times, I've had the right token the entire time. However I tried your request with the proper token and got an interesting stack trace:
2017-05-16T14:22:29.979186+00:00 app[web.1]: ERROR [2017-05-16 14:22:29,978] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: 1ca95714c56ec966
2017-05-16T14:22:29.979199+00:00 app[web.1]: ! java.lang.NullPointerException: null
2017-05-16T14:22:29.979200+00:00 app[web.1]: ! at com.wire.bots.echo.MessageHandler.onNewBot(MessageHandler.java:62)
2017-05-16T14:22:29.979202+00:00 app[web.1]: ! at com.wire.bots.sdk.server.resources.BotsResource.newBot(BotsResource.java:58)
2017-05-16T14:22:29.979203+00:00 app[web.1]: ! at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2017-05-16T14:22:29.979203+00:00 app[web.1]: ! at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2017-05-16T14:22:29.979204+00:00 app[web.1]: ! at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2017-05-16T14:22:29.979205+00:00 app[web.1]: ! at java.lang.reflect.Method.invoke(Method.java:498)
2017-05-16T14:22:29.979206+00:00 app[web.1]: ! at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
2017-05-16T14:22:29.979206+00:00 app[web.1]: ! at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
2017-05-16T14:22:29.979207+00:00 app[web.1]: ! at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
2017-05-16T14:22:29.979208+00:00 app[web.1]: ! at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)
2017-05-16T14:22:29.979209+00:00 app[web.1]: ! at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
2017-05-16T14:22:29.979210+00:00 app[web.1]: ! at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
2017-05-16T14:22:29.979210+00:00 app[web.1]: ! at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
2017-05-16T14:22:29.979211+00:00 app[web.1]: ! at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
2017-05-16T14:22:29.979211+00:00 app[web.1]: ! at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
2017-05-16T14:22:29.979212+00:00 app[web.1]: ! at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
2017-05-16T14:22:29.979212+00:00 app[web.1]: ! at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
2017-05-16T14:22:29.979213+00:00 app[web.1]: ! at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
2017-05-16T14:22:29.979213+00:00 app[web.1]: ! at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
2017-05-16T14:22:29.979213+00:00 app[web.1]: ! at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
2017-05-16T14:22:29.979214+00:00 app[web.1]: ! at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
2017-05-16T14:22:29.979214+00:00 app[web.1]: ! at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
2017-05-16T14:22:29.979215+00:00 app[web.1]: ! at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
2017-05-16T14:22:29.979215+00:00 app[web.1]: ! at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
2017-05-16T14:22:29.979216+00:00 app[web.1]: ! at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
2017-05-16T14:22:29.979216+00:00 app[web.1]: ! at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
2017-05-16T14:22:29.979216+00:00 app[web.1]: ! at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
2017-05-16T14:22:29.979217+00:00 app[web.1]: ! at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
2017-05-16T14:22:29.979217+00:00 app[web.1]: ! at io.dropwizard.jetty.NonblockingServletHolder.handle(NonblockingServletHolder.java:49)
2017-05-16T14:22:29.979217+00:00 app[web.1]: ! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)
2017-05-16T14:22:29.979218+00:00 app[web.1]: ! at io.dropwizard.servlets.ThreadNameFilter.doFilter(ThreadNameFilter.java:34)
2017-05-16T14:22:29.979218+00:00 app[web.1]: ! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
2017-05-16T14:22:29.979218+00:00 app[web.1]: ! at io.dropwizard.jersey.filter.AllowedMethodsFilter.handle(AllowedMethodsFilter.java:50)
2017-05-16T14:22:29.979219+00:00 app[web.1]: ! at io.dropwizard.jersey.filter.AllowedMethodsFilter.doFilter(AllowedMethodsFilter.java:44)
2017-05-16T14:22:29.979219+00:00 app[web.1]: ! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
2017-05-16T14:22:29.979219+00:00 app[web.1]: ! at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
2017-05-16T14:22:29.979220+00:00 app[web.1]: ! at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1174)
2017-05-16T14:22:29.979220+00:00 app[web.1]: ! at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
2017-05-16T14:22:29.979220+00:00 app[web.1]: ! at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1106)
2017-05-16T14:22:29.979221+00:00 app[web.1]: ! at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
2017-05-16T14:22:29.979221+00:00 app[web.1]: ! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
2017-05-16T14:22:29.979221+00:00 app[web.1]: ! at com.codahale.metrics.jetty9.InstrumentedHandler.handle(InstrumentedHandler.java:240)
2017-05-16T14:22:29.979222+00:00 app[web.1]: ! at io.dropwizard.jetty.RoutingHandler.handle(RoutingHandler.java:51)
2017-05-16T14:22:29.979225+00:00 app[web.1]: ! at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:396)
2017-05-16T14:22:29.979226+00:00 app[web.1]: ! at io.dropwizard.jetty.BiDiGzipHandler.handle(BiDiGzipHandler.java:68)
2017-05-16T14:22:29.979226+00:00 app[web.1]: ! at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)
2017-05-16T14:22:29.979226+00:00 app[web.1]: ! at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)
2017-05-16T14:22:29.979227+00:00 app[web.1]: ! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
2017-05-16T14:22:29.979227+00:00 app[web.1]: ! at org.eclipse.jetty.server.Server.handle(Server.java:524)
2017-05-16T14:22:29.979227+00:00 app[web.1]: ! at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
2017-05-16T14:22:29.979228+00:00 app[web.1]: ! at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
2017-05-16T14:22:29.979228+00:00 app[web.1]: ! at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
2017-05-16T14:22:29.979228+00:00 app[web.1]: ! at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
2017-05-16T14:22:29.979229+00:00 app[web.1]: ! at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
2017-05-16T14:22:29.979229+00:00 app[web.1]: ! at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
2017-05-16T14:22:29.979230+00:00 app[web.1]: ! at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
2017-05-16T14:22:29.979230+00:00 app[web.1]: ! at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
2017-05-16T14:22:29.979230+00:00 app[web.1]: ! at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
2017-05-16T14:22:29.979231+00:00 app[web.1]: ! at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
2017-05-16T14:22:29.979231+00:00 app[web.1]: ! at java.lang.Thread.run(Thread.java:745)
Line 62 of MessageHandler is here. I'm not confident enough to guess why that is occurring, but I'll try to investigate it some as well.
I also saw your requests, but those errors related to having the wrong auth token (as one would expect).
This error stack is expectable as you are passing an empty JSON. However Wire Backend is passing the full JSON and you should not see this error. I am puzzled why you don't see POST /bots from Wire BE when you add the bot into conv (or you click on the invite link: https://app.wire.com/?bot=testbridge). Every time you add the bot into conversation backend will call your webhook and you should see that in logs. I think we still have some issues with TLS there (heroku has it)
I'm not seeing anything in the logs when I use the invite link. And yeah Heroku seems to be the issue, I'll have to see if different configurations work better.
OK. I have checked the Wire BE logs now and I see: PinFingerprintMismatch This is most likely keystore.jks and pubkey.pem mismatch issue
Ok, I'll see if I can fix that. I must have deleted the pub key without deleting the keystore. Not sure when that would have happened.