Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • 00:45
    ralexstokes synchronize #1482
  • 00:36
    ralexstokes edited #1482
  • Jan 23 22:21
    ralexstokes edited #1482
  • Jan 23 22:21
    ralexstokes synchronize #1482
  • Jan 23 22:15
    ralexstokes synchronize #1482
  • Jan 23 21:43
    ralexstokes commented #1498
  • Jan 23 19:27
    carver commented #1366
  • Jan 23 18:54
    ralexstokes commented #1507
  • Jan 23 18:52
    ralexstokes commented #1506
  • Jan 23 17:25
    cburgdorf synchronize #1503
  • Jan 23 17:22
    pipermerriam assigned #1366
  • Jan 23 17:21
    pipermerriam commented #1366
  • Jan 23 17:03
    jannikluhn labeled #1507
  • Jan 23 17:03
    jannikluhn opened #1507
  • Jan 23 16:56
    cburgdorf commented #1366
  • Jan 23 16:55
    jannikluhn labeled #1506
  • Jan 23 16:54
    jannikluhn opened #1506
  • Jan 23 16:35
    cburgdorf synchronize #1503
  • Jan 23 16:19
    cburgdorf edited #1503
  • Jan 23 16:16
    cburgdorf edited #1503
<ralexstokes> should I not expect the CI environment to have $HOME set?
<ralexstokes> it looks like the same code would eventually run in trinity/_utils/xdg.py so i'm not sure what the difference is
<carver> Hm, I expect it to work. Have you tried SSHing in and checking the environment variable?
<ralexstokes> nope
<ralexstokes> i'll do that
<ralexstokes> circleci@e5efd86a765f:~$ echo $HOME /home/circleci
<ralexstokes> 🤔
<ralexstokes> works fine from the python interpreter as well
<carver> Can you link a failing CI job?
<ralexstokes> yeah
<ralexstokes> if i run them manually it works just fine
<ralexstokes> e.g. /home/circleci/repo/.tox/py36-eth1-core/bin/pytest -n 4 tests/core/
<carver> Maybe something about running inside tox?
<ralexstokes> yeah
<carver> what if you manually run tox -e py36-eth1-core?
<ralexstokes> it only happens when i ~/.local/bin/tox
<ralexstokes> which narrows it down a lot
<carver> yea
<ralexstokes> same behavior
<ralexstokes> w/ tox -e py36-eth1-core
<carver> meaning, you get the KeyError
<ralexstokes> yes
<ralexstokes> do i need to manually tell tox to pass $HOME i wonder
<carver> hm, yeah, I think you do have to whitelist environment variables
<carver> don't know why this would be the first time the problem would show up, though
<ralexstokes> yeah -- i was just looking at how this isn't triggered w/ trinity usually but the surface area gets large fast 🙂
<ralexstokes> seems like the integration tests at least would hit the xdg.py file i was referencing
<ralexstokes> which should trigger this
<ralexstokes> it looks like the higher-level integration tests may run inside their own /bin/bash instance
<ralexstokes> where i would not be surprised if $HOME is set again
<carver> right
<ralexstokes> we found a POSIX security hole wheeee
<carver> heh
<ralexstokes> oh actually no, it is all run inside pytest
<ralexstokes> 🤔
<ralexstokes> oh i think i see what is happening
<ralexstokes> we bypass need for $HOME w/ this fixture: https://github.com/ethereum/trinity/blob/master/tests/conftest.py#L80-L88
<ralexstokes> well i needed to make this config more "proper" anyway so i'll go do that now
<carver> ahah good find 👍
<ralexstokes> yeah the integration tests essentially splat the output of that function into the trinity command lol
<Piper> @ralexstokes here is a really rough but working PR that fixes your async-service issue: ethereum/async-service#53
<Piper> Pinged you for a review. Doesn't need to be detailed. Mostly just looking for preliminary feedback (I haven't even looked it over yet so feel free to put it off till tomorrow)
<ralexstokes> Ok awesome

<Christoph> First time that I get our infamous EOFError during local development.

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.7/multiprocessing/spawn.py", line 105, in spawn_main
    exitcode = _main(fd)
  File "/usr/lib/python3.7/multiprocessing/spawn.py", line 113, in _main
    preparation_data = reduction.pickle.load(from_parent)
EOFError: Ran out of input

No further insights here except that it does in fact leave the note in an unbootable state.

<Christoph> When I finish my current task, I might write a script to boot Trinity over and over trying to hit it more often and see if I can find the root cause of it. I'm pretty sure it has to do with either: how the components start now or how the logging starts now. The error came up after we migrated of from the built-in multiprocessing

<Christoph> Looks like RTD builds are starting to fail.


It's a known RTD issue


I'm going to try there proposed fix.

Teo Toplak

Hi everybody! I'm looking for some advise
I want to use ProxyPeerPool which is asyncio-based service inside a service which is trio-based (let's call it AuroraService)
AuroraService is requesting peer information (block headers, Merkle proofs ...) over ProxyPeerPool.
But since I want to run ProxyPeerPool inside AuroraService which is a trio context, i get the obvious error that this is not possible, and that I need to use some kind of compatibility shim.
I'm reproducing the error with a simple example
The actual running of the proxy service in the code
So now I would love some advise on how to tackle this problem in the easiest possible manner (I am on the tight schedule)
The approaches I can come up with are:

  • Make ProxyPeerPool a trio based service
  • Extend TrioManger to somehow allow running asyncio based tasks
  • Maybe some quick hack I am not aware of?
  • Join awesome Trinity team for greater good and start building all of this requirements (maybe after I graduate :D)

By looking at commits and git blames I am guessing @pipermerriam has a lot of knowledge about this

I guess ProxyPeerPool will be implemented with trio later as it is supposed to be used by IsolatedComponents

<Piper> @teotoplak take a look at 'trio-asyncio' (pulling that library name from my memory) it is an implementation of asyncio written in trio allowing you to transition back and forth between them as long as the outermost layer is trio