This is an automated email from the ASF dual-hosted git repository.
dragos pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/incubator-openwhisk-devtools.git
The following commit(s) were added to refs/heads/master by this push:
new cddf846 Remote debug the invoker and controller in docker-compose
(#169)
cddf846 is described below
commit cddf846ed7a37fbcf93c2bad72ffc3eb3bc8a6c5
Author: Cosmin Stanciu <[email protected]>
AuthorDate: Wed Nov 28 18:16:37 2018 -0800
Remote debug the invoker and controller in docker-compose (#169)
* Remote debug the invoker and controller in docker-compose
* Documentation on how to set up IntelliJ for remote debugging
---
docker-compose/README.md | 23 +++++++++++++++++++++--
docker-compose/docker-compose.yml | 2 ++
docker-compose/docker-whisk-controller.env | 4 ++--
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/docker-compose/README.md b/docker-compose/README.md
index 22fafbe..3b07e05 100644
--- a/docker-compose/README.md
+++ b/docker-compose/README.md
@@ -22,8 +22,8 @@ These ports must be available:
- `6379` for Redis
- `2181` for Zookeeper
- `5984` for CouchDB
-- `8085` for OpenWhisk's Invoker
-- `8888` for OpenWhisk's Controller
+- `8085`, `9333` for OpenWhisk's Invoker
+- `8888`, `9222` for OpenWhisk's Controller
- `9092` for Kafka
- `8001` for Kafka Topics UI
@@ -199,6 +199,25 @@ wsk package list /whisk.system
- Feed provider instance logs - `~/tmp/openwhisk/<feed_name>provider`
- Action output such as stdout or console.log(): `wsk -i activation logs
<activationId>`
+## Debugging OpenWhisk Invoker and Controller
+Both invoker and controller can be remotely debugged using any preferred IDE
by setting these command line arguments for the remote JVM:
+
+```
+-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$port
+```
+These ports are available for debugging on `localhost`:
+- `9333` for the Invoker
+- `9222` for the Controller
+
+Using IntelliJ:
+
+Follow these steps to create a new `Run/Debug Configuration` for the
`Invoker`. Same can be done for the `Controller`:
+- Go to `Run` -> `Edit Configurations` -> `Add new Configuration` -> `Remote`
+- Change port to `9333` and leave the host as `localhost`
+- You can now debug the `Invoker` remotely by setting breakpoints inside the
code
+
+> Please be aware that changes done in the code are not automatically
deployed. In order to be able to debug new changes, you need to rebuild the
application and redeploy it with `docker-compose`.
+
## Custom Docker containers for actions
diff --git a/docker-compose/docker-compose.yml
b/docker-compose/docker-compose.yml
index 729bf25..b33226f 100644
--- a/docker-compose/docker-compose.yml
+++ b/docker-compose/docker-compose.yml
@@ -75,6 +75,7 @@ services:
ports:
- "8888:8888"
- "2551:2551"
+ - "9222:9222"
# WHISK INVOKER AGENT
invoker:
@@ -121,6 +122,7 @@ services:
- /sys/fs/cgroup:/sys/fs/cgroup
ports:
- "8085:8085"
+ - "9333:9222"
# The API Gateway is currently used to expose the Controller API
# see apigateway/conf/whisk-docker-compose.conf
diff --git a/docker-compose/docker-whisk-controller.env
b/docker-compose/docker-whisk-controller.env
index cccf79f..8d2b459 100644
--- a/docker-compose/docker-whisk-controller.env
+++ b/docker-compose/docker-whisk-controller.env
@@ -40,7 +40,7 @@ CONFIG_whisk_loadbalancer_invokerUserMemory=1024m
CONFIG_whisk_containerPool_userMemory=1024m
CONTROLLER_BLACKBOXFRACTION=0.10
-CONTROLLER_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1098
+CONTROLLER_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1098 -Xdebug
-Xrunjdwp:transport=dt_socket,address=9222,server=y,suspend=n
CONTROLLER_HA=False
CONTROLLER_INSTANCES=1
CONTROLLER_LOCALBOOKKEEPING=true
@@ -53,7 +53,7 @@ LOADBALANCER_ACTIVATIONCOUNTBEFORENEXTINVOKER=10
LOADBALANCER_USERMEMORY=1024m
CONFIG_whisk_docker_containerFactory_useRunc=False
-INVOKER_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1098
+INVOKER_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1098 -Xdebug
-Xrunjdwp:transport=dt_socket,address=9222,server=y,suspend=n
INVOKER_INSTANCES=1
AKKA_CLUSTER_HOST=localhost