D2.2 update

Great that you made a fix quickly! Thank you.

Yes, that’s a first step, and the description you make is correct. Let’s go for it.

BTW, once we have this in place, what’s the catch of having the services talk to each other on their own?

Could you clarify? 󠀠󠀠฀󠀠

See the new configuration field ‘control-interface’ in the message router yaml files. If it’s lets’s say 7001, then you can do:

echo 'n' | nc localhost 7001

which will have the same effect as pressing n.

1 Like

In bash this might be:

upsycle-send () {
  local host=$1
  local port=$2
  local line
  while read line; do
    nc "$host" "$port" <<< "$line"
  done
}
cat > file.txt # e.g. n<enter>S<enter><ctrl-d>
cat file.txt | upsycle-send 127.0.0.1 7001

But to make a nice demo you probably want to send a few commands to the message router A, then to service A1, then to the message router or another service, etc. It might an idea to make a little DSL for this.

s-a1 j # join multicast groups
sleep 5
s-a1 m # send multicast update
mr-a S

with mappings mr-a=mr-a.dream.public.cat:7001, s-a1=dmc-1.dream.public.cat:nnnn in another file.

and then eventually

s-a1 join-multicast-groups <key1> <key2>
sleep 5
s-a1 send-multicast <key1> "hello this is a DMC update"
mr-a show-state

and so on.

1 Like

Although I have gmp installed, I get:

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[ERROR] The compilation of conf-gmp failed at "/home/dream/.opam/opam-init/hooks/sandbox.sh build sh -exc cc -c $CFLAGS -I/usr/local/include test.c".

#=== ERROR while compiling conf-gmp.3 =========================================#
# context     2.0.8 | linux/x86_64 | ocaml-system.4.12.0 | https://opam.ocaml.org#b7eb40e7
# path        ~/.opam/default/.opam-switch/build/conf-gmp.3
# command     ~/.opam/opam-init/hooks/sandbox.sh build sh -exc cc -c $CFLAGS -I/usr/local/include test.c
# exit-code   1
# env-file    ~/.opam/log/conf-gmp-75590-e1320e.env
# output-file ~/.opam/log/conf-gmp-75590-e1320e.out
### output ###
# + cc -c -I/usr/local/include test.c
# test.c:1:10: fatal error: gmp.h: No such file or directory
#     1 | #include <gmp.h>
#       |          ^~~~~~~
# compilation terminated.



<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
┌─ The following actions failed
│ λ build conf-gmp 3
└─
╶─ No changes have been performed

Looks like it’s missing a dev library. On Debian it would be called libgmp-dev, dunno about Alpine.

It's NixOS. I installed the gmp` package derivation.

So, anyway, just in passing. NixOS 21.05 on the Hetzner Cloud was broken. Now it’s fixed.

5 posts were split to a new topic: Upsycle-router on Alpine Linux

Please note that the commands to generate the keys and to run the components have changed slightly:

The new commands are

example/gen-keys-and-certs
example/run-message-router { a | b | c }
example/run-service { a1 | a2 | a3 | b1 }

(example can also be abbreviated ‘eg’)

Sorry for the late change but it was necessary to properly separate the examples from the non-examples.

1 Like

I guess you mean a1 | a2 | a2 | b1 :slight_smile:

Thank you for this and the Dockerfile.

Today we’re meeting with DataPlayers to discuss RDF. Will look at it tomorrow then. Have a nice day!

thanks, fixed.󠀠󠀠󠀠󠀠󠀠󠀠󠀠󠀠󠀠󠀠󠀠󠀠󠀠󠀠󠀠

1 Like

I’m wondering where the TLS certificates go, so I can copy them from mr-a to mr-b and mr-c. Or are they consistent between hosts (unlikely)?

Is this a question related to this topic?
Do you mean which folder?

Am I really to answer this question? There are at least two threads to move out of this particular topic into their own topic.

I want to be able to copy the certificates from one VM to the next so they match their expected routers. I guess I cannot generate certificates and expect the configurations to magically match each other. :slight_smile:

Oh, sorry. Somehow I thought we were in a different thread.
Anyway, they are in the priv/cert/ directory (from root)

Thanks. Indeed, I moved the posts to another topic :wink:

Ah, dammit, I think I need mr-b up in order to run mr-c. Will look at it later.

Mm, no. C should be able to run without B running. You can try it on debian with the localhost example.
It only says ‘trying to connect to B’ or something like that.