Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

graphiql: subscriptions broken #328

Closed
oliver-sanders opened this issue Mar 7, 2022 · 27 comments · Fixed by cylc/cylc-ui#1000
Closed

graphiql: subscriptions broken #328

oliver-sanders opened this issue Mar 7, 2022 · 27 comments · Fixed by cylc/cylc-ui#1000
Assignees
Labels
bug Something isn't working
Milestone

Comments

@oliver-sanders
Copy link
Member

GraphiQL no longer works with subscriptions, not sure why.

Pull requests welcome!
This is an Open Source project - please consider contributing a bug fix
yourself (please read CONTRIBUTING.md before starting any work though).

@dwsutherland
Copy link
Member

Works for me, a bug with the delta filtering prevented non-state deltas from getting through..
addressed here:
cylc/cylc-flow#4791

@dwsutherland dwsutherland self-assigned this Mar 31, 2022
@hjoliver
Copy link
Member

It works for me too, I was using it just yesterday. We should compare notes in the meeting today...

@oliver-sanders
Copy link
Member Author

It just hangs for me:

Screenshot from 2022-03-31 10-15-12

@dwsutherland
Copy link
Member

Works for me:
node-filters

Will unhook from cylc/cylc-flow#4791 though, as it appears not to be the same thing after your comment.

@dwsutherland
Copy link
Member

dwsutherland commented Apr 1, 2022

Can get the same one working too:
image

the workflow has to play tho (send deltas)

@dwsutherland
Copy link
Member

dwsutherland commented Apr 1, 2022

the initial burst isn't really working for:

subscription {
  workflows (deltaType: "added", deltaStore: false, initialBurst: true) {
    id
  }
}

but is for other entry point(s)

@oliver-sanders
Copy link
Member Author

GraphiQL hangs indefinitely for me on Linux & Mac OS, both using full Cylc-stack setups running under Python 3.7 both on master and with cylc/cylc-flow#4791.

"Your subscription data will appear here after server publication!"

@hjoliver
Copy link
Member

hjoliver commented Apr 4, 2022

I just rebuilt my environments from scratch: cylc-ui, cylc-flow, cylc-uiserver, all on master. GraphiQL works fine. I used this subscription to test:

subscription {
  deltas(workflows: ["~oliverh/ft/run1"], stripNull: true) {
    id
    added {
      taskProxies {
        id
      }
    }
    updated {
      taskProxies {
        id
      }
    }
  }
}

I am using Python 3.9. I'll try 3.7 in case that's it...

@hjoliver
Copy link
Member

hjoliver commented Apr 4, 2022

Nope, works fine at 3.7 too. I guess if there was any other diagnostic info available you'd already have given it.

@oliver-sanders
Copy link
Member Author

Tested with 8.0rc2 installs & Python 3.7/3.9 on Mac OS broken for both cases:

Setup

Workflows:

$ tree ~/cylc-run
/Users/oliver/cylc-run
└── one
    └── suite.rc

Subscription:

subscription {
  workflows {
    id
  }
}

(Ensured the one workflow appeared in GScan before proceeding to GraphiQL)

Python 3.7

Create:

$ mamba install cylc-flow=8.0rc2 cylc-uiserver python=3.7

Export:

Full Env
name: cylc-8.0rc2-37
channels:
  - conda-forge
dependencies:
  - aiofiles=0.7.0=pyhd8ed1ab_0
  - alembic=1.7.7=pyhd8ed1ab_0
  - aniso8601=7.0.0=py_0
  - ansimarkup=1.5.0=pyh44b312d_0
  - anyio=3.5.0=py37hf985489_0
  - argon2-cffi=21.3.0=pyhd8ed1ab_0
  - argon2-cffi-bindings=21.2.0=py37h271585c_1
  - async-timeout=4.0.2=pyhd8ed1ab_0
  - async_generator=1.10=py_0
  - atk-1.0=2.36.0=he69c4ee_4
  - attrs=21.4.0=pyhd8ed1ab_0
  - beautifulsoup4=4.10.0=pyha770c72_0
  - bleach=4.1.0=pyhd8ed1ab_0
  - blinker=1.4=py_1
  - brotli=1.0.9=h5eb16cf_7
  - brotli-bin=1.0.9=h5eb16cf_7
  - brotlipy=0.7.0=py37h69ee0a8_1004
  - c-ares=1.18.1=h0d85af4_0
  - ca-certificates=2021.10.8=h033912b_0
  - cairo=1.16.0=h1680b09_1011
  - certifi=2021.10.8=py37hf985489_2
  - certipy=0.1.3=py_0
  - cffi=1.15.0=py37h446072c_0
  - charset-normalizer=2.0.12=pyhd8ed1ab_0
  - colorama=0.4.4=pyh9f0ad1d_0
  - configurable-http-proxy=4.5.1=node17_hda8ccec_1
  - cryptography=36.0.2=py37h20b3391_1
  - cycler=0.11.0=pyhd8ed1ab_0
  - cylc-flow=8.0rc2=pyhaef67bd_0
  - cylc-flow-base=8.0rc2=pyhd8ed1ab_0
  - cylc-uiserver=1.0.1=pyhd8ed1ab_3
  - cylc-uiserver-base=1.0.1=pyhd8ed1ab_3
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - empy=3.3.4=pyh9f0ad1d_1
  - entrypoints=0.4=pyhd8ed1ab_0
  - expat=2.4.8=h96cf925_0
  - flit-core=3.7.1=pyhd8ed1ab_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=hab24e00_0
  - fontconfig=2.13.96=h676cef8_2
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.31.2=py37h69ee0a8_0
  - freetype=2.10.4=h4cff582_1
  - fribidi=1.0.10=hbcb3906_0
  - gdk-pixbuf=2.42.8=hb161b9c_0
  - gettext=0.19.8.1=hd1a6beb_1008
  - giflib=5.2.1=hbcb3906_2
  - graphene=2.1.9=pyhd8ed1ab_0
  - graphene-tornado=2.6.1=py_0
  - graphite2=1.3.13=h12caacf_1001
  - graphql-core=2.3.2=pyh9f0ad1d_0
  - graphql-relay=2.0.1=py_0
  - graphql-ws=0.4.4=pyhd8ed1ab_0
  - graphviz=3.0.0=h6f567cf_1
  - greenlet=1.1.2=py37h0582d14_2
  - gtk2=2.24.33=h7c1209e_2
  - gts=0.7.6=hccb3bdf_2
  - harfbuzz=4.2.0=hd338e84_1
  - icu=70.1=h96cf925_0
  - idna=3.3=pyhd8ed1ab_0
  - importlib-metadata=4.11.3=py37hf985489_1
  - importlib_resources=5.6.0=pyhd8ed1ab_0
  - jbig=2.1=h0d85af4_2003
  - jinja2=2.11.0=py_0
  - jpeg=9e=h0d85af4_0
  - jsonschema=4.4.0=pyhd8ed1ab_0
  - jupyter_client=7.2.1=pyhd8ed1ab_0
  - jupyter_core=4.9.2=py37hf985489_0
  - jupyter_server=1.16.0=pyhd8ed1ab_1
  - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
  - jupyterhub=2.2.2=hd8ed1ab_0
  - jupyterhub-base=2.2.2=pyhd8ed1ab_0
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - kiwisolver=1.4.2=py37h18621fa_1
  - krb5=1.19.3=hb49756b_0
  - lcms2=2.12=h577c468_0
  - lerc=3.0=he49afe7_0
  - libblas=3.9.0=13_osx64_openblas
  - libbrotlicommon=1.0.9=h5eb16cf_7
  - libbrotlidec=1.0.9=h5eb16cf_7
  - libbrotlienc=1.0.9=h5eb16cf_7
  - libcblas=3.9.0=13_osx64_openblas
  - libcurl=7.82.0=h9f20792_0
  - libcxx=13.0.1=hc203e6f_0
  - libdeflate=1.10=h0d85af4_0
  - libedit=3.1.20191231=hed1e85f_2
  - libev=4.33=haf1e3a3_1
  - libffi=3.4.2=h0d85af4_5
  - libgd=2.3.3=h1e214de_3
  - libgfortran=5.0.0=9_3_0_h6c81a4c_23
  - libgfortran5=9.3.0=h6c81a4c_23
  - libglib=2.70.2=hf1fb8c0_4
  - libiconv=1.16=haf1e3a3_0
  - liblapack=3.9.0=13_osx64_openblas
  - libnghttp2=1.47.0=h942079c_0
  - libopenblas=0.3.18=openmp_h3351f45_0
  - libpng=1.6.37=hb0a8c7a_2
  - libprotobuf=3.19.4=hcf210ce_0
  - librsvg=2.52.5=h5e5d7d9_2
  - libsodium=1.0.18=hbcb3906_1
  - libssh2=1.10.0=h52ee1ee_2
  - libtiff=4.3.0=h17f2ce3_3
  - libtool=2.4.6=he49afe7_1008
  - libuv=1.43.0=h0d85af4_0
  - libwebp=1.2.2=h28dabe5_0
  - libwebp-base=1.2.2=h0d85af4_1
  - libxcb=1.13=h0d85af4_1004
  - libxml2=2.9.12=he03b247_2
  - libzlib=1.2.11=h6c3fc93_1014
  - llvm-openmp=13.0.1=hcb1a161_1
  - lz4-c=1.9.3=he49afe7_1
  - mako=1.2.0=pyhd8ed1ab_0
  - markupsafe=2.0.1=py37h271585c_1
  - matplotlib-base=3.5.1=py37h3147e9e_0
  - metomi-isodatetime=1!2.0.2=py_0
  - mistune=0.8.4=py37h271585c_1005
  - munkres=1.1.4=pyh9f0ad1d_0
  - nbclient=0.5.13=pyhd8ed1ab_0
  - nbconvert-core=6.4.5=pyhd8ed1ab_2
  - nbformat=5.2.0=pyhd8ed1ab_0
  - ncurses=6.3=he49afe7_0
  - nest-asyncio=1.5.5=pyhd8ed1ab_0
  - nodejs=17.8.0=h3cde592_1
  - numpy=1.21.5=py37h3c8089f_0
  - oauthlib=3.2.0=pyhd8ed1ab_0
  - openjpeg=2.4.0=h6e7aa92_1
  - openssl=1.1.1n=h6c3fc93_0
  - packaging=21.3=pyhd8ed1ab_0
  - pamela=1.0.0=py_0
  - pandas=1.3.5=py37h5b83a90_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - pango=1.50.6=hc4a7b6d_0
  - pcre=8.45=he49afe7_0
  - pillow=9.1.0=py37h2540ef4_0
  - pip=22.0.4=pyhd8ed1ab_0
  - pixman=0.40.0=hbcb3906_0
  - prometheus_client=0.13.1=pyhd8ed1ab_0
  - promise=2.3=py37hf985489_5
  - protobuf=3.19.4=py37hd8d24ac_0
  - psutil=5.9.0=py37h69ee0a8_1
  - pthread-stubs=0.4=hc929b4f_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - pycparser=2.21=pyhd8ed1ab_0
  - pycurl=7.45.1=py37h5ca58c0_0
  - pygments=2.11.2=pyhd8ed1ab_0
  - pyjwt=2.3.0=pyhd8ed1ab_1
  - pyopenssl=22.0.0=pyhd8ed1ab_0
  - pyparsing=3.0.7=pyhd8ed1ab_0
  - pyrsistent=0.18.1=py37h69ee0a8_1
  - pysocks=1.7.1=py37hf985489_5
  - python=3.7.12=haf480d7_100_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-json-logger=2.0.1=pyh9f0ad1d_0
  - python_abi=3.7=2_cp37m
  - pytz=2022.1=pyhd8ed1ab_0
  - pyuv=1.4.0=py37h271585c_1003
  - pyzmq=22.3.0=py37h8f778e5_1
  - readline=8.1=h05e3726_0
  - requests=2.27.1=pyhd8ed1ab_0
  - ruamel.yaml=0.17.21=py37h69ee0a8_1
  - ruamel.yaml.clib=0.2.6=py37h69ee0a8_1
  - rx=1.6.1=py_0
  - send2trash=1.8.0=pyhd8ed1ab_0
  - setuptools=59.8.0=py37hf985489_1
  - six=1.16.0=pyh6c4a22f_0
  - sniffio=1.2.0=py37hf985489_3
  - soupsieve=2.3.1=pyhd8ed1ab_0
  - sqlalchemy=1.4.34=py37h69ee0a8_0
  - sqlite=3.37.1=hb516253_0
  - terminado=0.13.3=py37hf985489_0
  - testpath=0.6.0=pyhd8ed1ab_0
  - tk=8.6.12=h5dbffcc_0
  - tornado=6.1=py37h69ee0a8_3
  - traitlets=5.1.1=pyhd8ed1ab_0
  - typing-extensions=4.1.1=hd8ed1ab_0
  - typing_extensions=4.1.1=pyha770c72_0
  - unicodedata2=14.0.0=py37h271585c_0
  - urllib3=1.26.9=pyhd8ed1ab_0
  - urwid=2.1.2=py37h271585c_5
  - webencodings=0.5.1=py_1
  - websocket-client=1.3.2=pyhd8ed1ab_0
  - werkzeug=0.12.2=py_1
  - wheel=0.37.1=pyhd8ed1ab_0
  - xorg-libxau=1.0.9=h35c211d_0
  - xorg-libxdmcp=1.1.3=h35c211d_0
  - xz=5.2.5=haf1e3a3_1
  - zeromq=4.3.4=he49afe7_1
  - zipp=3.8.0=pyhd8ed1ab_0
  - zlib=1.2.11=h6c3fc93_1014
  - zstd=1.5.2=h582d3a0_0
prefix: /Users/oliver/mambaforge/envs/cylc-8.0rc2-37

Possible associated traceback:

Error: Stream is closed Traceback (most recent call last):
      File "/Users/oliver/mambaforge/envs/cylc-8.0rc2-37/lib/python3.7/site-packages/graphene_tornado/tornado_graphql_handler.py", line 115, in post
        await self.run('post')
      File "/Users/oliver/mambaforge/envs/cylc-8.0rc2-37/lib/python3.7/site-packages/cylc/uiserver/handlers.py", line 353, in run
        await TornadoGraphQLHandler.run(self, *args, **kwargs)
      File "/Users/oliver/mambaforge/envs/cylc-8.0rc2-37/lib/python3.7/site-packages/graphene_tornado/tornado_graphql_handler.py", line 153, in run
        await self.finish()
    tornado.iostream.StreamClosedError: Stream is closed

Python 3.9

Create:

$ mamba install cylc-flow=8.0rc2 cylc-uiserver python=3.9

Export:

Full Env
name: cylc-8.0rc2-39
channels:
  - conda-forge
dependencies:
  - aiofiles=0.7.0=pyhd8ed1ab_0
  - alembic=1.7.7=pyhd8ed1ab_0
  - aniso8601=7.0.0=py_0
  - ansimarkup=1.5.0=pyh44b312d_0
  - anyio=3.5.0=py39h6e9494a_0
  - argon2-cffi=21.3.0=pyhd8ed1ab_0
  - argon2-cffi-bindings=21.2.0=py39h89e85a6_1
  - async-timeout=4.0.2=pyhd8ed1ab_0
  - async_generator=1.10=py_0
  - atk-1.0=2.36.0=he69c4ee_4
  - attrs=21.4.0=pyhd8ed1ab_0
  - beautifulsoup4=4.10.0=pyha770c72_0
  - bleach=4.1.0=pyhd8ed1ab_0
  - blinker=1.4=py_1
  - brotli=1.0.9=h5eb16cf_7
  - brotli-bin=1.0.9=h5eb16cf_7
  - brotlipy=0.7.0=py39h63b48b0_1004
  - bzip2=1.0.8=hc929b4f_4
  - c-ares=1.18.1=h0d85af4_0
  - ca-certificates=2021.10.8=h033912b_0
  - cairo=1.16.0=h1680b09_1011
  - certifi=2021.10.8=py39h6e9494a_2
  - certipy=0.1.3=py_0
  - cffi=1.15.0=py39he338e87_0
  - charset-normalizer=2.0.12=pyhd8ed1ab_0
  - colorama=0.4.4=pyh9f0ad1d_0
  - configurable-http-proxy=4.5.1=node17_hda8ccec_1
  - cryptography=36.0.2=py39h1644bb1_1
  - cycler=0.11.0=pyhd8ed1ab_0
  - cylc-flow=8.0rc2=pyhaef67bd_0
  - cylc-flow-base=8.0rc2=pyhd8ed1ab_0
  - cylc-uiserver=1.0.1=pyhd8ed1ab_3
  - cylc-uiserver-base=1.0.1=pyhd8ed1ab_3
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - empy=3.3.4=pyh9f0ad1d_1
  - entrypoints=0.4=pyhd8ed1ab_0
  - expat=2.4.8=h96cf925_0
  - flit-core=3.7.1=pyhd8ed1ab_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=hab24e00_0
  - fontconfig=2.13.96=h676cef8_2
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.31.2=py39h63b48b0_0
  - freetype=2.10.4=h4cff582_1
  - fribidi=1.0.10=hbcb3906_0
  - gdk-pixbuf=2.42.8=hb161b9c_0
  - gettext=0.19.8.1=hd1a6beb_1008
  - giflib=5.2.1=hbcb3906_2
  - graphene=2.1.9=pyhd8ed1ab_0
  - graphene-tornado=2.6.1=py_0
  - graphite2=1.3.13=h12caacf_1001
  - graphql-core=2.3.2=pyh9f0ad1d_0
  - graphql-relay=2.0.1=py_0
  - graphql-ws=0.4.4=pyhd8ed1ab_0
  - graphviz=3.0.0=h6f567cf_1
  - greenlet=1.1.2=py39hfd1d529_2
  - gtk2=2.24.33=h7c1209e_2
  - gts=0.7.6=hccb3bdf_2
  - harfbuzz=4.2.0=hd338e84_1
  - icu=70.1=h96cf925_0
  - idna=3.3=pyhd8ed1ab_0
  - importlib-metadata=4.11.3=py39h6e9494a_1
  - importlib_resources=5.6.0=pyhd8ed1ab_0
  - jbig=2.1=h0d85af4_2003
  - jinja2=2.11.0=py_0
  - jpeg=9e=h0d85af4_0
  - jsonschema=4.4.0=pyhd8ed1ab_0
  - jupyter_client=7.2.1=pyhd8ed1ab_0
  - jupyter_core=4.9.2=py39h6e9494a_0
  - jupyter_server=1.16.0=pyhd8ed1ab_1
  - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
  - jupyterhub=2.2.2=hd8ed1ab_0
  - jupyterhub-base=2.2.2=pyhd8ed1ab_0
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - kiwisolver=1.4.2=py39h7248d28_1
  - krb5=1.19.3=hb49756b_0
  - lcms2=2.12=h577c468_0
  - lerc=3.0=he49afe7_0
  - libblas=3.9.0=13_osx64_openblas
  - libbrotlicommon=1.0.9=h5eb16cf_7
  - libbrotlidec=1.0.9=h5eb16cf_7
  - libbrotlienc=1.0.9=h5eb16cf_7
  - libcblas=3.9.0=13_osx64_openblas
  - libcurl=7.82.0=h9f20792_0
  - libcxx=13.0.1=hc203e6f_0
  - libdeflate=1.10=h0d85af4_0
  - libedit=3.1.20191231=hed1e85f_2
  - libev=4.33=haf1e3a3_1
  - libffi=3.4.2=h0d85af4_5
  - libgd=2.3.3=h1e214de_3
  - libgfortran=5.0.0=9_3_0_h6c81a4c_23
  - libgfortran5=9.3.0=h6c81a4c_23
  - libglib=2.70.2=hf1fb8c0_4
  - libiconv=1.16=haf1e3a3_0
  - liblapack=3.9.0=13_osx64_openblas
  - libnghttp2=1.47.0=h942079c_0
  - libopenblas=0.3.18=openmp_h3351f45_0
  - libpng=1.6.37=hb0a8c7a_2
  - libprotobuf=3.19.4=hcf210ce_0
  - librsvg=2.52.5=h5e5d7d9_2
  - libsodium=1.0.18=hbcb3906_1
  - libssh2=1.10.0=h52ee1ee_2
  - libtiff=4.3.0=h17f2ce3_3
  - libtool=2.4.6=he49afe7_1008
  - libuv=1.43.0=h0d85af4_0
  - libwebp=1.2.2=h28dabe5_0
  - libwebp-base=1.2.2=h0d85af4_1
  - libxcb=1.13=h0d85af4_1004
  - libxml2=2.9.12=he03b247_2
  - libzlib=1.2.11=h6c3fc93_1014
  - llvm-openmp=13.0.1=hcb1a161_1
  - lz4-c=1.9.3=he49afe7_1
  - mako=1.2.0=pyhd8ed1ab_0
  - markupsafe=2.0.1=py39h89e85a6_1
  - matplotlib-base=3.5.1=py39hb07454d_0
  - metomi-isodatetime=1!2.0.2=py_0
  - mistune=0.8.4=py39h89e85a6_1005
  - munkres=1.1.4=pyh9f0ad1d_0
  - nbclient=0.5.13=pyhd8ed1ab_0
  - nbconvert-core=6.4.5=pyhd8ed1ab_2
  - nbformat=5.2.0=pyhd8ed1ab_0
  - ncurses=6.3=he49afe7_0
  - nest-asyncio=1.5.5=pyhd8ed1ab_0
  - nodejs=17.8.0=h3cde592_1
  - numpy=1.22.3=py39hf56e92f_0
  - oauthlib=3.2.0=pyhd8ed1ab_0
  - openjpeg=2.4.0=h6e7aa92_1
  - openssl=1.1.1n=h6c3fc93_0
  - packaging=21.3=pyhd8ed1ab_0
  - pamela=1.0.0=py_0
  - pandas=1.4.2=py39hbd61c47_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - pango=1.50.6=hc4a7b6d_0
  - pcre=8.45=he49afe7_0
  - pillow=9.1.0=py39hd2c7aa1_0
  - pip=22.0.4=pyhd8ed1ab_0
  - pixman=0.40.0=hbcb3906_0
  - prometheus_client=0.13.1=pyhd8ed1ab_0
  - promise=2.3=py39h6e9494a_5
  - protobuf=3.19.4=py39h9fcab8e_0
  - psutil=5.9.0=py39h63b48b0_1
  - pthread-stubs=0.4=hc929b4f_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - pycparser=2.21=pyhd8ed1ab_0
  - pycurl=7.45.1=py39h9e0ad3d_0
  - pygments=2.11.2=pyhd8ed1ab_0
  - pyjwt=2.3.0=pyhd8ed1ab_1
  - pyopenssl=22.0.0=pyhd8ed1ab_0
  - pyparsing=3.0.7=pyhd8ed1ab_0
  - pyrsistent=0.18.1=py39h63b48b0_1
  - pysocks=1.7.1=py39h6e9494a_5
  - python=3.9.12=h8b4d769_1_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-json-logger=2.0.1=pyh9f0ad1d_0
  - python_abi=3.9=2_cp39
  - pytz=2022.1=pyhd8ed1ab_0
  - pyuv=1.4.0=py39hb5aae12_1003
  - pyzmq=22.3.0=py39hc2dc7ec_2
  - readline=8.1=h05e3726_0
  - requests=2.27.1=pyhd8ed1ab_0
  - ruamel.yaml=0.17.21=py39h63b48b0_1
  - ruamel.yaml.clib=0.2.6=py39h63b48b0_1
  - rx=1.6.1=py_0
  - send2trash=1.8.0=pyhd8ed1ab_0
  - setuptools=61.3.1=py39h6e9494a_0
  - six=1.16.0=pyh6c4a22f_0
  - sniffio=1.2.0=py39h6e9494a_3
  - soupsieve=2.3.1=pyhd8ed1ab_0
  - sqlalchemy=1.4.34=py39h63b48b0_0
  - sqlite=3.37.1=hb516253_0
  - terminado=0.13.3=py39h6e9494a_0
  - testpath=0.6.0=pyhd8ed1ab_0
  - tk=8.6.12=h5dbffcc_0
  - tornado=6.1=py39h63b48b0_3
  - traitlets=5.1.1=pyhd8ed1ab_0
  - typing-extensions=4.1.1=hd8ed1ab_0
  - typing_extensions=4.1.1=pyha770c72_0
  - tzdata=2022a=h191b570_0
  - unicodedata2=14.0.0=py39h89e85a6_0
  - urllib3=1.26.9=pyhd8ed1ab_0
  - urwid=2.1.2=py39h89e85a6_5
  - webencodings=0.5.1=py_1
  - websocket-client=1.3.2=pyhd8ed1ab_0
  - werkzeug=0.12.2=py_1
  - wheel=0.37.1=pyhd8ed1ab_0
  - xorg-libxau=1.0.9=h35c211d_0
  - xorg-libxdmcp=1.1.3=h35c211d_0
  - xz=5.2.5=haf1e3a3_1
  - zeromq=4.3.4=he49afe7_1
  - zipp=3.8.0=pyhd8ed1ab_0
  - zlib=1.2.11=h6c3fc93_1014
  - zstd=1.5.2=h582d3a0_0
prefix: /Users/oliver/mambaforge/envs/cylc-8.0rc2-39

@dwsutherland
Copy link
Member

dwsutherland commented Apr 4, 2022

Error: Stream is closed Traceback (most recent call last):
     File "/Users/oliver/mambaforge/envs/cylc-8.0rc2-37/lib/python3.7/site->packages/graphene_tornado/tornado_graphql_handler.py", line 115, in post
       await self.run('post')
     File "/Users/oliver/mambaforge/envs/cylc-8.0rc2-37/lib/python3.7/site-packages/cylc/uiserver/handlers.py", line 353, in run
       await TornadoGraphQLHandler.run(self, *args, **kwargs)
     File "/Users/oliver/mambaforge/envs/cylc-8.0rc2-37/lib/python3.7/site-packages/graphene_tornado/tornado_graphql_handler.py", line 153, in run
       await self.finish()
   tornado.iostream.StreamClosedError: Stream is closed

So something closing your ws connection/stream straight away?

@hjoliver
Copy link
Member

hjoliver commented Apr 4, 2022

I'm not using mamba, but at first glance no apparent differences:

conda list
# packages in environment at /home/oliverh/miniconda3/envs/cylc-8.0rc2:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       1_gnu    conda-forge
aiofiles                  0.7.0              pyhd8ed1ab_0    conda-forge
alembic                   1.7.7              pyhd8ed1ab_0    conda-forge
aniso8601                 7.0.0                      py_0    conda-forge
ansimarkup                1.5.0              pyh44b312d_0    conda-forge
anyio                     3.5.0            py39hf3d152e_0    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0           py39h3811e60_1    conda-forge
async-timeout             4.0.2              pyhd8ed1ab_0    conda-forge
async_generator           1.10                       py_0    conda-forge
atk-1.0                   2.36.0               h3371d22_4    conda-forge
attrs                     21.4.0             pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.10.0             pyha770c72_0    conda-forge
bleach                    4.1.0              pyhd8ed1ab_0    conda-forge
blinker                   1.4                        py_1    conda-forge
brotli                    1.0.9                h7f98852_6    conda-forge
brotli-bin                1.0.9                h7f98852_6    conda-forge
brotlipy                  0.7.0           py39h3811e60_1003    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.18.1               h7f98852_0    conda-forge
ca-certificates           2021.10.8            ha878542_0    conda-forge
cairo                     1.16.0            ha12eb4b_1010    conda-forge
certifi                   2021.10.8        py39hf3d152e_1    conda-forge
certipy                   0.1.3                      py_0    conda-forge
cffi                      1.15.0           py39h4bc2ebd_0    conda-forge
charset-normalizer        2.0.12             pyhd8ed1ab_0    conda-forge
colorama                  0.4.4              pyh9f0ad1d_0    conda-forge
configurable-http-proxy   4.5.1           node17_h7e777a6_1    conda-forge
cryptography              36.0.2           py39hd97740a_0    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
cylc-flow                 8.0rc2             pyhaef67bd_0    conda-forge
cylc-flow-base            8.0rc2             pyhd8ed1ab_0    conda-forge
cylc-uiserver             1.0.1              pyhd8ed1ab_2    conda-forge
cylc-uiserver-base        1.0.1              pyhd8ed1ab_2    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
empy                      3.3.4              pyh9f0ad1d_1    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
expat                     2.4.7                h27087fc_0    conda-forge
flit-core                 3.7.1              pyhd8ed1ab_0    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 hab24e00_0    conda-forge
fontconfig                2.13.96              h8e229c2_2    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
fonttools                 4.31.2           py39hb9d737c_0    conda-forge
freetype                  2.10.4               h0708190_1    conda-forge
fribidi                   1.0.10               h36c2ea0_0    conda-forge
gdk-pixbuf                2.42.8               hff1cb4f_0    conda-forge
gettext                   0.19.8.1          h73d1719_1008    conda-forge
giflib                    5.2.1                h36c2ea0_2    conda-forge
graphene                  2.1.9              pyhd8ed1ab_0    conda-forge
graphene-tornado          2.6.1                      py_0    conda-forge
graphite2                 1.3.13            h58526e2_1001    conda-forge
graphql-core              2.3.2              pyh9f0ad1d_0    conda-forge
graphql-relay             2.0.1                      py_0    conda-forge
graphql-ws                0.4.4              pyhd8ed1ab_0    conda-forge
graphviz                  3.0.0                h5abf519_1    conda-forge
greenlet                  1.1.2            py39he80948d_1    conda-forge
gtk2                      2.24.33              h90689f9_2    conda-forge
gts                       0.7.6                h64030ff_2    conda-forge
harfbuzz                  4.1.0                h40b6f09_0    conda-forge
icu                       69.1                 h9c3ff4c_0    conda-forge
idna                      3.3                pyhd8ed1ab_0    conda-forge
importlib-metadata        4.11.3           py39hf3d152e_0    conda-forge
importlib_resources       5.6.0              pyhd8ed1ab_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
jbig                      2.1               h7f98852_2003    conda-forge
jinja2                    2.11.0                     py_0    conda-forge
jpeg                      9e                   h7f98852_0    conda-forge
jsonschema                4.4.0              pyhd8ed1ab_0    conda-forge
jupyter_client            7.1.2              pyhd8ed1ab_0    conda-forge
jupyter_core              4.9.2            py39hf3d152e_0    conda-forge
jupyter_server            1.15.6             pyhd8ed1ab_1    conda-forge
jupyter_telemetry         0.1.0              pyhd8ed1ab_1    conda-forge
jupyterhub                1.4.2            py39hf3d152e_0    conda-forge
jupyterhub-base           1.4.2            py39hf3d152e_0    conda-forge
jupyterlab_pygments       0.1.2              pyh9f0ad1d_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
kiwisolver                1.4.0            py39hf939315_0    conda-forge
krb5                      1.19.3               h3790be6_0    conda-forge
lcms2                     2.12                 hddcbb42_0    conda-forge
ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
lerc                      3.0                  h9c3ff4c_0    conda-forge
libblas                   3.9.0           13_linux64_openblas    conda-forge
libbrotlicommon           1.0.9                h7f98852_6    conda-forge
libbrotlidec              1.0.9                h7f98852_6    conda-forge
libbrotlienc              1.0.9                h7f98852_6    conda-forge
libcblas                  3.9.0           13_linux64_openblas    conda-forge
libcurl                   7.82.0               h7bff187_0    conda-forge
libdeflate                1.10                 h7f98852_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 11.2.0              h1d223b6_14    conda-forge
libgd                     2.3.3                h283352f_2    conda-forge
libgfortran-ng            11.2.0              h69a702a_14    conda-forge
libgfortran5              11.2.0              h5c6108e_14    conda-forge
libglib                   2.70.2               h174f98d_4    conda-forge
libgomp                   11.2.0              h1d223b6_14    conda-forge
libiconv                  1.16                 h516909a_0    conda-forge
liblapack                 3.9.0           13_linux64_openblas    conda-forge
libnghttp2                1.47.0               h727a467_0    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libopenblas               0.3.18          pthreads_h8fe5266_0    conda-forge
libpng                    1.6.37               h21135ba_2    conda-forge
libprotobuf               3.19.4               h780b84a_0    conda-forge
librsvg                   2.52.5               h0a9e6e8_2    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libssh2                   1.10.0               ha56f1ee_2    conda-forge
libstdcxx-ng              11.2.0              he4da1e4_14    conda-forge
libtiff                   4.3.0                h542a066_3    conda-forge
libtool                   2.4.6             h9c3ff4c_1008    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libuv                     1.43.0               h7f98852_0    conda-forge
libwebp                   1.2.2                h3452ae3_0    conda-forge
libwebp-base              1.2.2                h7f98852_1    conda-forge
libxcb                    1.13              h7f98852_1004    conda-forge
libxml2                   2.9.12               h885dcf4_1    conda-forge
libzlib                   1.2.11            h166bdaf_1014    conda-forge
lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
mako                      1.2.0              pyhd8ed1ab_0    conda-forge
markupsafe                2.0.1            py39h3811e60_1    conda-forge
matplotlib-base           3.5.1            py39h2fa2bec_0    conda-forge
metomi-isodatetime        1!2.0.2                    py_0    conda-forge
mistune                   0.8.4           py39h3811e60_1005    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
nbclient                  0.5.13             pyhd8ed1ab_0    conda-forge
nbconvert                 6.4.5            py39hf3d152e_0    conda-forge
nbformat                  5.2.0              pyhd8ed1ab_0    conda-forge
ncurses                   6.3                  h9c3ff4c_0    conda-forge
nest-asyncio              1.5.4              pyhd8ed1ab_0    conda-forge
nodejs                    17.8.0               h784f1fd_0    conda-forge
numpy                     1.22.3           py39h18676bf_0    conda-forge
oauthlib                  3.2.0              pyhd8ed1ab_0    conda-forge
openjpeg                  2.4.0                hb52868f_1    conda-forge
openssl                   1.1.1n               h166bdaf_0    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pamela                    1.0.0                      py_0    conda-forge
pandas                    1.4.1            py39hde0f152_0    conda-forge
pandoc                    2.17.1.1             ha770c72_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
pango                     1.50.6               hbd2fdc8_0    conda-forge
pcre                      8.45                 h9c3ff4c_0    conda-forge
pillow                    9.0.1            py39hae2aec6_2    conda-forge
pip                       22.0.4             pyhd8ed1ab_0    conda-forge
pixman                    0.40.0               h36c2ea0_0    conda-forge
prometheus_client         0.13.1             pyhd8ed1ab_0    conda-forge
promise                   2.3              py39hf3d152e_5    conda-forge
protobuf                  3.19.4           py39he80948d_0    conda-forge
psutil                    5.9.0            py39h3811e60_0    conda-forge
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pycurl                    7.45.1           py39hd73adbb_0    conda-forge
pygments                  2.11.2             pyhd8ed1ab_0    conda-forge
pyjwt                     2.3.0              pyhd8ed1ab_1    conda-forge
pyopenssl                 22.0.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.7              pyhd8ed1ab_0    conda-forge
pyrsistent                0.18.1           py39h3811e60_0    conda-forge
pysocks                   1.7.1            py39hf3d152e_4    conda-forge
python                    3.9.12          h9a8a25e_1_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-json-logger        2.0.1              pyh9f0ad1d_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pytz                      2022.1             pyhd8ed1ab_0    conda-forge
pyuv                      1.4.0           py39h3811e60_1003    conda-forge
pyzmq                     22.3.0           py39h37b5a0c_1    conda-forge
readline                  8.1                  h46c0cb4_0    conda-forge
requests                  2.27.1             pyhd8ed1ab_0    conda-forge
ruamel.yaml               0.17.21          py39h3811e60_0    conda-forge
ruamel.yaml.clib          0.2.6            py39h3811e60_0    conda-forge
rx                        1.6.1                      py_0    conda-forge
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                61.2.0           py39hf3d152e_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sniffio                   1.2.0            py39hf3d152e_2    conda-forge
soupsieve                 2.3.1              pyhd8ed1ab_0    conda-forge
sqlalchemy                1.4.32           py39hb9d737c_0    conda-forge
sqlite                    3.37.1               h4ff8645_0    conda-forge
terminado                 0.13.3           py39hf3d152e_0    conda-forge
testpath                  0.6.0              pyhd8ed1ab_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
tornado                   6.1              py39h3811e60_2    conda-forge
traitlets                 5.1.1              pyhd8ed1ab_0    conda-forge
typing-extensions         4.1.1                hd8ed1ab_0    conda-forge
typing_extensions         4.1.1              pyha770c72_0    conda-forge
tzdata                    2022a                h191b570_0    conda-forge
unicodedata2              14.0.0           py39h3811e60_0    conda-forge
urllib3                   1.26.9             pyhd8ed1ab_0    conda-forge
urwid                     2.1.2            py39h3811e60_5    conda-forge
webencodings              0.5.1                      py_1    conda-forge
websocket-client          1.3.1              pyhd8ed1ab_0    conda-forge
werkzeug                  0.12.2                     py_1    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
xorg-kbproto              1.0.7             h7f98852_1002    conda-forge
xorg-libice               1.0.10               h7f98852_0    conda-forge
xorg-libsm                1.2.3             hd9c2040_1000    conda-forge
xorg-libx11               1.7.2                h7f98852_0    conda-forge
xorg-libxau               1.0.9                h7f98852_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xorg-libxext              1.3.4                h7f98852_1    conda-forge
xorg-libxrender           0.9.10            h7f98852_1003    conda-forge
xorg-renderproto          0.11.1            h7f98852_1002    conda-forge
xorg-xextproto            7.3.0             h7f98852_1002    conda-forge
xorg-xproto               7.0.31            h7f98852_1007    conda-forge
xz                        5.2.5                h516909a_1    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge
zipp                      3.7.0              pyhd8ed1ab_1    conda-forge
zlib                      1.2.11            h166bdaf_1014    conda-forge
zstd                      1.5.2                ha95c52a_0    conda-forge

@hjoliver
Copy link
Member

hjoliver commented Apr 4, 2022

(Also works fine with pip install into a venv)

@oliver-sanders
Copy link
Member Author

(BTW conda env export to generate a reproducible env)

@hjoliver
Copy link
Member

hjoliver commented Apr 4, 2022

Full Env
name: cylc-8.0rc2
channels:
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=1_gnu
  - aiofiles=0.7.0=pyhd8ed1ab_0
  - alembic=1.7.7=pyhd8ed1ab_0
  - aniso8601=7.0.0=py_0
  - ansimarkup=1.5.0=pyh44b312d_0
  - anyio=3.5.0=py39hf3d152e_0
  - argon2-cffi=21.3.0=pyhd8ed1ab_0
  - argon2-cffi-bindings=21.2.0=py39h3811e60_1
  - async-timeout=4.0.2=pyhd8ed1ab_0
  - async_generator=1.10=py_0
  - atk-1.0=2.36.0=h3371d22_4
  - attrs=21.4.0=pyhd8ed1ab_0
  - beautifulsoup4=4.10.0=pyha770c72_0
  - bleach=4.1.0=pyhd8ed1ab_0
  - blinker=1.4=py_1
  - brotli=1.0.9=h7f98852_6
  - brotli-bin=1.0.9=h7f98852_6
  - brotlipy=0.7.0=py39h3811e60_1003
  - bzip2=1.0.8=h7f98852_4
  - c-ares=1.18.1=h7f98852_0
  - ca-certificates=2021.10.8=ha878542_0
  - cairo=1.16.0=ha12eb4b_1010
  - certifi=2021.10.8=py39hf3d152e_1
  - certipy=0.1.3=py_0
  - cffi=1.15.0=py39h4bc2ebd_0
  - charset-normalizer=2.0.12=pyhd8ed1ab_0
  - colorama=0.4.4=pyh9f0ad1d_0
  - configurable-http-proxy=4.5.1=node17_h7e777a6_1
  - cryptography=36.0.2=py39hd97740a_0
  - cycler=0.11.0=pyhd8ed1ab_0
  - cylc-flow=8.0rc2=pyhaef67bd_0
  - cylc-flow-base=8.0rc2=pyhd8ed1ab_0
  - cylc-uiserver=1.0.1=pyhd8ed1ab_2
  - cylc-uiserver-base=1.0.1=pyhd8ed1ab_2
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - empy=3.3.4=pyh9f0ad1d_1
  - entrypoints=0.4=pyhd8ed1ab_0
  - expat=2.4.7=h27087fc_0
  - flit-core=3.7.1=pyhd8ed1ab_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=hab24e00_0
  - fontconfig=2.13.96=h8e229c2_2
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.31.2=py39hb9d737c_0
  - freetype=2.10.4=h0708190_1
  - fribidi=1.0.10=h36c2ea0_0
  - gdk-pixbuf=2.42.8=hff1cb4f_0
  - gettext=0.19.8.1=h73d1719_1008
  - giflib=5.2.1=h36c2ea0_2
  - graphene=2.1.9=pyhd8ed1ab_0
  - graphene-tornado=2.6.1=py_0
  - graphite2=1.3.13=h58526e2_1001
  - graphql-core=2.3.2=pyh9f0ad1d_0
  - graphql-relay=2.0.1=py_0
  - graphql-ws=0.4.4=pyhd8ed1ab_0
  - graphviz=3.0.0=h5abf519_1
  - greenlet=1.1.2=py39he80948d_1
  - gtk2=2.24.33=h90689f9_2
  - gts=0.7.6=h64030ff_2
  - harfbuzz=4.1.0=h40b6f09_0
  - icu=69.1=h9c3ff4c_0
  - idna=3.3=pyhd8ed1ab_0
  - importlib-metadata=4.11.3=py39hf3d152e_0
  - importlib_resources=5.6.0=pyhd8ed1ab_0
  - ipython_genutils=0.2.0=py_1
  - jbig=2.1=h7f98852_2003
  - jinja2=2.11.0=py_0
  - jpeg=9e=h7f98852_0
  - jsonschema=4.4.0=pyhd8ed1ab_0
  - jupyter_client=7.1.2=pyhd8ed1ab_0
  - jupyter_core=4.9.2=py39hf3d152e_0
  - jupyter_server=1.15.6=pyhd8ed1ab_1
  - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
  - jupyterhub=1.4.2=py39hf3d152e_0
  - jupyterhub-base=1.4.2=py39hf3d152e_0
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.4.0=py39hf939315_0
  - krb5=1.19.3=h3790be6_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.36.1=hea4e1c9_2
  - lerc=3.0=h9c3ff4c_0
  - libblas=3.9.0=13_linux64_openblas
  - libbrotlicommon=1.0.9=h7f98852_6
  - libbrotlidec=1.0.9=h7f98852_6
  - libbrotlienc=1.0.9=h7f98852_6
  - libcblas=3.9.0=13_linux64_openblas
  - libcurl=7.82.0=h7bff187_0
  - libdeflate=1.10=h7f98852_0
  - libedit=3.1.20191231=he28a2e2_2
  - libev=4.33=h516909a_1
  - libffi=3.4.2=h7f98852_5
  - libgcc-ng=11.2.0=h1d223b6_14
  - libgd=2.3.3=h283352f_2
  - libgfortran-ng=11.2.0=h69a702a_14
  - libgfortran5=11.2.0=h5c6108e_14
  - libglib=2.70.2=h174f98d_4
  - libgomp=11.2.0=h1d223b6_14
  - libiconv=1.16=h516909a_0
  - liblapack=3.9.0=13_linux64_openblas
  - libnghttp2=1.47.0=h727a467_0
  - libnsl=2.0.0=h7f98852_0
  - libopenblas=0.3.18=pthreads_h8fe5266_0
  - libpng=1.6.37=h21135ba_2
  - libprotobuf=3.19.4=h780b84a_0
  - librsvg=2.52.5=h0a9e6e8_2
  - libsodium=1.0.18=h36c2ea0_1
  - libssh2=1.10.0=ha56f1ee_2
  - libstdcxx-ng=11.2.0=he4da1e4_14
  - libtiff=4.3.0=h542a066_3
  - libtool=2.4.6=h9c3ff4c_1008
  - libuuid=2.32.1=h7f98852_1000
  - libuv=1.43.0=h7f98852_0
  - libwebp=1.2.2=h3452ae3_0
  - libwebp-base=1.2.2=h7f98852_1
  - libxcb=1.13=h7f98852_1004
  - libxml2=2.9.12=h885dcf4_1
  - libzlib=1.2.11=h166bdaf_1014
  - lz4-c=1.9.3=h9c3ff4c_1
  - mako=1.2.0=pyhd8ed1ab_0
  - markupsafe=2.0.1=py39h3811e60_1
  - matplotlib-base=3.5.1=py39h2fa2bec_0
  - metomi-isodatetime=1!2.0.2=py_0
  - mistune=0.8.4=py39h3811e60_1005
  - munkres=1.1.4=pyh9f0ad1d_0
  - nbclient=0.5.13=pyhd8ed1ab_0
  - nbconvert=6.4.5=py39hf3d152e_0
  - nbformat=5.2.0=pyhd8ed1ab_0
  - ncurses=6.3=h9c3ff4c_0
  - nest-asyncio=1.5.4=pyhd8ed1ab_0
  - nodejs=17.8.0=h784f1fd_0
  - numpy=1.22.3=py39h18676bf_0
  - oauthlib=3.2.0=pyhd8ed1ab_0
  - openjpeg=2.4.0=hb52868f_1
  - openssl=1.1.1n=h166bdaf_0
  - packaging=21.3=pyhd8ed1ab_0
  - pamela=1.0.0=py_0
  - pandas=1.4.1=py39hde0f152_0
  - pandoc=2.17.1.1=ha770c72_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - pango=1.50.6=hbd2fdc8_0
  - pcre=8.45=h9c3ff4c_0
  - pillow=9.0.1=py39hae2aec6_2
  - pip=22.0.4=pyhd8ed1ab_0
  - pixman=0.40.0=h36c2ea0_0
  - prometheus_client=0.13.1=pyhd8ed1ab_0
  - promise=2.3=py39hf3d152e_5
  - protobuf=3.19.4=py39he80948d_0
  - psutil=5.9.0=py39h3811e60_0
  - pthread-stubs=0.4=h36c2ea0_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - pycparser=2.21=pyhd8ed1ab_0
  - pycurl=7.45.1=py39hd73adbb_0
  - pygments=2.11.2=pyhd8ed1ab_0
  - pyjwt=2.3.0=pyhd8ed1ab_1
  - pyopenssl=22.0.0=pyhd8ed1ab_0
  - pyparsing=3.0.7=pyhd8ed1ab_0
  - pyrsistent=0.18.1=py39h3811e60_0
  - pysocks=1.7.1=py39hf3d152e_4
  - python=3.9.12=h9a8a25e_1_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-json-logger=2.0.1=pyh9f0ad1d_0
  - python_abi=3.9=2_cp39
  - pytz=2022.1=pyhd8ed1ab_0
  - pyuv=1.4.0=py39h3811e60_1003
  - pyzmq=22.3.0=py39h37b5a0c_1
  - readline=8.1=h46c0cb4_0
  - requests=2.27.1=pyhd8ed1ab_0
  - ruamel.yaml=0.17.21=py39h3811e60_0
  - ruamel.yaml.clib=0.2.6=py39h3811e60_0
  - rx=1.6.1=py_0
  - send2trash=1.8.0=pyhd8ed1ab_0
  - setuptools=61.2.0=py39hf3d152e_0
  - six=1.16.0=pyh6c4a22f_0
  - sniffio=1.2.0=py39hf3d152e_2
  - soupsieve=2.3.1=pyhd8ed1ab_0
  - sqlalchemy=1.4.32=py39hb9d737c_0
  - sqlite=3.37.1=h4ff8645_0
  - terminado=0.13.3=py39hf3d152e_0
  - testpath=0.6.0=pyhd8ed1ab_0
  - tk=8.6.12=h27826a3_0
  - tornado=6.1=py39h3811e60_2
  - traitlets=5.1.1=pyhd8ed1ab_0
  - typing-extensions=4.1.1=hd8ed1ab_0
  - typing_extensions=4.1.1=pyha770c72_0
  - tzdata=2022a=h191b570_0
  - unicodedata2=14.0.0=py39h3811e60_0
  - urllib3=1.26.9=pyhd8ed1ab_0
  - urwid=2.1.2=py39h3811e60_5
  - webencodings=0.5.1=py_1
  - websocket-client=1.3.1=pyhd8ed1ab_0
  - werkzeug=0.12.2=py_1
  - wheel=0.37.1=pyhd8ed1ab_0
  - xorg-kbproto=1.0.7=h7f98852_1002
  - xorg-libice=1.0.10=h7f98852_0
  - xorg-libsm=1.2.3=hd9c2040_1000
  - xorg-libx11=1.7.2=h7f98852_0
  - xorg-libxau=1.0.9=h7f98852_0
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xorg-libxext=1.3.4=h7f98852_1
  - xorg-libxrender=0.9.10=h7f98852_1003
  - xorg-renderproto=0.11.1=h7f98852_1002
  - xorg-xextproto=7.3.0=h7f98852_1002
  - xorg-xproto=7.0.31=h7f98852_1007
  - xz=5.2.5=h516909a_1
  - zeromq=4.3.4=h9c3ff4c_1
  - zipp=3.7.0=pyhd8ed1ab_1
  - zlib=1.2.11=h166bdaf_1014
  - zstd=1.5.2=ha95c52a_0
prefix: /home/oliverh/miniconda3/envs/cylc-8.0rc2

@oliver-sanders
Copy link
Member Author

oliver-sanders commented Apr 4, 2022

There's quite a lot of diff there, will try with your env to see if it works for me:

(BTW because we are different OS'es I needed to strip the build numbers to compare like so sed 's/\(.*=.*\)=.*/\1/')

Full Diff
$ diff oliver hillary
--- oliver	2022-04-04 11:37:28.000000000 +0100
+++ hillary	2022-04-04 11:37:30.000000000 +0100
@@ -1,7 +1,9 @@
-name: cylc-8.0rc2-39
+name: cylc-8.0rc2
 channels:
   - conda-forge
 dependencies:
+  - _libgcc_mutex=0.1
+  - _openmp_mutex=4.5
   - aiofiles=0.7.0
   - alembic=1.7.7
   - aniso8601=7.0.0
@@ -38,7 +40,7 @@
   - defusedxml=0.7.1
   - empy=3.3.4
   - entrypoints=0.4
-  - expat=2.4.8
+  - expat=2.4.7
   - flit-core=3.7.1
   - font-ttf-dejavu-sans-mono=2.37
   - font-ttf-inconsolata=3.000
@@ -63,25 +65,28 @@
   - greenlet=1.1.2
   - gtk2=2.24.33
   - gts=0.7.6
-  - harfbuzz=4.2.0
-  - icu=70.1
+  - harfbuzz=4.1.0
+  - icu=69.1
   - idna=3.3
   - importlib-metadata=4.11.3
   - importlib_resources=5.6.0
+  - ipython_genutils=0.2.0
   - jbig=2.1
   - jinja2=2.11.0
   - jpeg=9e
   - jsonschema=4.4.0
-  - jupyter_client=7.2.1
+  - jupyter_client=7.1.2
   - jupyter_core=4.9.2
-  - jupyter_server=1.16.0
+  - jupyter_server=1.15.6
   - jupyter_telemetry=0.1.0
-  - jupyterhub=2.2.2
-  - jupyterhub-base=2.2.2
+  - jupyterhub=1.4.2
+  - jupyterhub-base=1.4.2
   - jupyterlab_pygments=0.1.2
-  - kiwisolver=1.4.2
+  - keyutils=1.6.1
+  - kiwisolver=1.4.0
   - krb5=1.19.3
   - lcms2=2.12
+  - ld_impl_linux-64=2.36.1
   - lerc=3.0
   - libblas=3.9.0
   - libbrotlicommon=1.0.9
@@ -89,33 +94,36 @@
   - libbrotlienc=1.0.9
   - libcblas=3.9.0
   - libcurl=7.82.0
-  - libcxx=13.0.1
   - libdeflate=1.10
   - libedit=3.1.20191231
   - libev=4.33
   - libffi=3.4.2
+  - libgcc-ng=11.2.0
   - libgd=2.3.3
-  - libgfortran=5.0.0
-  - libgfortran5=9.3.0
+  - libgfortran-ng=11.2.0
+  - libgfortran5=11.2.0
   - libglib=2.70.2
+  - libgomp=11.2.0
   - libiconv=1.16
   - liblapack=3.9.0
   - libnghttp2=1.47.0
+  - libnsl=2.0.0
   - libopenblas=0.3.18
   - libpng=1.6.37
   - libprotobuf=3.19.4
   - librsvg=2.52.5
   - libsodium=1.0.18
   - libssh2=1.10.0
+  - libstdcxx-ng=11.2.0
   - libtiff=4.3.0
   - libtool=2.4.6
+  - libuuid=2.32.1
   - libuv=1.43.0
   - libwebp=1.2.2
   - libwebp-base=1.2.2
   - libxcb=1.13
   - libxml2=2.9.12
   - libzlib=1.2.11
-  - llvm-openmp=13.0.1
   - lz4-c=1.9.3
   - mako=1.2.0
   - markupsafe=2.0.1
@@ -124,10 +132,10 @@
   - mistune=0.8.4
   - munkres=1.1.4
   - nbclient=0.5.13
-  - nbconvert-core=6.4.5
+  - nbconvert=6.4.5
   - nbformat=5.2.0
   - ncurses=6.3
-  - nest-asyncio=1.5.5
+  - nest-asyncio=1.5.4
   - nodejs=17.8.0
   - numpy=1.22.3
   - oauthlib=3.2.0
@@ -135,11 +143,12 @@
   - openssl=1.1.1n
   - packaging=21.3
   - pamela=1.0.0
-  - pandas=1.4.2
+  - pandas=1.4.1
+  - pandoc=2.17.1.1
   - pandocfilters=1.5.0
   - pango=1.50.6
   - pcre=8.45
-  - pillow=9.1.0
+  - pillow=9.0.1
   - pip=22.0.4
   - pixman=0.40.0
   - prometheus_client=0.13.1
@@ -169,11 +178,11 @@
   - ruamel.yaml.clib=0.2.6
   - rx=1.6.1
   - send2trash=1.8.0
-  - setuptools=61.3.1
+  - setuptools=61.2.0
   - six=1.16.0
   - sniffio=1.2.0
   - soupsieve=2.3.1
-  - sqlalchemy=1.4.34
+  - sqlalchemy=1.4.32
   - sqlite=3.37.1
   - terminado=0.13.3
   - testpath=0.6.0
@@ -187,14 +196,23 @@
   - urllib3=1.26.9
   - urwid=2.1.2
   - webencodings=0.5.1
-  - websocket-client=1.3.2
+  - websocket-client=1.3.1
   - werkzeug=0.12.2
   - wheel=0.37.1
+  - xorg-kbproto=1.0.7
+  - xorg-libice=1.0.10
+  - xorg-libsm=1.2.3
+  - xorg-libx11=1.7.2
   - xorg-libxau=1.0.9
   - xorg-libxdmcp=1.1.3
+  - xorg-libxext=1.3.4
+  - xorg-libxrender=0.9.10
+  - xorg-renderproto=0.11.1
+  - xorg-xextproto=7.3.0
+  - xorg-xproto=7.0.31
   - xz=5.2.5
   - zeromq=4.3.4
-  - zipp=3.8.0
+  - zipp=3.7.0
   - zlib=1.2.11
   - zstd=1.5.2
-prefix: /Users/oliver/mambaforge/envs/cylc-8.0rc2-39
+prefix: /home/oliverh/miniconda3/envs/cylc-8.0rc2

@oliver-sanders
Copy link
Member Author

Tried replicating, had to remove unsatisfiable deps for my OS but they shouldn't impact anything:

_libgcc_mutex 0.1**
_openmp_mutex 4.5**
keyutils 1.6.1**
libgcc-ng 11.2.0**
libgfortran-ng 11.2.0**
libgfortran5 11.2.0**
libgomp 11.2.0**
libnsl 2.0.0**
libstdcxx-ng 11.2.0**

After the env built ok, but I got the same issue. If it's not the env it's something else in the stack, possibly the browser. So far I've tested with:

Mac OS: Safari, Opera
Linux: Firefox

No console traceback or network issues reported in dev tools.

The subscription request was sent, but no reply was received:

Screenshot 2022-04-04 at 11 53 36

@hjoliver
Copy link
Member

hjoliver commented Apr 4, 2022

The variables: null bit in your screenshot just above looks wrong, but reproducing it myself (by writing, literally, null in the variables pane) it didn't break anything.

Do we need to get the UIS to do better debug logging (assuming the request is getting through to the UIS)?

@dwsutherland
Copy link
Member

Since the UI is working (and subs therein), it might be something to do with the OS/browser and libs GraphiQL uses...
The libs use to be different to the UI, but looks like it's incorporated now:
https://github.com/cylc/cylc-ui/blob/master/src/graphql/graphiql.js

So idk....

@hjoliver
Copy link
Member

hjoliver commented Apr 5, 2022

Still, whatever the cause is, it would be useful to know if anything is coming through to the UIS, and if so what's wrong with it. (Since Oliver's dev tools seem to show that a query was sent).

@hjoliver
Copy link
Member

hjoliver commented Apr 5, 2022

I've tried every environment I have access to, can't get it to hang for me 😕

@oliver-sanders
Copy link
Member Author

I've tried every environment I have access to, can't get it to hang for me

Good, I hope that's normal!

Guess I could try a virtual machine too but this is getting silly.

If you have any ideas about where to jam logging or breakpoints into the code let me know.

@datamel
Copy link
Contributor

datamel commented Apr 13, 2022

I can confirm, after a freshly installed env, I am hitting the same problems as @oliver-sanders.
image

@hjoliver
Copy link
Member

hjoliver commented Apr 19, 2022

Trying again to reproduce this.

I nuked all my environments, then:

  • Python3.7.3 -m venv venv for cylc-uiserver
  • pip install cylc-flow from master, or from cylc-flow#4791 (same result)
  • start cylc gui

graphiql query:

subscription {
  workflows {
    id
    status
  }
}

Then run one short workflow.

The subscription updates correctly for the first run of the workflow, ending with status: stopped.

But it does hang and won't update any further if I run the same workflow again.

However, running a different workflow (or a new runN install) does get a result.

@dwsutherland - can you see if you can reproduce this?

[UPDATES]

  • I was removing the cylc-run-directory between runs. and
  • sometimes the subscription doesn't hang 🤯
  • I don't get any result if there are no workflows running (but there are some stopped ones)

With Python 3.7.3 pip install I do get these errors if I don't do pip install --upgrade pip first (but the install does not fail):

graphql-core 2.3.2 has requirement rx<2,>=1.6, but you'll have rx 3.2.0 which is incompatible.                    
nbconvert 6.5.0 has requirement jinja2>=3.0, but you'll have jinja2 2.11.3 which is incompatible.                   

Upgrading pip gets rid of the above errors, but doesn't fix the problem. pip stdout shows it downloads rx-3.2.0 initially, but then after getting graphql-core-2.3.2 it gets rx-1.6.1

Using a Python 3.9.1 venv does not seem to make any difference. It seems to work fine if I don't remove the run directory (in which case a new install goes back to run1 - could that screw up the UIS @dwsutherland ? )

@oliver-sanders
Copy link
Member Author

I have the correct versions of both (after the environment dumps above I don't think this issue is dependency related), the pip issues are somewhat expected, pip isn't as strict as you would expect it to be and will happily install broken envs if you tell it to install one thing and then another (that is incompatible), conda is not impacted.

@oliver-sanders
Copy link
Member Author

Tried bumping the UI GraphiQL version just in case but got the same result :(

@oliver-sanders
Copy link
Member Author

Tried bumping the UI GraphiQL version just in case but got the same result :(

Scratch that, tried updating further, ...

Screenshot from 2022-05-04 15-54-30

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants