[QUESTION] Desaster recovery of a replica from filesystem

Dear longhorn developers,
our longhorn based cluster crashed and all volume backups worked except one. This volume was round about 250GB in size.
I can't recover it from backup because the backup seems corrupted.
Now I'm trying to recover it from filesystem. I've access to the exact replica directory with it's *.img files.
I did what's written in the documentation here but the block device under /dev/longhorn/xxx doesn't get created.
+ set -e
+ mount --rbind /host/dev /dev
+ volume=pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16
+ size=268435456000
+ frontend=
+ '[' -z pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16 ']'
+ '[' -z<PHONE_NUMBER>00 ']'
+ '[' -z ']'
+ echo Use default frontend TGT block device
Use default frontend TGT block device
+ frontend=tgt-blockdev
+ exec longhorn-instance-manager daemon
+ start
+ set +e
+ true
+ /usr/local/bin/grpc_health_probe -addr localhost:8500
time="2021-12-27T17:32:12Z" level=info msg="Storing process logs at path: /var/log/instances"
[longhorn-instance-manager] time="2021-12-27T17:32:12Z" level=info msg="Instance Manager listening to localhost:8500"
timeout: failed to connect service "localhost:8500" within 1s
+ [[ 2 -eq 0 ]]
+ sleep 1
+ true
+ /usr/local/bin/grpc_health_probe -addr localhost:8500
status: SERVING
+ [[ 0 -eq 0 ]]
+ echo longhorn instance manager is ready
+ break
+ set -e
longhorn instance manager is ready
+ tgtd -f
+ longhorn-instance-manager process create --name pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r --binary /usr/local/bin/longhorn --port-count 15 --port-args --listen,localhost: -- replica /volume/ --size<PHONE_NUMBER>00
+ tee /var/log/tgtd.log
tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
tgtd: work_timer_start(146) use timer_fd based scheduler
tgtd: bs_init(387) use signalfd notification
[longhorn-instance-manager] time="2021-12-27T17:32:14Z" level=info msg="Process Manager: prepare to create process pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r"
[longhorn-instance-manager] time="2021-12-27T17:32:14Z" level=info msg="Process Manager: created process pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r"
{
	"name": "pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r",
	"binary": "/usr/local/bin/longhorn",
	"args": [
		"replica",
		"/volume/",
		"--size",
		"268435456000",
		"--listen",
		"localhost:10000"
	],
	"portCount": 15,
	"portArgs": [
		"--listen,localhost:"
	],
	"processStatus": {
		"state": "starting",
		"errorMsg": "",
		"portStart": 10000,
		"portEnd": 10014
	},
	"deleted": false
}
+ sleep 5
[pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r] time="2021-12-27T17:32:14Z" level=info msg="Listening on data server localhost:10001"
[longhorn-instance-manager] time="2021-12-27T17:32:14Z" level=info msg="Process pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r has started at localhost:10000"
[pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r] time="2021-12-27T17:32:14Z" level=info msg="Listening on sync agent server localhost:10002"
time="2021-12-27T17:32:14Z" level=info msg="Listening on gRPC Replica server localhost:10000"
time="2021-12-27T17:32:14Z" level=info msg="Listening on sync localhost:10002"
+ longhorn-instance-manager process create --name pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-e --binary /usr/local/bin/longhorn --port-count 1 --port-args --listen,localhost: -- controller pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16 --frontend tgt-blockdev --replica tcp://localhost:10000
[longhorn-instance-manager] time="2021-12-27T17:32:19Z" level=info msg="Process Manager: prepare to create process pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-e"
[longhorn-instance-manager] time="2021-12-27T17:32:19Z" level=info msg="Process Manager: created process pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-e"
{
	"name": "pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-e",
	"binary": "/usr/local/bin/longhorn",
	"args": [
		"controller",
		"pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16",
		"--frontend",
		"tgt-blockdev",
		"--replica",
		"tcp://localhost:10000",
		"--listen",
		"localhost:10015"
	],
	"portCount": 1,
	"portArgs": [
		"--listen,localhost:"
	],
	"processStatus": {
		"state": "starting",
		"errorMsg": "",
		"portStart": 10015,
		"portEnd": 10015
	},
	"deleted": false
}
[pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-e] time="2021-12-27T17:32:19Z" level=info msg="Starting with replicas [\"tcp://localhost:10000\"]"
[pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r] time="2021-12-27T17:32:19Z" level=info msg="New connection from: <IP_ADDRESS>:57730"
time="2021-12-27T17:32:19Z" level=info msg="Opening volume /volume/, size<PHONE_NUMBER>00/512"
[pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-e] time="2021-12-27T17:32:19Z" level=info msg="Connecting to remote: localhost:10000"
time="2021-12-27T17:32:19Z" level=info msg="Opening: localhost:10000"
time="2021-12-27T17:32:19Z" level=info msg="Adding backend: tcp://localhost:10000"
time="2021-12-27T17:32:19Z" level=info msg="Start monitoring tcp://localhost:10000"
2021/12/27 17:32:19 Invalid state rebuilding for getting revision counter
[pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-r] time="2021-12-27T17:32:19Z" level=info msg="Lost connection from: <IP_ADDRESS>:57730"
[longhorn-instance-manager] time="2021-12-27T17:32:19Z" level=info msg="Process Manager: process pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-e error out, error msg: exit status 1"
[longhorn-instance-manager] time="2021-12-27T17:32:19Z" level=info msg="stop waiting for gRPC service of process pvc-21beee23-e2ac-48ef-9cac-1e1dd8437f22-892d5a16-e to start at localhost:10015"

Do you have any suggestions how I could get access to the data of the replica/volume?
Thank you very much and best regards.

Can you try another replica? This replica is at rebuilding state and may have data integrity issue.

@PatrickHuetter
Can you try another replica? This replica is at rebuilding state and may have integrity issue.

@derekbit Unfortunately not. I also have the data from the corrupted backup which doesn't get detected in longhorn Backup view (there is the pvc identifier but no backup). Seems that maybe some blks are missing in s3 because the directory in s3 has mostly the size the data should have. If this helps.
For me it's not really necessary that the replica has full integrity. For me it's most important to get even some of the data rescued. So it would be ok to mount an inconsistent replica. How can I do that?

For me it's not really necessary that the replica has full integrity. For me it's most important to get even some of the data rescued. So it would be ok to mount an inconsistent replica. How can I do that?

If you really want to start a block device based on this rebuilding-crashed replica, you can manually set "Rebuilding": false in file volume.meta then retry it.

@shuo-wu Sorry for my late answer but i wanted to let you know that it worked! I could restore mostly everything from the crashed replica using the changed attributes in the volume.meta file. I think this should be documented in the docs for absolute desaster recovery in cases where no healthy replica is left. Thank you very much and best regards.


[TC-DM-3.1]- updates to be made to the chip-cert tool to run test case

Need a parser cmd in the chip-tool to parse the attestation elements response msg

covered by 19091


Error initializing network controller: list bridge addresses failed: no available network

When one of my colleagues asked me if the network had changed because his  Docker configuration was suddenly giving a lot of problems, at first I did not know what he was talking about but after some questions, it slowly became clear to me that he had problems starting his docker environment when his VPN connection to the office was online. I looked at the error message that he received and I saw the following: "Error initializing network controller: list bridge addresses failed: no available network". This was very strange because the network he had configured in his daemon.yaml looked like this:
{
"default-address-pools":
[
{"base":"<IP_ADDRESS>/16","size":24}
]
}
In our corporate network we have a lot of RFC1918 networks, a few in the 10.x.x.x/8 range, a lot in the <IP_ADDRESS>/12 and <IP_ADDRESS>/16 ranges. But nothing that collides with above ranges, and even if something would collide, it was all local on his workstation where he was developing and testing some monitoring systems, and he is completely free to use whatever network he wants to use locally, as long as he doesn't interfere with the corporate network. On the VPN router I have a default set of routes set for RFC1918 networks pointing towards the corporate routers, so everyone can reach the internal corporate networks without having to worry about anything. The firewalls will take care of the rest.
I started debugging the error message and did some Google searches and I found a lot of people complaining about exactly this same problem. Some example tickets:
https://github.com/docker/for-linux/issues/123
https://github.com/moby/moby/issues/35121
https://github.com/moby/moby/issues/33925
Most of these tickets are against other projects, and none give a solution.
At first the error didn't make any sense to me because:

a network is available
the configured network is not directly connected so docker is not able to say that it should not use it.
even if an overlapping network is used somewhere else, a more specific route would be configured locally and this should prevent any routing issues.

But then I thought about something. What if the docker code, searching for free networks, takes the local routing table and checks the configured network against EVERY route in the routing table. If something matches or overlaps the route in the routing table it gives this error. At first I thought that this couldn't be true because this would always fail because a default route of <IP_ADDRESS>/0 would always match. But what if this default route is filtered out in the code for this specific reason. Then this hypothesis could be the truth.
I started testing locally on my own system, first I reproduced the error:
Setup my docker daemon with the same configuration
Had my normal local routing table without VPN.
Started docker and this worked fine.
The resulting routing table:
default via <IP_ADDRESS> dev enp62s0u1u1 proto static metric 1024
<IP_ADDRESS>/24 dev docker0 proto kernel scope link src <IP_ADDRESS> linkdown
<IP_ADDRESS>/24 dev enp62s0u1u1 proto kernel scope link src <IP_ADDRESS> metric 100
Then I started my VPN. The result was 3 extra routes:
<IP_ADDRESS>/8 via <IP_ADDRESS> dev tap0 proto static metric 50
<IP_ADDRESS>/12 via <IP_ADDRESS> dev tap0 proto static metric 50
<IP_ADDRESS>/16 via <IP_ADDRESS> dev tap0 proto static metric 50
I then stopped my docker daemon and tried to start it again, and indeed I received the same error. So I could reproduce the problem, now for my hypothesis: "Does the code check EVERY route in the routing table, filtering out the default route."
To test this I did the following:
I removed the default route and replaced it by 2 more specific routes that are together the whole internet:
<IP_ADDRESS>/1 via <IP_ADDRESS> dev enp62s0u1u1
<IP_ADDRESS>/1 via <IP_ADDRESS> dev enp62s0u1u1
My routing table then looks like this:
<IP_ADDRESS>/1 via <IP_ADDRESS> dev enp62s0u1u1
<IP_ADDRESS>/1 via <IP_ADDRESS> dev enp62s0u1u1
<IP_ADDRESS>/24 dev enp62s0u1u1 proto kernel scope link src <IP_ADDRESS> metric 100
The only difference between this state and a clean state of my system, is not having a default route, but having two routes that are together the default route of my system. Now I tried to start the docker daemon again. If the daemon starts fine my hypothesis is wrong and I have to continue my search. If the daemon fails then my hypothesis must me correct because the default route is the only difference in my local configuration.
And indeed, I received the same error again. Now I'm sure there is absolutely no reason to give this error because:

I don't have the <IP_ADDRESS>/16 network anywhere in my home network
I have a routing table that only routes for <IP_ADDRESS>/24 and the internet

This also proves my hypothesis that every route in the routing table is being checked against the configured network, filtering out the default route. If any route matches the configured network, the configuration is rejected.
This is a bug in the docker code. The code should be changed to only match routes with "scope link" because these routes are directly connected and would be a problem when you start a docker daemon with an overlapping network configuration. Any route that is not "scope link" should be ignored because those routes could be:

Injected by DHCP
Injected by a routing protocol
Injected by a VPN config.
Less specific behind a router somewhere remote

There is one corner case where you could give a warning or maybe an error. This is when there is an equal or more specific route that is not "scope link". Because this could result in routing issues to other systems. But even then, I would make it configurable because it could very well be that this is intentional and the user should be qualified to evaluate if this route overlap is a problem for him.
I'm not a developer but a network and systems engineer, so I am not able at the moment to provide a patch for this problem, but one of my colleagues thought that he had already found the problematic code in https://github.com/moby/libnetwork/blob/master/netutils/utils_linux.go in the CheckRouteOverlaps function and he might have a fix for this issue in the near future.
The problem might very well be the same in FreeBSD and / or Windows, because I also saws tickets where people had the same problem on at least Apple notebooks.
The version I have tested this with is: Docker version 19.03.13, build 4484c46d9d
Cheers,
Jan Hugo Prins

This route overlap check was changed by https://github.com/moby/moby/pull/42598 (released in v23.0) to only consider on-link routes. There's some agreement amongst maintainers that this heuristic isn't perfect and we might revisit it, or the ability for users to influence it at a later time.
I'm going to close this ticket as 'fixed'. Thanks for reporting here and in moby/moby.


[ADD] update_open_position with version 2 of IG Documentation (more complete)

Version work with modification of trailing stops

Hi you don't merge code with your master branch ?


Support TLS for replication

It closes #1501.
Currently we do not support splitting cert between server and client.
This PR does not plan to support TLS for cluster mode, like slot migration.
@gofort It will be nice if you guys still want this feature and would like to try to do some tests on the patch.

I have asked @sheyt0 to test, but please don't block this PR with our reply. We will anyway test this, but not sure if it will be during this week or next.

I have asked @sheyt0 to test, but please don't block this PR with our reply. We will anyway test this, but not sure if it will be during this week or next.

Thanks! It is OK to test it in next week since we do not require this PR to be merged ASAP.

Currently we do not support splitting cert between server and client.
What exactly does this mean?

Failed to set up replication with TLS.
Master log
root@master:~# kvrocks --version
kvrocks unstable (commit b10417c)
root@master:~# kvrocks --bind <IP_ADDRESS> --port 16666 --requirepass *pass* --tls-port 6667 --tls-key-file *path-to-master-key*.pem --tls-cert-file *path-to-master-cert*.pem --tls-ca-cert-file *path-to-ca-cert*.pem
...
(after slaveof on slave)
E20230811 12:23:36.292021 601968 redis_connection.cc:103] [connection] Going to remove the client: *slaveip*:3728, while encounter error: Success, SSL Error: error:0A00010B:SSL routines::wrong version number
E20230811 12:23:37.293565 601973 redis_connection.cc:103] [connection] Going to remove the client: *slaveip*:3740, while encounter error: Success, SSL Error: error:0A00010B:SSL routines::wrong version number
E20230811 12:23:38.294768 601968 redis_connection.cc:103] [connection] Going to remove the client: *slaveip*:3744, while encounter error: Success, SSL Error: error:0A00010B:SSL routines::wrong version number

Slave log
root@slave:~# kvrocks --tls-replication yes --tls-key-file *path-to-slave-key*.pem --tls-cert-file *path-to-slave-cert*.pem --tls-ca-cert-file *path-to-ca*.pem --port 16666 --masterauth *pass* slaveof *masterhost* 6667
...
E20230811 12:23:36.292021 601968 redis_connection.cc:103] [connection] Going to remove the client: <IP_ADDRESS>:3728, while encounter error: Success, SSL Error: error:0A00010B:SSL routines::wrong version number
E20230811 12:23:37.293565 601973 redis_connection.cc:103] [connection] Going to remove the client: <IP_ADDRESS>:3740, while encounter error: Success, SSL Error: error:0A00010B:SSL routines::wrong version number
E20230811 12:23:38.294768 601968 redis_connection.cc:103] [connection] Going to remove the client: <IP_ADDRESS>:3744, while encounter error: Success, SSL Error: error:0A00010B:SSL routines::wrong version number

@PragmaTwice сould you leave a little doc on how to use TLS for replication?
With this config
on master
kvrocks --tls-key-file ... --tls-cert-file ... --tls-ca-cert-file ...

and on slave
kvrocks --tls-replication yes --tls-key-file ... --tls-cert-file ... --tls-ca-cert-file ...

I get such errors
E20230814 08:22:48.497459 957356 redis_connection.cc:103] [connection] Going to remove the client: ...:59388, while encounter error: Success, SSL Error: error:0A0000C7:SSL routines::peer did not return a certificate
E20230814 08:22:49.507014 957356 redis_connection.cc:103] [connection] Going to remove the client: ...:59392, while encounter error: Success, SSL Error: error:0A0000C7:SSL routines::peer did not return a certificate

Sure. Here are my test steps:

Generate or obtain some certs (e.g. using minica):

ca.crt
server.crt
server.key

(all of them are in PEM format)

Start a kvrocks server instance

./kvrocks --dir datadir1 --port 6666 --tls-port 6676 --log-dir stdout --tls-cert-file cert/server.crt --tls-key-file cert/server.key --tls-ca-cert-file cert/ca.crt

Start a replica (in same host, for convenience)

./kvrocks --dir datadir2 --port 6667 --tls-port 6677 --log-dir stdout --tls-cert-file cert/server.crt --tls-key-file cert/server.key --tls-ca-cert-file cert/ca.crt --tls-replication yes --slaveof "<IP_ADDRESS> 6676"

Test

➜  build git:(tls-replica) ✗ redis-cli -p 6666
<IP_ADDRESS>:6666> get a
(nil)
<IP_ADDRESS>:6666> set a 1
OK
<IP_ADDRESS>:6666> set b 2
OK
<IP_ADDRESS>:6666> set c 3
OK
<IP_ADDRESS>:6666> exit
➜  build git:(tls-replica) ✗ redis-cli -p 6667
<IP_ADDRESS>:6667> get a
"1"
<IP_ADDRESS>:6667> get b
"2"
<IP_ADDRESS>:6667> get c
"3"
<IP_ADDRESS>:6667>

Server logs:
WARNING: No config file specified, using the default configuration. In order to specify a config file use 'kvrocks -c /path/to/kvrocks.conf'
I20230815 13:19:36.561048 20476 main.cc:328] kvrocks unstable (commit 83ad999c)
I20230815 13:19:36.591779 20476 storage.cc:332] [storage] Success to load the data from disk: 24 ms
I20230815 13:19:36.595307 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6666
I20230815 13:19:36.595387 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6676
I20230815 13:19:36.595523 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6666
I20230815 13:19:36.595558 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6676
I20230815 13:19:36.595630 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6666
I20230815 13:19:36.595645 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6676
I20230815 13:19:36.595757 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6666
I20230815 13:19:36.595808 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6676
I20230815 13:19:36.595898 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6666
I20230815 13:19:36.595913 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6676
I20230815 13:19:36.595993 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6666
I20230815 13:19:36.596009 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6676
I20230815 13:19:36.596077 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6666
I20230815 13:19:36.596091 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6676
I20230815 13:19:36.596154 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6666
I20230815 13:19:36.596168 20476 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6676
W20230815 13:19:36.596231 20476 server.cc:1629] [server] Increased maximum number of open files to 18464 (it's originally set to 1024)
I20230815 13:19:36.596359 20476 worker.cc:516] [worker] Thread #139993055979072 started
I20230815 13:19:36.596398 20476 worker.cc:516] [worker] Thread #139993064371776 started
I20230815 13:19:36.596438 20476 worker.cc:516] [worker] Thread #139993072764480 started
I20230815 13:19:36.596958 20476 worker.cc:516] [worker] Thread #139993127319104 started
I20230815 13:19:36.597033 20476 worker.cc:516] [worker] Thread #139993118926400 started
I20230815 13:19:36.597082 20476 worker.cc:516] [worker] Thread #139993110533696 started
I20230815 13:19:36.597136 20476 worker.cc:516] [worker] Thread #139993102140992 started
I20230815 13:19:36.597185 20476 worker.cc:516] [worker] Thread #139993093748288 started
I20230815 13:19:36.597337 20476 server.cc:208] [server] Ready to accept connections
I20230815 13:22:06.778137 20577 cmd_replication.cc:59] Slave <IP_ADDRESS>:43632, listening port: 6667, announce ip: <IP_ADDRESS> asks for synchronization with next sequence: 1 replication id: not supported, and local sequence: 2
I20230815 13:22:06.778566 20577 cmd_replication.cc:112] New replica: <IP_ADDRESS>:43632 was added, start incremental syncing

Replica logs:
WARNING: No config file specified, using the default configuration. In order to specify a config file use 'kvrocks -c /path/to/kvrocks.conf'
I20230815 13:22:06.714430 20842 main.cc:328] kvrocks unstable (commit 83ad999c)
I20230815 13:22:06.767542 20842 storage.cc:332] [storage] Success to load the data from disk: 12 ms
I20230815 13:22:06.769820 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6667
I20230815 13:22:06.769878 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6677
I20230815 13:22:06.770000 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6667
I20230815 13:22:06.770045 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6677
I20230815 13:22:06.770133 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6667
I20230815 13:22:06.770148 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6677
I20230815 13:22:06.770259 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6667
I20230815 13:22:06.770275 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6677
I20230815 13:22:06.770339 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6667
I20230815 13:22:06.770357 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6677
I20230815 13:22:06.770440 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6667
I20230815 13:22:06.770459 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6677
I20230815 13:22:06.770542 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6667
I20230815 13:22:06.770557 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6677
I20230815 13:22:06.770632 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6667
I20230815 13:22:06.770645 20842 worker.cc:72] [worker] Listening on: <IP_ADDRESS>:6677
W20230815 13:22:06.770705 20842 server.cc:1629] [server] Increased maximum number of open files to 18464 (it's originally set to 1024)
W20230815 13:22:06.770941 20842 replication.cc:348] Clean old synced checkpoint successfully
I20230815 13:22:06.770998 20842 worker.cc:516] [worker] Thread #140695450900032 started
I20230815 13:22:06.771035 20842 worker.cc:516] [worker] Thread #140695459292736 started
I20230815 13:22:06.771433 20842 worker.cc:516] [worker] Thread #140695532729920 started
I20230815 13:22:06.771507 20842 worker.cc:516] [worker] Thread #140695522240064 started
I20230815 13:22:06.771544 20842 worker.cc:516] [worker] Thread #140695513847360 started
I20230815 13:22:06.771581 20842 worker.cc:516] [worker] Thread #140695505454656 started
I20230815 13:22:06.771620 20842 worker.cc:516] [worker] Thread #140695497061952 started
I20230815 13:22:06.771665 20842 worker.cc:516] [worker] Thread #140695488669248 started
I20230815 13:22:06.771783 20842 server.cc:208] [server] Ready to accept connections
I20230815 13:22:06.775859 20954 replication.cc:421] [replication] Check db name request was sent, waiting for response
I20230815 13:22:06.777531 20954 replication.cc:441] [replication] DB name is valid, continue...
I20230815 13:22:06.777562 20954 replication.cc:459] [replication] replconf request was sent, waiting for response
I20230815 13:22:06.777760 20954 replication.cc:485] [replication] replconf is ok, start psync
I20230815 13:22:06.777988 20954 replication.cc:515] [replication] Try to use psync, next seq: 1
I20230815 13:22:06.779289 20954 replication.cc:552] [replication] PSync is ok, start increment batch loop

@PragmaTwice

Currently we do not support splitting cert between server and client.
Do I understand correctly that one set of certs should be used (same certs for master and slave)?
Or is it just about config options?

@PragmaTwice

Currently we do not support splitting cert between server and client.

Do I understand correctly that one set of certs should be used (same certs for master and slave)? Or is it just about config options?

Yeah, certs for master and slave must be same.

Yeah, certs for master and slave must be the same.

In the current implementation, this is a strange feature.

In the current implementation, this is not suitable for us. We need mTLS, not just TLS.

Although I previously do not plan to support it in this PR, the feature is not hard to implement.
I will try to support it later.

@sheyt0 Sorry, I think I mis-understand the problem.
The certs of master and slave can be different. I have tried and it works well.
But you need to be noticed that the server connection (listen to kvrocks clients) and the client connection (connect to the master) of the slave must use the same cert.

@sheyt0 And, I have found why you cannot start TLS connection between master and slave.
Currently slave must have a tls-port to have TLS connection to master, this is a BUG since it is unnecessary.
I will fix it soon.

Currently slave must have a tls-port to have TLS connection to master, this is a BUG since it is unnecessary.

It is fixed. Now I think slave can disable the tls-port (if you want).

It is fixed. Now I think the slave can disable the tls-port (if you want).

Not it works

I use minica generate ca file.
https://github.com/jsha/minica

 I use minica generate ca file. https://github.com/jsha/minica

You need to build kvrocks with cmake option ENABLE_OPENSSL.
Please refer to https://github.com/apache/kvrocks#build for details.

tls-replication params I shout config on master node or slave node?

I config tls-replication on slave node,then I login on master node, info comand:

Replication slave node info is port 6666,why not 6676(master node tls port)

You need to configure the repilca port to 6676 by yourself.
Also, you can open a discussion or question in slack channel rather than reply in this PR thread.


Avoid another any in the public code

Removes the last use of any in src/room.ts. This was probably typed this way because our unit test's MockWebSocket somehow is not assignable to this type. Need to dig in to deeper understand why not, but that's no reason to ship a public API with an any in there.
This will be the impact on our published types:

Technically speaking, that's a breaking change, but one that will only be a breaking change to people that are using this API (small %), and only to those who are using it incorrectly (even smaller %). Given this very narrow use case, I think we can publish this as a patch-level release?

I'm not sure on releasing this as patch level

Perhaps that's right. I'll wait with merging this until we have a bit more substance and we can release it as 1.1, and combined it with a few more changes.

This change makes sense. Can you double-check to see if WebSocket from the node module ws is assignable to the web WebSocket implementation? Just to see if we need to change this doc https://liveblocks.io/docs/api-reference/liveblocks-client#createClientNode
Releasing as 1.1.0 makes sense even if not strictly semantic

@jrowny @GuillaumeSalles Re-requesting another review here, since the changes I made since your approval are non-trivial.


Update Jenkins Build for Pantheon → Besu considerations

PR description

Add a full DCO check to the Jenkins build
Update messaging for Slack to use the new name
Re-enable bintray uploads
Use correct name for dist tarball

Fixed Issue(s)

The push to bintray will fail until we get snapshots in there. I've asked Bintray for this, waiting for it to be provisioned and will update accordingly


Update the ledger rules script for MainNet per the Board of Trustees resolution

Rules are ready for review here; https://github.com/sovrin-foundation/sovrin/pull/344


[Bug fix] - Start polling when clicking the X button in ErrorModal

Close #1118

@ibolton336 it might be a neat idea to introduce the usePausedPollingEffect hook from MTV into MTC. We could do it without changing much of the actual polling implementation, we would just have a useEffect in the hook calling the stopAllDefaultPolling and startAllDefaultPolling actions on mount/unmount. That way you don't have to remember where to call them imperatively, just call the hook in any component that needs to have polling off while it's mounted.

@mturley For sure that is a great call. I will open an issue to capture this enhancement. I am a big fan of how clean that implementation is.


More fixes for list of file extensions

There is a lot going on so bear with me.
TL;DR I created a few more wordlist, file-extensions-lower-cases.txt or file-extensions.txt is the one you would want to use.
Firstly, sources are defined at file-extensions-downloader.py near the top.
If you dont want to go there here are the sources:
https://support.microsoft.com/en-us/windows/common-file-name-extensions-in-windows-da4a4430-8e76-89c5-59f7-1cdbbc75cb01
https://en.wikipedia.org/wiki/List_of_filename_extensions
https://www.geeksforgeeks.org/list-of-file-formats/
Next up, I renamed @adilnbabras files-ext.txt to file-extensions.txt for better clarity. Although I did overwrite the file,  I planned to use it as a base for mutation but its missing some extensions like .txt
The script itself scraps data from the above sources and parse them into a list. After that it deduplicates, sort and mutate the contents and outputs the results into file-extensions-lower-cases.txt, file-extensions-upper-cases.txt, file-extensions-all-cases.txt and file-extensions.txt
And now, the resulting text files.
file-extensions-lower-cases.txt is for common naming schemes that you will expect in any sane webapps.
file-extensions-upper-cases.txt is for uncommon situations where everything is transformed into upper case.
file-extensions-all-cases.txt is the ULTIMATE KITCHEN SINK for fuzzing all cases. Included in the list is the original casing, upper cased and lower cased versions.
file-extensions.txt is the humble little text file that contains original casing scrapped off web sources.

lol that a lot of commits

WOW! Great stuff @molangning - nicely done.
BIG THANKS!

Youre welcome man


Round-Robin DNS records

Proposal / RFE
Round Robin DNS returns a list of ips instead of one. When using egress rule for a FQDN which has Round Robin DNS enabled it will not be able to reach the server (traffic is blocked).
Example response of DNS server for a record with Round Robin DNS:
Non-authoritative answer:
Name:    nu.nl
Addresses:  <IP_ADDRESS>
          <IP_ADDRESS>
          <IP_ADDRESS>
          <IP_ADDRESS>

Second time I execute the query there is a difference in order:
Non-authoritative answer:
Name:    nu.nl
Addresses:  <IP_ADDRESS>
          <IP_ADDRESS>
          <IP_ADDRESS>
          <IP_ADDRESS>

Solution would be that all resolved IPs are allowed by the egress rule.

@arnoldpistorius Could you include an example policy where this doesn't work? The current behaviour should accomplish what you suggest. Note that you do need to include L3 toFQDNs rules to allow the actual connection (https://cilium.readthedocs.io/en/latest/policy/language/#dns-based), and L7 DNS rules to allow the DNS lookups and provide the IPs used by the L3 rules (https://cilium.readthedocs.io/en/latest/policy/language/#obtaining-dns-data-for-use-by-tofqdns).

@raybejjani
Thanks for your reply. I had a couple of days off from work, so I was not able to respond faster.
It seems that the site nu.nl was redirecting to www.nu.nl and obviously that was blocked by the policy. I added a wildcard pattern to make it work.
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
  name: "allow-nu-nl"
spec:
  endpointSelector:
    matchLabels:
      "app.kubernetes.io/instance": "app"
  egress:
    # Enable DNS lookups
    - toEndpoints:
      - matchLabels:
          "k8s:io.kubernetes.pod.namespace": kube-system
          "k8s:k8s-app": kube-dns
      toPorts:
        - ports:
          - port: "53"
            protocol: ANY
          rules:
            dns:
              - matchPattern: "*"
    - toFQDNs:
        - matchName: nu.nl
        - matchPattern: "*.nu.nl"

@arnoldpistorius No worries! One thing to point out is that the DNS mapping is pretty simple. If you have a CNAME record for www.nu.nl -> nu.nl the internal cache would store www.nu.nl -> IP of nu.nl.
What you have works perfectly fine, but in case you saw the other behaviour someday, that is why!


Features to be added

1. Logging - to be implemented for v 0.2.0

Currently the API is logging all the requests to the user prompt.
Redirect them to a log-database and create a rotation cycle for debugging and analytics during crashes.

2. Login - to be implemented for v 0.3.0

Add authentication to the API so that the user who registered to the API can login with same credentials in future.
Use OAuth for authentication.

3. Linking - to be implemented for v 0.4.0

Add a new field to each document called followers/following/friends.
This field is any array of IDs of their friends/links.

4. Geo Location - to be implemented for v 0.5.0

Fetch geo-location of each user by using their address field and save it in a new field as geolocation.
This field is a tuple of his/her address coordinates (latitude and longitude).

5. Nearby friends - to be implemented by v 0.6.0

Using the geolocation field of each user, calculate the distance between each.
Filter out the distances after calculation and fetch the user IDs who are nearer to a given ID within a set-point radial distance.

GOAL

By v 1.0.0, this app should get a clean and simple UI.
Until v 1.0.0, all the release candidates will be related to the functionalities of API.


Reuse saved in config file colorscale value

Hi. There is a property 'colorscale' in set_config_file method. And I think it is expected that it should be used in iplot method, but it's not. I wanted to fix that but don't know how to implement it best
I would expect something like this in plotlytools.py (line 686)
if colorscale is None:
    config_colorscale = auth.get_config_file()['colorscale']
    colorscale=config_colorscale if config_colorscale is not None else theme_config['colorscale'] if 'colorscale' in theme_config else 'dflt'

but there is a problem, 'colorscale' always exists in config_file. As one of possible solutions I see changing method set_config_file to save colorscale even if it's None.
So logic is next, if you want to remember your colorscale call method:
cufflinks.set_config_file(colorscale='polar')

if you want to use default colorscale call method:
cufflinks.set_config_file()

But such approach has one minus. Users who alredy have used cufflinks have their config file with filled colorscale. And it's property will be used always.
For example, someone has set theme to 'ggplot' but colorscale not. Then he has default colorscale 'dflt' in config file. By current logic colorscale is selected from theme config and is expected to be 'ggplot' but with new logic it will be 'dflt' which I think is not accepted.
Maybe somehow reset that value in config file?

Mm. I see the issue. I did mess it up on that one!
Ok, what do you think of the following:

We create a copy of the 'dflt' scale and we give it another name (original?)
We treat 'dflt' as if it was None (for backward compatibility)- so if config_file['colorscale']='dflt' then we assume nothing has been set by the user - and then we load the theme scale.
Change the theme's definitions to use colorscale=original instead.
Change the config_file to have colorscale = None going forward

And then we apply the code suggested above, slightly modified:
if colorscale is None:
    config_colorscale = auth.get_config_file()['colorscale']
    colorscale=config_colorscale if config_colorscale is not in (None,'dflt') else theme_config['colorscale'] if 'colorscale' in theme_config else 'original'

What do you think?
Otherwise the value can be reset, but some people my complain that now new settings are being written on disk.
Let me know know your thoughts.

I think that is enough for expected behavior for everyone. Even for those who set colorscale to 'dflt' deliberately because they still had to pass it to iplot method if they used theme with colorscale different than 'dflt'


Implement passing arguments by ref for win64 ABI

This PR goes on top of #1510 and fixes legalization of function arguments in win64 ABI - arguments larger than pointer width are passed by reference. Fixes #1651.

#1510 just got merged, I rebased this PR so it contains 1 commit.

Seems like there were some issues with MacOS CI.

Seems like there were some issues with MacOS CI.

Re-running the CI jobs, hopefully that will clear them up.

Re-running the CI jobs, hopefully that will clear them up.

It looks like the re-run CI jobs are green, but the cancelled ones are still making the whole thing show up as not passing. Pretty sure this is a github actions bug. I'm going to just merge this.


C5 8.1 Attributes have changed

Adding a date time attribute causes the following Whoops
Call to undefined method Concrete\Package\CommunityStore\Src\Attribute\Value\StoreProductValue::getGenericValue()

Will try to look at this one soon


Update soap package.

Thanks! sorry for the delay, I updated it to the last soap version, and set the version to the same minor as the soap library.


☆(𝚉𝚆𝚊𝚝𝚌𝚑≦𝚅𝙸𝙳𝙴𝙾𝚂•FULL) balthazar baltasar ebang engonga Viral ᴠɪᴅᴇᴏ ʟᴇᴀᴋᴇᴅ Now Trending On Social Media X Twitter #151

10 sec ago balthazar baltasar ebang engonga ʟᴇᴀᴋᴇᴅ ᴠɪᴅᴇᴏ Viral On Social Media. ☆(𝚉𝚆𝚊𝚝𝚌𝚑≦𝚅𝙸𝙳𝙴𝙾𝚂•FULL) balthazar baltasar ebang engonga Viral ᴠɪᴅᴇᴏ ʟᴇᴀᴋᴇᴅ Now Trending On Social Media X Twitter #151
𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
🔴 ➤►𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄) 𝖶𝖺𝗍𝖼𝗁
🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
🔴 ➤►𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
balthazar baltasar ebang engonga's latest video has taken the internet by storm, sparking lively discussions across various social media platforms. The rising digital influencer, known for her captivating content—particularly her recent Spiderman-themed video—has experienced a tremendous surge in popularity, with fans eagerly awaiting the full version. Audiences are flocking to Instagram, X (formerly Twitter), and Discord to join the conversation and engage with her latest creation.
As the excitement continues to build, fans are actively sharing their thoughts online, underscoring the pivotal role social media plays in propelling creators like balthazar baltasar ebang engonga into the limelight. With her distinctive style and creative approach, Nila has made a significant impact on the digital scene, leaving her audience eager to see what she will do next.  The rising digital influencer, known for her captivating content—particularly her recent Spiderman-themed video—has experienced a tremendous surge in popularity, with fans eagerly awaiting the full version. Audiences are flocking to Instagram, X (formerly Twitter), and Discord to join the conversation and engage with her latest creation.
As the excitement continues to build, fans are actively sharing their thoughts online, underscoring the pivotal role social media plays in propelling creators like balthazar baltasar ebang engonga into the limelight. With her distinctive style and creative approach, Nila has made a significant impact on the digital scene, leaving her audience eager to see what she will do next.


SPI transfers for stm32

I would like to port my (ls7366)[https://github.com/theunkn0wn1/LS7366_rust/] driver to embassy, but SPI is not implemented for STM32.

Hiya--
We currently have 3 variants of SPI implemented for the STM32. Could you take a look, and if you find your target board(s) don't yet have an SPI implementation, drop a note here?
Thanks!


OSError: no library called "cairo" was found

I have cairo installed and manim is working fine, but I get this error:
OSError: no library called "cairo" was found
no library called "libcairo-2" was found
cannot load library 'libcairo.so.2': error 0x7e
cannot load library 'libcairo.2.dylib': error 0x7e
cannot load library 'libcairo-2.dll': error 0x7e
every time I try to run this:
from chanim import *
class ChanimScene(Scene):
def construct(self):
chem = ChemWithName("*6((=O)-N(-CH_3)-*5(-N=-N(-CH_3)-=)--(=O)-N(-H_3C)-)")
    self.play(chem.creation_anim())
    self.wait()

I had the exact same idea as you - a manim based chemistry animation engine. I stumbled over this project while searching for ways to create such a thing, I really hope I can get Chanim to work it's an awesome project.
Any help is appreciated.

Hmm, could you post the entire traceback please? It most likely is a Pango problem and not specifically related to chanim, but more info would be helpful here, especially since you say the rest of manim is working fine. Send the full traceback here as a comment or pastebin (or alternative) link please.

I had the exact same idea as you - a manim based chemistry animation engine. I stumbled over this project while searching for ways to create such a thing, I really hope I can get Chanim to work it's an awesome project.

Thank you for the kind words! I'll admit things are a bit of a mess here right now, I'm trying to patch it up slowly. Support like this gives me all the more motivation to stop slacking and actually put some effort here, haha!

Hmm, could you post the entire traceback please? It most likely is a Pango problem and not specifically related to chanim, but more info would be helpful here, especially since you say the rest of manim is working fine. Send the full traceback here as a comment or pastebin (or alternative) link please.

I had the exact same idea as you - a manim based chemistry animation engine. I stumbled over this project while searching for ways to create such a thing, I really hope I can get Chanim to work it's an awesome project.

Thank you for the kind words! I'll admit things are a bit of a mess here right now, I'm trying to patch it up slowly. Support like this gives me all the more motivation to stop slacking and actually put some effort here, haha!

Thank you for the quick response, here's the entire traceback:
Traceback (most recent call last):
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\dragonoverlord\AppData\Local\Programs\Python\Python38\Scripts\manim.exe\__main__.py", line 4, in <module>
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\site-packages\manim\__init__.py", line 46, in <module>
    from .mobject.svg.text_mobject import *
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\site-packages\manim\mobject\svg\text_mobject.py", line 54, in
<module>
    import cairocffi
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\site-packages\cairocffi\__init__.py", line 48, in <module>
    cairo = dlopen(
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\site-packages\cairocffi\__init__.py", line 45, in dlopen
    raise OSError(error_message)  # pragma: no cover
OSError: no library called "cairo" was found
cannot load library 'C:\Windows\system32\libcairo-2.dll': error 0xc1
cannot load library 'libcairo.so.2': error 0x7e
cannot load library 'libcairo.2.dylib': error 0x7e
cannot load library 'libcairo-2.dll': error 0xc1

I tried to reinstall Pango, but this error unfortunately still shows up - will look into ways around this problem.

Thank you for the quick response, here's the entire traceback:
Traceback (most recent call last):
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\dragonoverlord\AppData\Local\Programs\Python\Python38\Scripts\manim.exe\__main__.py", line 4, in <module>
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\site-packages\manim\__init__.py", line 46, in <module>
    from .mobject.svg.text_mobject import *
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\site-packages\manim\mobject\svg\text_mobject.py", line 54, in
<module>
    import cairocffi
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\site-packages\cairocffi\__init__.py", line 48, in <module>
    cairo = dlopen(
  File "c:\users\dragonoverlord\appdata\local\programs\python\python38\lib\site-packages\cairocffi\__init__.py", line 45, in dlopen
    raise OSError(error_message)  # pragma: no cover
OSError: no library called "cairo" was found
cannot load library 'C:\Windows\system32\libcairo-2.dll': error 0xc1
cannot load library 'libcairo.so.2': error 0x7e
cannot load library 'libcairo.2.dylib': error 0x7e
cannot load library 'libcairo-2.dll': error 0xc1

I tried to reinstall Pango, but this error unfortunately still shows up - will look into ways around this problem.

Hi! Sorry for not responding in a while, was your issue resolved?

Hi! Sorry for not responding in a while, was your issue resolved?


time function

Does ClickHouse provides functions like MySQL's 'INTERVAL'?
Sometimes, I'd like to use a SQL to limit the time range, such as 3hours ago to now()

There is no INTERVAL type at the moment. But you can use arithmetic functions with Date and DateTime types. For example, here is how you get DateTime 3 hours ago from now and Date one week ago from today:
:) select now(), now() - 3 * 3600, today(), today() - 7

SELECT
    now(),
    now() - (3 * 3600),
    today(),
    today() - 7

┌───────────────now()─┬─minus(now(), multiply(3, 3600))─┬────today()─┬─minus(today(), 7)─┐
│ 2017-07-17 21:00:09 │             2017-07-17 18:00:09 │ 2017-07-17 │        2017-07-10 │
└─────────────────────┴─────────────────────────────────┴────────────┴───────────────────┘

1 rows in set. Elapsed: 0.001 sec.

Thanks @ztlpn .
I search the whole document, but didn't find some demo like this.
Hope that you can provide more demo in the document.


OpenShift Elastisearch Operator => 'namespaces "openshift-operators-redhat" not found' error

Getting error:

$ oc apply -k https://github.com/redhat-cop/gitops-catalog/elastisearch-operator/overlays/stable
Error from server (NotFound): error when creating "https://github.com/redhat-cop/gitops-catalog/elastisearch-operator/overlays/stable": namespaces "openshift-operators-redhat" not found

Works if you change the namespace by removing "-redhat" from all the following files:
gitops-catalog/elastisearch-operator/overlays/stable/kustomization.yaml
gitops-catalog/elastisearch-operator//overlays/5.0/kustomization.yaml
gitops-catalog/elastisearch-operator//overlays/4.6/kustomization.yaml
gitops-catalog/elastisearch-operator//base/kustomization.yaml
gitops-catalog/elastisearch-operator//base/elastisearch-subscription.yaml

Also, suggest to rename the dir from "elastisearch" to "elasticsearch" (add the 'c')

Thanks @sjbylo

It looks like the base kustomization.yaml file specifies the namespace openshift-operators-redhat (as recommended by the operator install instructions), however, there is no namespace yaml file provided.  I think it would be best to include the namespace resource in the base dir, since it is the recommended namespace.  For now, you can pre-create the openshift-operators-redhat namespace, or include a namespace resource in your own repo and simply include the catalog overlay as a base in your kustomization.yaml file.

I agree, the directory name should be updated to include the c.

I'll make the updates, test them out, then submit a PR.

@sjbylo PR for part 1 of this issue:
https://github.com/redhat-cop/gitops-catalog/pull/55

Fixed with PR https://github.com/redhat-cop/gitops-catalog/pull/60
Next step will be rename the base folder.  There's another issue opened for that, so closing this one.


Regex is not taking into account empty query parameters

As an example, in the file concrete\src\Search\ItemList\ItemList.php, in the function getSortURL() you have an array of query parameters you send to the URL helper.
Since 8.2 you have added the parameter ccm_cursor with an empty value (it doesn't seem to be doing anything at the moment but it's there)
The function setVariable() in the URL helper is replacing existing parameters with their new value but is looking for parameters with a value already set (+? in regex looks for at least 1 match) so since we had ccm_cursor= with no value it was never replaced and on each iteration we added a new ccm_cursor= to the query string (?ccm_order_by=name&ccm_order_by_direction=asc&ccm_cursor=&ccm_cursor=&ccm_cursor=)
So by modifying the regex to use *? instead of +? we accept from 0 to many characters instead of from 1 to many and it solves the problem

👍


Investigate moving helm charts into their own repo

We may want to push helm charts to their own repo rather than sharing a repo with the container image. This isn't as much of a problem now that we tag images with v and helm charts without, but it might be less confusing to push to another repo. Harbor already does this

Fine as it is until we change our mind


Please provide normal documentation for the "kubeconfig" input

It says:
(Relevant for kubeconfig approach) Configuration file to be used with kubectl
But in reality it expects the contents of my kubeconfig, not the path. More often than not, the words "configuration file" mean a file path.
Lots of k8s platforms provide kubeconfig as a file through their CLI, so it feels natural to feed it to your action, which in turn usually leads to 2 hours of debugging & cursing. Your other actions stating calling k8s-set-context is mandatory are not helping at all.
Perhaps you could support a file name through a separate input. SetKubeConfigEx?

The idea behind this is to use the secrets feature to upload your kubeconfig and use it.  This is mainly to support those cases where "committing your kubeconfig to your repo" can be avoided.
Here's the example provided: https://github.com/Azure/k8s-set-context#kubeconfig-approach
If you already have brought in your KUBECONFIG using a tool, in your CI; they generally tend to achieve whatever this action is going to do. Using this action in your CI is redundant.

So we’re on the same page, great! Let’s put it in the readme in a recognisable and explicit manner, so that to spare other people a few hours’ debugging these actions.
Cheers

I wasn't sure if it was confusing in the first place. The example talks about how you need to add it to the secrets as well. It never speaks about using a path instead.
Do you have any specific recommendations as to what is missing? Perhaps you could raise a PR for the same?

At the very least I'd say amend the README table entry for kubeconfig:
(Relevant for kubeconfig approach) Configuration file to be used with kubectl -> (Relevant for kubeconfig approach) Contents of the configuration file to be used with kubectl (e.g. from a secret)
... and the input description in yml:
  kubeconfig:
    description: 'Contents of the kubeconfig file'

It'd also help to explain the kubeconfig approach more clearly in the README, e.g.:

There are two approaches for specifying the deployment target:

Kubeconfig file provided as input to the action
This is roughly equivalent to:export KUBECONFIG=$(mktemp)
cat ${{ input.kubeconfig }} > $KUBECONFIG
[ ! -z ${{ input.context }} ] && kubectx ${{ input.context }}

I'm not sure I can make a PR. Ain't got no msdn account and no interest in signing whatever EULA M$ might want to throw at me.

@anraghun to take this forward


Live-Rust:  Must Running Only With Connector or may running without connector?

Seems log output bid NaN and ask NaN, most of fields are zeros
2024-12-03T07:51:38.362020Z  WARN iceoryx2_bb_log::logger::tracing: Default config file found but unable to read data, populate config with default values. origin="Config::global_config()"
2024-12-03T07:51:38.474766Z  INFO hftbacktest::live::bot: Registers the instrument. connector_name="binancefutures" symbol="1000SHIBUSDT"
2024-12-03T07:51:39.475351Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:40.475935Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:41.476514Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:42.477210Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:43.477660Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:44.478289Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:45.479219Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:46.479703Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:47.480318Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:48.481032Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:49.481604Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:50.482219Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, fee: 0.0, num_trades: 0, trading_volume: 0.0, trading_value: 0.0 }
2024-12-03T07:51:51.482776Z  INFO hftbacktest::live::recorder: The state of asset number 0 has been updated. asset_no=0 mid=NaN bid="NaN" ask="NaN" state_values=StateValues { position: 0.0, balance: 0.0, f

Sorry, Seems it must run with Connector.......


[翻译] “Apache 成立22周年”报道文章 翻译

翻译必读

 工作流程
翻译指南
术语表

#格式语法

文档信息

原文标题： The Apache® Software Foundation Celebrates 22 Years of Open Source Innovation "The Apache Way"
原文链接： https://www.globenewswire.com/news-release/2021/03/24/2198532/17401/en/The-Apache-Software-Foundation-Celebrates-22-Years-of-Open-Source-Innovation-The-Apache-Way.html
提交路径： translation/apache.md

pls assign me, thanks.

sure

I have finished the translation

@Asxing hi~ Mark just finished the translation, would you like to help review it?

Merged PR #61  into master branch.


:robot: Triggering CI on branch 'release-next' after synching to openshift/master

/test 4.5-e2e

/test 4.5-e2e

OCF Webhook is merging this PR

OCF Webhook is merging this PR


Weird bug related to partial application?

I found this weird bug and I really am not sure what is the cause of it.
Consider this simple piece of code:
    [<JavaScript>]
    let input notEqual value =
        Piglet.Yield value
        |> Piglet.Validation.Is
            ((=) notEqual)
            "Should not be equal"

    [<JavaScript>]
    let test () =
        let a = input "a" "b"
        let b = input "a" "c"
        Piglet.Return (fun a b -> a, b)
        <*> a
        <*> b

This works well and fine. I then tried to add this partial application like this
    [<JavaScript>]
    let input notEqual value =
        Piglet.Yield value
        |> Piglet.Validation.Is
            ((=) notEqual)
            "Should not be equal"

    [<JavaScript>]
    let test () =
        let inputA = input "a"
        let a = inputA "b"
        let b = inputA "c"
        Piglet.Return (fun a b -> a, b)
        <*> a
        <*> b

I now get a type error on b
Error	1	Type mismatch. Expecting a
    Piglet<string,('a -> 'b)>
but given a
    Piglet<string,((Stream<string> -> 'a) -> 'a)>
The resulting type would be infinite when unifying ''a' and 'Stream<string> -> 'a'

At first, I though this might be related to the websharper JavaScript attribute but I tried doing partial application tests and it's working. According to a google search, this seems related to the definition of your type Stream.

Sorry for the delay in responding to this.
Fundamentally, the problem is that:

on one hand, the calls to <*> force a and b to have a different type, because the view function (the second type parameter) for a takes two Stream<string>s while the view function for b only takes one.
on the other hand, in F# functions declared without argument syntax (eg. let inputA = rather than let inputA x =) cannot have a generic type; this is called value restriction. So this forces a and b to have the same type.

Normally, the fix for this would be to just not use partial application, like this:
    [<JavaScript>]
    let test () =
        let inputA x = input "a" x // explicitly pass the argument
        let a = inputA "b"
        let b = inputA "c"
        Piglet.Return (fun a b -> a, b)
        <*> a
        <*> b

Unfortunately there is an additional constraint related to the [<JavaScript>] attribute, where inner functions cannot have a generic type either. So you need to pull the definition of inputA to the top-level:
    [<JavaScript>]
    let inputA x = input "a" x

    [<JavaScript>]
    let test () =
        let a = inputA "b"
        let b = inputA "c"
        Piglet.Return (fun a b -> a, b)
        <*> a
        <*> b


DeliberateErrors.java

Java file ready for test.
Bugs fixed;  Lint Check Passed;  Close item;

Close pull request.


remove unused PhEDEx call

Removed unused phedex api. (Checked in WMCore and Unified)

@amaltaro, @vlimant, Alan, Jean-Roch please review.

@belforte, Hi Stefano, could  you check this patch whether this will affect CRAB?

If you say it's not used in WMCore, then I believe you :)
Did you check whether T0 uses any of those? FYI @hufnagel

test this please


contextMenuBuilder not enable by default,

paste, copy, select all toolbar not enabled by default on ReactiveTextField (only shown magnifier),
but when config manually like below its working.
ReactiveTextField(
    formControlName: 'baseApiUrl',
    contextMenuBuilder: (context, editableTextState) {
      return AdaptiveTextSelectionToolbar.buttonItems(
        anchors: editableTextState.contextMenuAnchors,
        buttonItems: <ContextMenuButtonItem>[
          ContextMenuButtonItem(
            onPressed: () {
              editableTextState
                  .copySelection(SelectionChangedCause.toolbar);
            },
            type: ContextMenuButtonType.copy,
          ),
          ContextMenuButtonItem(
            onPressed: () {
              editableTextState
                  .selectAll(SelectionChangedCause.toolbar);
            },
            type: ContextMenuButtonType.selectAll,
          ),
        ],
      );
    },
  )

solve using manually triggered contextMenu on every input
ReactiveTextField(
  formControlName: 'baseStreamUrl',
  keyboardType: TextInputType.url,
  contextMenuBuilder: (context, editableTextState) {
    final items = editableTextState.contextMenuButtonItems;
    return AdaptiveTextSelectionToolbar.buttonItems(
      anchors: editableTextState.contextMenuAnchors,
      buttonItems: items,
    );
  },
)

Another workaround is to sub in the standalone reactive_text_field.

Hi everyone, thanks once again for the support. I have released version 16.1.1 which fixes this issue. Please give it a look and don't hesitate to create a new issue or PR if something else is missing.


[Bug]: Consent not showing with Astro View Transitions

Expected Behavior
The cookie consent banner still shows when the user changes page in an Astro app that uses view transitions.
Current Behavior
The consent loads just fine the first time the site gets loaded but then just doesn't appear again after a page change in Astro when using view transitions. If view transitions is removed, the cookie consent works just fine.
Steps to reproduce

Build an astro App that uses view transitions: https://docs.astro.build/en/guides/view-transitions/
Implement CookeConsent following the HTML steps in: https://cookieconsent.orestbida.com/essential/getting-started.html#html
Implement the astro:page-swap event listener to re-execute the script after the user navigates to another page
For easiness of use, put everything into an .astro component like so:

<script type="module" is:inline>
  import<EMAIL_ADDRESS>
  function initCookieConsent() {
    CookieConsent.run({
      ...
    });
  }

  // Initialize the CookieConsent script
  initCookieConsent();

  // Reinitialize the CookieConsent script after Astro navigation
  document.addEventListener("astro:after-swap", () => {
    console.log("Page swapped, re-running initCookieConsent...")
    initCookieConsent();
  });
</script>

Run the app, see how the first time the site loads the cookie consent banner works just fine
Then change pages and:
a. See how the event listener triggers with a console log
b. See how the banner doesn't come up again
Comment out the view transitions component and see how the banner works just fine

Proposed fix or additional info.
Tried many ways to fix this:

Removing the script and re-adding it after a page swap
Removing Cookie Consent animations by modifying its CSS
Using astro:page-load instead
Using .js or .astro and importing the script in multiple ways, by using import, src, etc.

None of these worked.
Please note that libraries such as AOS (animate on scroll) do work just fine by following this method. See: https://webreaper.dev/posts/astro-aos-view-transitions/
So it must be some kind of incompatibility between the Cookie Consent package and Astro with view transitions.
Version
3.0.1
On which browser do you see the issue?
Microsoft Edge

The plugin is not an Astro component so it's expected that it doesn't integrate with the View Transition API.
Astro is not aware of the html markup generated by the plugin, since it's dynamically injected on runtime.
You need to somehow make the generated html and event listeners persist across pages. The plugin sets its classes on the top html tag, which unfortunately is refreshed on page change, so we also need to persist the className attribute of the html tag.
This is how I would do it;

Create a main/base astro layout which all pages should inherit. Load the plugin in the base layout, so that it's always in a specific fixed position, and also so that it's a common element in all the pages.
Create a special persistent container in the base layout, so that Astro doesn't reload it, for example:

<div transition:persist id="cc-container">
  ... content of plugin
</div>

The plugin will then be configured to generate the markup inside that container:
CookieConsent.run({
  root: '#cc-container,

  // ...
});

Lastly, we should store the html.className attribute before the page load, and restore it before the page swap, using a little js:

document.addEventListener('astro:before-preparation', event => {
    if (window.document.documentElement.className) {
        window._htmlClassName = window.document.documentElement.className;
    }
});

document.addEventListener('astro:before-swap', event => {
    if (window._htmlClassName) {
        event.newDocument.documentElement.className = window._htmlClassName;
    }
});

Here is a quick demo on StackBlitz.

Thanks @orestbida ! I was hitting my head against the wall at this point, turns out restoring the html.className attributes did the trick.
Thanks a lot for taking the time to show the implementation.

Not sure, transition:name directives also work fine on my end, or at least with this basic demo.

Huh! Something might be going on with my implementation. I'll keep investigating and letting you know if I find what it is.

@orestbida solved! Over at the Astro Discord they helped me figure it out.
Apparently transition:persist can take transition names (see https://docs.astro.build/en/guides/view-transitions/#maintaining-state) so by providing a random string such as:
<div transition:persist="find-me-on-the-other-side" id="cc-container">

You can ensure the persist clause isn't affected by other transition names.
Not sure why your sample code worked and mine didn't, but maybe it's useful in that awesome StackBlitz of yours.


Is there bootstrapping in SEAL?

According to the annotation in 1_bfv_basics.cpp
"Thus, it is essential to choose the parameters to be large enough to support the desired computation; otherwise the result is impossible to make sense of even with the secret key"
Does this mean there is no bootstrapping in SEAL?
And thus SEAL only supports somewhat homomorphic encryption rahter than fully homomorphic encryption?

This is correct. There is no bootstrapping in SEAL and there are no plans at this time to make BFV bootstrapping available.

Thx for your response and this awesome project


Add ability to intercept network requests to add additional query params or headers

...or provide the ability to add additional query params or optional headers to the Player / VideoSource constructor
...or re-use the query params provided on the MPD url for network requests to the content segments.
Use case: When serving an mpd file /foo/bar.mpd?foo=bar, requests that go out to fetch the mp4 segments should also have ?foo=bar. This is useful in providing some context, auth tokens etc if needed when the MPD file is static but the content requires some additional information based on who is trying to fetch it.
Something similar is accomplished in dash.js by overriding MediaPlayer.dependencies.RequestModifierExtensions
More info: https://groups.google.com/forum/#!topic/shaka-player-users/kmT_-eVn1ZM
Thanks

We would need the same. It would be awesome to have a callback for each video and being able to change the url completely for each video before loading it actually.
We are thinking of dynamically generate temporary (secure) S3 url which work for 15min per video.

@priyajeet from #162 wrote

Thanks for getting this implemented. One thing I did notice was that the MPD fetching bypasses the request callback. Wouldn't requesting the MPD also go through the callback for consistancy?

By-design the API only modifies segment request URLs and headers.
For live-content, the server can specify the next MPD update URL via the <Location> element.
Do you require modifying the MPD update URLs (for live-content) client-side as well?

If the contents of the MPD are being fetched from /foo/bar/baz.mpd, and the server expects some authentication headers in that request, then yeah one would need the MPD url to also go through the same interceptor.

@tdrews, it seems the idea is that we have a static manifest, but the server has some front-end that does authentication based on headers or parameters before serving the static content.
Seems as reasonable as the rest of the feature request, so re-opening.

Hi @joeyparrish ,
Is this feature not available for the latest V2 player

@sridhard, it is definitely available and has been implemented for some time now.  (This issue has been closed for over one year.)
Since you already filled a new issue for help using this feature (#531), let's discuss there.  Please don't spread our conversation over multiple issues.


Responsive Design

Description
Ensure the game interface is fully responsive across different devices and screen sizes
I would like the game interface to be fully responsive, adapting seamlessly to various screen sizes and orientations, ensuring that players can enjoy the game on desktops, tablets, and smartphones without losing functionality.
Screenshots

Any additional information?
No response
What browser are you seeing the problem on?
No response
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I'm a GSSoC'24-Extd contributor
[ ] I'm a Hacktoberfest'24 contributor
[X] I am willing to work on this issue (optional)

@Ek-ta-bharti any update??


Keydown event only triggered by modifier key with Electron 12

Expected Behavior

Keydown event is triggered by all type of key down
Current Behavior

Only detect modifier key (cmd, ctrl, alt...).
Alphabet, number keys are not detected.
Possible Solution

I have no idea why this is happening.
Steps to Reproduce (for bugs)

Use iohook in Renderer process
It is working fine, but only detect modifier key (cmd, ctrl, alt...). alphabet, number key is not detected.
On other platforms, behavior is the same.

Context

ioHook.on('keydown', (e) => {
  console.log(e);
});

Your Environment

Version used: 0.9.1
Environment name and version (e.g. Chrome 39, node.js 5.4): Electron 12.0.1
Operating System and version (desktop or mobile): Desktop, macos Big sur 11.4
Link to your project: Using electron-react-boilerplate, https://github.com/jopemachine/arvis/blob/master/src/app/hooks/useIoHook.tsx

I don't know why this happens, the bug doesn't happen on production.

@jopemachine it'll be some time before I get around to electron 12 and 13 but do provide more information if you can, such as if this behavior is the same on other OSes and what you're using to build your code for production.

@jopemachine it'll be some time before I get around to electron 12 and 13 but do provide more information if you can, such as if this behavior is the same on other OSes and what you're using to build your code for production.

Now I've made the project public.
here is my code using iohook.

if this behavior is the same on other OSes

Yes, this behavior is same on other OSes.

@jopemachine thank you. It seems that for this particular use you need keydown event. If I'm mistaken about that then you might want to try keypress event instead.
It will probably be around a week at least before I can fix this because there are other issues affecting this that need to be fixed first.

@jopemachine thank you. It seems that for this particular use you need keydown event. If I'm mistaken about that then you might want to try keypress event instead.
It will probably be around a week at least before I can fix this because there are other issues affecting this that need to be fixed first.

I appreciate your hard work.
I have replaced the event with the keypress event, unfortunately keypress event is not triggered.
Here is my test code.

  useEffect(() => {
    ioHook.on('keypress', (e: IOHookKeyEvent) => {
      // not works
      console.log('triggered!');

      if (cpyKeyPressed(e)) {
        setTimeout(() => {
          const copiedText = clipboard.readText();
          if (copiedText !== '') {
            ipcRenderer.send(IPCRendererEnum.dispatchAction, {
              destWindow: 'clipboardHistoryWindow',
              actionType: actionTypes.PUSH_CLIPBOARD_STORE,
              args: JSON.stringify({
                text: clipboard.readText(),
                date: new Date().getTime(),
              }),
            });
          }
        }, 25);
      }

      if (isShiftKey(e)) {
        handleDoubleKeyModifier('shift');
      } else if (isAltKey(e)) {
        handleDoubleKeyModifier('alt');
      } else if (isCtrlKey(e)) {
        handleDoubleKeyModifier('ctrl');
      } else if (isMetaKey(e)) {
        handleDoubleKeyModifier('cmd');
      }
    });

    ioHook.start();

    return () => {
      ioHook.removeAllListeners();
      ioHook.unload();
    };
  }, []);

I think I also once encountered that issue on macOS. For me, it was related to the fact that the terminal application used to start my application no longer had the required accessibility privileges (for keyboard input). After enabling them again in the system settings, everything worked again.

I think I also once encountered that issue on macOS. For me, it was related to the fact that the terminal application used to start my application no longer had the required accessibility privileges (for keyboard input). After enabling them again in the system settings, everything worked again.

I appreciate for your comment :)
It works well on dev mode now after activating vscode permission's Input Monitoring on mac.
I think maybe there is another similar kind of permission setting in other OSs too.


Incorrectly formatted example link

Describe the bug
The instructions and link found underneath "View a Project's Score" around line 99 in the README.md can be difficult to interpret. This can be difficult to interpret because the link is coming up as half a hyperlink and the other half just text.
Reproduction steps
Steps to reproduce the behavior:

Visit this link to view the relevant section of the README.md:
View a Project's Score

Expected behavior
The instructions should convey:

There is a link where you can enter a platform/org/repo to view a scorecard
How to manually create a link to view a scorecard

Additional context

In collaboration with @silasvm, @klbynum, @wavyeli32, @jordin221, and @emmet0r, we would be happy to submit a pull request.

Thanks for the issue and wanting to contribute.
Do you think it would be more clear if it was in markdown backticks?
https://scorecard.dev/viewer/?uri=<github_or_gitlab>.com/<user_name_or_org>/<repository_name>

Thank you @spencerschrock! Yes, that is exactly what we were thinking. We also had a few other ideas on how to clarify this section of the documentation and implemented them in a PR to show you what we had in mind. Please let us know what you think. 😊


🎉🎊🍾 [New Feature] Add new data model Format for formatting value feature.

Target

Add new data model Format for formatting value feature.

Effecting Scope

Adding new feature without any breaking changes.

Description

Add new data model Format about the formatting value detail setting.
Integrate with the new data model Variable in data model Format.

About the coverage issue:
Because Python (for some old versions) doesn't have syntax switch case (or case when), the syntax if-else is the only way to implement. So it must has a else condition for the bug checking.
About the SonarQube issue:
It won't fix it right now because I don't think it would cause any issue. But I would observe it.


Better validation error of custom severity

** Example terraform
locals {
  team = "xyz"
}
resource "project" "project" {
  key          = local.team
  display_name = "${upper(local.team)} Project"
  description  = "${upper(local.team)} Project"

  admin_privileges {
    manage_members   = true
    manage_resources = true
    index_resources  = true
  }
}

resource "xray_license_policy" "license_policy" {
  name        = "${local.team}-license-policy"
  description = "${upper(local.team)} License Policy"
  type        = "license"
  project_key = local.team

  rule {
    name     = "${local.team}-license-rule"
    priority = 1

    criteria {
      allow_unknown            = false
      multi_license_permissive = true
    }

    actions {
      block_release_bundle_distribution  = false
      block_release_bundle_promotion     = false
      custom_severity                    = "medium"
      notify_watch_recipients            = false
      notify_deployer                    = false
      create_ticket_enabled              = false
      fail_build                         = true
      build_failure_grace_period_in_days = 0

      block_download {
        unscanned = false
        active    = false
      }
    }
  }
}

terraform {
  backend "local" {
    path = "terraform.tfstate"
  }
  required_providers {
    artifactory = {
      source  = "jfrog/artifactory"
      version = "11.9.2"
    }
    xray = {
      source  = "jfrog/xray"
      version = "2.11.2"
    }
    project = {
      source  = "jfrog/project"
      version = "1.8.0"
    }
  }
  required_version = ">= 1.6.2"
}

** Example error
│ Error: Provider produced inconsistent result after apply
│
│ When applying changes to xray_license_policy.license_policy, provider "provider[\"registry.terraform.io/jfrog/xray\"]" produced an unexpected new value: .rule: planned set element
│ cty.ObjectVal(map[string]cty.Value{"actions":cty.SetVal([]cty.Value{cty.ObjectVal(map[string]cty.Value{"block_download":cty.SetVal([]cty.Value{cty.ObjectVal(map[string]cty.Value{"active":cty.False,
│ "unscanned":cty.False})}), "block_release_bundle_distribution":cty.False, "block_release_bundle_promotion":cty.False, "build_failure_grace_period_in_days":cty.NumberIntVal(0),
│ "create_ticket_enabled":cty.False, "custom_severity":cty.StringVal("medium"), "fail_build":cty.True, "mails":cty.NullVal(cty.Set(cty.String)), "notify_deployer":cty.False,
│ "notify_watch_recipients":cty.False, "webhooks":cty.NullVal(cty.Set(cty.String))})}), "criteria":cty.SetVal([]cty.Value{cty.ObjectVal(map[string]cty.Value{"allow_unknown":cty.False,
│ "allowed_licenses":cty.NullVal(cty.Set(cty.String)), "banned_licenses":cty.NullVal(cty.Set(cty.String)), "multi_license_permissive":cty.True})}), "name":cty.StringVal("alp-license-rule"),
│ "priority":cty.NumberIntVal(1)}) does not correlate with any element in actual.
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.

Is your feature request related to a problem? Please describe.
"medium" was used instead of "Medium" for custom severity in license policy.  Error returned did not point out the problem.
Describe the solution you'd like
Friendlier errors when validation errors are encountered.
Something like.  Validation Error: "medium" is not a valid custom severity.  Valid values are "Low", "Medium" or "High"
I thought the REST API would return the validation errors.
Maybe we are swallowing and not displaying them in the provider?

@oallauddin Thanks for the report! I've added this to our plan.


Georeference by street address is lacking custom fields addition

Context
Previously, users could add extra custom fields for specifying the rules of georeferencation by street address. It's not longer there!
Steps to Reproduce

Create a layer with this file Relacion Camaras.csv.zip
Georeference by street address.

Current Result
It's impossible since number and street are in different fields.
Expected result
As in editor, you should be able to add fields to the form right after street one

Please, add design link when it is ready 💋 .

These are the visuals when the option "Street Addresses" is selected

Is this supported / implemented in Camshaft?
According to the last camshaft reference there are no additional columns available for this analysis. They are the same as shown in the UI.
I don't know if we can send additional info to street_address_column encoded somehow in the string or not.
Summoning @rochoa to answer this.

In editor we were doing this by calling to geocodings API filling formatter field with comma-separated values.
endpoint: POST /api/v1/geocodings/

payload:
{
  "kind":"high-resolution",
  "formatter":"{calle}, {numero_de_finca}",
  "table_name":"relacion_camaras",
  "state":""
}

Hey designers, one question. The typical usage for this is "{street_adress_column}, 28010 (Madrid)" rather than a column concatenation.
Don't you think we should have a more open way to do it using templates? cc @noguerol

Although I love the idea (and I'm tempted to add it anyway) I think is risky because:

The query structure makes some providers to work better under some circumstances, so this would let users to remove commas for example when using mapzen, which is not ideal.
This adds a bit of functionality such as the validation.

Anyway, I do think this is something we would like to add to the product anyway, so if you guys don't see these hazards, I'd be down to it.

The query structure makes some providers to work better under some circumstances, so this would let users to remove commas for example when using mapzen, which is not ideal.

I thought that was the proposal: provide more flexibility to allow fine tuning of the string. Do you think that might introduce problems when we switch providers? If so, how often do you think we are gonna be switching providers?

This adds a bit of functionality such as the validation.

I guess you are talking about Builder validation, but what about the expected error message from the backend? Do you expect it to be as explicit as possible? Something in the line Missing column `address_number` for your template '{address_name}, {address_number}. 28004 Spain'?

We have already identified some patterns that work pretty bad with Mapzen but at the same time works pretty well with gmaps.

That could be a solution yeah, not the best UX, but I understand the reasons.

So what's the decision guys - 1) templates or 2) fields?
If 1), we need new UI mockups

has to be there, I don't think we can afford to remove that UI right
now. about 1) I'm happy to add if you think we can afford it

El mar., 7 mar. 2017 a las 15:03, Jorge Gomez Sancha (<
<EMAIL_ADDRESS>escribió:

So what's the decision guys - 1) templates or 2) fields?
If 1), we need new UI mockups
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/CartoDB/cartodb/issues/11662#issuecomment-284729360,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIENRLqp37EcbPNwfIFA3MidAF4yBQQks5rjWOWgaJpZM4MOSUX
.

My point with this is: the template thing is what BCG was using so don't know if that would work for them.
In the other hand it's clear each geocoder provider should have it's own UI since the way the work best depend a lot on how we provide inputs.

I agree with Santana. In any case, it is your decision, product guys. It is the right time now to decide.
From my point of view, doing the columns (or just the columns) seems like a missed opportunity to implement something that can be adapted to fit any provider and use case.
Please tell us:

If we use columns as in the UI, what should we send to the Geocoder (separated by commas, spaces, etc.)
If we add the template, how the UI would look.

ok, so following the conversation with @saleiva and after hearing your comments we are deciding to go with the UI. It is possible currently to enter fixed values and/or columns for each of the different fields. So finishing CartoDB/camshaft/issues/267 should enable this.
Ideally, we would concatenate the columns in the ideal way for each provider (this is for Engine to decide), but maybe we can prioritize separately

ok, so following the conversation with @saleiva and after hearing your comments we are deciding to go with the UI. It is possible currently to enter fixed values and/or columns for each of the different fields.

Not, it's not possible at backend level. The backend will receive strings, making impossible to determine if what the user wants is a column or a fixed string. So if we want to support a mix of columns and fixed strings we cannot use this approach and we need to use the template approach.

Ideally, we would concatenate the columns in the ideal way for each provider (this is for Engine to decide), but maybe we can prioritize separately

It's not only about the provider, it's also about the context: for instance, the street number in some countries should be prepended and for other, it should be appended. So I would say that's something we should make the user responsible for, that's why the UI uses a list (or it should use a template).

what? sorry I don't get it. Let's discuss tomorrow in person

We need to change the approach here.

Hey, you can see how we solve this.
The idea is to have the option to put code instead of select only a column. For that, there is an action to change the input to code mode. We should review the copys.
Here's the InVision project
https://invis.io/9GASYTMND

cc/ @CartoDB/design

The template should only have effect in the "street address" param, we want to keep city, state, and country parameters still available.

no no no, that's impossible to handle from the UI perspective... I'd make one or the other one. Anyway, let me give some feedback to that design

Why is it impossible? We want to change the "street address" param, not the rest.

@urbanphes,  Some feedback about the designs:

I do think we should show autocomplete whenever the user starts with {{ or whenever we detect the 3 first chars of a column name. When clicking on a column name on the autocomplete, we should make sure that we enclose the column name between {{ }}
Colors should help for differentiating strings and columns.

@rochoa about your comment, If you leave the country to be defined like that we would be in the same situation where we cannot choose the separator we want for example. Also, from the usability perspective is going to be very challenging to make people understand that country and so on is after whatever they write. I think very often they will tend to attach the country name to the "template".

@rochoa about your comment, If you leave the country to be defined like that we would be in the same situation where we cannot choose the separator we want for example. Also, from the usability perspective is going to be very challenging to make people understand that country and so on is after whatever they write. I think very often they will tend to attach the country name to the "template".

Fair enough. I was thinking more in the future, where we could have structured geocoders. But we can re-evaluate the proposed solution when that moment arrives. 👌 .

Hey guys, let us "add" block label until the functionality is available in engine (I guess there is another ticket there). 💋

I updated the mockups with:

Autocomplete.
Color for differentiating strings and columns.

Here's the InVision project:
https://invis.io/9GASYTMND

I updated the mockups with:

Advanced Mode only applies to Street Address input.
Info help and link to more info.

Here's the InVision project:
https://invis.io/9GASYTMND
cc/ @saleiva @rochoa

Close and promote @urbanphes !

whoever takes this, can you guys make sure we have a quick meeting between you, @urbanphes and me?

@saleiva this ticket is on CartoDB repo, I can't close it.
The meeting when you want. Tell me.

found some issues already reported in the PR.

Blocked until tracking UI classes are added.

Deployed!

BOOM
On Apr 25, 2017 1:47 PM, "Javier Álvarez Medina"<EMAIL_ADDRESS>wrote:

Closed #11662 https://github.com/CartoDB/cartodb/issues/11662.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/CartoDB/cartodb/issues/11662#event-1056489144, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AACPRCcSLnyo-TiUMg_st-DvdTIn7WTcks5rzd1dgaJpZM4MOSUX
.


branches.md: Add kbara-next

This branch has already been informally registered via discussions on Github and this commit makes it official (and enables mirroring to the SnabbCo repo).
cc @kbara

Thanks. Shall I revert the similar commit in kbara-next itself now?

@kbara Oh I didn't realize that change was there.
Currently I see on the branches list that kbara-next is fairly out of sync with upstream: 49 commits "behind" master (changes released but not yet merged into kbara-next) and 13 commits "ahead" of master (changes landed on kbara-next but not yet released on `master). I think we should sync them more closely so that we can take any merge conflicts early.
Concrete suggestion is that you:

Merge latest master onto kbara-next and resolve any conflicts.
Pull request kbara-next to next.

Then I should be able to resolve the branches.md conflict and complete the merge. If for some reason I dodn't feel confident to merge kbara-next into next then I might ask you to please do that for me by merging next downstream into kbara-next.
Generally I think it might make sense to try and merge the various *-next branches onto next roughly once per week (when there are changes to merge). That seems like a reasonable cadence that keeps the workload reasonable and also deals with merge conflicts sooner rather than later.
Apologies if you already have a pull request outstanding that I have missed. I am trying to work out a routine for keeping track of my upstream work e.g. to poll daily for pull requests from *-next branches and poll weekly for PRs to master that may have fallen between the cracks. See #812.


DynamicCluster's max size applies to all calls to grow

Previously the limit was ignored by resizeByDelta.

retest this please

retest this please
Test failure is unrelated - I'll try to fix that in a separate PR:
2017-12-20 16:24:31,614 INFO  TESTNG FAILED CONFIGURATION: "Surefire test" - @AfterMethod org.apache.brooklyn.location.jclouds.JcloudsMaxConcurrencyStubbedTest.tearDown() finished in 0 ms
org.apache.brooklyn.util.exceptions.CompoundRuntimeException: Error in tearDown of class org.apache.brooklyn.location.jclouds.JcloudsMaxConcurrencyStubbedTest
	at org.apache.brooklyn.location.jclouds.AbstractJcloudsLiveTest.tearDown(AbstractJcloudsLiveTest.java:110)
	at org.apache.brooklyn.location.jclouds.AbstractJcloudsStubbedUnitTest.tearDown(AbstractJcloudsStubbedUnitTest.java:72)
	at org.apache.brooklyn.location.jclouds.JcloudsMaxConcurrencyStubbedTest.tearDown(JcloudsMaxConcurrencyStubbedTest.java:117)
Caused by: java.lang.IllegalArgumentException: Unknown machine SshMachineLocation[<IP_ADDRESS>:jenkins@<IP_ADDRESS>/<IP_ADDRESS>:22(id=fyilkxt1h4)]
	at org.apache.brooklyn.location.jclouds.JcloudsLocation.release(JcloudsLocation.java:2150)
	at org.apache.brooklyn.location.jclouds.AbstractJcloudsLiveTest.releaseMachine(AbstractJcloudsLiveTest.java:181)
	at org.apache.brooklyn.location.jclouds.AbstractJcloudsLiveTest.releaseMachineSafely(AbstractJcloudsLiveTest.java:189)
	at org.apache.brooklyn.location.jclouds.AbstractJcloudsLiveTest.tearDown(AbstractJcloudsLiveTest.java:91)
	... 33 more

I'm going to merge this - it's definitely an improvement on what was there before, but my question about resizing up to the maxSize still stands @sjcorbett @nakomis. Interested in your thoughts, as to whether we should change that in a future PR.


Invalid SSL certificate.

Queries to https://registry.npmjs.cf/ are giving a 526, so the graph can't be built.

@terinjokes - Terin, do you know if registry errors are temporary with npmjs.cf?

Replacing the SSL certificate now. It just expired!

Thank you for your time.

Thank you @terinjokes  for quickly fixing this. And thank you @wtgtybhertgeghgtwtg for reporting!


After last update noting start and no logs

Hi,
after last Genesis patch and ark-server-tools patch, my server is not able to start. No changes into configuration and no logs on  /home/steam/ARK/ShooterGame/Saved/Logs
How can i check what's wrong ?
Thanks

Refer #1063

As usual they forgot a library link ! here is the solution
https://survivetheark.com/index.php?/forums/topic/507590-error-linux-server-missing-file-not-starting/&page=2&tab=comments#comment-2793472


Add page S3 Express One

We should have some basic performance comparison for $subject

Let's scope this down and resolve it


Fix database(mysql, pg, oracle) open scripts

Fixes: https://github.com/metarhia/impress/issues/1108

Landed in a82d202


handle ReferralServer

whois for <IP_ADDRESS> contains a ReferralServer, a token which should be handled. A naive fix follows below. But, the result of it is that whois data from both the referring and the referred server is output. I'm not sure that it should? Perhaps only the latter should be output?
diff --git a/whois.go b/whois.go
index efd763f..762ca79 100644
--- a/whois.go
+++ b/whois.go
@@ -217,6 +217,7 @@ func getServer(data string) string {
 	tokens := []string{
 		"Registrar WHOIS Server: ",
 		"whois: ",
+		"ReferralServer: ",
 	}

 	for _, token := range tokens {
@@ -226,6 +227,7 @@ func getServer(data string) string {
 			end := strings.Index(data[start:], "\n")
 			server := strings.TrimSpace(data[start : start+end])
 			server = strings.Trim(server, "/")
+			server = strings.TrimPrefix(server, "whois://")
 			return server
 		}
 	}

Just saw whois <IP_ADDRESS> which has ReferralServer: rwhois://rwhois.frontiernet.net:4321. Potential rabbit hole here ;)

Hello @quite
Thanks for your feedback, let me see see.

Hello @quite
This has been fixed, please try the latest version.

If you think this repository is helpful, please share it with friends, thanks.