Add URLs on API key registration

It would be cool to provide user directly link to API key registration or at least documentation that explains how to get API key. I created x-apiClientRegistration extension and mark couple or APIs.
I need help to with the rest of APIs, task is very simple just add x-apiClientRegistration into appropritate patch.yaml and submit PR. Here is example.

+1 for the issue
What if you have to sign up for some account on the provider website first, then create a key pair for the API? A very common workflow.
Link to the "user account sign up" or "API key creation"? Most websites will just prompt you for sign in/up when you visit the latter one without being signed in, so I'd propose to go for the 2nd option.

@oliver-xapix-io Definitely "API key creation", because all "API key creation" pages link to "user account sign up" but not vice versa.


Theme: Undefined subroutine embed_scripts() after Webmin 1.810 update

Hi,
After update the webmin to 1.810 and authentic theme to 18.10 i get this error wen i try to open webmail.

HTTP/1.0 500 Perl execution failed Server: MiniServ/1.690 Date: Wed, 10 Aug 2016 10:37:52 GMT Content-type: text/html; Charset=iso-8859-1 Connection: close
Error - Perl execution failed
Undefined subroutine &WebminCore::embed_scripts called at /usr/share/usermin/authentic-theme/authentic.pm line 223.

Server system: Debian 7
My system: Debian 7
My browser: Firefox
Thanks

Hi,
This happens because embed_scripts() has been removed and Webmin is using cached version of the authentic.pm

In case the solution above doesn't work, please restart the server.

The problem is fixed after restart the server.
Thank you qooob

I restart then it's fixed, but when I enter usermin from webmin's "Login to Usermin" from "Users & Groups" module & enter one of user, it happen again. But before it happen, the css & javascript doesnt work.
Here's the screenshoot

You need to upgraded the theme for Usermin from Webmin manually.

It works normally now!! Thanks!!

You're welcome.


No configuration for setting PoolProperties.removeAbandoned in io.dropwizard.db.DataSourceFactory.java

There seems to be not any support for passing removeAbandoned parameter value to the tomcat jdbc pool through dropwizard 7 database config. Is there any way we can set this property?

we are facing the same issue with a lot of our DB threads going in abandoned state .

+1 facing the issue.


handle braces substitution in dependencies with args

Quoting the README,

To pass arguments to a dependency, put the dependency in parentheses along with the arguments:

I noticed braces substitution doesn't work for the arguments to a dependency.  Here's a small repro of the issue.
main arg: (func {{arg}})

func arg:
	echo {{arg}}

just --list

error: Expected backtick, identifier, '(', cooked string, or raw string, but found '{{'
  |
1 | main arg: (func {{arg}})
  |

I would like for braces substitution to work in these situations.

Thanks for opening this issue! I'm not sure I understand, can you do the same thing without braces, like so:
main arg: (func arg)

func arg:
	echo {{arg}}

Thanks, that works!

Awesome!


Different result compared to python

Here is a test with codon:
import time
st = time.time()
sum_x = 0
for i in range(10000000000):
sum_x += i
time.sleep(3)
print('Sum of first 10 bilion numbers is:', sum_x)
et = time.time()
elapsed_time = et - st
print('Execution time:', elapsed_time, 'seconds')
Here is the result with python3:
python3 test.py
Sum of first 10 bilion numbers is:<PHONE_NUMBER>5000000000
Execution time:<PHONE_NUMBER>862732 seconds
Here is the result with codon:
codon run -release test.py
Sum of first 10 bilion numbers is: -5340232226128654848
Execution time: 3.00534 seconds
As you can see the answer with codon is completely wrong.

@siyavashmoradi I cannot reproduce the error.:
import time

# S = N * (N + 1) / 2

size: Static[int] = 128  # S > 64-bit integer
exp = 10
N = UInt[size](10 ** exp)
result = UInt[size](0)

st = time.time()
start = 1
stop = int(N + UInt[size](1))
for i in range(start, stop):
    result += UInt[size](i)

et = time.time()
elapsed_time = et - st

print('Sum: ', result, str(result), len(str(result)))
print('Execution time:', elapsed_time, 'seconds')

# test result
test = N * (N + UInt[size](1))  # / 2  # do not use float
assert test == result * UInt[size](2)

prints
Sum:<PHONE_NUMBER>5000000000<PHONE_NUMBER>5000000000 20
Execution time: 0 seconds

Python code to test result:
N = 10 ** 10
test = N * (N + 1)  # / 2  # do not use float
print(test)

It's probably because I forgot to put the indent after the for loop, here is the modified one:
import time
st = time.time()
sum_x = 0
for i in range(10000000000):
sum_x += i
time.sleep(3)
print('Sum of first 10 bilion numbers is:', sum_x)
et = time.time()
elapsed_time = et - st
print('Execution time:', elapsed_time, 'seconds')
and the output is still this:
codon run -release test3.py
Sum of first 10 bilion numbers is: -5340232226128654848
Execution time: 3.00125 seconds

Codon integers are 64 bits by default, but the answer must be stored in at least 66 bit ints.

Codon integers are 64 bits by default, but the answer must be stored in at least 66 bit ints.

Thanks. didn't know it.

Yes, Codon integers by default are 64-bit ints. See https://docs.exaloop.io/codon/general/differences for how to use Python integers (with a warning; performance might suffer).


Nightly tests against latest Service Binding Operator

User Story
As an odo developer, I want to have nightly tests of main branch of odo against master branch of Service Binding Operator so that we can prepare ourselves for any breaking changes that might land in, or notify the Service Binding Operator team about a change on their side that could break odo.
Acceptance Criteria
QE

[ ] Set up a job that tests only the integration between main branch of odo and master branch of SBO.
[ ] Create a file to trigger nightly test with only operatorhub linking test in execution.
[ ] Modify operator setup script to use latest sbo catalog source and then install
[ ] Make sure that odo link and subsequent odo push work 100% of the times.
[ ] Failures should notify the odo team in appropriate way along with failure logs.

Dev

[ ] Have integration tests that check for existence of the Service Binding, the Secret created by it, and presence of environment variables with appropriate values in the odo component's Pod.
[ ] Integration tests for everything mentioned above when bin-as-files is used.
[ ] Integration tests for everything above when Service Binding Operator is not installed.

Links

Related Epic (mandatory): N/A

/kind user-story
/area testing
/area linking

This issue is an outcome of the problems faced by odo after the release of v0.9.0 of SBO.
Relevant issues: #4940 & #4936.

/priority high

How to deploy SBO master build to OCP:
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: service-binding-master
  namespace: openshift-marketplace
spec:
  displayName: Service Binding Operator build from master
  image: quay.io/redhat-developer/servicebinding-operator:index
  priority: 500
  publisher: Red Hat
  sourceType: grpc
  updateStrategy:
    registryPoll:
      interval: 10m0s

---

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: service-binding-operator
  namespace: openshift-operators
spec:
  channel: beta
  installPlanApproval: Automatic
  name: service-binding-operator
  source: service-binding-master
  sourceNamespace: openshift-marketplace

The first resource adds sbo catalog index to ocp, second one installs the SBO from that catalog.

@kadel why not simply do what's suggested here instead?

Building and installing from sbo master branch is not a straightforward effort. Steps involved to do it are:

Build the Bundle image - Tools required are operator-sdk and docker or podman. We can not build it in a prow test container, because test containers doesn't support container run time.

Build the Index image and push it to quay registry - Tools required is opm and docker. Also we need a dedicated quay registry where we can push the latest master index image, for example quay.io/odo/sbo:latest

Create the catalog source with the step 2 quay registry

Apply the catalog source

Create the subscription and apply it for installation

I spend some time and come up with these two solution
Solution 1:
Test platform provided solution - https://docs.ci.openshift.org/docs/how-tos/testing-operator-sdk-operators/
Solution 2:
We can replicate sbo mechanism of building the index image and installing it to cluster using OLM. Sbo team uses their own defined build and test infrastructure - https://github.com/redhat-developer/service-binding-operator/tree/master/.github.
Now I am not sure atm how much all total QE effort is needed. I will prefer to run a spike before choosing the option
@tkral @dharmit WDYT ?

@prietyc123 you don't need to build anything,  it is just one oc apply command. Just apply what I've described in https://github.com/openshift/odo/issues/4942#issuecomment-886559365

Now I am not sure atm how much all total QE effort is needed. I will prefer to run a spike before choosing the option

Why do you want to run a spike?

Set up a job that tests only the integration between main branch of odo and master branch of SBO.

This is just adding one extra highly job with one extra setup step.

@prietyc123 you don't need to build anything. It is just one oc apply command. Just apply what I've described in #4942 (comment)

Understood. So image: quay.io/redhat-developer/servicebinding-operator:index is created by the sbo team for each commit they push into master. I was not aware of this. I think their GitHub Action does execute the steps to build the image.

Why do you want to run a spike?

I was not aware that sbo team creates latest index image on each commit goes into master. If this is the case then no spike is needed.

Set up a job that tests only the integration between main branch of odo and master branch of SBO.

Need to set up a nightly job config with cron: 0 0 * * * and to run on odo main branch.

Modify operator setup script to use latest sbo catalog source and then install

I ran https://github.com/openshift/odo/issues/4942#issuecomment-886559365 on ocp 4.8 and it works perfectly fine.

Failures should notify the odo team in appropriate way along with failure logs.

Not sure we are looking for a new channel to get notification about nightly runs or we want to use #odo-notifications itself. In either case we need to specify the reporter_config for such notifications.
reporter_config:
    slack:
      channel: '#<notification-channel>'
      job_states_to_report:
      - success
      - failure
      - error
      report_template: '{{if eq .Status.State "success"}} :rainbow: Job *{{.Spec.Job}}*
        ended with *{{.Status.State}}*. <{{.Status.URL}}|View logs> :rainbow: {{else}}
        :volcano: Job *{{.Spec.Job}}* ended with *{{.Status.State}}*. <{{.Status.URL}}|View
        logs> :volcano: {{end}}'

@kadel could you please share your thoughts on notification channel

Have integration tests that check for existence of the Service Binding, the Secret created by it, and presence of environment variables with appropriate values in the odo component's Pod.

We can modify the existing tests bin-as-files for sbo as well

@kadel could you please share your thoughts on notification channel

No need for extra channel, it can go to #odo-notifications

@prietyc123 @kadel IMO, we don't need notifications for successful builds. Failure and error makes sense.

@prietyc123 @kadel IMO, we don't need notifications for successful builds. Failure and error makes sense.

we need both, otherwise there is no easy way to verify that the job is actually running

How do we plan to execute the tests for both the scenarios:

With SBO installed on the cluster
Without SBO installed on the cluster

Also, what cluster should these tests run on? Only k8s? Only OCP? Both?

Removing triage/Ready till we have answer to https://github.com/openshift/odo/issues/4942#issuecomment-888069021.
/remove-triage ready
/triage needs-information

How do we plan to execute the tests for both the scenarios:

With SBO installed on the cluster
Without SBO installed on the cluster

@dharmit  I am planning to introduce one env var for nightly and with this check we will go further with or without SBO installed on the cluster. Does that make sense?

what cluster should these tests run on? Only k8s? Only OCP? Both?

IMO running on ocp would be enough. @kadel WDYT?

How do we plan to execute the tests for both the scenarios:

With SBO installed on the cluster
Without SBO installed on the cluster

@dharmit I am planning to introduce one env var for nightly and with this check we will go further with or without SBO installed on the cluster. Does that make sense?

Not really. Where will this env var's value be set, and where will it be checked? If nightly is set to true, will we install SBO or not? In the issue description (Dev setion of Acceptance Criteria), the integration tests I have mentioned are both with and without the Operator installed on the cluster. We can discuss if "without the Operator" makes sense or not.
If it does, the way we can go about it is to modify go.mod to use SBO master instead of a specific version. Can there be any other approach for it?

what cluster should these tests run on? Only k8s? Only OCP? Both?

IMO running on ocp would be enough. @kadel WDYT?

I don't think so. We need to make sure that it works on k8s as well because AFAIK, SBO tests only on OCP infra. odo has to work fine on both clusters, so I'd suggest testing on both

How do we plan to execute the tests for both the scenarios:

With SBO installed on the cluster
Without SBO installed on the cluster

I'm again confused.
I thought that this is about  validating that odo works with SBO.
Why are you mentioned scenarios without SBO installed on the cluster?

Also, what cluster should these tests run on? Only k8s? Only OCP? Both?

just OCP is ok. Let's not complicate it.

I thought that this is about validating that odo works with SBO.

+1, even I am also thinking that way.

Not really. Where will this env var's value be set, and where will it be checked? If nightly is set to true, will we install SBO or not? In the issue description (Dev setion of Acceptance Criteria), the integration tests I have mentioned are both with and without the Operator installed on the cluster. We can discuss if "without the Operator" makes sense or not.
If it does, the way we can go about it is to modify go.mod to use SBO master instead of a specific version. Can there be any other approach for it?

This is way out of the scope.
"without the Operator" scenarios can be easily tested on PRs. It is just any other library that odo vendors

I'm again confused.

I'm glad that you are confused before we started working on the issue instead of discovering a scenario that we could/should have thought straight up.

I thought that this is about validating that odo works with SBO.
Why are you mentioned scenarios without SBO installed on the cluster?

That's exactly why I mentioned in https://github.com/openshift/odo/issues/4942#issuecomment-888115368 - We can discuss if "without the Operator" makes sense or not. I mentioned it because IMO it's better to reduce the scope of the issue after discussions instead of figuring out at a later stage that we missed discussing something that should have been covered already.

Not really. Where will this env var's value be set, and where will it be checked? If nightly is set to true, will we install SBO or not? In the issue description (Dev setion of Acceptance Criteria), the integration tests I have mentioned are both with and without the Operator installed on the cluster. We can discuss if "without the Operator" makes sense or not.
If it does, the way we can go about it is to modify go.mod to use SBO master instead of a specific version. Can there be any other approach for it?

This is way out of the scope.
"without the Operator" scenarios can be easily tested on PRs. It is like any other library that odo vendors

Thanks for your input. 👍🏾

Also, what cluster should these tests run on? Only k8s? Only OCP? Both?

just OCP is ok. Let's not complicate it.

I think the same steps mentioned in https://github.com/openshift/odo/issues/4942#issuecomment-886559365 could be used on a k8s cluster as well to bring up the required setup. How do you think it will get complicated?

I think the same steps mentioned in #4942 (comment) could be used on a k8s cluster as well to bring up the required setup. How do you think it will get complicated?

Nightly jobs are running on Prow. You can use OCP cluster that is automatically provisioned by Prow job. Setting up k8s cluster is going to be additional pain without any benefit.

Setting up k8s cluster is going to be additional pain without any benefit.

I see testing this nightly job on k8s as a benefit because, if there's no benefit, then why do we run integration tests on both OCP & k8s?


Engine crash in error window if there is no display

This is minor because if we can't render the game and can't render the error window, the user can't see anything anywyay, but the engine should not crash but shutdown properly instead.
To reproduce this error I accumulated (after the build of the code catching and reporting the GLVND bug):

GLVND linux build,
OGLP amdgpu-pro OpenGL driver that is incompatible with GLVND,
DISPLAY=:42 to set an unavailable display.

--- Common Initialization Complete ---
Calling GetRefAPI…
SDL_Init( SDL_INIT_VIDEO )...
Using SDL version 2.28.3
SDL using driver "offscreen"
Using OpenGL ABI "GLVND"
Initializing OpenGL display
Using GLEW version 2.2.0
Display aspect: 1.333
...setting mode -1: 2560×1440
[New Thread 0x7fffc9d986c0 (LWP 2732133)]
Warn: SDL returned a broken OpenGL context.

Please report the bug and tell us what is your operating system,
OpenGL driver, graphic card, and if you built the game yourself.

This engine was built with the "GLVND" OpenGL ABI,
try to reconfigure the build with the "LEGACY" one:

  cmake -DOpenGL_GL_PREFERENCE=LEGACY

See: https://github.com/DaemonEngine/Daemon/issues/945
][Detaching after fork from child process 2732134]
[Detaching after fork from child process 2732135]

(zenity:2732135): Gtk-WARNING **: 03:36:29.876: cannot open display: :42

Thread 1 "daemon" received signal SIGSEGV, Segmentation fault.
__GI_____strtol_l_internal (nptr=nptr@entry=0x0, endptr=endptr@entry=0x7fffffffc188, base=base@entry=10, group=group@entry=0, bin_cst=bin_cst@entry=true, loc=0x7ffff6fff5a0 <_nl_global_locale>) at ../stdlib/strtol_l.c:304
Download failed: Argument invalide.  Continuing without source file ./stdlib/../stdlib/strtol_l.c.
304	../stdlib/strtol_l.c: Aucun fichier ou dossier de ce type.

Thread 4 (Thread 0x7fffc9d986c0 (LWP 2732133) "daemon"):
#0  0x00007ffff6e94076 in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x7fffca6eb6a0) at ./nptl/futex-internal.c:57
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0x7fffca6eb6a0) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x7fffca6eb6a0, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007ffff6e969fe in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x7fffca6eb650, cond=0x7fffca6eb678) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x7fffca6eb678, mutex=0x7fffca6eb650) at ./nptl/pthread_cond_wait.c:627
#5  0x00007ffff30804a0 in ?? () from /opt/amdgpu/lib/x86_64-linux-gnu/dri/amdgpu_dri.so
#6  0x00007ffff1a0844b in ?? () from /opt/amdgpu/lib/x86_64-linux-gnu/dri/amdgpu_dri.so
#7  0x00007ffff30b5e74 in ?? () from /opt/amdgpu/lib/x86_64-linux-gnu/dri/amdgpu_dri.so
#8  0x00007ffff6e97ada in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:444
#9  0x00007ffff6f2847c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 3 (Thread 0x7fffef5ff6c0 (LWP 2732132) "daemon"):
#0  0x00007ffff6f2a01f in __libc_accept (fd=4, addr=..., len=0x0) at ../sysdeps/unix/sysv/linux/accept.c:26
#1  0x000055555572e710 in Sys::ReadSingletonSocket () at Unvanquished/daemon/src/engine/framework/System.cpp:246
#2  0x00007ffff72e6333 in std::execute_native_thread_routine (__p=0x5555567cb8f0) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:104
#3  0x00007ffff6e97ada in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:444
#4  0x00007ffff6f2847c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 2 (Thread 0x7ffff054d6c0 (LWP 2732131) "daemon"):
#0  0x00007ffff6ee56f1 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=req@entry=0x7ffff054ca10, rem=rem@entry=0x7ffff054ca10) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:78
#1  0x00007ffff6ef9937 in __GI___nanosleep (req=req@entry=0x7ffff054ca10, rem=rem@entry=0x7ffff054ca10) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2  0x00007ffff6f0e2ae in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#3  0x0000555555730a2a in Sys::SignalThread () at Unvanquished/daemon/src/engine/framework/System.cpp:389
#4  0x00007ffff72e6333 in std::execute_native_thread_routine (__p=0x5555567fc620) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:104
#5  0x00007ffff6e97ada in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:444
#6  0x00007ffff6f2847c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 1 (Thread 0x7ffff54fea80 (LWP 2732128) "daemon"):
#0  __GI_____strtol_l_internal (nptr=nptr@entry=0x0, endptr=endptr@entry=0x7fffffffc188, base=base@entry=10, group=group@entry=0, bin_cst=bin_cst@entry=true, loc=0x7ffff6fff5a0 <_nl_global_locale>) at ../stdlib/strtol_l.c:304
#1  0x00007ffff6e5113c in __GI___isoc23_strtol (nptr=nptr@entry=0x0, endptr=endptr@entry=0x7fffffffc188, base=base@entry=10) at ../stdlib/strtol.c:126
#2  0x00007ffff7e07561 in SDL_strtol_REAL (base=10, endp=0x7fffffffc188, string=0x0) at /usr/src/libsdl2-2.28.3+dfsg-2/src/stdlib/SDL_string.c:898
#3  get_zenity_version (minor=<synthetic pointer>, major=<synthetic pointer>) at /usr/src/libsdl2-2.28.3+dfsg-2/src/video/wayland/SDL_waylandmessagebox.c:103
#4  Wayland_ShowMessageBox (buttonid=0x7fffffffc184, messageboxdata=0x7fffffffc190) at /usr/src/libsdl2-2.28.3+dfsg-2/src/video/wayland/SDL_waylandmessagebox.c:137
#5  SDL_ShowMessageBox_REAL (messageboxdata=0x7fffffffc190, buttonid=0x7fffffffc184) at /usr/src/libsdl2-2.28.3+dfsg-2/src/video/SDL_video.c:4495
#6  0x00007ffff7dfd24b in SDL_ShowMessageBox_REAL (buttonid=0x0, messageboxdata=0x7fffffffc350) at /usr/src/libsdl2-2.28.3+dfsg-2/src/video/SDL_video.c:4407
#7  SDL_ShowSimpleMessageBox_REAL (flags=<optimized out>, title=<optimized out>, message=<optimized out>, window=<optimized out>) at /usr/src/libsdl2-2.28.3+dfsg-2/src/video/SDL_video.c:4582
#8  0x000055555558b854 in Application::ClientApplication::Shutdown (this=<optimized out>, error=true, message=...) at Unvanquished/daemon/src/engine/client/ClientApplication.cpp:115
#9  0x000055555572ea68 in Sys::Shutdown (error=true, message=...) at Unvanquished/daemon/src/engine/framework/System.cpp:288
#10 0x000055555572eb3b in Sys::Error (message=...) at Unvanquished/daemon/src/engine/framework/System.cpp:335
#11 0x00005555556d7917 in GLimp_CreateContext (configuration=...) at Unvanquished/daemon/src/engine/sys/sdl_glimp.cpp:785
#12 0x00005555556d67ad in GLimp_ValidateBestContext (GLEWmajor=2, bestValidatedConfiguration=..., extendedValidationConfiguration=...) at Unvanquished/daemon/src/engine/sys/sdl_glimp.cpp:1010
#13 GLimp_SetMode (mode=<optimized out>, fullscreen=false, bordered=false) at Unvanquished/daemon/src/engine/sys/sdl_glimp.cpp:1393
#14 GLimp_StartDriverAndSetMode (mode=<optimized out>, fullscreen=false, bordered=false) at Unvanquished/daemon/src/engine/sys/sdl_glimp.cpp:1539
#15 0x00005555556d4f39 in GLimp_Init () at Unvanquished/daemon/src/engine/sys/sdl_glimp.cpp:1969
#16 0x000055555568ffd2 in InitOpenGL () at Unvanquished/daemon/src/engine/renderer/tr_init.cpp:307
#17 R_Init () at Unvanquished/daemon/src/engine/renderer/tr_init.cpp:1414
#18 0x000055555569eab0 in RE_BeginRegistration (glconfigOut=0xa, glconfig2Out=0x7fffffffc188) at Unvanquished/daemon/src/engine/renderer/tr_model.cpp:259
#19 0x00005555555f0c8f in CL_InitRenderer () at Unvanquished/daemon/src/engine/client/cl_main.cpp:2134
#20 0x00005555555efc11 in CL_StartHunkUsers () at Unvanquished/daemon/src/engine/client/cl_main.cpp:2208
#21 0x0000555555730218 in Sys::Init (argc=<optimized out>, argv=<optimized out>) at Unvanquished/daemon/src/engine/framework/System.cpp:721
#22 main (argc=<optimized out>, argv=<optimized out>) at Unvanquished/daemon/src/engine/framework/System.cpp:741

We may have not fix for this one and the bug may be in SDL anyway.
This thread is just to not forget™.


Feat: Add tapOnce and tapOnceOnFirstTruthy Operators

This pull request adds two new standalone RxJS operators, tapOnce and tapOnceOnFirstTruthy, to the utility library. These operators allow for conditional execution of functions based on emitted values.
tapOnce: Executes the provided function only once when the value at the specified index is emitted.
tapOnceOnFirstTruthy: Executes the provided function only once when the first truthy value is emitted.
What are your thoughts on these operators? They seem particularly useful for scenarios where you need to initialize something, such as a modal element, as soon as the first value from a source is emitted.
This is my first PR on GitHub, so I appreciate your patience :)! Any contributions, feedback, or change requests are more than welcome.

Hello @endlacer
Thanks for creating this PR,
I would like to know more about the usecases for this operator, can you give some examples which this solves.
Currently it's hard to understand where this would be useful and if other projects can benefit from this.

hi @eneajaho ,
I used the tapOnceOnFirstTruthy operator for initialization of a modal dialog. For example, I have an open$ Subject of type ModalData. The ModalComponent subscribes to an Observable derived from this Subject. When it receives its first truthy value, it performs some initialization before opening the modal in the subscribe block.
Here's a simplified example:
import { Subject } from 'rxjs';
import { tapOnceOnFirstTruthy } from './operators';

class ModalComponent {
  private open$ = new Subject<ModalData | null>();

  constructor() {
    this.open$
      .pipe(
        tapOnceOnFirstTruthy((data) => {
          // Perform one-time initialization
          this.initializeModal(data);
        })
      )
      .subscribe((data) => {
        if (data) {
          this.openModal(data);
        } else {
          this.closeModal();
        }
      });
  }

  private initializeModal(data: ModalData) {
    // One-time setup logic
  }

  private openModal(data: ModalData) {
    // Logic to open the modal
  }

  private closeModal() {
    // Logic to close the modal
  }
}

This approach ensures that the initialization logic runs only once, even if the modal is opened and closed multiple times.
Another example could be a user filling out a multipage form and when reaching the midpoint you want to log that to some analyze-backend. But you only want to do it once and not on every back/forth navigation. This can be done with a sperate subscription with filter + take(1), but this operator is cleaner


Update our federation script for assigning a group to the enterprise application

To assign a group to the enterprise app, I added new ps code.

@moisesjgomez @AnthonyDelagarde
I've updated our script. Pls review during your free time😀

@kohei3110 @moisesjgomez there are some conflicts that should be addressed before merge, please take care of them


Mount crashed during rename

As described by title; might be related to (https://github.com/chrislusf/seaweedfs/issues/3039) but the log attached to that one diverges from what happened here and crashes at a different point, so I would guess not.
Seaweed 3.06, 3 masters, 3 filers, 7 nodes of volumes, 8 mount points, Cassandra 4.0 for DB, all as secure as possible. Can share configuration details if helpful.
Here is what the mount process printed as it died:
May 25 08:44:15 bigchin weed[18019]: I0525 08:44:15 18019 weedfs_file_mkrm.go:88] mknod /homes/<username>/Research/fsom/.git/refs/heads/main.lock: CreateEntry : insert entry /homes/<username>/Research/fsom/.git/refs/heads/main.lock: insert /homes/<username>/Research/fsom/.git/refs/heads/main.lock: EOF
May 25 08:44:15 bigchin weed[18019]: I0525 08:44:15 18019 wfs_filer_client.go:29] WithFilerClient 0 <IP_ADDRESS>:18888: CreateEntry : insert entry /homes/<username>/Research/fsom/.git/refs/heads/main.lock: insert /homes/<username>/Research/fsom/.git/refs/heads/main.lock: EOF
May 25 08:44:15 bigchin weed[18019]: I0525 08:44:15 18019 weedfs_file_mkrm.go:88] mknod /homes/<username>/Research/fsom/.git/refs/heads/main.lock: CreateEntry : insert entry /homes/<username>/Research/fsom/.git/refs/heads/main.lock: insert /homes/<username>/Research/fsom/.git/refs/heads/main.lock: EOF
May 25 08:44:15 bigchin weed[18019]: I0525 08:44:15 18019 wfs_filer_client.go:29] WithFilerClient 1 <IP_ADDRESS>:18888: CreateEntry : insert entry /homes/<username>/Research/fsom/.git/refs/heads/main.lock: insert /homes/<username>/Research/fsom/.git/refs/heads/main.lock: EOF
May 25 08:45:17 bigchin weed[18019]: I0525 08:45:17 18019 wfs_filer_client.go:29] WithFilerClient 0 <IP_ADDRESS>:18888: dir Rename /homes/<username>/Research/fsom => /homes/<username>/Research/fsom1 receive: rpc error: code = Unknown desc = /homes/<username>/Research/fsom move error: fail to move /homes/<username>/Research/fsom => /homes/<username>/Research/fsom1: fail to move /homes/<username>/Research/fsom/.git => /homes/<username>/Research/fsom1/.git: fail to move /homes/<username>/Research/fsom/.git/hooks => /homes/<username>/Research/fsom1/.git/hooks: fail to move /homes/<username>/Research/fsom/.git/hooks/pre-rebase.sample => /homes/<username>/Research/fsom1/.git/hooks/pre-rebase.sample: filer: no entry is found in filer store
May 25 08:45:17 bigchin weed[18019]: I0525 08:45:17 18019 wfs_filer_client.go:29] WithFilerClient 1 <IP_ADDRESS>:18888: dir Rename /homes/<username>/Research/fsom => /homes/<username>/Research/fsom1 receive: rpc error: code = Unknown desc = /homes/<username>/Research/fsom1 is not empty
May 25 08:45:17 bigchin weed[18019]: I0525 08:45:17 18019 wfs_filer_client.go:29] WithFilerClient 2 <IP_ADDRESS>:18888: dir Rename /homes/<username>/Research/fsom => /homes/<username>/Research/fsom1 receive: rpc error: code = Unknown desc = /homes/<username>/Research/fsom1 is not empty
May 25 08:45:17 bigchin weed[18019]: I0525 08:45:17 18019 weedfs_rename.go:210] Link: dir Rename /homes/<username>/Research/fsom => /homes/<username>/Research/fsom1 receive: rpc error: code = Unknown desc = /homes/<username>/Research/fsom1 is not empty
May 25 08:45:17 bigchin weed[18019]: panic: runtime error: invalid memory address or nil pointer dereference
May 25 08:45:17 bigchin weed[18019]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x1c0623d]
May 25 08:45:17 bigchin weed[18019]: goroutine 31 [running]:
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/mount.(*InodeToPath).MovePath(0xc00070c030, {0xc0040b5f80, 0x52}, {0xc0006b60c0, 0x58})
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/mount/inode_to_path.go:168 +0x15d
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/mount.(*WFS).handleRenameResponse(0xc000396c60, {0x27e84c0, 0xc00409a800}, 0xc003b6aa50)
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/mount/weedfs_rename.go:236 +0x4ba
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/mount.(*WFS).Rename.func1({0x27fa898, 0xc00404f160})
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/mount/weedfs_rename.go:199 +0x3fc
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/mount.(*WFS).WithFilerClient.func1.1(0xc000127880)
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/mount/wfs_filer_client.go:25 +0x6f
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/pb.WithGrpcClient(0x1a?, 0xc00275fbb0, {0xc0021f8198, 0x14}, {0xc00071dba0?, 0x0?, 0x0?})
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/pb/grpc_client_server.go:145 +0x17f
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/mount.(*WFS).WithFilerClient.func1()
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/mount/wfs_filer_client.go:23 +0x14d
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/util.Retry({0x222d15e, 0xa}, 0xc00275fcc0)
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/util/retry.go:16 +0xb1
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/mount.(*WFS).WithFilerClient(0xc003a72480?, 0x21?, 0x7fb17c7da090?)
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/mount/wfs_filer_client.go:16 +0x66
May 25 08:45:17 bigchin weed[18019]: github.com/chrislusf/seaweedfs/weed/mount.(*WFS).Rename(0xc000396c60, 0x1bef286?, 0xc000894618, {0xc004bb832c, 0x4}, {0xc004bb8340, 0x4})
May 25 08:45:17 bigchin weed[18019]:         /github/workspace/weed/mount/weedfs_rename.go:166 +0x4cd
May 25 08:45:17 bigchin weed[18019]: github.com/hanwen/go-fuse/v2/fuse.doRename2(0xc000894480?, 0xc000894480)
May 25 08:45:17 bigchin weed[18019]:         /go/pkg/mod/github.com/hanwen/go-fuse/v2@v2.1.0/fuse/opcode.go:422 +0x5c
May 25 08:45:17 bigchin weed[18019]: github.com/hanwen/go-fuse/v2/fuse.(*Server).handleRequest(0xc000584b00, 0xc000894480)
May 25 08:45:17 bigchin weed[18019]:         /go/pkg/mod/github.com/hanwen/go-fuse/v2@v2.1.0/fuse/server.go:483 +0x1f3
May 25 08:45:17 bigchin weed[18019]: github.com/hanwen/go-fuse/v2/fuse.(*Server).loop(0xc000584b00, 0x0?)
May 25 08:45:17 bigchin weed[18019]:         /go/pkg/mod/github.com/hanwen/go-fuse/v2@v2.1.0/fuse/server.go:456 +0x108
May 25 08:45:17 bigchin weed[18019]: created by github.com/hanwen/go-fuse/v2/fuse.(*Server).readRequest
May 25 08:45:17 bigchin weed[18019]:         /go/pkg/mod/github.com/hanwen/go-fuse/v2@v2.1.0/fuse/server.go:323 +0x52b
May 25 08:45:17 bigchin systemd[1]: seaweed-mount.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
May 25 08:45:17 bigchin systemd[1]: seaweed-mount.service: Failed with result 'exit-code'.

On the filter at that time (not sure what is up with Cassandra - seeing a lot of I/O timeout errors in the log, but Cassandra reports as healthy):
May 25 08:34:07 aching weed[11727]: I0525 08:34:07 11727 filer_notify.go:103] metadata log write failed /topics/.system/log/2022-05-25/08-33.0ebe7b23: mkdir /topics: insert /topics: gocql: no hosts available in the pool
May 25 08:47:59 aching weed[11727]: I0525 08:47:59 11727 cassandra_store.go:215] list iterator close: read tcp <IP_ADDRESS>:45458-><IP_ADDRESS>:9042: i/o timeout
May 25 08:49:18 aching weed[11727]: I0525 08:49:18 11727 filer_delete_entry.go:45] delete directory /homes/<username>/Research/fsom/.git/objects/f5: filer store delete: delete /homes/<username>/Research/fsom/.git/objects/f5 : read tcp <IP_ADDRESS>:46114-><IP_ADDRESS>:9042: i/o timeout
May 25 08:52:27 aching weed[11727]: E0525 08:52:27 11727 filer.go:182] insert entry /homes/<username>/Research/fsom/.git/index.lock: insert /homes/<username>/Research/fsom/.git/index.lock: EOF

(I've anonymised the paths)
Did grab the 4 logs from the log directory as well, but don't see any extra information in them. No memory dump occurred due to the crash. But can provide extra logs if useful, including for others nodes etc. if they would be useful.
It should be noted we finally upgraded from 2.65 yesterday - hadn't been able to upgrade for a number reasons, including finding a later version much too unstable to use and just timing (this system has a couple hundred users - downtime is tricky as there is always a conference deadline incoming). We were very much running on fumes at the end there: the nodes it runs on are also the nodes doing the computation, and they are often under extreme loads for sustained periods and it causes issues. My working theory is that mount caches were getting out of sync and not catching up, but whatever the cause there are a lot of inconsistencies left in the file system from several months of this. Entirely possible that the above crash is caused by an assumption that isn't the case due to one of them. I did run all of the healing commands in the weed shell yesterday without issue yesterday however.

added code to address this. Please help to verify in the coming release.


Log In link redirect to a wrong page at homepage of Ionic Creator

Down below "https://creator.ionic.io/" In this page "Log in" link redirects to "http://drifty.com/" whether it should redirect to this "https://creator.ionic.io/app/login" link.
That's all thanks :)

thanks, logged the issue here: https://github.com/driftyco/ionic-creator-issues/issues/184


update image pk test

@fjaviersanchez I took the liberty to updated the image power spec test, since the changes are not trivial, I am submitting a PR to your PR for you to review.
The main change is to utilize built-in functions, to use binned_statistic to simplify the 1d PSD calculation, and to use validation data for the bin edges directly.
A test run is here: https://portal.nersc.gov/project/lsst/descqa/v2/?run=2018-08-27_23 but the web server is down now, so I attach the plot below:

The power spectrum seems to be much lower than the validation data. Is that expected?

@fjaviersanchez Thanks. I made some further updates to this test. In particular

allows plotting multiple rafts at a time
rescales PSD so that different rebinning will have the same normalization (see this line)
allows setting rebinning value (cf https://github.com/LSSTDESC/gcr-catalogs/pull/179)
interpolating PSD when comparing with validation data

Click here to see a test run of current PR. All rafts are plotted.
Note that I've turned off validation data in this run. After rescaling the PSD, the validation data is no longer comparable. We'll need to create a new set of validation data.

Thanks, @fjaviersanchez. Can you merge this PR? And I'll merge your PR in LSSTDESC.


FIX: Include empty/missing values to all reports and add support for all fields

This PR addresses both DT-1546 and DT-1545.
All sourceResource fields were added to the PropertyValueReport and PropertyDistinctValueReport. Case classes were also added to both report classes to tighten up the code. Adds an extraction method for the report values. This method is also used to extract the correct field from all the context case classes.

@AudreyAltman makeCsvTable name refactored.


Update SendPointCloudToUI Ports

Updates the objectives using SendPointCloudToUI following https://github.com/PickNikRobotics/moveit_studio/pull/7567.
Needed to work on v5.3 MoveIt Pro, v5.3 this repo. Should also be in main but we can just fix here (?).

Sorry, updated to be into v6.0.


Mouse trails

Related Issue
Closes: #924
Describe the changes you've made
Added mouse trails effect. On mouse movement creates and moves balls of various sizes and colour
Describe if there is any unusual behaviour of your code(Write NA if there isn't)
NA
Checklist:

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] New and existing unit tests pass locally with my changes.

Screenshots

@991rajat  Please review this PR

Thanks for this awesome contribution. 🤩
Keep Contributing.

Learn about squashing the commits. It's a good pratice.

Learn about squashing the commits. It's a good pratice.

Sure! Thanks for the feedback, will work on it!


fix(install): install the 10 libscap related libraries

Signed-off-by: Teryl<EMAIL_ADDRESS>
What type of PR is this?
/kind bug
Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area build
/area libscap

What this PR does / why we need it:
The scap library was recently broken out into 10 separate libs, but they were not added to the installation script in cmake.  All 10 libraries are needed to build consumer applications.
Special notes for your reviewer:
Does this PR introduce a user-facing change?:
It installs all 10 libraries.

added scap engine related libs to install

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: terylt
To complete the pull request process, please assign andreagit97 after the PR has been reviewed.
You can assign the PR to them by writing /assign @andreagit97 in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@terylt: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

build-libs-bundled-deps
263c01ab0b0f409b4257290f2493503e5f90b337
link
true
/test build-libs-bundled-deps

Full PR test history. Please help us cut down on flakes by linking to an open issue when you hit one in your PR.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Hi @terylt ! This LGTM!
I think you need to rebase on top of master because we had a failing test (gtest cmake was hooked to main version, instead of a tag; and main broke our build).

I meant that you need to rebase your PR on top of master :)
Like:

git checkout master
git pull upstream master
git checkout libscap_install
git rebase master
git push origin HEAD --force-with-lease

@FedeDP Thanks for the comments.  I rebased to master as requested which included the GTest change.  It looks like the retest builds timed out due to lack of resources.

Yep, prow is quite busy atm building drivers for 0.32.1 Falco release :)
We will move libs CI to gh actions soon :tm:  see #453

@FedeDP Oh great!  If you need any help with GHA and setting up CI's let us know.  We use it exclusively in our project and even have a repo that builds falco base images and lib images.

/retest

LGTM label has been added.  Git tree hash: dbda4bd278525f01134d48f9dd7e164bbcd24a52


Connection indicator/progress

I think it would be a better and more useful user experience if there was some UI element that shows a connection is in progress.
Right now, After connecting, Seemingly "nothing" happens. If we connected, At some point the connection name in the left bottom status bar would change to the connection name. If it failed, We would get a notification, but either might take quite a few seconds where the user has no idea what's going on.
Perhaps add some indication/text to the status bar, possibly a loading animation of some kind, to let the user know a connection attempt is in progress.

There is a new api for progress exchange between the language server and the UI about to be release by vscode team.
I plan to take a look at this once they release it, ok?
But definitely would be great to have a better indicator for that.

It uses the withProgress api defined here: https://code.visualstudio.com/api/references/vscode-api#window
But it's controled by the language-server instead of the window instance

Yeah, definitely, let's take advantage of prior work done by the VSCode team when it's available.

VSCode's June release will bring this to stable channel!

Nice! Looking forward to it :]


Copy review for all pages

This is a...

[ ] Feature request
[ ] Regression (a behavior that used to work and stopped working in a new release)
[ ] Bug report
[x ] Documentation issue or request

Description
This is the placeholder issue for us to perform copy review for new React pages. Here is a list of the pages that need review and input.

CI/CD management
Create integration workflow? (cc: @riccardo-forina can you help clarify please?)

cc: @TovaCohen (just FYI for now, no action needed right now, but will reach out once we're ready)
@gashcrumb @seanforyou23

Just want to note that I'm aware of the need for this work. I'm planning to address it starting the week of June 17, the beginning of the next sprint.


[Bug] splitArea displays incorrectly when data entries are fewer than splitArea.interval

Version
5.3.3
Link to Minimal Reproduction
https://codepen.io/SevenOutman/pen/bGvBKNP
Steps to Reproduce
You can find 3 chart examples in the reproduction link above, each containing 3 data entries for a bars series.
In the first example a transparent/black splitArea is displaying correctly with splitArea.interval: 1

{
  xAxis: {
    data: ["A", "B", "C"],
    splitArea: {
      show: true,
      interval: 1,
      areaStyle: {
        color: ["transparent", "black"]
      }
    }
  },
  yAxis: {},
  series: [
    {
      type: "bar",
      data: [120, 200, 150]
    }
  ]
}

In the second example, splitArea.interval was set to 2 and the whole background goes black, which should have been transparent.

{
  xAxis: {
    data: ["A", "B", "C"],
    splitArea: {
      show: true,
      interval: 2,
      areaStyle: {
        color: ["transparent", "black"]
      }
    }
  },
  yAxis: {},
  series: [
    {
      type: "bar",
      data: [120, 200, 150]
    }
  ]
}

The third example demonstrates my real use case where splitArea.interval was not deliberately set to a number larger than data entries, but fell into that condition due to dataZoom.
The splitArea.interval was 1 and the splitArea was displaying correctly at first.

Drag the dataZoom to display the first 2 bars, and the background goes black.

{
  xAxis: {
    data: ["A", "B", "C"],
    splitArea: {
      show: true,
      interval: 1,
      areaStyle: {
        color: ["transparent", "black"]
      }
    }
  },
  yAxis: {},
  series: [
    {
      type: "bar",
      data: [120, 200, 150]
    }
  ],
  dataZoom: {}
}

Current Behavior
The splitArea seems to skip the first color when data entires (in view) is fewer than splitArea.interval.
Expected Behavior
The splitArea should not skip the first color when data entires (in view) is fewer than splitArea.interval.
Environment
- OS: macOS Big Sur
- Browser: Chrome 102.0.5005.115
- Framework: React@17

Any additional comments?
No response

Hey，you can set it to 0, interval: 0. @SevenOutman

seems to work fine in v.5.4.3


Alldebrid doesn't show up on movie/show page

As the title suggest.
also please add host downloads on alldebrid as well, not just real-debrid.
thanks for making this addon possible.

Related to https://github.com/MrMonkey42/stremio-addon-debrid-search/issues/9

Related to #9

Doesn't work with alldebrid. Only Rd.

@MrMonkey42 Any updates/fix for this issue?

AllDebrid has a limitation to work in Stremio addons (More info here. But someone who has AllDebrid informed me that AllDebrid is now working fine in Stremio addons

@asaddon @jinstan101 Is AllDebrid still not working in Stremio addons like DebridSearch?

@asaddon @jinstan101 Is AllDebrid still not working in Stremio addons like DebridSearch?

It works on the home page like Torentio addon but results are not shown on the video/movie pages.

@asaddon Someone on Discord informed me that AllDebrid started working for them in movie/series pages (i.e., streams). But I cannot verify it personally as I don't have AllDebrid

@asaddon Someone on Discord informed me that AllDebrid started working for them in movie/series pages (i.e., streams). But I cannot verify it personally as I don't have AllDebrid

Hey Man, its no longer working for AllDebrid again :(


Added more pre-written modules

Error with singularity tests and pre-commit permissions. Will try a new PR and see if the issue persists


moveit_simple_grasps: 1.3.1-0 in 'indigo/distribution.yaml' [bloom]

Increasing version of package(s) in repository moveit_simple_grasps to 1.3.1-0:

upstream repository: https://github.com/davetcoleman/moveit_simple_grasps.git
release repository: https://github.com/davetcoleman/moveit_simple_grasps-release.git
distro file: indigo/distribution.yaml
bloom version: 0.5.20
previous version for package: 1.3.0-0

moveit_simple_grasps
* catkin lint cleanup
* Contributors: Dave Coleman

I'm #10000! :)

:tada:


[WIP] Move TODO plugin to community-plugins repository

Moving TODO plugin to community https://github.com/backstage/community-plugins/pull/43
:heavy_check_mark: Checklist

[ ] 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)
[ ] All your commits have a Signed-off-by line in the message. (more info)

🥸


Throttle resends of alerts

We currently send alerts at every eval interval. With a 1s eval interval, this would produce a lot of traffic to the AM.
I propose we continue to send new alerts instantly, but throttle the resends to say 60s by default.

Generally I think that's ok, we just need to make it explicit in the documentation and make sure that the resolve timeout in the Alertmanager needs to be higher than this value.

The resolve timeout is just a default, we can adjust the end time as required inside Prometheus.

Yes I realize that I just meant we need to document properly what the relationship between the two is.

Any idea for the maximum alarm times? Reaching the "Throttle"(maximum alarm times), do not send alert message any more?

Please don't clutter the issue tracker with unrelated questions, use https://groups.google.com/forum/#!aboutgroup/prometheus-users for support.

The current ingest path in AM for alerts has pretty high lock contention, throttling resends would be 👍


Ether returned if FILL ORDERS ONLY is checked

I'm not sure if this is a bug or just something confusing.
(Excuse the crapping annotations. Usually do this on a Mac but it's Windows today.)

Went to that market http://localhost:8080/#/market?description=croatia_v_england_result_after_90_minutes&id=0xc1d053b5c6053a9627eaa0b00974f3f04b4297da
Clicked England outcome.
Clicked the order I wanted to short.
Clicked Review and submitted transaction.

The transaction just returned my Ether. I was told on Discord "you checked [or inadvertently checked] the fill order only box".
Since I clicked the order and it checked that box, I thought it would be correct and the wording sounds like checking it would only fill orders and not create new ones.
My impression is that this is a UI bug (checking the box it shouldn't) AND/OR lack of details about what the checkbox actually does (couldn't see anything in the docs).

I was using 1.0.3.

Its possible that the order was already taken when your order was processed.
Or there is a bug with phamton orders on the book that cant be taken. We have a fix in 1.0.5 so phamton orders are removed from the order book.

That's probably the issue. Thanks.


expect is better than unwrap, we need to know what happen when the system crash.

expect is better than unwrap, we need to know what happen when the system crash.
Originally posted by @leeyr338 in https://github.com/cryptape/cita/pull/701

Check all the unwap used in CITA.


wrong binaries (git hash) in tag <IP_ADDRESS>

relating to flamerobin-<IP_ADDRESS>c166a5b.zip
the attached binaries to tag <IP_ADDRESS> does show the git hash 2167da96 on my system.

This does not match the github hash.
The tags before (<IP_ADDRESS>, <IP_ADDRESS>) does reflect the github hash. it may be just an error in release workflow.
In general, i would appreciate better binary identification for upcoming releases.

windows/properties/details/version
flamerobin.exe/help/about

the package has the updated documentations in docs/fr_whatsnew.html tho.

Sorry, my bad
This refers to 2167da952aa745e73af3ed8ddbf4acbd28bcabf5 commit, probably I forgot to run update-revision-info.cmd
In the new cmake build process looks like it will run automatically

no problem. just wanted to raise attention here.

Closing as a new snapshot is released

Closing as a new snapshot is released


Slash missing in image details URL field

When opening the image details layer, the URL field is missing a slash after the protocol.
Additionally, it should be noted that using the APP_URL var could lead to problems (I have encountered quite a few projects where this isnt set). Auto detecting or using the native laravel functions for the hostname is probalby better.

Please update to version 1.1.0, and check it.


Don't use seed source  /dev/(u)random in  vmkernel (esxi host)

I complied app in my host Centos 5.9  linked with -lssl -lcrypto  (statically  OpenSSL 1.1.1q  5 Jul 2022) .
Copy to ESXi host. But don't use seed source /dev/(u)random.
How to detect seed source? when default buding(no using --with-rand-seed)  , OS-trust I knew.
ESXi is uname -a : VMkernel localhost 6.5.0 #1 SMP Release build-4887370 Jan  5 2017 19:17:59 x86_64 x86_64 x86_64 ESXi
The snap to be complied  is below which is
#include <openssl/rand.h>
#include <openssl/ssl.h>
#include <stdio.h>
int main(int argc, char **argv)
{
        SSL_load_error_strings();
        SSL_library_init();

        int r1 = RAND_poll();
        printf("RAND_poll() said %d\n", r1);
        unsigned char byte;
        int r2 = RAND_bytes(&byte, 1);
        printf("RAND_bytes() said %d\n", r2);
        int r3 = RAND_status();
        printf("RAND_status() said %d\n", r3);
        if (r3 == 1) {
                puts("RAND_status is okay!");
        } else {
                puts("RAND_status said we aren't seeded?");
        }
        return 0;
}
RAND_poll() said 0
RAND_bytes() said 0
RAND_status() said 0
RAND_status said we aren't seeded?

[root@localhost:/tmp/ing] ls -l /dev/random
lrwxrwxrwx    1 root     root            21 Aug 29 11:16 /dev/random -> char/vmkdriver/random
[root@localhost:/tmp/ing] ls -l /dev/urandom
lrwxrwxrwx    1 root     root            22 Aug 29 11:16 /dev/urandom -> char/vmkdriver/urandom
[root@localhost:/tmp/ing]
There are devices to generate RAND in host but no syscall_318(system-call)
why doen't it choose seed source? How can I  resolve problem?
I can't upgrade kernel but rebuild openssl to remake snap to check seed soruce.
[root@localhost:/tmp/ing/bin] strace ./random
execve("./random", ["./random"], [/* 18 vars */]) = 0
brk(0)                                  = 0x2ded2fe000
uname({sys="VMkernel", node="localhost", ...}) = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/lib64/tls/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64/tls", 0x304b03dd3f0)       = -1 ENOENT (No such file or directory)
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320k\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=135511, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2e2d2fe000
mmap(NULL, 2212784, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_DENYWRITE, 3, 0) = 0x2e2d2ff000
mmap(0x2e2d2ff000, 98304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x2e2d2ff000
mmap(0x2e2d516000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x2e2d516000
mmap(0x2e2d518000, 13232, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2e2d518000
close(3)                                = 0
open("/lib64/libdl.so.2", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\r\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=18906, ...}) = 0
mmap(NULL, 2109688, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_DENYWRITE, 3, 0) = 0x2e2d51c000
mmap(0x2e2d51c000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x2e2d51c000
mmap(0x2e2d71e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x2e2d71e000
close(3)                                = 0
open("/lib64/librt.so.1", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p'\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=57419, ...}) = 0
mmap(NULL, 2203960, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_DENYWRITE, 3, 0) = 0x2e2d720000
mmap(0x2e2d720000, 36864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x2e2d720000
mmap(0x2e2d929000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x2e2d929000
mmap(0x2e2d92b000, 61752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2e2d92b000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\t\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=1709649, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2e2d93b000
mmap(NULL, 3582744, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_DENYWRITE, 3, 0) = 0x2e2d93c000
mmap(0x2e2d93c000, 1445888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x2e2d93c000
mmap(0x2e2dc9d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x161000) = 0x2e2dc9d000
mmap(0x2e2dca2000, 19224, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2e2dca2000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2e2dca7000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2e2dca8000
arch_prctl(ARCH_SET_FS, 0x2e2dca7b20)   = 0
mprotect(0x2e2dc9d000, 16384, PROT_READ) = 0
mprotect(0x2e2d929000, 4096, PROT_READ) = 0
mprotect(0x2e2d71e000, 4096, PROT_READ) = 0
mprotect(0x2e2d516000, 4096, PROT_READ) = 0
mprotect(0xa46000, 4096, PROT_READ)     = 0
set_tid_address(0x2e2dca7df0)           = 1669368
set_robust_list(0x2e2dca7e00, 0x18)     = 0
futex(0x304b03ddcac, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x304b03ddcac, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 2e2dca7b20) = -1 ENOSYS (Function not implemented)
rt_sigaction(SIGRTMIN, {0x2e2d305650, [], SA_RESTORER|SA_SIGINFO, 0x2e2d30ecc0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x2e2d3056d0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x2e2d30ecc0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=512*1024, rlim_max=512*1024}) = 0
brk(0)                                  = 0x2ded2fe000
brk(0x2ded31f000)                       = 0x2ded31f000
futex(0x82766c, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x827674, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x82767c, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x824c20, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x827684, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x827788, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x82768c, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x827694, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8276c8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x824bc0, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x827588, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x824c38, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8276d0, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8276d8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
getuid()                                = 0
geteuid()                               = 0
getgid()                                = 0
getegid()                               = 0
open("/opt/vada/ing/x86_64/ssl/openssl.cnf", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x82769c, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8249a8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
open("/proc/meminfo", O_RDONLY)         = -1 ENOENT (No such file or directory)
futex(0x82490c, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
brk(0x2ded340000)                       = 0x2ded340000
futex(0x824914, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8277d8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
syscall_318(0x2ded31f9f0, 0x20, 0, 0x30, 0x101010101010101, 0xc82100b580408840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
shmget(0x72, 1, 0)                      = -1 ENOENT (No such file or directory)
uname({sys="VMkernel", node="localhost", ...}) = 0
futex(0x8277b8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
syscall_318(0x2ded31f9f0, 0x20, 0, 0x30, 0x101010101010101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
shmget(0x72, 1, 0)                      = -1 ENOENT (No such file or directory)
uname({sys="VMkernel", node="localhost", ...}) = 0
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0, 0), ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 -opost isig icanon echo ...}) = 0
mmap(NULL, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2e2dca9000
write(1, "RAND_poll() said 0\n", 19RAND_poll() said 0
)    = 19
syscall_318(0x2ded320140, 0x20, 0, 0x30, 0x101010101010101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
shmget(0x72, 1, 0)                      = -1 ENOENT (No such file or directory)
uname({sys="VMkernel", node="localhost", ...}) = 0
gettimeofday({1693308389, 157611}, NULL) = 0
syscall_318(0x2ded3201d0, 0x20, 0, 0x30, 0x101010101010101, 0x2e2d946530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
shmget(0x72, 1, 0)                      = -1 ENOENT (No such file or directory)
uname({sys="VMkernel", node="localhost", ...}) = 0
write(1, "RAND_bytes() said 0\n", 20RAND_bytes() said 0
)   = 20
write(1, "RAND_status() said 0\n", 21RAND_status() said 0
)  = 21
write(1, "RAND_status said we aren't seede"..., 35RAND_status said we aren't seeded?
) = 35
exit_group(0)                           = ?

Doesn't it  support vmkernel (ESXi)  ? is there a any patch ?
uname -a : VMkernel localhost 6.5.0 https://github.com/openssl/openssl/pull/1 SMP Release build-4887370 Jan 5 2017 19:17:59 x86_64 x86_64 x86_64 ESXi

I think your kernel is too old.  Looking at rand_unix, it appears openssl attempts to define __NR_getrandom if its not already defined so as to make use of some older glibc's that didn't define it already.  But Centos5.9 IIRC uses a 2.6 kernel which definately didn't support that syscall.
if you rebuild with OPENSSL_RAND_SEED_GETRANDOM undefined, it should fall back to other entropy sources.

For some reason, it's showing errno as 38 in your strace. It should show ENOSYS, and the code should then deal with it. But strace doesn't seem to know what 38 means. I currently have no idea either, would need to look it up.

I expect the code to fall back to /dev/urandom when the syscall is not available.

I think your kernel is too old. Looking at rand_unix, it appears openssl attempts to define __NR_getrandom if its not already defined so as to make use of some older glibc's that didn't define it already. But Centos5.9 IIRC uses a 2.6 kernel which definately didn't support that syscall.
if you rebuild with OPENSSL_RAND_SEED_DEVENTROPY defined, it should fall back to other entropy sources.

Where can I find OPENSSL_RAND_SEED_DEVENTROPY ? There is no OPENSSL_RAND_SEED_DEVENTROPY in openssl-1.1.1q.

I expect the code to fall back to /dev/urandom when the syscall is not available.

syscall_318(getrandom)
Hmm. There is no system-call(318) because vmkernel (ESXi-6.5.0a is too old (release 2017-06-16)
I'm not sure where linux vanila kernel vesion is used becuase vmkernel from WMWARE ESXi they say dfference from linux kernel.

For some reason, it's showing errno as 38 in your strace. It should show ENOSYS, and the code should then deal with it. But strace doesn't seem to know what 38 means. I currently have no idea either, would need to look it up.

syscall_318(getrandom)
Hmm. There is no system-call(318) because vmkernel (ESXi-6.5.0a is too old (release 2017-06-16)
I'm not sure where linux vanila kernel vesion is used becuase vmkernel from WMWARE ESXi they say dfference from linux kernel.

@raphaell its a CFLAG, you need to set it when you're configuring openssl:
CFLAGS="-DOPENSSL_RAND_SEED_DEVRANDOM" ./Configure linux-generic64

That will build in support for querying known random devices in /dev to get entropy
@kroeckx openssl will fall back to using another random source if getentropy fails with ENOSYS, but only if you build in support for an alternate entropy source, by doing something like the above.

@raphaell its a CFLAG, you need to set it when you're configuring openssl:
CFLAGS="-DOPENSSL_RAND_SEED_DEVRANDOM" ./Configure linux-generic64

That will build in support for querying known random devices in /dev to get entropy
@kroeckx openssl will fall back to using another random source if getentropy fails with ENOSYS, but only if you build in support for an alternate entropy source, by doing something like the above.

Same result I get.
crypto/rand/rand_unix.c @ wait_random_seeded returned 0 when vmkernel is bigger than 4.8  than's why rand device is not used .
Actually, vmkernel is not '__linux'(?)
[root@localhost:/tmp/ing/bin] uname -a
VMkernel localhost 6.5.0 #1 SMP Release build-4887370 Jan  5 2017 19:17:59 x86_64 x86_64 x86_64 ESXi

I don't use VMware-SDK for cross compile becuase ABI from my build-host is okay to execute .
my complie ENV: Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-<IP_ADDRESS>/jre --with-cpu=generic --host=x86_64-redhat-linux
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)
*Is it okay ? Skip kernel version checking if target is VMkernel? or turn off __linux ?
how to turn off gcc pre define macro as to __linux?
wait_random_seeded()  reutrn 1 VS  checking something by predefine.
My problem occurs when checking something.
      if ((shm_id = shmget(OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID, 1, 0)) == -1) {
            /*
             * Check the kernel's version and fail if it is too recent.
             *
             * Linux kernels from 4.8 onwards do not guarantee that
             * /dev/urandom is properly seeded when /dev/random becomes
             * readable.  However, such kernels support the getentropy(2)
             * system call and this should always succeed which renders
             * this alternative but essentially identical source moot.
             */
            if (uname(&un) == 0) {
                kernel[0] = atoi(un.release);
                p = strchr(un.release, '.');
                kernel[1] = p == NULL ? 0 : atoi(p + 1);
                if (kernel[0] > kernel_version[0]
                    || (kernel[0] == kernel_version[0]
                        && kernel[1] >= kernel_version[1])) {
                    return 0;
                }
            }

check vmkernel? or return 1 when calling wait_random_seeded
            if (uname(&un) == 0 && strcmp(un.sysname, "VMkernel")) {

....

have you tried out if this works for your system?
./config -DDEVRANDOM="\"\\\"/dev/char/vmkdriver/random\\\"\""

have you tried out if this works for your system? ./config -DDEVRANDOM="\"\\\"/dev/char/vmkdriver/random\\\"\""

Good!! Success !!
[root@localhost:/tmp/ing] strace ./random
execve("./random", ["./random"], [/* 18 vars */]) = 0
brk(0)                                  = 0x906b541000
uname({sys="VMkernel", node="localhost", ...}) = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/lib64/tls/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/lib64/tls", 0x34afca48400)       = -1 ENOENT (No such file or directory)
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320k\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=135511, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x90ab541000
mmap(NULL, 2212784, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_DENYWRITE, 3, 0) = 0x90ab542000
mmap(0x90ab542000, 98304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x90ab542000
mmap(0x90ab759000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x90ab759000
mmap(0x90ab75b000, 13232, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x90ab75b000
close(3)                                = 0
open("/lib64/libdl.so.2", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\r\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=18906, ...}) = 0
mmap(NULL, 2109688, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_DENYWRITE, 3, 0) = 0x90ab75f000
mmap(0x90ab75f000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x90ab75f000
mmap(0x90ab961000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x90ab961000
close(3)                                = 0
open("/lib64/librt.so.1", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p'\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=57419, ...}) = 0
mmap(NULL, 2203960, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_DENYWRITE, 3, 0) = 0x90ab963000
mmap(0x90ab963000, 36864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x90ab963000
mmap(0x90abb6c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x90abb6c000
mmap(0x90abb6e000, 61752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x90abb6e000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\t\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=1709649, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x90abb7e000
mmap(NULL, 3582744, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_DENYWRITE, 3, 0) = 0x90abb7f000
mmap(0x90abb7f000, 1445888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x90abb7f000
mmap(0x90abee0000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x161000) = 0x90abee0000
mmap(0x90abee5000, 19224, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x90abee5000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x90abeea000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x90abeeb000
arch_prctl(ARCH_SET_FS, 0x90abeeab20)   = 0
mprotect(0x90abee0000, 16384, PROT_READ) = 0
mprotect(0x90abb6c000, 4096, PROT_READ) = 0
mprotect(0x90ab961000, 4096, PROT_READ) = 0
mprotect(0x90ab759000, 4096, PROT_READ) = 0
mprotect(0xa8f000, 4096, PROT_READ)     = 0
set_tid_address(0x90abeeadf0)           = 1955875
set_robust_list(0x90abeeae00, 0x18)     = 0
futex(0x34afca48cbc, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x34afca48cbc, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 90abeeab20) = -1 ENOSYS (Function not implemented)
rt_sigaction(SIGRTMIN, {0x90ab548650, [], SA_RESTORER|SA_SIGINFO, 0x90ab551cc0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x90ab5486d0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x90ab551cc0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=512*1024, rlim_max=512*1024}) = 0
brk(0)                                  = 0x906b541000
brk(0x906b562000)                       = 0x906b562000
futex(0x8706ac, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706b4, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706bc, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x86dc60, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706c4, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8707c8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706cc, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706d4, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x86dc00, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8705c8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x86dc78, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x870708, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x870710, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
getuid()                                = 0
geteuid()                               = 0
getgid()                                = 0
getegid()                               = 0
open("/usr/local/ssl/openssl.cnf", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x8706dc, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x86d9e8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
open("/proc/meminfo", O_RDONLY)         = -1 ENOENT (No such file or directory)
futex(0x86d94c, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
brk(0x906b583000)                       = 0x906b583000
futex(0x86d954, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x870818, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
syscall_318(0x906b562e10, 0x20, 0, 0x30, 0x101010101010101, 0x906b55d1f8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
open("/dev/char/vmkdriver/random", O_RDONLY) = 3
fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(0, 0), ...}) = 0
read(3, "\222\246\33<\260\320\371\242\317W\253\34\301Fk\22\207o^|\36\361M\270\210\231\365; \372f3", 32) = 32
gettimeofday({1693555136, 506018}, NULL) = 0
time(NULL)                              =<PHONE_NUMBER>
futex(0x8707f8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
syscall_318(0x906b562e50, 0x20, 0, 0x30, 0x101010101010101, 0x906b562768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(0, 0), ...}) = 0
read(3, "o]Qi\372\233G\332\377K\344Pby?(Z\34e\350p{\355\374\300\0270\266\361\30\373%", 32) = 32
time(NULL)                              =<PHONE_NUMBER>
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0, 0), ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 -opost isig icanon echo ...}) = 0
mmap(NULL, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x90abeec000
write(1, "RAND_poll() said 1\n", 19RAND_poll() said 1
)    = 19
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
write(1, "RAND_bytes() said 1\n", 20RAND_bytes() said 1
)   = 20
write(1, "RAND_status() said 1\n", 21RAND_status() said 1
)  = 21
write(1, "RAND_status is okay!\n", 21RAND_status is okay!
)  = 21
fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(0, 0), ...}) = 0
close(3)                                = 0
exit_group(0)                           = ?

Is there a way not to set random device?  because my app run by other hosts but my native host failed.
[root@agent-dev org-1.1.1q-open]# strace ./random
execve("./random", ["./random"], [/* 28 vars */]) = 0
brk(0)                                  = 0xdd5d000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8d32696000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8d32697000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/usr/local/ssl/lib/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/ssl/lib/tls/x86_64", 0x7fff1cecb7e0) = -1 ENOENT (No such file or directory)
open("/usr/local/ssl/lib/tls/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/ssl/lib/tls", 0x7fff1cecb7e0) = -1 ENOENT (No such file or directory)
open("/usr/local/ssl/lib/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/ssl/lib/x86_64", 0x7fff1cecb7e0) = -1 ENOENT (No such file or directory)
open("/usr/local/ssl/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/ssl/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=43708, ...}) = 0
mmap(NULL, 43708, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b8d32698000
close(3)                                = 0
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340W \22<\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=149968, ...}) = 0
mmap(0x3c12200000, 2208624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3c12200000
mprotect(0x3c12216000, 2097152, PROT_NONE) = 0
mmap(0x3c12416000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x3c12416000
mmap(0x3c12418000, 13168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3c12418000
close(3)                                = 0
open("/usr/local/ssl/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libdl.so.2", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\16\240\21<\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=23360, ...}) = 0
mmap(0x3c11a00000, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3c11a00000
mprotect(0x3c11a02000, 2097152, PROT_NONE) = 0
mmap(0x3c11c02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x3c11c02000
close(3)                                = 0
open("/usr/local/ssl/lib/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/librt.so.1", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \"`\22<\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=53448, ...}) = 0
mmap(0x3c12600000, 2132936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3c12600000
mprotect(0x3c12607000, 2097152, PROT_NONE) = 0
mmap(0x3c12807000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x3c12807000
close(3)                                = 0
open("/usr/local/ssl/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\332a\21<\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1726296, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8d326a3000
mmap(0x3c11600000, 3506520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3c11600000
mprotect(0x3c1174f000, 2097152, PROT_NONE) = 0
mmap(0x3c1194f000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14f000) = 0x3c1194f000
mmap(0x3c11954000, 16728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3c11954000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8d326a4000
arch_prctl(ARCH_SET_FS, 0x2b8d326a4720) = 0
mprotect(0x3c1194f000, 16384, PROT_READ) = 0
mprotect(0x3c12807000, 4096, PROT_READ) = 0
mprotect(0x3c11c02000, 4096, PROT_READ) = 0
mprotect(0x3c12416000, 4096, PROT_READ) = 0
mprotect(0x3c1141c000, 4096, PROT_READ) = 0
munmap(0x2b8d32698000, 43708)           = 0
set_tid_address(0x2b8d326a47b0)         = 11073
set_robust_list(0x2b8d326a47c0, 0x18)   = 0
futex(0x7fff1cecc33c, FUTEX_WAKE_PRIVATE, 1) = 0
rt_sigaction(SIGRTMIN, {0x3c122053c0, [], SA_RESTORER|SA_SIGINFO, 0x3c1220eca0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x3c122052f0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x3c1220eca0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0)                                  = 0xdd5d000
brk(0xdd7e000)                          = 0xdd7e000
futex(0x8706ac, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706b4, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706bc, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x86dc60, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706c4, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8707c8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706cc, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8706d4, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x870708, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x86dc00, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x8705c8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x86dc78, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x870710, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
getuid()                                = 0
geteuid()                               = 0
getgid()                                = 0
getegid()                               = 0
open("/usr/local/ssl/openssl.cnf", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=10835, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8d32698000
read(3, "#\n# OpenSSL example configuratio"..., 4096) = 4096
getuid()                                = 0
geteuid()                               = 0
getgid()                                = 0
getegid()                               = 0
read(3, "Netscape crash on BMPStrings or "..., 4096) = 4096
read(3, " this to avoid interpreting an e"..., 4096) = 2643
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x2b8d32698000, 4096)            = 0
futex(0x8706dc, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x86d9e8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
open("/proc/meminfo", O_RDONLY)         = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8d32698000
read(3, "MemTotal:     16435920 kB\nMemFre"..., 1024) = 777
close(3)                                = 0
munmap(0x2b8d32698000, 4096)            = 0
futex(0x86d94c, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
brk(0xdd9f000)                          = 0xdd9f000
futex(0x86d954, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
futex(0x870818, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
syscall_318(0xdd7ed30, 0x20, 0, 0x30, 0x101010101010101, 0x2b8d32696360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
open("/dev/char/vmkdriver/random", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x8707f8, FUTEX_WAKE_PRIVATE,<PHONE_NUMBER>) = 0
syscall_318(0xdd7ed30, 0x20, 0, 0x30, 0x101010101010101, 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
open("/dev/char/vmkdriver/random", O_RDONLY) = -1 ENOENT (No such file or directory)
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 4), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8d32698000
write(1, "RAND_poll() said 0\n", 19RAND_poll() said 0
)    = 19
syscall_318(0xdd7f480, 0x20, 0, 0x30, 0x101010101010101, 0xdd7ece0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
open("/dev/char/vmkdriver/random", O_RDONLY) = -1 ENOENT (No such file or directory)
syscall_318(0xdd7f510, 0x20, 0, 0x30, 0x101010101010101, 0xbbf0bda8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = -1 (errno 38)
open("/dev/char/vmkdriver/random", O_RDONLY) = -1 ENOENT (No such file or directory)
write(1, "RAND_bytes() said 0\n", 20RAND_bytes() said 0
)   = 20
write(1, "RAND_status() said 0\n", 21RAND_status() said 0
)  = 21
write(1, "RAND_status said we aren't seede"..., 35RAND_status said we aren't seeded?
) = 35
exit_group(0)                           = ?

Passed if (uname(&un) == 0 && strcmp(un.sysname, "VMkernel")) { // to skip kernel version checking only
But Im not sure that the modification is okay or not.

This configuration I gave above is basically only meant to be safe for ESXI 6.5 and 7.0,
i.e. try getrandom first and then fall back to the ESXI specific blocking random source.
The reason why this is done this way is linux-specific, where waiting for /dev/random
was once telling us if /dev/urandom is also correctly initialized, but that broke
with a re-design of the linux random driver in linux 4.8.
But since your system is obviously using a totally different random device we
cannot be sure about anything here.
You should not use that openssl build result on genuine linux, since you have something
totally different, it is correct to detect the wrong configuration and return an error.
Which is out of support by the way, so you should for sure update to a newer
supported ESXI version now.


collect /var/log from enterprise registry container

because the command to collect the registry logs is somewhat complex, an
additional field is added to the mayday.Command struct to set the name
of the output while when an automatically generated name is not
sufficient.

fixes #13

Part of the design pattern is to show the command which would be run... i.e.:
netstat -> mayday_commands/netstat_-neopa
Using the symlink from netstat to mayday_commands/netstat_-neopa helps both the user and the support technician determine the flags used with the command.  In the case of the enterprise registry logs, the output is:
enterprise_registry_log.tar -> mayday_commands/enterprise_registry_log.tar
Possibly we should create an /assets directory and symlink them in that way?
Other than that, log output looks good.  I was able to run it against an E.R. install and troubleshoot my intentionally manufactured problem.

@brianredbeard PTAL
now we use docker inspect to grab the /var/log volume of the host, but tar'ing the dir requires mayday be run as root, whereas it seemed to run OK as non-root before since core user is in the docker group..

Is there any way we can do inspection over /var/run/docker.sock rather than shelling out?

@brianredbeard it seems possible, but i'm unsure of what is an appropriate go docker client. github.com/fsouza/go-dockerclient seems like it can list containers and give volume paths.

@marineam / @bcwaldon maybe one of y'all has thoughts about the previous comment?

@brianredbeard @mischief You can use docker cp to copy files "out" of a container, I imagine that there's an equivalent via a client library.


Replay Buffer Persistence

I found it helpful to have an option to save and load the replay buffer from disk so I could make multiple runs based on the previous session's weights.

It is useful indeed, thank you


Added support to proxy paths.

Minor addition to allow the proxy to pass request path and parameter.

Hi @tuxccl. You know that you can build your own custom proxy with passing the Backend your self. Is there any reason we want it in the default example constructor?

There are cases where upstream serves multiple paths and take in parameter (example, /hello/world?foo=bar).
But the default behaviors ignores these from the request and assume upstream serving only the root.
Probably it is sufficient in your use case but adding these few lines is enough for a more general use case (it might look hackish because I don't want to change the interface).

Got it, thanks for the reply. I just wanted to be sure :) Merging it, thanks :+1:


Fix GH workflow trigger

test.yml workflow was being triggered to run on
push or PR of the master branch (which doesn't
exist), while it should use the main branch.

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@bdb61e9). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #2   +/-   ##
=======================================
  Coverage        ?   55.75%
=======================================
  Files           ?        3
  Lines           ?      113
  Branches        ?        0
=======================================
  Hits            ?       63
  Misses          ?       50
  Partials        ?        0

Flag
Coverage Δ

all-tests
55.75% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@bdb61e9). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #2   +/-   ##
=======================================
  Coverage        ?   55.75%
=======================================
  Files           ?        3
  Lines           ?      113
  Branches        ?        0
=======================================
  Hits            ?       63
  Misses          ?       50
  Partials        ?        0

Flag
Coverage Δ

all-tests
55.75% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


add guilded support

please

I have tried to use guilded api but there was some problems when sending files. The problem was not in discord api, but only guilded.gg.
So I don't think I'll be adding guilded. Besides, why not use Telegram/Discord

Nevermind Guilded switched to discord api

Also my reason for Guilded was because I was banned from discord for doxxing

@Herobrine331 u can find another c2


Deployments tag filter shows only one tag

Most likely something in the REST endpoint is broken

Closed with mitwelten/mitwelten-deployment-manager#6


Base SQUAD evaluation for retrievals

Default chunk size is 512: https://github.com/meta-llama/llama-stack/blob/66d8f4ffd126bff668434b314892a99fe854a034/llama_stack/providers/inline/agents/meta_reference/agent_instance.py#L668

I receive this:

When uploading all contexts (~9k) to the memory bank

Batch size of 10 timed out:

dataset size: 250 - QA pairs randomly sampled from SQUAD (TODO - not really pairs, since there are multiple questions for each context)

Quac

Dataset: 250 contexts of the validation split - questions grouped by context

Based off of these evaluation results, could we make the default chunking scheme sentence based?
Other people have found that splitting by sentence tends to have better results: https://superlinked.com/vectorhub/articles/evaluation-rag-retrieval-chunking-methods

Getting 500s trying to upload:

Default chunk overlap is chunk_size / 4
https://github.com/meta-llama/llama-stack/blob/caa4c38fcb9089cc92801842484f51bf1c4ccd33/llama_stack/providers/utils/memory/vector_store.py#L184-L185

Not really relevant since chunk amounts are fairly similar now
Hypothesis:

If both precision and recall increase then it's a positive result
But if one increases to the detriment of the other then we don't know if it's an improvement.
If both decreases then we know it's worse

But MRR is not susceptible to this, since it only takes the first result.

Narrative QA - full texts

- Average 340k characters
-

Parsing documents:
Docling - parse to text:

Took 30 seconds to upload 50 documents
175 - Chunks. This is an order of magnitude lower than previous - why?

^ Our documents are being drastically reduced

Narrative QA - Text only

47 documents
1398 questions to those documents

k = 10

Precision: 0.59
Recall: 0.82
MRR: 0.74

k = 5

Precision: 0.63
Recall: 0.79
MRR: 0.73

k = 3

Precision: 0.65
Recall: 0.76
MRR: 0.73

So on full-text search, the search system works pretty well.

Markdown evaluations

HTML evaluations

50 html documents from https://huggingface.co/datasets/philschmid/markdown-documentation-transformers
~12 minutes to upload
Queried via their titles

No-preprocessing
8258 chunks
k=10

precision: 0.38
recall: 0.82
MRR: 0.64

k=5

precision: 0.44
recall: 0.74
MRR: 0.63

k=3

precision: 0.47
recall: 0.7
MRR: 0.62

Stripping of html:


NMS: Fix bit-mask calculation as last argument of PacketPlayOutMapChunk constructor

Last parameter in PacketPlayOutMapChunk is bit mask.  It shows what chunk sections client have to update. There are 16 sections in chunk. Each section height=16. Y-coordinate varies from 0 to 255.
We know that max light=15. The value decreases for 15 blocks down and up. So, It is enough to update section with light, one section below and one section above.
mask = (7<<(y>>4))>>1
Don't worry if one bit will be in 16-th position. Only lower 16 bits in mask are used in PacketPlayOutMapChunk. I have checked it. Also, in versions 1_9_R2 and later there is strange behavior in class PacketPlayOutMapChunk: flag = mask == 0xffff. I don't know is this a bug or not, but we can't pass value 0xffff because of all entities in chank are dissapeared on client. So, I decided to use 0x1ffff instead of 0xffff,
I don't know the reason why you do not put the release on spigot plugin main page.
This is a very useful plugin and people need it.
The last commit I have built and posted here: https://www.spigotmc.org/resources/lightapi-temporary-fork-3-2-4-1-12.48247/. If you are not going to make new release, then I can also do it on my page.

Where information about 'formula' for mask?

From me (IMHO) =)
I looked through source code of PacketPlayOutMapChunk and found that last argument is bit mask.
Then I looked for using this mask (where and how it is used)
Each bit (from low to high) is chunk section number. There are 16 sections with height=16 for each one.
According this mask PacketPlayOutMapChunk collects sections that will be sended to client. Client will update these sections.
Example:
Light is placed on block y=193.
Max light value = 15
So, light decreasing (y-coord : strength): 178:0, 179:1, ..., 192:14, 193:15, 194:14, ..., 207:1, 208:0
So, client have to update blocks from 179 to 207. Sections numbers are:
11 (y=178-191) , 12 (y=102-207), 13 (y=208)
I take 3 bits "00000111b, shift it up by (y\16=12) and then one time back down. Result: mask=0011100000000000b. It says that light on block y=193 affects sections 11,12,13 and client have to update them
Your code did y1616-1 =<PHONE_NUMBER>111111b, which means that client have to update sections: 0,1,2,3,4,5,6,7 and 14,15. This is incorrect!
You can check it yourself.


Updates ZeroXExchange mainnet address to v3.

Just in case someone forgets to update this before deployment, better to have latest than an old version that we know is incompatible.
Pulled address from https://github.com/0xProject/0x-monorepo/blob/development/packages/contract-addresses/addresses.json#L4

Note: With MCD being released, I recommend filling in those addresses here too so your mainnet deploy doesn't accidentally end up with testnet MCD.


向量检索模型训练数据生成的具体方法可以说一下吗

包括gpt3的promt 以及label的计算方法， 我用rouge-1算了一下训练集中的query和ref，感觉对不上啊。
下面例子中的0.8和0.2是怎么算的， 我咋算不对呢？
example:
{'question': 'Why does wine taste better the older it gets?',
'positive_reference': '"No, wine does not always taste better with age. This is because tannins, which give wine its astringent taste, break down over time. However, some wines may taste better after being exposed to oxygen.',
'positive_label': 0.8,
'negative_reference': 'Does wine taste better with age? The answer is: maybe! We’ll take a look at the why, how, and what of aging wine so you can be a more discerning drinker.',
'negative_label': 0.2}

同问同问

同问同问


Scale only at the top?

Would it be possible to have the scale effect just at the top, not at the bottom?

@amanzan Hi, sorry to reply so late.
You can try to configure the SRL like this:
 refreshLayout.setDisableLoadMore(true);
 refreshLayout.setEnableOverScroll(false);

Thanks, it's not exactly what I needed, so I created a fork anyway :)


Feature Request: Convert tspan to text elements for SVG tiny

Hi Jeff,
I am using the qtsoftware SVG renderer to display Inkscape generated SVG content. I am using your scour tool to clean up the Inkscape files before importing.
Unfortunately, qtsoftware is a SVG tiny renderer and thus cannot use positional attributes within tspan elements, which Inkscape is using quite a lot for multiline text.
I wonder if there could be a SVG scour option to convert tspan elements into regular text elements that a SVG tiny renderer could display.
I currently do this manually by converting the parent text elements to a g (group) element that holds all the text-related attributes, then I convert all the tspan elements to text elements.

(by codedread)
Converting the parent text into a group seems like a much better solution than what I was thinking (just make the tspans into text elements).

(by arachnovobia)
There is another Bug: Scour makes group tags in text tags between span tags, so for example some renders can't display this text, like librsvg.


[dev] package-lock.json and yarn.lock are in .gitignore

https://github.com/banacorn/agda-mode/blob/921460aaadd8476203710369906578451a8c9b24/.gitignore#L5
https://github.com/banacorn/agda-mode/blob/921460aaadd8476203710369906578451a8c9b24/.gitignore#L13
One of these lockfiles should be checked in. (I prefer Yarn, but I believe later versions of npm (>= 5) work ok).
Without it, it's impossible for other developers to recreate the same set of set of transitive dependencies as the official package.
Having the lock file checked in will also allow you to stop committing the compiled source under lib/, since those builds will be reproducible.
I'm happy to create a PR that does this, but since the lock file is missing, my machine does not install the exact same transitive dependencies as @banacorn is using to build the files under lib/; it would be better for that lock file to represent the current state. @banacorn would you be able to share or generate it?

I'm not sure if I'm doing it right, here's what I've done to generate the lockfiles:
For package-lock.json:

rm -rf node_modules
npm install

For yarn.lock:

rm -rf node_modules
yarn

Awesome! Thank you!


Multiple Nodes are created form same matplotlib figure

It looks like the plotly backend for matplotlib is sending multiple figure updates even though one should be enough. As @brollb  suggested, one Idea is to send figure number along with plot's json data. That way we can differentiate the figures and create correct number of Graph nodes. However, if possible it might be worth it to investigate more and send it only once when its necessary.

The issue was not with plotly backend but with metadata parsing.