{"action":"closed","issue":{"url":"https://api.github.com/repos/crossbario/crossbar/issues/416","labels_url":"https://api.github.com/repos/crossbario/crossbar/issues/416/labels{/name}","comments_url":"https://api.github.com/repos/crossbario/crossbar/issues/416/comments","events_url":"https://api.github.com/repos/crossbario/crossbar/issues/416/events","html_url":"https://github.com/crossbario/crossbar/issues/416","id":103641063,"number":416,"title":"DirWatcher unavailable causes python3 guest to fail?","user":{"login":"singlecheeze","id":12156213,"avatar_url":"https://avatars.githubusercontent.com/u/12156213?v=3","gravatar_id":"","url":"https://api.github.com/users/singlecheeze","html_url":"https://github.com/singlecheeze","followers_url":"https://api.github.com/users/singlecheeze/followers","following_url":"https://api.github.com/users/singlecheeze/following{/other_user}","gists_url":"https://api.github.com/users/singlecheeze/gists{/gist_id}","starred_url":"https://api.github.com/users/singlecheeze/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/singlecheeze/subscriptions","organizations_url":"https://api.github.com/users/singlecheeze/orgs","repos_url":"https://api.github.com/users/singlecheeze/repos","events_url":"https://api.github.com/users/singlecheeze/events{/privacy}","received_events_url":"https://api.github.com/users/singlecheeze/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-08-28T03:38:55Z","updated_at":"2015-08-28T06:18:45Z","closed_at":"2015-08-28T06:18:45Z","body":"Just making a guess here but I installed crossbar on a brand new Ubuntu 14.04.3 server today and cannot run a project that was running fine on 10.4 under python2 with python3 guest workers.\r\n\r\nI am getting:\r\n``` text\r\nfeature DirWatcher unavailable\r\n```\r\nOn the python3 guest workers and after this happens I'm hypothesizing this is making crossbar try to load the python3 files with python2... like it is not honoring the:\r\n``` text\r\nUsing guest worker executable '/usr/bin/python3' (executable path detected from environment)\r\n``` \r\n\r\nCrossbar version:\r\n``` bash\r\n     __  __  __  __  __  __      __     __\r\n    /  `|__)/  \\/__`/__`|__) /\\ |__)  |/  \\\r\n    \\__,|  \\\\__/.__/.__/|__)/~~\\|  \\. |\\__/\r\n                                        \r\n Crossbar.io        : 0.11.0\r\n   Autobahn         : 0.10.5.post2\r\n     UTF8 Validator : wsaccel-0.6.2\r\n     XOR Masker     : wsaccel-0.6.2\r\n     JSON Codec     : stdlib\r\n     MsgPack Codec  : -\r\n   Twisted          : 15.3.0-EPollReactor\r\n   Python           : 2.7.6/CPython\r\n OS                 : Linux-3.19.0-26-generic-x86_64-with-Ubuntu-14.04-trusty\r\n Machine            : x86_64\r\n```\r\n``` json\r\n{\r\n   \"controller\": {\r\n   },\r\n   \"workers\": [\r\n      {\r\n         \"id\": \"wamprouter\",\r\n         \"type\": \"router\",\r\n         \"options\": {\r\n            \"title\": \"WAMP Router\"\r\n         },\r\n         \"realms\": [\r\n            {\r\n               \"name\": \"realm1\",\r\n               \"roles\": [\r\n                  {\r\n                     \"name\": \"authenticator\",\r\n                     \"permissions\": [\r\n                        {\r\n                           \"uri\": \"com.aurora.authenticate\",\r\n                           \"register\": true\r\n                        }\r\n                     ]\r\n                  },\r\n                  {\r\n                     \"name\": \"authorizer\",\r\n                     \"permissions\": [\r\n                        {\r\n                           \"uri\": \"com.aurora.authorize\",\r\n                           \"register\": true\r\n                        }\r\n                     ]\r\n                  },\r\n                  {\r\n                     \"name\": \"backend\",\r\n                     \"authorizer\": \"com.aurora.authorize\"\r\n                  },\r\n                  {\r\n                     \"name\": \"frontend\",\r\n                     \"authorizer\": \"com.aurora.authorize\"\r\n                  }\r\n               ]\r\n            }\r\n         ],\r\n         \"transports\": [\r\n            {\r\n               \"id\": \"loopback\",\r\n               \"type\": \"websocket\",\r\n               \"endpoint\": {\r\n                  \"type\": \"tcp\",\r\n                  \"port\": 9090,\r\n                  \"interface\": \"127.0.0.1\"\r\n               },\r\n               \"auth\": {\r\n                  \"wampcra\": {\r\n                     \"type\": \"static\",\r\n                     \"users\": {\r\n                        \"authenUser\": {\r\n                           \"secret\": \"prq7+YkJ1/KlW1X0YczMHw==\",\r\n                           \"role\": \"authenticator\",\r\n                           \"salt\": \"salt123\",\r\n                           \"iterations\": 100,\r\n                           \"keylen\": 16\r\n                        }\r\n                     }\r\n                  }\r\n               },\r\n               \"debug\": false,\r\n               \"options\": {\r\n                  \"compression\": {\r\n                     \"deflate\": {\r\n                        \"request_no_context_takeover\": false,\r\n                        \"request_max_window_bits\": 11,\r\n                        \"no_context_takeover\": false,\r\n                        \"max_window_bits\": 11,\r\n                        \"memory_level\": 4\r\n                     }\r\n                  },\r\n                  \"auto_ping_interval\": 10000,\r\n                  \"auto_ping_timeout\": 5000,\r\n                  \"auto_ping_size\": 4\r\n               }\r\n            },\r\n            {\r\n               \"id\": \"web\",\r\n               \"type\": \"web\",\r\n               \"endpoint\": {\r\n                  \"type\": \"tcp\",\r\n                  \"port\": 8081\r\n               },\r\n               \"paths\": {\r\n                  \"/\": {\r\n                     \"type\": \"static\",\r\n                     \"directory\": \"../frontend\"\r\n                  },\r\n                  \"ws\": {\r\n                     \"type\": \"websocket\",\r\n                     \"url\": \"ws://localhost:8080/ws\",\r\n                     \"auth\": {\r\n                        \"wampcra\": {\r\n                           \"type\": \"dynamic\",\r\n                           \"authenticator\": \"com.aurora.authenticate\"\r\n                        }\r\n                     },\r\n                     \"debug\": false,\r\n                     \"options\": {\r\n                        \"compression\": {\r\n                           \"deflate\": {\r\n                              \"request_no_context_takeover\": false,\r\n                              \"request_max_window_bits\": 11,\r\n                              \"no_context_takeover\": false,\r\n                              \"max_window_bits\": 11,\r\n                              \"memory_level\": 4\r\n                           }\r\n                        },\r\n                        \"auto_ping_interval\": 10000,\r\n                        \"auto_ping_timeout\": 5000,\r\n                        \"auto_ping_size\": 4\r\n                     }\r\n                  }\r\n               }\r\n            }\r\n         ]\r\n      },\r\n      {\r\n         \"id\": \"authenticator\",\r\n         \"type\": \"guest\",\r\n         \"executable\": \"python3\",\r\n         \"arguments\": [\"authentication.py\"],\r\n         \"options\": {\r\n           \"env\": {\r\n               \"vars\": {\r\n                  \"PYTHONUNBUFFERED\": \"1\"\r\n               }\r\n            },\r\n            \"workdir\": \"../backend\",\r\n            \"stdout\": \"log\",\r\n            \"stderr\": \"log\",\r\n            \"watch\": {\r\n               \"directories\": [\"../backend\"],\r\n               \"action\": \"restart\"\r\n            }\r\n         }\r\n      },\r\n      {\r\n         \"id\": \"authorizer\",\r\n         \"type\": \"guest\",\r\n         \"executable\": \"python3\",\r\n         \"arguments\": [\"authorization.py\"],\r\n         \"options\": {\r\n            \"env\": {\r\n               \"vars\": {\r\n                  \"PYTHONUNBUFFERED\": \"1\"\r\n               }\r\n            },\r\n            \"workdir\": \"../backend\",\r\n            \"stdout\": \"log\",\r\n            \"stderr\": \"log\",\r\n            \"watch\": {\r\n               \"directories\": [\"../backend\"],\r\n               \"action\": \"restart\"\r\n            }\r\n         }\r\n      },\r\n      {\r\n         \"id\": \"backend\",\r\n         \"type\": \"guest\",\r\n         \"executable\": \"python3\",\r\n         \"arguments\": [\"backend.py\"],\r\n         \"options\": {\r\n            \"env\": {\r\n               \"vars\": {\r\n                  \"PYTHONUNBUFFERED\": \"1\"\r\n               }\r\n            },\r\n            \"workdir\": \"../backend\",\r\n            \"stdout\": \"log\",\r\n            \"stderr\": \"log\",\r\n            \"watch\": {\r\n               \"directories\": [\"../backend\"],\r\n               \"action\": \"restart\"\r\n            }\r\n         }\r\n      }\r\n   ]\r\n}\r\n```\r\n\r\nOutput:\r\n``` bash\r\n2015-08-27T23:32:10-0400 [Controller  11575]      __  __  __  __  __  __      __     __\r\n2015-08-27T23:32:10-0400 [Controller  11575]     /  `|__)/  \\/__`/__`|__) /\\ |__)  |/  \\\r\n2015-08-27T23:32:10-0400 [Controller  11575]     \\__,|  \\\\__/.__/.__/|__)/~~\\|  \\. |\\__/\r\n2015-08-27T23:32:10-0400 [Controller  11575]                                         \r\n2015-08-27T23:32:10-0400 [Controller  11575]     Version: 0.11.0     \r\n2015-08-27T23:32:10-0400 [Controller  11575]     Started: 2015-08-28T03:32:10.550Z\r\n2015-08-27T23:32:10-0400 [Controller  11575] \r\n2015-08-27T23:32:10-0400 [Controller  11575] Starting from node directory /home/dave/xbar/.crossbar\r\n2015-08-27T23:32:10-0400 [Controller  11575] Loading node configuration file '/home/dave/xbar/.crossbar/config.json'\r\n2015-08-27T23:32:10-0400 [Controller  11575] Entering reactor event loop...\r\n2015-08-27T23:32:10-0400 [Controller  11575] Process utilities not available\r\n2015-08-27T23:32:10-0400 [Controller  11575] Joined realm 'crossbar' on node management router\r\n2015-08-27T23:32:10-0400 [Controller  11575] No WAMPlets detected in enviroment.\r\n2015-08-27T23:32:10-0400 [Controller  11575] Starting Router with ID 'wamprouter'...\r\n2015-08-27T23:32:10-0400 [Router      11580] Running under CPython using EPollReactor reactor\r\n2015-08-27T23:32:11-0400 [Router      11580] Entering event loop...\r\n2015-08-27T23:32:11-0400 [Router      11580] Process utilities not available\r\n2015-08-27T23:32:11-0400 [Controller  11575] Router with ID 'wamprouter' and PID 11580 started\r\n2015-08-27T23:32:11-0400 [Router      11580] Worker ready to roll!\r\n2015-08-27T23:32:11-0400 [Controller  11575] Router 'wamprouter': realm 'realm1' (named 'realm1') started\r\n2015-08-27T23:32:11-0400 [Controller  11575] Router 'wamprouter': role 'role1' (named 'authenticator') started on realm 'realm1'\r\n2015-08-27T23:32:11-0400 [Controller  11575] Router 'wamprouter': role 'role2' (named 'authorizer') started on realm 'realm1'\r\n2015-08-27T23:32:11-0400 [Controller  11575] Router 'wamprouter': role 'role3' (named 'backend') started on realm 'realm1'\r\n2015-08-27T23:32:11-0400 [Controller  11575] Router 'wamprouter': role 'role4' (named 'frontend') started on realm 'realm1'\r\n2015-08-27T23:32:11-0400 [Router      11580] WampWebSocketServerFactory starting on 9090\r\n2015-08-27T23:32:11-0400 [Controller  11575] Router 'wamprouter': transport 'loopback' started\r\n2015-08-27T23:32:11-0400 [Router      11580] Site starting on 8081\r\n2015-08-27T23:32:11-0400 [Controller  11575] Router 'wamprouter': transport 'web' started\r\n2015-08-27T23:32:11-0400 [Controller  11575] Using guest worker executable '/usr/bin/python3' (executable path detected from environment)\r\n2015-08-27T23:32:11-0400 [Controller  11575] Starting Guest with ID 'authenticator'...\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest with ID 'authenticator' and PID 11585 started\r\n2015-08-27T23:32:11-0400 [Controller  11575] Warning: cannot watch directory for changes - feature DirWatcher unavailable\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest 'authenticator': started\r\n2015-08-27T23:32:11-0400 [Controller  11575] Using guest worker executable '/usr/bin/python3' (executable path detected from environment)\r\n2015-08-27T23:32:11-0400 [Controller  11575] Starting Guest with ID 'authorizer'...\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest with ID 'authorizer' and PID 11586 started\r\n2015-08-27T23:32:11-0400 [Controller  11575] Warning: cannot watch directory for changes - feature DirWatcher unavailable\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest 'authorizer': started\r\n2015-08-27T23:32:11-0400 [Controller  11575] Using guest worker executable '/usr/bin/python3' (executable path detected from environment)\r\n2015-08-27T23:32:11-0400 [Controller  11575] Starting Guest with ID 'backend'...\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest with ID 'backend' and PID 11587 started\r\n2015-08-27T23:32:11-0400 [Controller  11575] Warning: cannot watch directory for changes - feature DirWatcher unavailable\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest 'backend': started\r\n2015-08-27T23:32:11-0400 [Guest       11585] Fatal Python error: Py_Initialize: Unable to get the locale encoding\r\n2015-08-27T23:32:11-0400 [Guest       11585] File \"/usr/lib/python2.7/encodings/__init__.py\", line 123\r\n2015-08-27T23:32:11-0400 [Guest       11585] raise CodecRegistryError,\\\r\n2015-08-27T23:32:11-0400 [Guest       11585] ^\r\n2015-08-27T23:32:11-0400 [Guest       11585] SyntaxError: invalid syntax\r\n2015-08-27T23:32:11-0400 [Guest       11586] Fatal Python error: Py_Initialize: Unable to get the locale encoding\r\n2015-08-27T23:32:11-0400 [Guest       11586] File \"/usr/lib/python2.7/encodings/__init__.py\", line 123\r\n2015-08-27T23:32:11-0400 [Guest       11586] raise CodecRegistryError,\\\r\n2015-08-27T23:32:11-0400 [Guest       11586] ^\r\n2015-08-27T23:32:11-0400 [Guest       11586] SyntaxError: invalid syntax\r\n2015-08-27T23:32:11-0400 [Guest       11587] Fatal Python error: Py_Initialize: Unable to get the locale encoding\r\n2015-08-27T23:32:11-0400 [Guest       11587] File \"/usr/lib/python2.7/encodings/__init__.py\", line 123\r\n2015-08-27T23:32:11-0400 [Guest       11587] raise CodecRegistryError,\\\r\n2015-08-27T23:32:11-0400 [Guest       11587] ^\r\n2015-08-27T23:32:11-0400 [Guest       11587] SyntaxError: invalid syntax\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest authenticator exited with error A process has ended with a probable error condition: process ended by signal 6.\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest authorizer exited with error A process has ended with a probable error condition: process ended by signal 6.\r\n2015-08-27T23:32:11-0400 [Controller  11575] Guest backend exited with error A process has ended with a probable error condition: process ended by signal 6.\r\n^C2015-08-27T23:37:02-0400 [Controller  11575] Received SIGINT, shutting down.\r\n2015-08-27T23:37:02-0400 [Controller  11575] sending TERM to subprocess 11580\r\n2015-08-27T23:37:02-0400 [Controller  11575] waiting for 11580 to exit...\r\n2015-08-27T23:37:02-0400 [Controller  11575] sending TERM to subprocess 11585\r\n2015-08-27T23:37:02-0400 [Controller  11575] sending TERM to subprocess 11586\r\n2015-08-27T23:37:02-0400 [Controller  11575] sending TERM to subprocess 11587\r\n2015-08-27T23:37:02-0400 [Router      11580] Received SIGTERM, shutting down.\r\n2015-08-27T23:37:02-0400 [Router      11580] Connection to node controller lost.\r\n2015-08-27T23:37:02-0400 [Router      11580] (TCP Port 8081 Closed)\r\n2015-08-27T23:37:02-0400 [Router      11580] (TCP Port 9090 Closed)\r\n2015-08-27T23:37:02-0400 [Router      11580] Main loop terminated.\r\n2015-08-27T23:37:02-0400 [Controller  11575] Main loop terminated.\r\n\r\n```"}}