YarpLoggerDevice cannot log data at 1kHz

We have run some data collection campaign using the YarpLoggerDevice to record and save data at different sample rates.
But, we have realized that YarpLoggerDevice was not able to log data at 1 kHz.
Therefore, we have tested YarpLoggerDevice with 4 different sample rates, and we got:

at 1[kHz],   max(dt) = 0.0025 [s]    (dt should be 0.001 [s] to respect real time)
at 500[Hz], max(dt) = 0.0025 [s]  (dt should be 0.002 [s] to respect real time)
at 200[Hz], max(dt) = 0.0056 [s]  (dt should be 0.005 [s] to respect real time)
at 100[Hz], max(dt) = 0.0105 [s]  (dt should be 0.010 [s] to respect real time)

with dt being the time between one sample and the following one.
It follows also the dt plots for the 4 different datasets:

Also, we checked that, within each dataset, the logged vectors (such as joint position, joint velocity, joint acceleration) have the same size (i.e. number of samples).
Lastly, the blf version we have been using is https://github.com/isorrentino/bipedal-locomotion-framework/commit/3d371885c22a1f896c07a0843466a4e34fb9009d.
cc @GiulioRomualdi @isorrentino

Hi @LoreMoretti, thank you for posting this :) You are right. According to the plots you show, the fact that when you collect at 1kHz, you get a maximum delta t of 0.0025s, is related to an outlier. I believe this outlier can be removed. Regardless, it seems that when we set a specific frequency, we consistently get a maximum error of 0.0006s (0.6ms). This error is negligible if we collect data at 100Hz, but it becomes significant when collecting data at 1kHz.
A possibility is:

remove the outliner
then Resample the data at the desired frequency

cc also @traversaro @S-Dafarra

By the way, more in general if you want to reduce the jitter in the logging time, you need to reduce the scheduling jitter of thread. This can be done by the classical methods used for real time computing, that is:

Increase the performance of the thread
Change the OS scheduler used
Change the linux kernel used and switch to use one that uses the so-called RT patches

An introduction to this topics I like a lot is the "Real-time programming with Linux" series of blog posts by Shuhao Wu: https://shuhaowu.com/blogseries.html#rt-linux-programming . The https://github.com/cactusdynamics/cactus-rt repo from the same author is good example of those techniques, even if to use them in our codebase I would prefer to have some kind of abstraction that is portable also to macOS on Windows (even using non-realtime features in those cases).

Also, after reading the resources shared by @traversaro and others (like https://www.youtube.com/watch?v=NrjXEaTSyrw), we could also investigate the benefits brought by changing the current logic of Yarp:os:PeriodicThread.
Now, if I got it right, the thread it is set to sleep for an amount of time given by the difference next_awaken_time - elapsed_time. But the awakening process from the scheduler takes some time, this means that the tread could wake up a bit later than expected.
We could change it to something like sleep for next_awaken_time - (elapsed_time + awakening_time) (where awakening_time  has to be determined empirically). The idea is to awake the thread a bit before, and then insert in the run function some while loop that keeps checking if it is time to start the operations of the thread.
The drawback could be that the CPU is kept busied with more not useful operations (i.e. the while loop), but the thread jitter might be less.
Without testing it, I am not sure if this could lead to improvements and also the entity of the improvements, and also how this code change would affect all other software we use.

Another idea that came to my mind (reading for example https://unix.stackexchange.com/questions/326579/how-to-ensure-exclusive-cpu-availability-for-a-running-process) is to try to run the logger on a separate laptop reserving one CPU core just for the YarpLoggerDevice application.
Also here, I guess that it is difficult to determine upfront the entity of the improvements (also compared to the alternative solution of just increasing the priority of the YarpLoggerDevice thread)

I have tried to implement what I explained in this comment through this commit. I have hard-coded some numeric values in the code, but this is just inteded for testing at this stage.
Then, I have run the YarpLoggerDevice to record some data at 1kHz on ergocubSN001 from my laptop with ethernet:

With mean values being:

0.001069588421232 for yarp3.9
0.001047208306053 for yarp3.9 with modification

So the modification seems to improve a bit the YarpLoggerDevice performances.
I could run more tests to check if the statistics are confirmed. Still, perhaps these tiny improvements aren't worth changing that piece of YARP.

The variance seems well reduced anyhow!
FYI the link to the commit appears to be broken

FYI the link to the commit appears to be broken

Thanks for the catch! I should have fixed it

Still, perhaps these tiny improvements aren't worth changing that piece of YARP.

In any way, it is something that can be done inside the run method (subtracting from the user-specified period the awakening time). Also, if the problem is the awakening, then you should avoid the delay in https://github.com/LoreMoretti/yarp/commit/8a44daa286594eda6b7f0df9c5ef6b927d33e14c#diff-d271dd18aa050a91366a7acdb6a223823dcb1771603035cace056e6fc5f337d6R243 because otherwise you end up having the same issue.

In any way, it is something that can be done inside the run method (subtracting from the user-specified period the awakening time)

I have modified the YarpLoggerDevice. Some preliminary code can be found at this commit.
Then to test it, I have run the YarpLoggerDevice to record some data at 1kHz on ergocubSN001 from my laptop with ethernet connection. It follows the dt of the data:

With mean values being:

0.001059455351969 for original YarpLoggerDevice
0.001000461184516 for modified YarpLoggerDevice

In both cases, I have being using yarp3.9, the only difference is within the YarpLoggerDevice itself.
More tests should be run to confirm the statistics, but the preliminary results seem good.

Can we have an option to disable busy waiting? There are many context in which you do not want to do busy waiting at all.

Increase the performance of the thread

Ahh, my bad, this sentence was meant to write "increse the priority of the thread". If you did not tried that, I would try, it is a simple linux-specific code you can wrap in a #ifdef block, and I guess it can be really helpful even without a realtime kernel (that we may want to explore the use anyhow if we are interested in this, the early wakeup is the last of the strategies listed in https://shuhaowu.com/blogseries.html#rt-linux-programming, not the first :D ).

Even without changing the priority, at least changing the scheduler used to use one of the realtime schedulers SCHED_FIFO ?

Even without changing the priority, at least changing the scheduler used to use one of the realtime schedulers SCHED_FIFO ?

See https://stackoverflow.com/questions/51100861/stdthread-with-pthread-setschedparam-with-c-11 and the last suggestion of https://chatgpt.com/share/9e47ab2c-1302-433f-aa5a-5caa25b296ef .

See https://stackoverflow.com/questions/51100861/stdthread-with-pthread-setschedparam-with-c-11 and the last suggestion of https://chatgpt.com/share/9e47ab2c-1302-433f-aa5a-5caa25b296ef .

I have implemented it at this commit.
Then to test it, I have run the YarpLoggerDevice to record some data at 1kHz on ergocubSN001 from my laptop with ethernet connection. It follows the dt of the data:

Here the thread priority used:
[INFO] [2024-09-02 18:03:10.482] [thread: 70526] [blf] [YarpRobotLoggerDevice::threadInit] Scheduling policy set to SCHED_FIFO with priority 80

A part from something happening at the beginning, it seems that increasing the thread priority and set a FIFO policy, helped to reduce the number of spikes. It could be interesting to combine it with the awakening before strategy of the green curve.
The original and modified are the same curves as the one of this comment.
Note that, the first time I run the YarpLoggerDevice, I was getting this error. Therefore, with the help of @S-Dafarra, we had to sudo a bunch of things (yarp namespace, yarp conf, YARP_ROBOT_NAME, source ~/robotology/robotology-superbuild/build/install/share/robotology-superbuild/setup.sh) and run yarprobotinterface --config launch-yarp-robot-logger.xml with root privileges.

It could be interesting to combine it with the awakening before strategy of the green curve.

I have implemented the needed code at this commit.
Then I did a successful smoke test running the YarpLoggerDevice with a Gazebo simulation. I will test in on the robot to determine the performances.
Regarding:

Note that, the first time I run the YarpLoggerDevice, I was getting this error. Therefore, with the help of @S-Dafarra, we had to sudo a bunch of things (yarp namespace, yarp conf, YARP_ROBOT_NAME, source ~/robotology/robotology-superbuild/build/install/share/robotology-superbuild/setup.sh) and run yarprobotinterface --config launch-yarp-robot-logger.xml with root privileges.

I tried different strategies to avoid to sudo all the things.

set CAP_SYS_NICE capability, thanks @traversaro for the hint.

But, I could not make it work. This is because after I did sudo setcap 'cap_sys_nice=eip' </home/lomoretti/robotology/robotology-superbuild/build/install/bin/yarprobotinterface>, when I run the yarprobotinterface (to start the logger device), I get:
yarprobotinterface: error while loading shared libraries: libYARP_robotinterface.so.3: cannot open shared object file: No such file or directory
But, checking the application rpath, with readelf -d /home/lomoretti/robotology/robotology-superbuild/build/install/bin/yarprobotinterface | grep RPATH, I get:
 0x000000000000000f (RPATH)              Library rpath: [/home/lomoretti/mambaforge/envs/robsub_gzsim/lib:$ORIGIN/:$ORIGIN/../lib:$ORIGIN/../]

and libYARP_robotinterface.so.3 should be included in $ORIGIN/../lib, being $ORIGIN the directory where the application (i.e. yarprobotinterface) is located.
Though, if I trace the application with strace yarprobotinterface 2>&1 it seems that $ORIGIN/../lib is not used as search path, as shown in the following terminal log.

strace log
execve("/home/lomoretti/robotology/robotology-superbuild/build/install/bin/yarprobotinterface", ["yarprobotinterface"], 0x7ffded454340 /* 150 vars */) = 0
access("/etc/suid-debug", F_OK)         = -1 ENOENT (No such file or directory)
brk(NULL)                               = 0x55b482f94000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffda9db0f60) = -1 EINVAL (Invalid argument)
fcntl(0, F_GETFD)                       = 0
fcntl(1, F_GETFD)                       = 0
fcntl(2, F_GETFD)                       = 0
access("/etc/suid-debug", F_OK)         = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7faf7c693000
readlink("/proc/self/exe", "/home/lomoretti/robotology/robot"..., 4096) = 85
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/glibc-hwcaps/x86-64-v4/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/glibc-hwcaps/x86-64-v4", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/glibc-hwcaps/x86-64-v3/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/glibc-hwcaps/x86-64-v3", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/glibc-hwcaps/x86-64-v2/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/glibc-hwcaps/x86-64-v2", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/tls", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/lomoretti/mambaforge/envs/robsub_gzsim/lib", {st_mode=S_IFDIR|0775, st_size=196608, ...}, 0) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=168683, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 168683, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7faf7c669000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=270336, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v4", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=270336, ...}, 0) = 0
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v4/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v4", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/tls", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}, 0) = 0
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v4/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v4", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/tls", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/haswell/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/haswell/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/haswell/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/haswell/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/haswell/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/haswell/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/haswell/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/haswell", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/avx512_1/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/avx512_1/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/avx512_1/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/avx512_1", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/x86_64", 0x7ffda9db0180, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/libYARP_robotinterface.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}, 0) = 0
writev(2, [{iov_base="yarprobotinterface", iov_len=18}, {iov_base=": ", iov_len=2}, {iov_base="error while loading shared libra"..., iov_len=36}, {iov_base=": ", iov_len=2}, {iov_base="libYARP_robotinterface.so.3", iov_len=27}, {iov_base=": ", iov_len=2}, {iov_base="cannot open shared object file", iov_len=30}, {iov_base=": ", iov_len=2}, {iov_base="No such file or directory", iov_len=25}, {iov_base="\n", iov_len=1}], 10yarprobotinterface: error while loading shared libraries: libYARP_robotinterface.so.3: cannot open shared object file: No such file or directory
) = 145
exit_group(127)                         = ?
+++ exited with 127 +++

I am not sure why. I have built the robotology-superbuild from source (with conda dependencies), maybe it works if one installs directly the conda binary packages of the superbuild.

 sudo -E /home/lomoretti/robotology/robotology-superbuild/build/install/bin/yarprobotinterface --config launch-yarp-robot-logger.xml. This seems to work fine on my laptop (wihtout "sudo-ing" anything else).

We should understand if the created matfile has the right reading access

I will test in on the robot to determine the performances.

I have run the YarpLoggerDevice to record some data at 1kHz on ergocubSN001 from my laptop with ethernet connection. It follows the dt of the data:

The blue curve refers to the YarpRobotLoggerDevice with the "awake before feature" (as introduced here). The blue curve refers to the YarpRobotLoggerDevice with the same "awake before feature" but also with FIFO policy and increased priority of the thread.
Qualitatively, it seems that the orange curve exhibits less spikes (therefore improving the performances). Of course, I should run more tests to confirm the statics.
Also, at this commit
I have added a config parameter called enable_real_time_scheduling which enables (when set to true) both the "awake before feature" as well as the FIFO policy and higher priority. In this way the user can choose to use it or not. If not specified, enable_real_time_scheduling is by default set to false.
I can open a PR to add the changes of the YarpRobotLoggerDevice that allowed to reach these perfomances.
Instead, regarding:

We should understand if the created matfile has the right reading access

I was able to load the created matfile on robot-log-visualizer or on matlab. Checking the file permission, I get:
(robsub_gzsim) lomoretti@IITICUBLAP226:~/Desktop/ExperimentsLorenzo/debug/YarpLoggerTime/modifiedBLF_withFIFOscheduler$ ls -l robot_logger_device_2024_09_04_14_49_01.mat
-rw-r--r-- 1 root root 361014952 Sep  4 14:49 robot_logger_device_2024_09_04_14_49_01.mat

So it seems that also others from root can read the file.

I am preparing a PR: #883


Added GtkImageCache, updated pre-commit

Made a class for caching Gtk Images and used in both Slideshow and Grid views.

Also bumped pre-commit-hooks so they would stop exploding.

Coverage increased (+0.96%) to 68.78% when pulling a5254143e8d4ee76029a3e0c588a2a1445795d0f on campaul:gtk_image_cache into 9ee8a540a5628fbd839c60375eb738dcf5a580d3 on photoshell:master.

Coverage increased (+0.96%) to 68.78% when pulling a5254143e8d4ee76029a3e0c588a2a1445795d0f on campaul:gtk_image_cache into 9ee8a540a5628fbd839c60375eb738dcf5a580d3 on photoshell:master.


add LF to an empty blockquote rendering (cosmetic)

This way it's more consistent with the reference rendering and does not require a special treatment of spec.txt for testing.

Spec can not define "reference html formatting", and IMHO this LF should not be there. I had more disagreements about formatting in the past, but most of those were fixed. This one still stay there. I think it's better to leave things as is.

Close - rejected:

i don't like how spec generates \n on blockquotes. That's not consistent with other blocks.

We can discuss this again if new reasons appears. Feel free to kick me with any questions. Sorry for rejecting, i respect your time and your intent to make markdown-it better.


[20.09] nginx: Fix off-by-one in DNS resolver heap write

Motivation for this change
Fixes CVE-2021-23027
https://www.openwall.com/lists/oss-security/2021/05/25/5
I originally tried applying https://nginx.org/download/patch.2021.resolver.txt, but that patch for some reason didn't find the src file.
❯ nix-build -A nginx
these derivations will be built:
  /nix/store/vf7sgcpb59jkk60l8aykkmsb1z9aijii-nginx-1.18.0.drv
building '/nix/store/vf7sgcpb59jkk60l8aykkmsb1z9aijii-nginx-1.18.0.drv' on<EMAIL_ADDRESS>unpacking sources
unpacking source archive /nix/store/hxa3gqx34w019jgdjp756pdfwnlq5nry-nginx-1.18.0.tar.gz
source root is nginx-1.18.0
setting SOURCE_DATE_EPOCH to timestamp<PHONE_NUMBER> of file nginx-1.18.0/CHANGES
patching sources
# prePatch ls works!
src/core/ngx_resolver.c
applying patch /nix/store/sc131zdz663kid2crlba7axarykyjirx-nix-etag-1.15.4.patch
patching file src/http/ngx_http_core_module.c
Hunk #1 succeeded at 1657 (offset 74 lines).
Hunk #2 succeeded at 1674 (offset 74 lines).
applying patch /nix/store/zwz37yd9whxjj8inym5vg21b5plp1k0x-nix-skip-check-logs-path.patch
patching file auto/install
applying patch /nix/store/6ib35bgpv3c943csgwhhckzfl3pnr4za-CVE-2021-23017.patch
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- src/core/ngx_resolver.c
|+++ src/core/ngx_resolver.c
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored

Related: #124400
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Added a release notes entry if the change is major or breaking
[x] Fits CONTRIBUTING.md.

Hmm, fetchpatch should work, but you might need to set extraPrefix = ''; since it's a raw un-prefixed patch

Hmm, fetchpatch should work, but you might need to set extraPrefix = ''; since it's a raw un-prefixed patch

Woah black magic. Thank you! Updating in a minute.

nixpkgs-review happy, macos 10.15 apart from devpi-server and devpi-client which hate the sandbox on darwin (#124428)
nixosTests.nginx nixosTests.nginx-etag nixosTests.nginx-pubhtml nixosTests.nginx-sandbox nixosTests.php.fpmhappy, nixos x86_64


GridfunctionCoefficient for VectorDiffusionIntegrator using partial assembly

Dear Developers of MFEM,
Right now I'm working with the navier-stokes mini-app and I'm trying to implement a non-constant viscosity. The current viscosity is a constant and I'm planning to replace it with a  GridFunctionCoefficient. The current code is the following:
      ConstantCoefficient H_lincoeff;
      ConstantCoefficient H_bdfcoeff;

      H_lincoeff.constant = kin_vis;
      H_bdfcoeff.constant = 1.0 / dt;
      H_form = new ParBilinearForm(vfes);
      H_form->AddDomainIntegrator(new VectorMassIntegrator(H_bdfcoeff));
      H_form->AddDomainIntegrator(new VectorDiffusionIntegrator(H_lincoeff));
      if (partial_assembly)
      {
         H_form->SetAssemblyLevel(AssemblyLevel::PARTIAL);
      }
      H_form->Assemble();
      H_form->FormSystemMatrix(vel_ess_tdof, H);

If I change ConstantCoefficient to GridFunctionCoefficient, due to the partial assembly condtion of the navier miniapp, the VectorDiffusionIntegrator calls a AssemblePA from fem/bilininteg_vecdiffusion.cpp and it specifically requires all coefficient to be constant.
   if (Q)
   {
      ConstantCoefficient *cQ = dynamic_cast<ConstantCoefficient*>(Q);
      MFEM_VERIFY(cQ != NULL, "only ConstantCoefficient is supported!");
      coeff = cQ->constant;
   }

My question is the following:
Under the parallel partial assembly setting, can VectorDiffusionIntegrator use gridfunction as coefficient? If it cannot, can we use other operators to achieve same result?
Thanks for your time,

You are correct, it is currently not possible to use any other coefficient than ConstantCoefficient for the viscosity in the navier miniapp due to the limitation in the VectorDiffusionIntegrator integrator.

It looks like in the latest master this is possible by using the libCEED library. @YohannDudouit, is this correct?

You are correct, it is currently not possible to use any other coefficient than ConstantCoefficient for the viscosity in the navier miniapp due to the limitation in the VectorDiffusionIntegrator integrator.

Thank you for the reply. In this case I have a followup question. Based on my understanding of VectorDiffusionIntegrator, it is possible to use GridfunctionCoefficient in the full assembly setting. Can navier miniapp work if the partial assembly is switched to full assembly?
In fact, the program runs in full assembly.

You can use GridfunctionCoefficient in full assembly, yes.
It is also possible to implement GridfunctionCoefficient  support for VectorDiffusionIntegrator in the partial assembly setting. Contributions are always welcome and we can support you in the process when needed.

Using MFEM with the libCEED library also provides support for VectorDiffusionIntegrator, and #1766 adds support for ConvectionIntegrator and VectorConvectionNLFIntegrator, so the mini-app can fully run with libCEED, is it correct @jandrej ?

It should, but it requires a separate branch and the libceed third party library.


FGA not executing skills

Preparation

[X] I tested the latest release
[X] I looked at other issues (even the closed ones)
[X] I read the Troubleshooting Guide

FGO server
JP
FGA build number
1892
Describe the bug
FGA skipped some skills while running. I tried to restart my phone, and it worked normally for the first run, but the bug appeared again when I run the script for the second time.
Video
Here's a screen shot of my script

And here's the video
https://youtu.be/lxOVwufMJxg
Device model
HUAWEI Mate 20
Android version
10
Screen size
No response
RAM
No response

Try increasing Wait Before Turn in the Fine Tune settings.
The popup window for Support Artoria Caster is the targeting for b2.

Try increasing Wait Before Turn in the Fine Tune settings.
The popup window for Support Artoria Caster is the targeting for b2.

I set it to 800 and it still didn't work

same situation in the same build number,device is Asus Zenfone 5z

I have an idea, what happens if you add Target 1 to each wave?
So you command would look like t1b2c2dfh2i25,#,t1a5,#,t1gx31e2gi2j45,#,
If that works, I'll try adding an extra click at the start of the turn in the top right corner. Maybe FGO's tap detection gets messed up on repeats.

I have an idea, what happens if you add Target 1 to each wave?
So you command would look like t1b2c2dfh2i25,#,t1a5,#,t1gx31e2gi2j45,#,
If that works, I'll try adding an extra click at the start of the turn in the top right corner. Maybe FGO's tap detection gets messed up on repeats.

Yes that works now

Please test this APK without the t1 commands: https://github.com/Fate-Grand-Automata/FGA/suites/9431441772/artifacts/445786430
You can make a copy of the battle config first in case it doesn't work.

No this version still needs t1 to work

I turned off the skill speedup, but it still needs t1 to work

I have an idea, what happens if you add Target 1 to each wave?
So you command would look like t1b2c2dfh2i25,#,t1a5,#,t1gx31e2gi2j45,#,
If that works, I'll try adding an extra click at the start of the turn in the top right corner. Maybe FGO's tap detection gets messed up on repeats.

it works! thanks.

The issue doesn't happen on my emulator which runs the game in 16:9 actually. Might be related to the ~20:9 aspect ratio on my phone?

I'm having all kinds of issues with the 1892 build on my 20:9 ratio phone as well (Pixel 7). Cards not identifying, wrong servants being targeted, and freezing scripts when viewing servant details.

Tried 1903, still skips skills without t1

@gino9955 Please check if #1450 (comment) helps

Tried this too, and still getting issues like fail at identifying cards and wrong skill targets.
I'm on Android 13 with 20:9 res.
What fixed it for me so far is using root to screenshot. If anyone else has this problem on rooted phone, maybe you can try this workaround and see if it helps.

Thanks for the tip but sadly my phone isn't rooted, which means I cannot toggle the option.

On pixel 6, the target skill on servant #2 sometime click to the right of servant (between servant 2 / 3 in skill target selection)

I have a Pixel 7 Pro, disabling Navigation Gestures to enable full screen app.
Watching the battles with debug mode on - I noticed that this occurs whenever the game skips or fails face-card check, so most often it fails on repeat battle.

I have a Pixel 7 Pro, disabling Navigation Gestures to enable full screen app.
Watching the battles with debug mode on - I noticed that this occurs whenever the game skips or fails face-card check, so most often it fails on repeat battle.
Was it always the case that FGA skips facecard check on repeats or is that new behavior?

Yes, it always worked like that. What I've noticed in some videos is that FGA suddenly thinks that Servants are dead because the NP bar is not detected.
That's also why face cards can't be associated with Servants anymore. FGA has already marked them as dead so the face cards shouldn't show up anymore.

From my quick test, 1906 seems to have fixed the problem.

Can confirm, the fix works!
Thank you for your hard work @reconman!

1906 works now, thank you!


[SMALLFIX] POM change: Move mockito to dependencyManagement section

So we only set the dependency version in one place of mockito-all

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/Tachyon-Pull-Request-Builder/5755/
Test PASSed.

LGTM


Draft: Fetch only the required podMetrics for the given component

Hey, I just made a Pull Request!
The PodMetrics are now limited by labelSelector like already done for pods and probably other requests to Kubernetes.  This limits the amount of data that is fetched.
Tested locally by modifying app-config.yaml and an example component to use an internal cluster, which leads to the following request size improvements:
Before: 344.71 kB compressed, 6.89 MB uncompressed
After: 12.01 kB compressed, 238.86 kB uncompressed
For the POST http://localhost:7007/api/kubernetes/services/playback-order call, in a Kubernetes cluster with ~500 pods.
Fixes #17450.

:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

This is ready from my side now, a couple notes:

the encode(labelSelector) seems to be required, if the selector is not encoded the filter simply does not seem to apply with the metrics API (this happens both here in Backstage and also when doing a direct request via curl)
not sure why the E2E tests fail, any ideas?

happens locally as well, preventing me to run yarn build:api-reports plugins/kubernetes-backend

/cc @mclarke47

Let merge as is an come back to this


FSPCT: No centaur memory detected after cold reset

No centaur memory was detected after doing a cold reset of the BMC:
System Info:
BMC ip address= <IP_ADDRESS>  name=habcap10.aus.stglabs.ibm.com
OS ip address=<IP_ADDRESS> name=habcap10p1.aus.stglabs.ibm.com
Following is a list of commands that were executed and their outcome:
HOST OS: $ sudo /home/tyan/skiboot/external/xscom-utils/getscom -l
[sudo] password for tyan:

Chip ID
Rev
Chip type

80000005
DD2.0
Centaur memory buffer

80000004
DD2.0
Centaur memory buffer

80000001
DD2.0
Centaur memory buffer

80000000
DD2.0
Centaur memory buffer

00000000
DD2.0
P8 (Venice) processor

ipmitool -H habcap10 -I lanplus -U ${Userid} -P ${Password} mc cold reset
HOST OS: $ sudo /home/tyan/skiboot/external/xscom-utils/getscom -l
[sudo] password for tyan:

Chip ID
Rev
Chip type

00000000
DD2.0
P8 (Venice) processor   <===========  No Centaur Memory

Also attached is an output obtained from the serial port, which shows that the BMC was unable to write/detect these memory.

On Mon, 2015-12-14 at 14:27 -0800, saqibkh wrote:

No centaur memory was detected after doing a cold reset of the BMC:
System Info:
BMC ip address= 94116480 name=habcap10ausstglabsibmcom
OS ip address=94116412 name=habcap10p1ausstglabsibmcom
Following is a list of commands that were executed and their outcome:
HOST OS: $ sudo /home/tyan/skiboot/external/xscom-utils/getscom -l
[sudo] password for tyan:

This isn't a skiboot problem. HostBoot didn't forward the information
about the Centaurs to us.

Chip ID
Rev
Chip type

80000005
DD20
Centaur memory buffer

80000004
DD20
Centaur memory buffer

80000001
DD20
Centaur memory buffer

80000000
DD20
Centaur memory buffer

00000000
DD20
P8 (Venice) processor

ipmitool -H habcap10 -I lanplus -U ${Userid} -P ${Password} mc cold

reset

HOST OS: $ sudo /home/tyan/skiboot/external/xscom-utils/getscom -l

[sudo] password for tyan:

Chip ID
Rev
Chip type

---------
-------
--------

00000000
DD20
P8 (Venice) processor <=========== No Centaur

Memory

Also attached is an output obtained from the serial port, which shows

that the BMC was unable to write/detect these memory

—
Reply to this email directly or view it on GitHub.

Should be closed as not updated for nearly 18 months. Please reopen if needed.


BOUNTY: Submit PR to move all code into appropriate subfolders

Let's keep the root of the repo clean.

Thanks @RomanGoEmpire for clean PR to tidy up the folder structure. I want you to see the changes @daveshap but otherwise I think this is good to close (Although I'm sure we will need periodic codebase cleanup)

There should be some documentation and established rules/guidelines for the structure of folders as mentioned in #77. We should consider alternative names for "shared" . It may become disorganized.
My Initial suggestions are:
memory/storage: for data storage-related items
communication: for managing inter-agent communication
For these projects, we might consider dividing into:
demos: for isolated testing folders
development: for the primary project interacting with various parts of the repository.

Thanks @RomanGoEmpire for clean PR to tidy up the folder structure. I want you to see the changes @daveshap but otherwise I think this is good to close (Although I'm sure we will need periodic codebase cleanup)

Also sorry for breaking the one PR a day rule, but I figured that was preferred over having a broken REPO.

You have an exception @OWigginsHay now. That rule was mainly to tamp down on folks submitting multiple trivial PRs in a row


App header only displaying in MS Teams

We followed the deployment guide and are only seeing the header inside of Teams. We have redeployed several times and are receiving the same result. All resources have been double checked.

Does anyone have time for a Teams meeting to assist? Thanks in Advance!

@JayPdsn , thank you for reporting this issue.
The screenshot you have provided does not detail your error. Please open Teams in your browser, then access the developer tools, launch the app, and share the console logs and network trace to help us troubleshoot the problem. Also, please provide the manifest file that you zipped and uploaded to the Teams Admin.

Thanks for the quick response! Absolutely
TeamsEOCTblShooting.zip

Let me know when you have the files so I can remove from the post.. Thanks

@JayPdsn ,
Yes, we have received the shared files. You may proceed to delete them. We will need some time to review the contents and will provide our feedback accordingly.

Files removed. I definitely understand. Appreciate the help.

@JayPdsn ,
After reviewing the shared logs, it appears that the base resource name may contain capital letters, or the SharePoint Site name could be incorrect. To confirm this, navigate to the Azure Resource group, select 'deployments', and then choose "Microsoft.template". Next, select 'inputs' to check the values that were entered. The Base Resource name should not include any capital letters, and the SharePoint Site name should not include the full URL; it should only be the name of the SharePoint site provisioned in step 1 (for example, the exact site name from the URL, such as 'TeamsEOCSite').
https://github.com/OfficeDev/microsoft-teams-emergency-operations-center/wiki/Deployment-Guide#3-deploy-to-your-azure-subscription

The base resource name does look correct (all lowercase).
It does look like the the full URL was entered. Is this editable? Do we have to remove the resource group and redeploy?

Okay we will delete the teocresourcegroup and redeploy. I will let you know if this works. Thank you much for the help.

That worked. Thanks


Underscores in comment Urls

Fixes #128 by not issuing a diagnostic in case a non-doubled underscore is found in an URL.

not issuing the diagnostic is incorrect, if we are in fact undoubling underscores. The point of the diagnostic is that if __ will be turned into _ then _ alone is probably an error, even though it will be preserved.

not issuing the diagnostic is incorrect, if we are in fact undoubling underscores.

Indeed in CommentItem comment section, unescape_text is supposed to be run for Urls. In that case, the issue #128 is not an issue and does not need to be fixed. In set.mm however, no underscore is doubled in Urls. This boils down to what we want the standard to be.

I'm making use of this PR to fix the behaviour of underscores in HTML.
The comments clearly states:

In HTML mode subscripts and italics are disabled, and HTML markup is interpreted

So there is no point to escaping underscores in HTML mode.

Superceded by #130 .


[5.4] Don't use uuid package in http file helper

We don't need this dependency in our HTTP package, and actually, it was forgotten to be added to the illuminate/http composer.json anyway! Just asking for a random string from our support package is absolutely fine for this use case.

(5.4 Changelog)[https://github.com/laravel/framework/blob/5.4/CHANGELOG-5.4.md#filesystem] should be updated then.

I'm sure @tillkruss will get to it soon. It's not urgent the changelog is perfect until 5.4.0 is tagged anyway. :)


Friends - Sometimes "Add Friend" button doesnt work after pasting did

Issue: Sometimes after pasting your did the add friend button will be available but clicking it won't do anything
Screenrecording:
https://user-images.githubusercontent.com/93608357/214207184-73d0b463-c3f5-4c16-bb43-7816417502d4.mov

Ran into this error once today, going to see if I can replicate again throughout the night


Unaligned reference warnings on packed structures

I'm getting unaligned_references warnings using serde_derive on packed  structures.  From #1747 and #1813 it seems like this should have been fixed since these structures also impl's Copy.
Here's a minimal example that reproduces what I'm seeing w/ serde 1.0.127
use serde;

mod other {
    #[repr(C, packed)]
    #[derive(Debug, Copy, Clone, PartialEq, Default)]
    pub struct paramval<'a> {
        pub val_or_len: i32,
        pub places: u8,
        pub type_: u8,
        pub buf: &'a [u8],
    }
}

#[derive(serde::Serialize, serde::Deserialize)]
#[serde(remote = "other::paramval")]
struct ParamVal<'a> {
    val_or_len: i32,
    places: u8,
    type_: u8,
    buf: &'a [u8]
}

fn main() {}

cargo build

⣿
Standard Error

   Compiling playground v0.0.1 (/playground)
warning: reference to packed field is unaligned
  --> src/main.rs:15:10
   |
15 | #[derive(serde::Serialize, serde::Deserialize)]
   |          ^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(unaligned_references)]` on by default
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
   = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
   = note: this warning originates in the derive macro `serde::Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)

warning: reference to packed field is unaligned
  --> src/main.rs:15:10
   |
15 | #[derive(serde::Serialize, serde::Deserialize)]
   |          ^^^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
   = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
   = note: this warning originates in the derive macro `serde::Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)

warning: struct is never constructed: `ParamVal`
  --> src/main.rs:17:8
   |
17 | struct ParamVal<'a> {
   |        ^^^^^^^^
   |
   = note: `#[warn(dead_code)]` on by default

warning: 3 warnings emitted

    Finished dev [unoptimized + debuginfo] target(s) in 1.09s
     Running `target/debug/playground`

playground link
The packed structures are generated using bindgen and represent data received via a serialport stream.  I could drop the packed repr generation in bindgen but that would prevent other users from using direct memory transmutes if they wanted to skip over the serde bindings.

Thanks for the report! I've published a fix in serde_derive 1.0.129.
Note you'll need to add repr(packed) or repr(C, packed) on your copy of the struct to match the remote one.
#[derive(Serialize, Deserialize)]
#[serde(remote = "other::paramval")]
#[repr(packed)]
struct ParamVal<'a> {
    val_or_len: i32,
    places: u8,
    type_: u8,
    buf: &'a [u8]
}


Texure Viewer displays completely black instead of showing textures or render targets

Description
Texure Viewer displays completely black instead of showing textures or render targets
Repro steps

Capture a rdc file on android.
Open it on PC(Local mode).

Environment

v1.4
Capture rdc file on Android 5.1 and Open it on Windows 10.
OpenGL ES

RenderDoc_2019.07.22_17.32.12.log

Android 5.1 is not supported, RenderDoc's minimum requirement is Android 6. Also when capturing on Android it is quite possible to encounter errors if you replay anywhere else than that exact device, due to different extension/feature support and driver bugs on GLES.
It generally does not work to open Android captures on PC - GLES support on PC is not great and I've only found NV's emulation to work reliably. Your Intel driver is displaying a number of errors which may be driver issues (the driver is almost 3 years old) or incompatibilities between the Android device and the PC.


Fix #10764 LineEdit: Caret Blink & Speed Resetting

This reverts commit 4f54e721895d44ded7b49fe6d6138a97d56d456b whgich was causing the caret to be reset to default values everytime the scene was entered.

CC @Paulb23

Nice job tracking down whats causing the issue but I don't think reverting is the answer to this one.... else caret_blink will not work for line_edit in the editor.

I also don't think a revert is the proper fix.


how to get private key as hex and switch test net bitcoin ?

how to get private key as hex and switch test net bitcoin ?

How to generate wallet address for Bitcoin Test net ?


Reference error on Async

I don't understand why, but after running meteor install meteorhacks:async, I am unable to use Async.<anything>.  I get a ReferenceError.  I've spent hours trying to find some reason why, but I've found nothing.  I had already installed meteorhacks:npm, and I thought async was already part of it, since they are documented together.  But I got the ReferenceError before installing async and still get it after.  Any idea what could be wrong?

same error here, @gargleblaster did you find a solution? some missing package

Async only on the server side of your app. You may try to use it in the client. I think that's the issue here.


Symfony support

Bug report

Question
Answer

Box version
3.8.1@05198b8

PHP version
7.3.10-1+ubuntu18.04.1+deb.sury.org+1

Platform with version
Ubuntu 18.04.3 LTS

Github Repo
https://github.com/chapterjason/Versio

Currently, trying use box to create a single phar. The project is based on symfony, which makes some kind of issues.
I think it also could be some misconfiguration.
1. Compression issue
It looks like the activated compression lets the requirements-checker fail.

box.json.dist
{
   "main": "bin/versio",
   "output": "build/versio.phar",
   "compression": "GZ",
   "force-autodiscovery": true,
   "directories": [
       "config"
   ],
   "files": [
       ".env.local.php",
       "LICENSE"
   ]
}

Output
$ composer install --optimize-autoloader
$ composer dump-env prod
$ php bin/console cache:clear --env=prod
$ php bin/console cache:warmup --env=prod
$ box build
$ ./build/versio.phar -vvv
> PHP Warning:  require(phar://box-auto-generated-alias-ae33e6545cd2.phar/.box/bin/check-requirements.php): failed to open stream: phar error: internal corruption of phar "/[...]/Versio/build/versio.phar" (actual filesize mismatch on file ".box/bin/check-requirements.php") in /[...]/Versio/build/versio.phar on line 12
>
> Warning: require(phar://box-auto-generated-alias-ae33e6545cd2.phar/.box/bin/check-requirements.php): failed to open stream: phar error: internal corruption of phar "/[...]/Versio/build/versio.phar" (actual filesize mismatch on file ".box/bin/check-requirements.php") in /[...]/Versio/build/versio.phar on line 12
> PHP Fatal error:  require(): Failed opening required 'phar://box-auto-generated-alias-ae33e6545cd2.phar/.box/bin/check-requirements.php' (include_path='.:/usr/share/php') in /[...]/Versio/build/versio.phar on line 12
>
> Fatal error: require(): Failed opening required 'phar://box-auto-generated-alias-ae33e6545cd2.phar/.box/bin/check-requirements.php' (include_path='.:/usr/share/php') in /[...]/Versio/build/versio.phar on line 12

2. Container dump
Looks like the container wants to dump.

box.json.dist
{
   "main": "bin/versio",
   "output": "build/versio.phar",
   "force-autodiscovery": true,
   "directories": [
       "config"
   ],
   "files": [
       ".env.local.php",
       "LICENSE"
   ]
}

Output
$ composer install --optimize-autoloader
$ composer dump-env prod
$ php bin/console cache:clear --env=prod
$ php bin/console cache:warmup --env=prod
$ box build
$ ./build/versio.phar -vvv
> Box Requirements Checker
> ========================
>
> > Using PHP 7.3.10-1+ubuntu18.04.1+deb.sury.org+1
> > PHP is using the following php.ini file:
>   /etc/php/7.3/cli/php.ini
>
> > Checking Box requirements:
>   ✔ The application requires the version "^7.1.3" or greater.
>   ✔ The application requires the extension "ctype".
>   ✔ The application requires the extension "iconv".
>   ✔ The application requires the extension "json".
>   ✔ The package "symfony/framework-bundle" requires the extension "xml".
>
>
>  [OK] Your system is ready to run the application.
>
>
>
> In Filesystem.php line 661:
>
>   [Symfony\Component\Filesystem\Exception\IOException]
>   A temporary file could not be created.
>
>
> Exception trace:
>   at phar:///[...]/Versio/build/versio.phar/vendor/symfony/filesystem/Filesystem.php:661
>  Symfony\Component\Filesystem\Filesystem->tempnam() at phar:///[...]/Versio/build/versio.phar/vendor/symfony/filesystem/Filesystem.php:690
>  Symfony\Component\Filesystem\Filesystem->dumpFile() at phar:///[...]/Versio/build/versio.phar/vendor/symfony/http-kernel/Kernel.php:754
>  Symfony\Component\HttpKernel\Kernel->dumpContainer() at phar:///[...]/Versio/build/versio.phar/vendor/symfony/http-kernel/Kernel.php:577
>  Symfony\Component\HttpKernel\Kernel->initializeContainer() at phar:///[...]/Versio/build/versio.phar/vendor/symfony/http-kernel/Kernel.php:133
>  Symfony\Component\HttpKernel\Kernel->boot() at phar:///[...]/Versio/build/versio.phar/src/Application.php:60
>  Versio\Application->registerCommands() at phar:///[...]/Versio/build/versio.phar/src/Application.php:46
>  Versio\Application->doRun() at phar:///[...]/Versio/build/versio.phar/vendor/symfony/console/Application.php:149
>  Symfony\Component\Console\Application->run() at phar:///[...]/Versio/build/versio.phar/bin/versio:18
>  require() at /[...]/Versio/build/versio.phar:14

Sorry for the too early created issue. I notice that the requirements checker can be disabled but will still be executed, like descriped in the docs. There is also an issue with symfony I think, aber clear and warmup the container dump is not fresh, aber executing the command once with -q the dump ist fresh, do not know what happen there.

There is non-trivial consideration when dealing with a Symfony application indeed. I recommend you to have a look at https://github.com/humbug/box/blob/master/doc/symfony.md#symfony-support which should go through those points. If it's still not clear feel free to open an issue to ask for clarifications


✏ Add quotes to package name that includes brackets in docs

From poetry's docs:

Some shells may treat square braces ([ and ]) as special characters. It is suggested to always quote arguments containing these characters to prevent unexpected shell expansion.
https://python-poetry.org/docs/cli/#add

Great, thanks @gjolga! 🍰


TMX sprite disappears

axmol version:fe4b7622660ebe28832d3feca9537c962a6202be
devices test on: linux x86_64
Steps to Reproduce:
auto map = TMXTiledMap::create("map.tmx");
auto sprite = map->getLayer("Layer_0")->getTile(Vec2(2, 18);

sprite is not null but it disappear from my scene after lasts commits in FastTMX code, behaving different from old code.

This figure is showed in bc0b7da754c984f21a2ed82f22c3167a05435677
but now after 4c2856998abfc9a597994e96d1373982e27cd801 it shows me only a black screen, noticed the sprite was flipped in tiled

BugFlip.zip

Out of curiosity I tested the supplied code, and noticed that this line in 'FirstScene.cpp' is causing the issue, but I don't know why:
front_map->getLayer("inalayer")->getTileAt(Vec2(2, 18));
If you comment it out, then the tile appears and animates correctly (when compared to what is in Tiled).
Also, just for future reference, when providing test code, it's best to reduce it to the least possible amount of code to reproduce the issue.  The code provided contains a ParallaxNode that has been applied to the tiled map, but has nothing to do with the issue, and just serves to complicate things.

It looks like the tile flags aren't being stored when a Sprite is created for a tile, and also the incorrect coordinates are being passed every time an existing sprite is being used to draw a tile on the screen.

after I do getTileAt the sprite create is not flipped there is a way to me check this flag from tmx in axmol ?

@Joilnen What do you mean? With the current implementation the tile sprite in Axmol looks exactly the same as what is shown in the Tiled app.
What exactly is wrong with it?

I can get flipped flag doing getTileGIDAt right ?

Show an example of what you mean. A picture is worth a thousand words, so take a screenshot of the tile in your app, and the same tile from Tiled, and post them here.  Label each one as "Expected" (what you see in Tiled) and "Actual" (what you see in your app).

yes I supposed the last changes in TMX support code would gives me a flipped sprite already, but it is ok thanks your patch works fine.

I'm sorry, I don't understand what you keep mentioning the flipped sprite, or what the issue is that you're having.
The current code in axmol displays the tile exactly how it is displayed in Tiled, and that includes rotations etc.
If you're comparing Axmol to Cocos2d-x and you're seeing different output from both, then what you're stating would make more sense, because Cocos2d-x has a bug, and that bug was fixed in Axmol (by @DelinWorks).

Here you can see that Flipped sprites only works when animated after you make getTileAt, this is what I mean
BugFlip.zip

@rh101 I think what @Joilnen meant to say is that when you try to take a tile from a tmx map and render it as a sprite, the rotation/flipped flags should apply to that sprite and rotate/flip said sprite accordingly, weirdly enough the sprite is rendered based on tiled flags and is shown rotated/flipped but only and only if the sprite is animated. Sorry @Joilnen if I misinterpreted something.

@Joilnen Thank you for providing the new test, because now the issue is clear.
Expected (from Tiled) is this:

Actual output from Axmol:

That should not be happening, and points at a completely separate problem, so it's best you create a new separate issue entry for it.

It's now displaying correctly with the change in #1114


Reset app configuration on fresh installation according default values

In V3, before test / dev / build command, now the app config file is automatically checked and fixed:
f2c79c6455ec472e9750b1cc12c05b6c88ac7e6d


Version branches

@fchollet  I'd like to ask for something like what they do over sklearn: a branch with the name of a version is kept for future refere. Check it out:
https://github.com/scikit-learn/scikit-learn
That would be useful for reproducibility as well.

Why a branch and not just a git tag?
Le 25 mars 2016 23:35, "Eder Santana"<EMAIL_ADDRESS>a écrit :

@fchollet https://github.com/fchollet I'd like to ask for something
like what they do over sklearn: a branch with the name of a version is kept
for future refere. Check it out:
https://github.com/scikit-learn/scikit-learn
That would also be useful for reproducibility as well.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/fchollet/keras/issues/2086

Good question. We already have git tags for all previous versions. What
would be the benefits of a branch?
On Mar 26, 2016 13:03, "Frédéric Bastien"<EMAIL_ADDRESS>wrote:

Why a branch and not just a git tag?
Le 25 mars 2016 23:35, "Eder Santana"<EMAIL_ADDRESS>a écrit :

@fchollet https://github.com/fchollet I'd like to ask for something
like what they do over sklearn: a branch with the name of a version is
kept
for future refere. Check it out:
https://github.com/scikit-learn/scikit-learn
That would also be useful for reproducibility as well.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/fchollet/keras/issues/2086

—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/fchollet/keras/issues/2086#issuecomment-201920488

well, yeah, I guess I can just click through the tags and get to the code online. Did see that before. tkx!

For us the benefits of using branches for releases is to make it easy to backport critical bug fixes to an already released version, without having to sync to master.

You don't need a version branch for that. We just did a 0.8.1 release that
only have a tag. I'm not sure if tag get tested by travis, if not, then a
version branch would be useful.
On Mon, Mar 28, 2016 at 5:15 AM, Gilles Louppe<EMAIL_ADDRESS>wrote:

For us the benefits of using branches for releases is to make it easy to
backport critical bug fixes to an already released version, without having
to sync to master.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/fchollet/keras/issues/2086#issuecomment-202317389

Replying to myself, a version branch like 0.8.X can be useful to
incrementatally back-port commits. It would also allow user to track it
more easily and update to the branch version more easily.
We are starting to do that for Theano and we should release an 0.8.2
version this week or next week with cudnn v5.
On Thu, Mar 31, 2016 at 11:55 AM, Frédéric Bastien <
<EMAIL_ADDRESS>wrote:

You don't need a version branch for that. We just did a 0.8.1 release that
only have a tag. I'm not sure if tag get tested by travis, if not, then a
version branch would be useful.
On Mon, Mar 28, 2016 at 5:15 AM, Gilles Louppe<EMAIL_ADDRESS>wrote:

For us the benefits of using branches for releases is to make it easy to
backport critical bug fixes to an already released version, without having
to sync to master.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/fchollet/keras/issues/2086#issuecomment-202317389


webSignupConfirmation GraphQL query generating 500 errors in Gambit

BUG
Current Behavior

When Gambit receives a web signup request and the campaign does not have a webSignup topic setup, it errors out with a 500 error that seems to come from GraphQL.

Desired Behavior

When Gambit receives a web signup request. It should be able to ignore if the campaign has no webSignup topic setup in Contentful.

Steps to Replicate

Send a web signup request to a member with a campaign with no webSignup topic setup in Contentful.

Why This Matters
Yesterday (April 4th, 2019), we experienced an uptick in traffic in web that generated a high amount of signup requests. This requests failed each time, creating a monitoring alert due to the re-trying mechanisms in Blink.
Part of the actions taken was to shutdown the Blink worker that processes web signup confirmations. Confirmed with PM and Staff Engineer that this was a good course of action since the desired behavior is to actually ignore the requests.
Relevant Screenshots + Links

Alert & investigation
Sample of the error in Papertrail

Mon, April 8th.
Since we discovered the uptick in phoenix-next signup confirmation request to Gambit last Thursday April 4th. There have been 6,390+ requests queued to be relayed. This high amount of signups over the weekend seems suspicious to me, but I don't have solid numbers to compare if it's indeed way up in comparison. What makes the errors generated by these requests suspicious is that I did not find any instance of the errors in Gambit prior to April 4th in Papertrail. They just started happening in April 4th.
Link to the April 4th discussion on this failed requests. https://dosomething.slack.com/archives/C02BBP0CU/p1554405662042000

The last deploy to Gambit Production was on April 1st. This excludes a deployed change in Gambit as the possible culprit of this errors since we would have expected to see instances of them dating back to April 1st.

Could it be related this this graphql change? https://dosomething.slack.com/archives/C02BBP0CU/p1554396420036500 Know that we had to make changes on production here https://dosomething.slack.com/archives/C03T8SDJJ/p1554478464009100

Re:

Could it be related this this graphql change? https://dosomething.slack.com/archives/C02BBP0CU/p1554396420036500 Know that we had to make changes on production here https://dosomething.slack.com/archives/C03T8SDJJ/p1554478464009100

I don't think that specific problem is related to these uptick in signup confirmation requests, however, this other 🐛 that was just patched today might be https://github.com/DoSomething/graphql/pull/97, but I haven't really looked into it.

Yup, just wanted to flag it because that GraphQL change happened on April 4!

🤔 Definitely suspicious! I was referring to the URL change specifically. There could have been some other changes deployed in tandem with that PR that is causing this.

@DFurnes It's been a few months since the Signup relay worker was stopped in Blink. We should add a rainy day Platform card to patch this small but annoying problem. I have to manually purge the signup relay worker every so often so it doesn't accumulate too many messages.
 I remember I read some conversation about this possibility @ngjo @aaronschachter .

@rapala61 Thanks for following up on this! I can create a ticket once we've figured out whether we want to address this specific bug in Gambit or by disabling this functionality altogether.

I wouldn't remove this functionality yet, I know that the team wanted to consider ways to use this trigger to better engage/onboard a user to the action. I'll bring it up again -- it'd be useful to understand what the lift would be to address the bug so that we can compare against the value of them using it.

I was testing locally yesterday by passing campaignId values that don't have Gambini campaign entries, and kept getting a 204 status, not a 500 status as this issue would suggest should happen. This might have been fixed by the way of https://github.com/DoSomething/graphql/pull/103, where we stopped caching the list of webSignupConfirmation items in GraphQL, and the resulting changes in https://github.com/DoSomething/gambit/pull/505.
Digging a little deeper to try to find exactly what the problem is and leaving these notes here for now:

https://github.com/DoSomething/graphql/pull/47 - stitches the webSignupConfirmation to a Rogue campaign, which sounds like it could cause the bug this issue was opened for

https://github.com/DoSomething/gambit/pull/467 is the PR that began querying GraphQL for signup confirmations instead of the long-dead Gambit Content/Campaigns application. Hard to know when we stopped setting the web signup confirmation messages in general though, whether it was before we deprecated Gambit Content.

@aaronschachter based on the last iteration of working around this reported bug. Should we close this?

Sounds like it! The signup confirmation messages have been on for a while now.


Fix the deprecated create_function for PHP 7.2

Replaces #60
Fixes https://github.com/PrestaShop/PrestaShop/issues/13015

ping @sarahdib

@eternoendless
The module is not display properly  :

Normally is like that :

@sarahdib I don't think the display issues is related, I'll rebase the PR and let you check it out again.


Uniformize start dialogs

Start game dialogs uses either a custom component or a sweetalert, leading to disparate styles.
We could also share more CSS between these custom components (mostly around settings).

Convert dialogs using sweetalert to custom components.

[x] Winston (ba53248)
[x] Winchester
[x] Grid
[x] Glimpse/Burn
[x] Minesweeper (c4a95bd)

Extract common CSS and use it everywhere.

I like the reset buttons you put to all dialogs and that they are now styled identical.
The minesweaper dialog is also fixed for me. 👍

Though, the font issue from https://github.com/Senryoku/Draftmancer/issues/539 is now persistent across all dialogs since they are all custom components now.

old:

new:

There is also a scrollbar visible on the side now. :)

Both of these issues are still an Edge only issue for me. On Firefox, the font looks better (same old one from before) and there is no scrollbar:

Ah, the font issue was Edge specific, that makes more sense! Just committed a fix for that.
No clue why the scrollbar behavior differs though.


rebar3 should warn or fail on unknown config options

One of the problems I have encountered with rebar2 was silent failure when an old version of rebar was used that ignored unknown options in rebar.config.
I think a saner behaviour would be to fail or at least warn the user when rebar.config has an unknown config.

Yes and no. The problem is that this mechanism requires to either:
a) have all plugins and providers tell us what config options they expect
b) not support plugins requiring config options we know nothing about
You can see why I don't think this is the best idea, as it severely limits extensibility.

while failing on unknown input is bad i don't think it's a bad idea for there to be a rebar lint provider that can identify unknown or deprecated config options. providers could optionally have a callback that identifies what config options they support/expect. we could maybe unify it with the getopt support we have for the command line flags even

A linter sounds like a good compromise. I am however still in favour of failing on unknown options and forcing all plugins/providers to explicitly list the options they understand and even make it impossible to access any other option not listed.

Failing on unknown config means we're basically gonna have a very bad time moving up from rebar2 and may stall adoption for good because low transitive deps can break entire builds for possibly relying on an old rebar option for dialyzer, quickcheck, or whatever non-vital option that has been superceded or dropped since then.
I'm 100% opposed to it. It's a great way to explode projects on minor unimportant details and I hate it.

Yea, only a lint would be the only option.

I see your point. Shall I close this issue then?


add fh8626v100 sample code

Issue #, if available:
Description of changes:
add fh8626v100 sample code
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Hi @Dahua1992 , thanks for your PR!
Please remove source files in 3rdparty/FH8626V100/* if those are part of FH8626V100 SDK. We may add instructions to help users put SDK by themselves to keep source tree clean.

Closing old PR, move to #55 instead


Fixed some spelling and formatting errors in readme

Merge if you like the changes!

Updated through another PR, so closing this one.


Include text  command used prior to showing its use in the video.

I on the project page there is a demo of the use of a11ywatch crawl --url https://a11ywatch -d -n -s > results.json, which should be something that anyone connected to the internet should be able to run.
It is good to have the super short video for folks to see the expected results, but better to copy the text directly, than try to type it out after pausing the video.
Also, "Found argument '-d' which wasn't expected, or isn't valid in this context" and "Found argument '-n' which wasn't expected, or isn't valid in this context" in my instance. But that's really an afterthought.
Might also be useful to provide an example of what the results.json should look like, so that people know what a successful scan looks like.

@mgifford Thanks for the feedback. All of the commands and flags are available on the latest CLI v0.8.0 and above. I saw initially you had 0.2.0 in one of the issue posts. Going to add what version is being used and commands upfront before the video, thanks!

The -d flag is only for crawl. The video shows this command a11ywatch crawl --url https://a11ywatch -d -n -s > results.json.

Ok, so there is progress:
% a11ywatch crawl --url a11ywatch -d -n -s > results.json
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: tonic::transport::Error(Transport, hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 61, kind: ConnectionRefused, message: "Connection refused" })))', /Users/mgifford/.cargo/registry/src/github.com-1ecc6299db9ec823/a11ywatch_cli-0.8.23/src/rpc/client.rs:51:44
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

This would align with the error I'm seeing from the home page on localhost.

Commands for scan:
 a11ywatch scan --help
a11ywatch-scan
Single page scan a website url for issues

USAGE:
    a11ywatch scan [OPTIONS] --url <URL>

OPTIONS:
    -e, --external     whether to use the a11ywatch external api
    -f, --fix          attempt to fix the code being applied with recommendations
    -h, --help         Print help information
        --noout        disable stdout (useful for CI usage and large outputs)
    -s, --save         save the results of the scan to tmp
    -u, --url <URL>    target url to scan

The -d flag for crawl enables debug mode and logs the streams. The single scan is a request and does not stream reason for not having the flag. When using localhost you need to use the name of your computer since docker localhost is connecting to the internal containers.

This command can help when needing to test local websites on your machine a11ywatch crawl --url $(hostname):3000 replace 3000 with the port.

@mgifford try to leave some memory on the host OS, since the IO is done using the system kernel. If allocating to much memory to the container the experience will not be so great.
If you have 64 gb the best specs atm for the docker setup would be to put around 16gb of memory.
I use my current machine to build a lot which for Rust takes a long time. Some of the examples may show slow results on my end since, I am not trying to shutdown active deploys. Mainly just the darwin m1 builds are done on my machine.
Going to add the resource allocation section soon to the docs too.

I've just got 32GB on this machine. I should have gotten more when I was buying it.  Always seems like a lot, but mostly because I've been using computers for too long. I can bump up the usage to 16GB and see how that works.
My Ubuntu machine is running a11ywatch_cli 0.2.14 still. Haven't been able to upgrade it yet.
% a11ywatch crawl --url a11ywatch.com -d -n -s > results.json
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: tonic::transport::Error(Transport, hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 61, kind: ConnectionRefused, message: "Connection refused" })))', /Users/mgifford/.cargo/registry/src/github.com-1ecc6299db9ec823/a11ywatch_cli-0.8.23/src/rpc/client.rs:51:44
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

% a11ywatch scan --url https://a11ywatch.com
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: tonic::transport::Error(Transport, hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 61, kind: ConnectionRefused, message: "Connection refused" })))', /Users/mgifford/.cargo/registry/src/github.com-1ecc6299db9ec823/a11ywatch_cli-0.8.23/src/rpc/client.rs:31:44
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

@mgifford agreed on the memory parts. I have 64gb and can barely cross build certain projects that A11yWatch uses. The CLI used to have a note that changes can break between 0.1-0.3 etc. Moving forward on 0.8 and above compatibility should stay stable. The problem with the older CLI version was it depended on some endpoints that have changed in the images since it pulls the latest builds. Until v1 we are keeping it to tagging the images without versions.

Might be useful to put that in the requirements too.
Mike


backend: suggest API for 'ML models' not working properly for 'service_suggest' field

Affected module
Does it impact the UI, backend or Ingestion Framework?
Backend
Describe the bug
A clear and concise description of what the bug is.
The suggest API for 'ML model' assets in not working properly for the service_suggest field.
To Reproduce
Screenshots or steps to reproduce
https://user-images.githubusercontent.com/51777795/214213850-66126f04-85f1-4fa4-a10c-a0b84ffb3356.mov
Request URL: /api/v1/search/suggest?index=mlmodel_search_index&field=service_suggest&q=mlflow
Response object:
{
    "suggest": {
        "metadata-suggest": [
            {
                "text": "ml",
                "offset": 0,
                "length": 2,
                "options": []
            }
        ]
    }
}

Expected behavior
A clear and concise description of what you expected to happen.
Version:

OS: [e.g. iOS]
Python version:
OpenMetadata version: [e.g. 0.8]
OpenMetadata Ingestion package version: [e.g. openmetadata-ingestion[docker]==XYZ]

Additional context
Add any other context about the problem here.

As discussed on Slack, suggest is not the right way to search with in aggregations.


Serial.printf() does not exist

Download. Install library. Compile. Error "Compilation error: 'class HardwareSerial' has no member named 'printf'; did you mean 'print'?"

This should not be the case if you successfully include #include "Arduino.h"


Being able to generate enums that are not related to an Entity

Overview of the issue
JDL is able to generate an enum that is used by an entity, but ignores any enum that has no relation.
Motivation for or Use Case
Most of the time, enums are related to Entities, but some can be used only by services. It would be good to have JHipster generating them too.
Reproduce the error
Take a simple JDL file. The entity Contract has an enum ContractType. Both, the entity and the enum are genreated by JHipster. On the other hand, Metadata is an enum that has no relation to any entity, but will be used by a service. Metadata is ignored and JHipster does not generate anything. It would be good if it could.
entity Contract {
    price Integer,
    discountRate Float,
    vatRate Float,
    contractType ContractType
}

enum ContractType {
    SPONSOR_AGREEMENT, INVOICE
}

enum Metadata {
    TENANT, EVENT, SPONSOR
}

JHipster Version(s)
<EMAIL_ADDRESS>/Users/agoncal/Documents/Code/Quantixx/temp/noenum
└──<EMAIL_ADDRESS>

JHipster configuration, a .yo-rc.json file generated in the root folder

.yo-rc.json file

{
  "generator-jhipster": {
    "promptValues": {
      "packageName": "io.quantixx.sponsor"
    },
    "jhipsterVersion": "4.10.2",
    "baseName": "noenum",
    "packageName": "io.quantixx.sponsor",
    "packageFolder": "io/quantixx/sponsor",
    "serverPort": "8080",
    "authenticationType": "jwt",
    "hibernateCache": "ehcache",
    "clusteredHttpSession": false,
    "websocket": false,
    "databaseType": "sql",
    "devDatabaseType": "h2Memory",
    "prodDatabaseType": "postgresql",
    "searchEngine": false,
    "messageBroker": false,
    "serviceDiscoveryType": false,
    "buildTool": "maven",
    "enableSocialSignIn": false,
    "enableSwaggerCodegen": false,
    "jwtSecretKey": "replaced-by-jhipster-info",
    "clientFramework": "angularX",
    "useSass": false,
    "clientPackageManager": "yarn",
    "applicationType": "monolith",
    "testFrameworks": [],
    "jhiPrefix": "jhi",
    "enableTranslation": false
  }
}

JDL for the Entity configuration(s) entityName.json files generated in the .jhipster directory

JDL entity definitions

entity Contract (contract) {
  price Integer,
  discountRate Float,
  vatRate Float,
  contractType ContractType
}

enum ContractType {
  SPONSOR_AGREEMENT,
  INVOICE
}

Environment and Tools
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
git version 2.14.2
node: v8.7.0
npm: 5.4.2
bower: 1.8.0
gulp:
[14:39:23] CLI version 1.3.0
yeoman: 2.0.0
yarn: 1.2.1
Docker version 17.10.0-ce, build f4ffd25
docker-compose version 1.17.0-rc1, build a0f95af

I didn't know that, that's a bug. I'll check it.

No it's not a bug. JHipster currently only generate enums that are associated to an entity.

@cbornet thanks for the clarification... What about Antonio's use case though? It stands.

Unless I'm wrong,  the only code that JHipster would generate in this case is the java enum, so it seems to me it would go against policy #2.

@gmarziou Hi! Even though the use case is somewhat valid from a generation viewpoint (a bit stretched though I admit as we dont yet generate services from scratch), I guess you're right.

What about adding this to Enriching the JDL grammar ?

The problem is if its added in grammer it needs to be implemented in the
generator as well. And as @gmarziou said creating enums really doesn't have
any value as it will be exactly same code you write in jdl put inside a
java file. But we would have to write a lot if code to do that which seems
overkill
On 3 Nov 2017 7:51 am, "Antonio Goncalves"<EMAIL_ADDRESS>wrote:

What about adding this to Enriching the JDL grammar
https://github.com/jhipster/jhipster-core/issues/141 ?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jhipster/jhipster-core/issues/167#issuecomment-341632302,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABDlF8Q4GXrDCj5HvFKISN5T3p33Nsbqks5syrfugaJpZM4QPsvi
.

I understand. The idea behind enriching the grammar, being able to generate repository methods, enums.... is to have the JDL being the spine of an application. Again, that could be specific to us, but once the JHipster code is generated, we do not change it, we only add extra classes. So, for us, the more JHipster can do, the better.
Closing this issue... but referencing it from https://github.com/jhipster/jhipster-core/issues/141 ;o)

Hello, I would like to know how I can to create a complex enum in jdl studio? Something like this:
public enum Equipo
{
BARÇA("FC Barcelona",1), REAL_MADRID("Real Madrid",2),
SEVILLA("Sevilla FC",4), VILLAREAL("Villareal",7);
private String nombreClub;
private int puestoLiga;

private Equipo (String nombreClub, int puestoLiga){
	this.nombreClub = nombreClub;
	this.puestoLiga = puestoLiga;
}

public String getNombreClub() {
	return nombreClub;
}

public int getPuestoLiga() {
	return puestoLiga;
}

}
Thanks

@asjrosabal for the moment you cant. Its not supported


Update Android performance tests

Use Android 3.0 now that it is stable, making it much more
important to test against than Android 2.3.
The Android studio Sync mockup was ignoring the fact that
Studio also runs some tasks. This commit corrects this to
make the test more realistic.

We should have done this earlier, there already was a small uncaught regression for the k-9 project.