SRV for multiple ports

With https://github.com/GoogleCloudPlatform/kubernetes/pull/6182 kubernetes introduces multi-port service IPs.
I'm trying to program SkyDNS to support this, but it seems there is no way to do it.  Please correct me if I am wrong?  Specifically the msg.Service structure has no place to put the service name (port name for us) or the protocol, and it only supports a single port.
Scanning code I do not see any faculties for using SRV "properly".  Please advise?

I think you can create one entry per port you're exposing... at least that's what I saw in that regard.

I tried this and only got one record - the last one.
On Mon, Mar 30, 2015 at 8:54 PM, Clayton Coleman<EMAIL_ADDRESS>wrote:

I think you can create one entry per port you're exposing... at least
that's what I saw in that regard.
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-87926025
.

[ Quoting<EMAIL_ADDRESS>in "[skydns] SRV for multiple ports (#1..." ]

With https://github.com/GoogleCloudPlatform/kubernetes/pull/6182 kubernetes
introduces multi-port service IPs.
I'm trying to program SkyDNS to support this, but it seems there is no way to
do it.  Please correct me if I am wrong?  Specifically the msg.Service
structure has no place to put the service name (port name for us) or the
protocol, and it only supports a single port.
Scanning code I do not see any faculties for using SRV "properly".  Please
advise?

What is it what you exactly need? Reading this, I think the answer is no.
You need an extra field in msg.Service so you can differentiate the different
ports? So that skydns returns multiple SRVs for one name?
/Miek
--
Miek Gieben

Since the SkyDNS record has a field for "port" I am trying to figure out
what to do now that I have multiple ports on a single IP.
full disclosure: I barely know anything about SRV, so I am going from
wikipedia :)
On Mon, Mar 30, 2015 at 11:56 PM, Miek Gieben<EMAIL_ADDRESS>wrote:

[ Quoting<EMAIL_ADDRESS>in "[skydns] SRV for multiple ports
(#1..." ]

With https://github.com/GoogleCloudPlatform/kubernetes/pull/6182
kubernetes
introduces multi-port service IPs.
I'm trying to program SkyDNS to support this, but it seems there is no
way to
do it. Please correct me if I am wrong? Specifically the msg.Service
structure has no place to put the service name (port name for us) or the
protocol, and it only supports a single port.
Scanning code I do not see any faculties for using SRV "properly". Please
advise?

What is it what you exactly need? Reading this, I think the answer is no.
You need an extra field in msg.Service so you can differentiate the
different
ports? So that skydns returns multiple SRVs for one name?
/Miek
--
Miek Gieben
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-87967537
.

You'll need multiple SRV records in that case. So, this works already today. When you need 2 ports you'll have to register 2 names:
port80.something.skydns.local and port81.something.skydns.local. The record that you then want to use is something.skydns.local which will return both port80 and port81 SRV record. You cannot encode multiple ports inside a single SRV record.

I'm not sure how to do that with SkyDNS msg.Service structs.  Given a
service "foo.bar" at IP <IP_ADDRESS> with 2 ports, "http" and "https" - Is it
like this?
etcd key = "foo.bar.skydns.local"
Service = {
Host: "<IP_ADDRESS>",

Port: 0  // FIXME: is this right?

}
etcd key = "http.foo.bar.skydns.local"
Service = {
Host: "foo.bar.skydns.local",

Port: 80

}
etcd key = "https.foo.bar.skydns.local"
Service = {
Host: "foo.bar.skydns.local",

Port: 443

}
On Apr 1, 2015 2:26 AM, "Miek Gieben"<EMAIL_ADDRESS>wrote:

You'll need multiple SRV records in that case. So, this works already
today. When you need 2 ports you'll have to register 2 names:
port80.something.skydns.local and port81.something.skydns.local. The
record that you then want to use is something.skydns.local which will
return both port80 and port81 SRV record. You cannot encode multiple
ports inside a single SRV record.
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88411221
.

Yes. Does that work? You don't need the port: 0 I think. It should be
optionally.
This whole thing might be worth documenting as well.
On 1 Apr 2015 5:02 pm, "Tim Hockin"<EMAIL_ADDRESS>wrote:

I'm not sure how to do that with SkyDNS msg.Service structs. Given a
service "foo.bar" at IP <IP_ADDRESS> with 2 ports, "http" and "https" - Is it
like this?
etcd key = "foo.bar.skydns.local"
Service = {
Host: "<IP_ADDRESS>",
Port: 0 // FIXME: is this right?
}
etcd key = "http.foo.bar.skydns.local"
Service = {
Host: "foo.bar.skydns.local",
Port: 80
}
etcd key = "https.foo.bar.skydns.local"
Service = {
Host: "foo.bar.skydns.local",
Port: 443
}
On Apr 1, 2015 2:26 AM, "Miek Gieben"<EMAIL_ADDRESS>wrote:

You'll need multiple SRV records in that case. So, this works already
today. When you need 2 ports you'll have to register 2 names:
port80.something.skydns.local and port81.something.skydns.local. The
record that you then want to use is something.skydns.local which will
return both port80 and port81 SRV record. You cannot encode multiple
ports inside a single SRV record.
—
Reply to this email directly or view it on GitHub
<
https://github.com/skynetservices/skydns/issues/144#issuecomment-88411221>
.

—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88533788
.

This can't be right - the etcd key gets converted to a Path, and then I get:
2015/04/01 16:17:30 Setting DNS record: hostnames.default.kubernetes.local.
-> <IP_ADDRESS>:0
2015/04/01 16:17:30 Setting DNS record:
frobber.hostnames.default.kubernetes.local. ->
hostnames.default.kubernetes.local.:80
2015/04/01 16:17:30 Failed to mutate etcd using mutator: 0x403fe0 due to:
104: Not a directory (/skydns/local/kubernetes/default/hostnames) [4731].
Will retry in: 50ms
Please advise
On Wed, Apr 1, 2015 at 9:01 AM, Tim Hockin<EMAIL_ADDRESS>wrote:

I'm not sure how to do that with SkyDNS msg.Service structs.  Given a
service "foo.bar" at IP <IP_ADDRESS> with 2 ports, "http" and "https" - Is it
like this?
etcd key = "foo.bar.skydns.local"
Service = {
Host: "<IP_ADDRESS>",

Port: 0  // FIXME: is this right?

}
etcd key = "http.foo.bar.skydns.local"
Service = {
Host: "foo.bar.skydns.local",

Port: 80

}
etcd key = "https.foo.bar.skydns.local"
Service = {
Host: "foo.bar.skydns.local",

Port: 443

}
On Apr 1, 2015 2:26 AM, "Miek Gieben"<EMAIL_ADDRESS>wrote:

You'll need multiple SRV records in that case. So, this works already
today. When you need 2 ports you'll have to register 2 names:
port80.something.skydns.local and port81.something.skydns.local. The
record that you then want to use is something.skydns.local which will
return both port80 and port81 SRV record. You cannot encode multiple
ports inside a single SRV record.
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88411221
.

Ah yes. I can see what's happening here.
The actual hostname and thus the IP needs to live somewhere else. I will
give it it try later.
On 1 Apr 2015 5:57 pm, "Tim Hockin"<EMAIL_ADDRESS>wrote:

This can't be right - the etcd key gets converted to a Path, and then I
get:
2015/04/01 16:17:30 Setting DNS record: hostnames.default.kubernetes.local.
-> <IP_ADDRESS>:0
2015/04/01 16:17:30 Setting DNS record:
frobber.hostnames.default.kubernetes.local. ->
hostnames.default.kubernetes.local.:80
2015/04/01 16:17:30 Failed to mutate etcd using mutator: 0x403fe0 due to:
104: Not a directory (/skydns/local/kubernetes/default/hostnames) [4731].
Will retry in: 50ms
Please advise
On Wed, Apr 1, 2015 at 9:01 AM, Tim Hockin<EMAIL_ADDRESS>wrote:

I'm not sure how to do that with SkyDNS msg.Service structs. Given a
service "foo.bar" at IP <IP_ADDRESS> with 2 ports, "http" and "https" - Is it
like this?
etcd key = "foo.bar.skydns.local"
Service = {
Host: "<IP_ADDRESS>",
Port: 0 // FIXME: is this right?
}
etcd key = "http.foo.bar.skydns.local"
Service = {
Host: "foo.bar.skydns.local",
Port: 80
}
etcd key = "https.foo.bar.skydns.local"
Service = {
Host: "foo.bar.skydns.local",
Port: 443
}
On Apr 1, 2015 2:26 AM, "Miek Gieben"<EMAIL_ADDRESS>wrote:

You'll need multiple SRV records in that case. So, this works already
today. When you need 2 ports you'll have to register 2 names:
port80.something.skydns.local and port81.something.skydns.local. The
record that you then want to use is something.skydns.local which will
return both port80 and port81 SRV record. You cannot encode multiple
ports inside a single SRV record.
—
Reply to this email directly or view it on GitHub
<
https://github.com/skynetservices/skydns/issues/144#issuecomment-88411221>
.

—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88541656
.

(strapped for time) I think this should work:
etcd key = "host.foo.bar.skydns.local"
Service = { Host: "<IP_ADDRESS>" }

etcd key = "http.foo.bar.skydns.local"
Service = { Host: "host.foo.bar.skydns.local", Port: 80 }

etcd key = "https.foo.bar.skydns.local"
Service = { Host: "foo.bar.skydns.local", Port: 443 }

So, isnt just this what you want:
 ETCD="<IP_ADDRESS>:4001/v2/keys/skydns"
 curl -XPUT $ETCD/local/skydns/bar/foo/addr \
        -d value='{"host":"<IP_ADDRESS>", "port":80}'

 curl -XPUT $ETCD/local/skydns/bar/foo/443 \
        -d value='{"host": "addr.foo.bar.skydns.local", "port":443}'

dig @localhost SRV foo.bar.skydns.local, gives:
;; ANSWER SECTION:
foo.bar.skydns.local.	3600	IN	SRV	10 50 80 addr.foo.bar.skydns.local.
foo.bar.skydns.local.	3600	IN	SRV	10 50 443 addr.foo.bar.skydns.local.

;; ADDITIONAL SECTION:
addr.foo.bar.skydns.local. 3600	IN	A	<IP_ADDRESS>

So two foo.bar's with SRV records to a diferent port with the
same ip address.
?

But I want the A record to be "foo.bar..." not "addr.foo.bar..."
On Wed, Apr 1, 2015 at 12:19 PM, Miek Gieben<EMAIL_ADDRESS>wrote:

So, isnt just this what you want:
ETCD="<IP_ADDRESS>:4001/v2/keys/skydns"
curl -XPUT $ETCD/local/skydns/bar/foo/addr
-d value='{"host":"<IP_ADDRESS>", "port":80}'
curl -XPUT $ETCD/local/skydns/bar/foo/443
-d value='{"host": "addr.foo.bar.skydns.local", "port":443}'
dig @localhost SRV foo.bar.skydns.local, gives:
;; ANSWER SECTION:
foo.bar.skydns.local.   3600    IN  SRV 10 50 80 addr.foo.bar.skydns.local.
foo.bar.skydns.local.   3600    IN  SRV 10 50 443 addr.foo.bar.skydns.local.
;; ADDITIONAL SECTION:
addr.foo.bar.skydns.local. 3600 IN  A   <IP_ADDRESS>
So two foo.bar's with SRV records to a diferent port with the
same ip address.
?
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88599683
.

Ah, ok. Finally nailed to actually bug/issue :-) No, this can't
be done. Now I get your original feature request for multiple
ports (which could work).
Why must the A record be for foo.bar and not for addr.foo.bar,
i.e. what breaks at your side?

Another way of saying this is: we want to be able to store multiple msg.Service under a key

All clients are doing DNS lookups for foo.bar already.  I want to offer SRV
for the ports they define.
I tried it, and it seems that skyDNS is setting up an A record for both.
docker exec -ti 8aba9187~f740 /etcdctl set
/skydns/local/kubernetes/myns2/mysvc/host '{"host":"<IP_ADDRESS>"}'
nslookup mysvc.myns2.kubernetes.local <IP_ADDRESS>
Server: <IP_ADDRESS>
Address: <IP_ADDRESS>#53
Name: mysvc.myns2.kubernetes.local
Address: <IP_ADDRESS>
nslookup host.mysvc.myns2.kubernetes.local <IP_ADDRESS>
Server: <IP_ADDRESS>
Address: <IP_ADDRESS>#53
Name: host.mysvc.myns2.kubernetes.local
Address: <IP_ADDRESS>
I am not sure how to ask dig for "all records in this domain".
This breaks down if I add multiple records under that key though, as you
suggested above.
I just want to add a default address for a subdomain, I guess, but I can't
see how as subdomains are represented as valueless directories.  Maybe some
magical "out-of-band" sub-record like "_default"?
On Wed, Apr 1, 2015 at 1:34 PM, Miek Gieben<EMAIL_ADDRESS>wrote:

Ah, ok. Finally nailed to actually bug/issue :-) No, this can't
be done. Now I get your original feature request for multiple
ports (which could work).
Why must the A record be for foo.bar and not for addr.foo.bar,
i.e. what breaks at your side?
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88623812
.

e.g.
# docker exec -ti 8aba9187f740 /etcdctl set
/skydns/local/kubernetes/myns4/mysvc/_default '{"host":"<IP_ADDRESS>"}'

# docker exec -ti 8aba9187f740 /etcdctl set
/skydns/local/kubernetes/myns4/mysvc/http
'{"host":"mysvc.myns4.kubernetes.local", "port":80}'

# docker exec -ti 8aba9187f740 /etcdctl set
/skydns/local/kubernetes/myns4/mysvc/https
'{"host":"mysvc.myns4.kubernetes.local", "port":443}'

# dig @<IP_ADDRESS> SRV mysvc.myns4.kubernetes.local

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @<IP_ADDRESS> SRV
mysvc.myns4.kubernetes.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59496
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;mysvc.myns4.kubernetes.local. IN SRV

;; ANSWER SECTION:
mysvc.myns4.kubernetes.local. 3600 IN SRV 10 50 80
mysvc.myns4.kubernetes.local.
mysvc.myns4.kubernetes.local. 3600 IN SRV 10 50 443
mysvc.myns4.kubernetes.local.

;; Query time: 2 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Wed Apr  1 21:05:30 2015
;; MSG SIZE  rcvd: 142

All that DOESN'T work is that mysvc.myns4.kubernetes.local does not
resolve.  I wonder if SkyDNS's "service oriented" API is just a bad fit for
what I want to do?  Alternatives?
On Wed, Apr 1, 2015 at 1:59 PM, Tim Hockin<EMAIL_ADDRESS>wrote:

All clients are doing DNS lookups for foo.bar already.  I want to offer
SRV for the ports they define.
I tried it, and it seems that skyDNS is setting up an A record for both.
docker exec -ti 8aba9187~f740 /etcdctl set
/skydns/local/kubernetes/myns2/mysvc/host '{"host":"<IP_ADDRESS>"}'
nslookup mysvc.myns2.kubernetes.local <IP_ADDRESS>
Server: <IP_ADDRESS>
Address: <IP_ADDRESS>#53
Name: mysvc.myns2.kubernetes.local
Address: <IP_ADDRESS>
nslookup host.mysvc.myns2.kubernetes.local <IP_ADDRESS>
Server: <IP_ADDRESS>
Address: <IP_ADDRESS>#53
Name: host.mysvc.myns2.kubernetes.local
Address: <IP_ADDRESS>
I am not sure how to ask dig for "all records in this domain".
This breaks down if I add multiple records under that key though, as you
suggested above.
I just want to add a default address for a subdomain, I guess, but I can't
see how as subdomains are represented as valueless directories.  Maybe some
magical "out-of-band" sub-record like "_default"?
On Wed, Apr 1, 2015 at 1:34 PM, Miek Gieben<EMAIL_ADDRESS>wrote:

Ah, ok. Finally nailed to actually bug/issue :-) No, this can't
be done. Now I get your original feature request for multiple
ports (which could work).
Why must the A record be for foo.bar and not for addr.foo.bar,
i.e. what breaks at your side?
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88623812
.

Yes, I see. The thing is that SRV records first class citizens and A/AAAA records are not. What could be done is extending msg.Service with an IP array which specifies the IP address (v4 or v6). If not found skydns will just use the current mechanism for finding an IP.
I'm just wondering if this needs to more generic, i.e. do we want a TXT array as well. (We just might, as we support that as well).

with this IP array, how do I specify that I want an IP (A record) assigned
to the directory?
On Wed, Apr 1, 2015 at 2:16 PM, Miek Gieben<EMAIL_ADDRESS>wrote:

Yes, I see. The thing is that SRV records first class citizens and A/AAAA
records are not. What could be done is extending msg.Service with an IP
array which specifies the IP address (v4 or v6). If not found skydns will
just use the current mechanism for finding an IP.
I'm just wondering if this needs to more generic, i.e. do we want a TXT
array as well. (We just might, as we support that as well).
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88633982
.

hmm, yeah. That would still break, how about the syntax from above:  local/skydns/bar/foo@1? That could still work I think.

The assumption being that the record "local/skydns/bar/foo" is the default
A record and "local/skydns/bar/foo@1" means the same
as "local/skydns/bar/foo/1" ?
If that is what you mean, I think it would work, though it feels a bit more
complex to me than a "local/skydns/bar/foo/@default" or similar.
On Wed, Apr 1, 2015 at 2:28 PM, Miek Gieben<EMAIL_ADDRESS>wrote:

hmm, yeah. That would still break, how about the syntax from above:
local/skydns/bar/foo@1? That could still work I think.
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88636311
.

No. "local/skydns/bar/foo@1 is just how it is stored in etcd, for the DNS answer everything after (and including @) is dropped. So @default would work as well.
Why I like it more is because it is more general, you can just put more Service entries in a directory (as you should)

oh, so the .../bar/foo@1 key holds the Service object for
foo.bar.skydns.local while .../bar/foo/other key holds the Service object
for other.foo.bar... ?
That could work.  What happens if I provide foo@1, foo@2, foo@3 all at the
same time?  Multiple SRV records?
On Wed, Apr 1, 2015 at 2:37 PM, Miek Gieben<EMAIL_ADDRESS>wrote:

No. "local/skydns/bar/foo@1 is just how it is stored in etcd, for the DNS
answer everything after (and including @) is dropped. So @default would
work as well.
Why I like it more is because it is more general, you can just put more
Service entries in a directory (as you should)
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88638711
.

oh, so the .../bar/foo@1 key holds the Service object for
foo.bar.skydns.local while .../bar/foo/other key holds the Service object
for other.foo.bar... ?

yes, something like that, except that foo@1 would be stored as foo/@1

That could work.  What happens if I provide foo@1, foo@2, foo@3 all at the
same time?  Multiple SRV records?

Yes, or multiple A/AAAA records, depends on what is specified in the Service.
But I need to code this and see if it would actually works and makes sense. (Looks like it does though)

If you code it up I am happy to test.
On Wed, Apr 1, 2015 at 2:51 PM, Miek Gieben<EMAIL_ADDRESS>wrote:

oh, so the .../bar/foo@1 key holds the Service object for
foo.bar.skydns.local while .../bar/foo/other key holds the Service object
for other.foo.bar... ?
yes, something like that, except that foo@1 would be stored as foo/@1
That could work. What happens if I provide foo@1, foo@2, foo@3 all at the
same time? Multiple SRV records?
Yes, or multiple A/AAAA records, depends on what is specified in the
Service.
But I need to code this and see if it would actually works and makes
sense. (Looks like it does though)
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-88643281
.

So this almost does what you need:
 curl -XPUT $ETCD/local/skydns/bar/@1 -d value='{"host":"<IP_ADDRESS>", "port":80}'
 curl -XPUT $ETCD/local/skydns/bar/f1 -d value='{"host": "bar.skydns.local", "port":443}'
 curl -XPUT $ETCD/local/skydns/bar/f2 -d value='{"host": "bar.skydns.local", "port":4443}'

almost does what you need:
;; ANSWER SECTION:
bar.skydns.local.	3600	IN	SRV	10 33 80<EMAIL_ADDRESS>bar.skydns.local.	3600	IN	SRV	10 33 443 bar.skydns.local.
bar.skydns.local.	3600	IN	SRV	10 33 4443 bar.skydns.local.

;; ADDITIONAL SECTION:
<EMAIL_ADDRESS>3600	IN	A	<IP_ADDRESS>

Bascially what this @x syntax should do, is to say, make this Service for the directory name instead of the leave node. Have to think about all these magic chars, also see pull req #145 an #106.

Had a long tube ride and time to think. I think this might actually be a bug. If we synthesize a hostname for
"host":"<IP_ADDRESS>", "port":80 we use the key as a base. What we should do (I think) is use the name from the question section.  Also the @foo syntax gets messy fast.
The above answer would then be:
;; ANSWER SECTION:
bar.skydns.local.   3600    IN  SRV 10 33 80 bar.skydns.local.
bar.skydns.local.   3600    IN  SRV 10 33 443 bar.skydns.local.
bar.skydns.local.   3600    IN  SRV 10 33 4443 bar.skydns.local.

See the commits on the issue-144 branch. I've added a test case that highlights the issue. I think the fundamental issue here is that you cannot control how the target of a srv record is generated. Does it a) use the key path (current behavior) or b) use the qname from the query.
That skydns does (a) is useful as well, but (b) is also nice. I think what we need a msg.Service field that allows the user to pick between the two, .i.e. something like SynFromQname that is false by default.

Named it TargetFromQuery.
See https://github.com/skynetservices/skydns/commit/239488f745caa58282333a183b20c9b061775ae6

That would be helpful - custom backends might want to finely craft SRV records and having that flexibility is nice.  Maybe the key value on msg.Service should be changed into something specific, like "ResponseName" and the etcd backend would do the key name conversion.

On Apr 3, 2015, at 8:54 AM, Miek Gieben<EMAIL_ADDRESS>wrote:
See the commits on the issue-144 branch. I've added a test case that highlights the issue. I think the fundamental issue here is that you cannot control how the target of a srv record is generated. Does it a) use the key path (current behavior) or b) use the qname from the query.
That skydns does (a) is useful as well, but (b) is also nice. I think what we need a msg.Service field that allows the user to pick between the two, .i.e. something like SynFromQname that is false by default.
—
Reply to this email directly or view it on GitHub.

Yes, that's the most generic case. Basically you want to register something and then tell skydns how to mangle the synthesized name you get back. Ideally you want this on a per service basis, but I'm not seeing how that would work.

Note completely sure we need that much flexibility (you could envision that you actually do a dns lookup to fill in the Target field of a SRV record). Anyway https://github.com/skynetservices/skydns/commit/f4f47733e63edcf8478c9f9e064671fdef563566 implements TargetStrip which strips labels from left.

@thockin Do you still have comments, our should I merge the TargetStrip stuff?

TargetStrip will make cleaner results, so I am in favor of it.
I think I have finally figured out what you guys were doing when you built
it this way, and I think I get how to get what I want.
etcdctl set /skydns/local/kubernetes/th1/srvtst2/_tcp/_http/pod1
'{"host":"<IP_ADDRESS>", "port":80}'
{"host":"<IP_ADDRESS>", "port":80}
etcdctl set /skydns/local/kubernetes/th1/srvtst2/_tcp/_http/pod2
'{"host":"<IP_ADDRESS>", "port":80}'
{"host":"<IP_ADDRESS>", "port":80}
etcdctl set /skydns/local/kubernetes/th1/srvtst2/_tcp/_https/pod1
'{"host":"<IP_ADDRESS>", "port":443}'
{"host":"<IP_ADDRESS>", "port":443}
etcdctl set /skydns/local/kubernetes/th1/srvtst2/_tcp/_https/pod2
'{"host":"<IP_ADDRESS>", "port":443}'
{"host":"<IP_ADDRESS>", "port":443}
dig @<IP_ADDRESS> +noall +answer +additional
_http._tcp.srvtst2.th1.kubernetes.local SRV
_http._tcp.srvtst2.th1.kubernetes.local. 3600 IN SRV 10 50 80
pod1._http._tcp.srvtst2.th1.kubernetes.local.
_http._tcp.srvtst2.th1.kubernetes.local. 3600 IN SRV 10 50 80
pod2._http._tcp.srvtst2.th1.kubernetes.local.
pod1._http._tcp.srvtst2.th1.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod2._http._tcp.srvtst2.th1.kubernetes.local. 3600 IN A <IP_ADDRESS>
dig @<IP_ADDRESS> +noall +answer +additional
_https._tcp.srvtst2.th1.kubernetes.local SRV
_https._tcp.srvtst2.th1.kubernetes.local. 3600 IN SRV 10 50 443
pod2._https._tcp.srvtst2.th1.kubernetes.local.
_https._tcp.srvtst2.th1.kubernetes.local. 3600 IN SRV 10 50 443
pod1._https._tcp.srvtst2.th1.kubernetes.local.
pod2._https._tcp.srvtst2.th1.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod1._https._tcp.srvtst2.th1.kubernetes.local. 3600 IN A <IP_ADDRESS>
dig @<IP_ADDRESS> +noall +answer +additional srvtst2.th1.kubernetes.local A

etcdctl set /skydns/local/kubernetes/th1/srvtst2/pod1 '{"host":"<IP_ADDRESS>",
"port":80}'
{"host":"<IP_ADDRESS>", "port":80}
etcdctl set /skydns/local/kubernetes/th1/srvtst2/pod2 '{"host":"<IP_ADDRESS>",
"port":80}'
{"host":"<IP_ADDRESS>", "port":80}
dig @<IP_ADDRESS> +noall +answer +additional srvtst2.th1.kubernetes.local A
srvtst2.th1.kubernetes.local. 3600 IN A <IP_ADDRESS>
srvtst2.th1.kubernetes.local. 3600 IN A <IP_ADDRESS>
dig @<IP_ADDRESS> +noall +answer +additional srvtst2.th1.kubernetes.local SRV
srvtst2.th1.kubernetes.local. 3600 IN SRV 10 50 80
pod1.srvtst2.th1.kubernetes.local.
srvtst2.th1.kubernetes.local. 3600 IN SRV 10 50 80
pod2.srvtst2.th1.kubernetes.local.
pod1.srvtst2.th1.kubernetes.local. 3600 IN A <IP_ADDRESS>
On Wed, Apr 8, 2015 at 8:18 AM, Miek Gieben<EMAIL_ADDRESS>wrote:

@thockin https://github.com/thockin Do you still have comments, our
should I merge the TargetStrip stuff?
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-90947669
.

[ Quoting<EMAIL_ADDRESS>in "Re: [skydns] SRV for multiple ports..." ]

TargetStrip will make cleaner results, so I am in favor of it.

Ack.

I think I have finally figured out what you guys were doing when you built
it this way, and I think I get how to get what I want.

See my reply to issue something something about underscored in etcd names
which skews your examples here.

See my comment under #150 for the multi-port host/service schema that I'm using; that example is probably even more relevant here. Your example above is similar, except I would omit the port field entirely on the {pod1,pod2}.srvtst2.th1.kubernetes.local records, and use the aforementioned hostnames for the host field in the actual _http._tcp/_https._tcp service records instead of the IP address for compatibility with glibc.
Now, trying to fit both the _http._tcp/_https._tcp service records and the host records under the same srvtst2.th1.kubernetes.local name (as opposed to a separate tree for hostnames in my example) gets more interesting... with the current etcd _hidden behavior this accidentially works since skydns ignores the _prefixed service records when doing an srvtst2.th1.kubernetes.local A query, but responds correctly to the _https._tcp.srvtst2.th1.kubernetes.local SRV query.
With PR152 fixing this behaviour, I presume that this example here would return a total of 3x2 duplicated A records in the A reply.  I'm not sure what skydns would do with the indirect host service records - return a mixture of A and CNAME records in the reply?

I haven't had a chance to try the TargetFromQuery/TargetStrip features, but they sound like they would help to avoid the compatibility issues with _prefix'd names, while still sticking to direct IP addresses in the SRV records. Still needs something to avoid duplicate A records when querying a service name that has multiple ports, though? And I haven't even tried to figure out what happens if you throw additional IPv6 AAAA records into the mix? :)
IMO I see the host/service split as a better approach than generating A records for ip:port service records, since I can also set sensible PTR records for the hostnames (helps to debug ss/iftop/etc output when docker containers connect to eachother) at the same time, even if a given host has multiple services.

Yeah #152 seems to totally break my scheme.
Simulating #152 by replacing "_" with "xx"
etcdctl rm --recursive /skydns/local/kubernetes/ns

etcdctl set /skydns/local/kubernetes/ns/svc/pod1/http '{"host":"<IP_ADDRESS>",
"port":80}'
etcdctl set /skydns/local/kubernetes/ns/svc/pod1/https '{"host":"<IP_ADDRESS>",
"port":443}'
etcdctl set /skydns/local/kubernetes/ns/svc/pod2/http '{"host":"<IP_ADDRESS>",
"port":80}'
etcdctl set /skydns/local/kubernetes/ns/svc/pod2/https '{"host":"<IP_ADDRESS>",
"port":443}'
etcdctl set /skydns/local/kubernetes/ns/svc/pod3/http '{"host":"<IP_ADDRESS>",
"port":80}'
etcdctl set /skydns/local/kubernetes/ns/svc/pod3/https '{"host":"<IP_ADDRESS>",
"port":443}'

etcdctl set /skydns/local/kubernetes/ns/svc/xxtcp/xxhttp/pod1
'{"host":"pod1.svc.ns.kubernetes.local", "port":80}'
etcdctl set /skydns/local/kubernetes/ns/svc/xxtcp/xxhttps/pod1
'{"host":"pod1.svc.ns.kubernetes.local", "port":443}'
etcdctl set /skydns/local/kubernetes/ns/svc/xxtcp/xxhttp/pod2
'{"host":"pod2.svc.ns.kubernetes.local", "port":80}'
etcdctl set /skydns/local/kubernetes/ns/svc/xxtcp/xxhttps/pod2
'{"host":"pod2.svc.ns.kubernetes.local", "port":443}'
etcdctl set /skydns/local/kubernetes/ns/svc/xxtcp/xxhttp/pod3
'{"host":"pod3.svc.ns.kubernetes.local", "port":80}'
etcdctl set /skydns/local/kubernetes/ns/svc/xxtcp/xxhttps/pod3
'{"host":"pod3.svc.ns.kubernetes.local", "port":443}'

dig @<IP_ADDRESS> +noall +answer +additional +ignore svc.ns.kubernetes.local A
svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN CNAME pod3.svc.ns.kubernetes.local.
pod3.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod3.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN CNAME pod1.svc.ns.kubernetes.local.
pod1.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod1.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN CNAME pod2.svc.ns.kubernetes.local.
pod2.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod2.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN CNAME pod1.svc.ns.kubernetes.local.
pod1.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod1.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN CNAME pod2.svc.ns.kubernetes.local.
pod2.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod2.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN CNAME pod3.svc.ns.kubernetes.local.
pod3.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod3.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>

dig @<IP_ADDRESS> +noall +answer +additional +ignore
pod1.svc.ns.kubernetes.local A
pod1.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod1.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>

dig @<IP_ADDRESS> +noall +answer +additional +ignore
pod2.svc.ns.kubernetes.local A
pod2.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod2.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>

dig @<IP_ADDRESS> +noall +answer +additional +ignore
pod3.svc.ns.kubernetes.local A
pod3.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>
pod3.svc.ns.kubernetes.local. 3600 IN A <IP_ADDRESS>

dig @<IP_ADDRESS> +noall +answer +additional +ignore
xxhttp.xxtcp.svc.ns.kubernetes.local SRV
xxhttp.xxtcp.svc.ns.kubernetes.local. 3600 IN SRV 10 33 80
pod1.svc.ns.kubernetes.local.
xxhttp.xxtcp.svc.ns.kubernetes.local. 3600 IN SRV 10 33 80
pod2.svc.ns.kubernetes.local.
xxhttp.xxtcp.svc.ns.kubernetes.local. 3600 IN SRV 10 33 80
pod3.svc.ns.kubernetes.local.

dig @<IP_ADDRESS> +noall +answer +additional +ignore
xxhttps.xxtcp.svc.ns.kubernetes.local SRV
xxhttps.xxtcp.svc.ns.kubernetes.local. 3600 IN SRV 10 33 443
pod2.svc.ns.kubernetes.local.
xxhttps.xxtcp.svc.ns.kubernetes.local. 3600 IN SRV 10 33 443
pod3.svc.ns.kubernetes.local.
xxhttps.xxtcp.svc.ns.kubernetes.local. 3600 IN SRV 10 33 443
pod1.svc.ns.kubernetes.local.

Everything works EXCEPT the first A record
On Thu, Apr 9, 2015 at 10:01 AM, Tero Marttila<EMAIL_ADDRESS>wrote:

See my comment
https://github.com/skynetservices/skydns/issues/150#issuecomment-91271940
under #150 https://github.com/skynetservices/skydns/issues/150 for the
multi-port host/service schema that I'm using; that example is probably
even more relevant here. Your example above is similar, except I would omit
the port field entirely on the {pod1,pod2}.srvtst2.th1.kubernetes.local
records, and use the aforementioned hostnames for the host field in the
actual _http._tcp/_https._tcp service records instead of the IP address
for compatibility with glibc.
Now, trying to fit both the _http._tcp/_https._tcp service records and
the host records under the same srvtst2.th1.kubernetes.local name (as
opposed to a separate tree for hostnames in my example) gets more
interesting... with the current etcd _hidden behavior this accidentially
works since skydns ignores the _prefixed service records when doing an
srvtst2.th1.kubernetes.local A query, but responds correctly to the
_https._tcp.srvtst2.th1.kubernetes.local SRV query.
With PR152 https://github.com/skynetservices/skydns/pull/152 fixing
this behaviour, I presume that this example here would return a total of
3x2 duplicated A records in the A reply. I'm not sure what skydns would do
with the indirect host service records - return a mixture of A and CNAME
records in the reply?
—
Reply to this email directly or view it on GitHub
https://github.com/skynetservices/skydns/issues/144#issuecomment-91291457
.

[ Quoting<EMAIL_ADDRESS>in "Re: [skydns] SRV for multiple ports..." ]

Yeah #152 seems to totally break my scheme.
Simulating #152 by replacing "_" with "xx"

Selecting the CNAME from that response:
svc.ns.kubernetes.local. 3600 IN CNAME pod3.svc.ns.kubernetes.local.
svc.ns.kubernetes.local. 3600 IN CNAME pod1.svc.ns.kubernetes.local.
svc.ns.kubernetes.local. 3600 IN CNAME pod2.svc.ns.kubernetes.local.
svc.ns.kubernetes.local. 3600 IN CNAME pod3.svc.ns.kubernetes.local.

This is another CNAME bug, because there can only be 1 CNAME per name.
But there isn't a check for this. hmmm.. Maybe I should not use CNAMEs
in the first place for these chains...
But indeed maybe we're saved here by Etcd handling of names starting
with underscores.

Everything works EXCEPT the first A record

/Miek
--
Miek Gieben

As long as #152 does not go in, this seems to be a non-issue.  Not sure if you want to fix it anyway...


Merge in 'release/2.2' changes

Make sure to create a merge commit when completing this PR, not a squash or rebase.


add serializer and deserializer for Signature

addresses: https://github.com/XRPLF/xrpl4j/issues/304

This still needs to be addressed, correct?

Not at the moment. That would need bigger refactor of modules


[PE-D][Tester E] Name of the profile is set to null in the beginning

When I start the app, the app has already asked my name, but my name is still null when I view the profile.

Labels: type.FunctionalityBug severity.VeryLow
original: runxinghuan/ped#12

Fixed in PR #153. Parser initialises UserInfo only once, so username always stays at null.


No timelapse conversion

Debian Stretch /  RPi Cam Control 6.4.30 /  ffmpeg 3.2.10-1~deb9u1+rpt2
Issue: Timelapse videos are not being created
Possible rootcause: Missing space in the ffmpeg command

approx 2500 pictures in the timelapse series
Click Start Convert
Log shows:

[2018/10/12 20:00:42] start lapse convert:(/usr/bin/ffmpeg -f image2 -framerate 15 -i /var/www/html/picam/media/t0008/i_%05d.jpg -c:v h264_omx -r 15 -b:v 2500k/var/www/html/picam/media/tl_0008_0001_20181011_223929.mp4 ; ) >/dev/null 2>&1 &
[2018/10/12 20:00:42] Convert finished

Finishing 2500 pictures at the very same second the conversion command started? Impossible. No video has been created.

If I run the command from the log above manually on the console with an extra space between 2500k and /var/www/... it works, video is being created.
/usr/bin/ffmpeg -f image2 -framerate 15 -i /var/www/html/picam/media/t0008/i_%05d.jpg -c:v h264_omx -r 15 -b:v 2500k /var/www/html/picam/media/tl_0008_0001_20181011_223929.mp4
My /var/www/html/picam/convertCmd.txt:
/usr/bin/ffmpeg -f image2 -framerate 15 -i i_%05d.jpg -c:v h264_omx -r 15 -b:v 2500k
Adding that extra space to convertCmd.txt does not result in the extra space being present in the log output.

Can you please fix the missing space in the ffmpeg command?

Hi,
I ran into something similar some time and several versions ago.  It had to do with the need of the software to preserve a trailing space at the end of the string in convertCmd.txt.  It was apparently being trimmed.  I don't recall whether this happened while storing or while retrieving the string, but it was one or the other. This made no difference in the default gstreamer setup where a directory/file name was being immediately appended to a string ending with an "=", but would cause processing to fail where a <space> was required before the directory/file name by software using a different command syntax.  Maybe this is the same thing.  If so, perhaps Robert can address it.
Because I was having other problems with gstreamer, I eventually moved the boxing processes to a script of my own, which avoided convertCmd.txt entirely.
-- Fred P.

I don't know why the trailing space is getting stripped as there is no explicit trim command in there. It might have been caused by the switch from php5 to php7 some time ago.
I have added a space in explicitly between the convertCommand.txt template and the rest of the line.
ffmpeg now converts OK. I will do some more checking of the gstreamer again as this was the preferred method.

I can confirm, that after updating RPCWI, ffmpeg now converts ok.


Enhance log on site:create if it is not linked to the directory

Is your feature request related to a problem? Please describe.
When running ntl site:create in a new folder it will create a site but not link it.
This is ok but I expected that it got linked
We could enhance the existing log output:
➜  static-ts-function ntl sites:create
? Team: Lukas Holzer's team
Choose a unique site name (e.g. the-awesome-lukas-holzer-site-aba9f.netlify.app) or leave it blank for a random name. You can update the site name later.
? Site name (optional): static-ts-function-test

Site Created

Admin URL: https://app.netlify.com/sites/static-ts-function-test
URL:       https://static-ts-function-test.netlify.app
Site ID:   895b29e8-39f9-4988-bde9-af34f0631181

+ It seems that you created the site in a new folder that is not associated with any existing site.
+ If you want to deploy it you need to link it by running:
+ $ netlify link --id 895b29e8-39f9-4988-bde9-af34f0631181

This would not break any behaviour for users that want to bulk create sites but would highlight the next steps needed for new users.
Describe alternatives you've considered
We could link it by default on creation or add a prompt to do so (but prompts are always tricky on CI)
Can you submit a pull request?
Yes

Pull requests are welcome! If you would like to help us add this feature, please check our
contributions guidelines.

Hi @lukasholzer, I think this is a duplicate of https://github.com/netlify/cli/issues/3827.
I'll let you decide which one to keep. We already have someone wanting to work on https://github.com/netlify/cli/issues/3827#issuecomment-994940898

Oh cool! Have not seen this just realized this behaviour previously and found it odd I will close it then in favor of the existing one!


POC for an async view to be used in the FAB proxy

This is how I ran it so this example async view can work:

run the backend
gunicorn metaculus_web.asgi:application --bind <IP_ADDRESS>:8000 --workers 1 --threads 1  -k uvicorn.workers.UvicornWorker --log-level debug

And then run 10 parallel requests:
for i in $(seq 1 10); do time curl -s localhost:8000/api/posts/long_request/&; done


panic: runtime error: invalid memory address or nil pointer dereference

Description
Panic when running terraform plan that has storage_directives
Urgency
Blocker for our release
Terraform Juju Provider version
0.13.0-rc1
Terraform version
1.9.1
Juju version
3.5.2
Terraform Configuration(s)
git clone https://github.com/canonical/sunbeam-terraform.git
cd sunbeam-terraform
git fetch origin pull/83/head:BRANCH_NAME

Reproduce / Test
juju 3.5/stable + microk8s

# Look at .github/workflows/deploy.yml
sudo snap install go --classic
git clone https://github.com/juju/terraform-provider-juju.git --branch 0.13.0-rc1
cd terraform-provider-juju
make install

sudo snap install --classic terraform

git clone https://github.com/canonical/sunbeam-terraform.git
cd sunbeam-terraform
git fetch origin pull/83/head:BRANCH_NAME

echo '{"credential": "microk8s", "enable-vault": true, "enable-barbican": true, "enable-designate": true, "nameservers": "testing.github.", "mysql-storage": { "database": "12G" } }' > terraform.tfvars.json
terraform init
TF_LOG=debug terraform apply -auto-approve -var-file=channels/edge.tfvars

Debug/Panic Output
https://github.com/canonical/sunbeam-terraform/actions/runs/9874509729/job/27269053143?pr=83

Apply terraform task has terraform output in debug mode.

Notes & References
The terraform plan has storage_directives where application mysql has storage_directives set explicitly with values in terraform.tfvvars.json.
Some other applications like keystone, glance, ovn has storage_directives as {} to pick the defaults from charm metadata.yaml.
The plan is applied with default parallelism.

terraform_debug_output.log
Attached the debug log in https://github.com/canonical/sunbeam-terraform/actions/runs/9874509729/job/27269053143?pr=83

@hemanthnakkina we really need a small plan which reproduces this issue, not a full scale run of sunbeam.

@hmlanigan I am not able to reproduce the problem when terraform plan is applied with -parallelism=1
520-tfplan.txt
Please use the attached terraform plan and run the following command to reproduce the problem:
terraform apply -auto-approve -parallelism=4
If parallelism is reduced to 2, I am not able to reproduce.
On a side note, I see the computed attribute storage for each application is filled with all the storage details of the model (irrespective of application has storage or not). Is it expected?

Hey, the problem was in unproper handling of cannot convert storage details. After fixing I was able to built sunbeam on my machine locally:
2024-07-12T14:08:24.995+0300 [TRACE] provider.terraform-provider-juju_v0.14.0: Received downstream response: diagnostic_error_count=0 diagnostic_warning_count=0 tf_req_duration_ms=5181 tf_req_id=c6494d76-b093-2e17-72c8-ceda4d4f9d3f @caller=/home/anvial/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.23.0/tfprotov6/internal/tf6serverlogging/downstream_request.go:42 @module=sdk.proto tf_rpc=ApplyResourceChange tf_proto_version=6.6 tf_provider_addr=registry.terraform.io/juju/juju tf_resource_type=juju_integration timestamp="2024-07-12T14:08:24.995+0300"
2024-07-12T14:08:24.995+0300 [TRACE] provider.terraform-provider-juju_v0.14.0: Served request: @caller=/home/anvial/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.23.0/tfprotov6/tf6server/server.go:878 tf_provider_addr=registry.terraform.io/juju/juju tf_req_id=c6494d76-b093-2e17-72c8-ceda4d4f9d3f tf_rpc=ApplyResourceChange @module=sdk.proto tf_proto_version=6.6 tf_resource_type=juju_integration timestamp="2024-07-12T14:08:24.995+0300"
2024-07-12T14:08:25.004+0300 [DEBUG] State storage *statemgr.Filesystem declined to persist a state snapshot
juju_integration.designate-to-neutron[0]: Creation complete after 5s [id=openstack:designate:dnsaas:neutron:external-dns]
2024-07-12T14:08:25.012+0300 [DEBUG] State storage *statemgr.Filesystem declined to persist a state snapshot
2024-07-12T14:08:25.013+0300 [DEBUG] provider.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = error reading from server: EOF"
2024-07-12T14:08:25.019+0300 [INFO]  provider: plugin process exited: plugin=.terraform/providers/registry.terraform.io/juju/juju/0.14.0/linux_amd64/terraform-provider-juju_v0.14.0 id=604282
2024-07-12T14:08:25.019+0300 [DEBUG] provider: plugin exited

Apply complete! Resources: 120 added, 0 changed, 0 destroyed.

Outputs:

ca-offer-url = "admin/openstack.certificate-authority"
cert-distributor-offer-url = "admin/openstack.cert-distributor"
cinder-ceph-offer-url = "admin/openstack.cinder-ceph"
keystone-endpoints-offer-url = "admin/openstack.keystone-endpoints"
keystone-offer-url = "admin/openstack.keystone-credentials"
nova-offer-url = "admin/openstack.nova"
ovn-relay-offer-url = "admin/openstack.ovn-relay"
rabbitmq-offer-url = "admin/openstack.rabbitmq"
┌─[±][test_branch ?:2 ✗][sunbeam-terraform][]

I'll prepare the PR right now.


Allow text in cards to be longer than 3 lines

Currently text in the card component is clamped to 3 lines with the tailwind class hx-line-clamp-3
For some cards the text may be longer than 3 lines. This currently gets truncated and the text is not visible. The easy fix is to remove hx-line-clamp-3, but I assume this is not the desired fix.
Not sure how to approach this, possibly allowing the subtitle CSS to be overridden by the user?, or an overflow field which can be true (hx-line-clamp-3) or false (hx-line-clamp-none).

try override layouts/partials/shortcodes/card.html in your site

Thanks 👍


[static_comments] rel=nofollow

Static comments currently render links without a 'rel="nofollow"' stanza in the generated  tag.
Wordpress by default uses rel="external nofollow" which I wanted to keep after converting to nikola.
Especially if the commenter specifies an URL we don't want search machines to index those.
I've modified the comment template (see patch below) for the author URL. But for URLs in the text there doesn't seem to be a way to specify nofollow for the generated link. This is probably a shortcoming of the REST compiler or is there a way to specify nofollow for a link that I didn't find yet?
Patch:
--- templates/jinja/static_comments_helper.tmpl.old     2019-04-14 13:57:43.755064023 +0200
+++ templates/jinja/static_comments_helper.tmpl 2019-04-14 13:58:39.754962650 +0200
@@ -13,7 +13,7 @@

           {%if comment.author is not none %}
             {{ messages("{0} wrote on {1}:", lang).format(
-              '' ~ ('{1}'.format(comment.author_url|e, comment.author|e) if comment.author_url is not none else (comment.author|e)) ~ '',
+              '' ~ ('{1}'.format(comment.author_url|e, comment.author|e) if comment.author_url is not none else (comment.author|e)) ~ '',
               '' + comment.formatted_date(date_format) + ''
             ) }}
           {% endif %}

I guess one has to parse the HTML for this and add rel=nofollow manually. This can probably be done similarly to link rewriting (absolute -> relative) in Nikola itself.

Can you point me to the relevant code in Nikola? Then I would try to come up with a patch.
That said: Wouldn't it be better to add additional annotations to the link specification in REST, e.g we have the image tag:
.. image:: magnetic-balls.jpg
:width: 40pt
similar to this we could add properties to a link
Nikola_ is linked here
.. _Nikola: https://getnikola.com/
:rel: external nofollow
I don't know if this is syntactically possible. It seems that Sphinx has added support for nofollow in some recent release according to the release announcement, I've not looked into the code, though. So maybe it's possible to reuse the syntax they use, provided it makes sense in other contexts?

Adding something in ReST won't solve the problem for other compilers, and you still have to modify all comments manually. It's better to let the plugin do this automatically.
For how to modify HTML, see https://github.com/getnikola/nikola/blob/master/nikola/nikola.py#L1387-L1399 (the is_fragment branch is the relevant part). You can probably iterate over all links similar to here: https://github.com/getnikola/nikola/blob/master/nikola/nikola.py#L1409-L1414


Identify intermittent bugs with 'intermittent-failure' keyword and not with id of bug reporter

At least close_intermittents.py identifies intermittent bugs by checking if the bug reporter is<EMAIL_ADDRESS>Not every bug reported by this proxy is intermittent (it's treeherder UI has a checkbox to not set the intermittent-failure keyword).
Only bugs with the keyword intermittent-failure should be considered for closing.

@Archaeopteryx we are understaffed on this project. Mostly maintenance mode.
but happy to take a PR.
do you want to give a try?
It should be 3 or 4 hours of work for a beginner with some Python experience.

Otherwise I can probably take this.

Fixed by #984.


android 10  certificates

Not sure this is a bug, but if I uninstall the app, also the certificate and eduroam profile are gone: is this the intended behavior?
More to the point, it seems I'm unable to just configure eduroam with certificate on Android 10, is this also known? I'm using  a .pem file as certificate from my uni, but cannot find the corresponding field where to put radiusauth... as in WPA on Linux (I guess it's not Domain, right?)
Thanks.

On recent versions of Android, this is indeed the behaviour Android devs intended :-/
Nothing in our code binds the configuration to the app, but as Android code evolved, the operating system at some point started doing that.
From the top of my head, I do not know the exact version when this was introduced any more.
FWIW, Android 11 changes the entire API set and we will probably launch a whole new app to support the new approach.

When it comes to your second part of the question: a PR for the app should be about issues with the app, not about issues /without/ the app ;-)
FWIW, you'll need to install the PEM file into the "Wi-Fi Store", not the "VPN and Apps" store. Once it's in the Wi-Fi store, it should become visible in the drop-down list for CAs.

Nothing to be done in terms of code here.

I see, thanks.


Fix for #64

Changed to copy the string as binary content and then converting to base64. Tested with XLSX attachment successfully.
I also removed the .vs folder from GIT since it's only used by VS to keep track of your settings, it shouldn't be committed.

Looks good to me, @bjcull is this ok to merge?

Yep, works well. Added a binary file to the tests too.


TypeError: Cannot read property 'startRecorder' of null

Please fill the template to help you out. Also, please try the Example project compare before submiting the issue when you have certain issue with your project setup.

Version of react-native-audio-recorder-player
"react-native-audio-recorder-player": "^3.6.4",
Version of React Native
0.73
Platforms you faced the error (IOS or Android or both?)
Android
Expected behavior
Should start the registration
Actual behavior
at the onLongPress event I have this error TypeError: Cannot read property 'startRecorder' of null
Steps to reproduce the behabior
This is my repo: https://github.com/neosyn-ee/react-native-neos-native-kit/tree/main  the component usage is inside the example folder instead the component is under the path src/components/AudioPlayerRecorder

go to inside example folder
yarn run start
yarn run android
click for a long time on the button with the microphone icon
it shows me the error TypeError: Cannot read property 'startRecorder' of null

That repo no longer exist


The etcd container link is out of date in the yaml

The etcd container link is out of date in the  yaml file and there is something wrong when run the gcr.io/google_containers/etcd:2.0.9 container

This change is

#5080


Don't set URL to dx.doi.org

When URL is dx.doi.org/10.nnnnn/mmmmmm (or just doi.org/...), this is redundant with DOI information. It should be detected and moved to the doi field, or just removed if the DOI is already set.

request to add the dx.doi.org as URL as feature/ option


Add file for UNICIENCIA Bucaramanga engineering department

Website: https://unicienciabga.edu.co
Program: https://unicienciabga.edu.co/bucaramanga/programas/sistemas
About: https://unicienciabga.edu.co/nosotros

@carlosvasquez25 First stage of verification passed, official domain is uniciencia.edu.co as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision. Proof of domain ownership: https://www.uniciencia.edu.co/estudiante

@carlosvasquez25 This is a duplicated request, I close it. The domain is already in the trusted list.

@philipto  It is not the same domain, the university has two branches in Colombia, students from the city of Bogota use the domain uniciencia.edu.co and students from the city of Bucaramanga use https://unicienciabga.edu.co, by subject administrative students are divided in this way.


View Component now

Is your feature request related to a problem? Please describe.
ViewComponent now supports previews that don't have a leading _

By default, ViewComponent requires preview files to have _preview.rb suffix, and it's not configurable (yet).

Since https://github.com/ViewComponent/view_component/pull/2061, View Component searches for preview.rb (rather than _preview.rb)
Describe the solution you'd like
You no longer need the ViewComponentContrib::Preview::Sidecarable
Additional context
I don't use this gem (view_component-contrib), so I'm not going to submit a PR to solve this issue - but I was inspired to do the View Component PR #2061 to support previews in sidecar directories by the Evil Martian blogs on view components, so I figured I should let you know it's possible!

Thanks for letting us know.
I think, however, we still need the extension for this part: https://github.com/palkan/view_component-contrib/blob/bea3236bba4dabc3dd68cb406fc9a050689bbbe2/lib/view_component_contrib/preview/sidecarable.rb#L19-L20

Oooh, good point. Sorry for not fixing that too!


Should specify in README, that installing catppuccin/bat is a pre-requisite

I was getting the below error every time I ran delta, and the theme was not being applied.
[bat warning]: Unknown theme 'Catppuccin Mocha', using default.
It took me quite some time to understand that I need to explicitly install and setup catppuccin/bat for this to work. This should be added to README.md by default for people who are new to this (like me).
I can add it if you think this is a good idea.
Thanks!

Sorry about that. It completely slipped my mind when I made this port.
By all means, go ahead and add it.


[Bug 🐞]: AMP and TUFX incompatability/NRE

Brief description of your issue
Using AMP/KAMP with TUFX and trying to hide the TUFX button breaks AMP functionality
Steps to reproduce
Install AMP, Install TUFX, try hiding other buttons first, it works. Try hiding TUFX, nothing vanishes and a NRE is logged, afterwards I cannot hide or show anything anymore - even buttons that I could previously hide/show. The buttons are essentially locked and do not react to AMP anymore.
Expected behavior
No NRE and AMP should be able to hide/show any app launcher button just like before trying to hide TUFX, including TUFX.
Actual behavior
The game still works, but AMP lost its functionality in all scenes. A scene change (e.g. KSP -> VAB/SPH) does not help. There is a NRE with every scene change.
Environment
Mod: AMP 1.5.5 & TUFX <IP_ADDRESS>
KSP: 1.12.3
Download/Installation: AMP: manual download and installation from Curseforge, currently latest version 1.5.5 ( https://www.curseforge.com/kerbal/ksp-mods/AdjustableModPanel ) & TUFX: manual download and installation from GitHub, latest version <IP_ADDRESS> ( https://github.com/shadowmage45/TUFX/releases )
KSP.log: https://www.dropbox.com/s/sb8jbdy8uqtbl9r/KSP.log?dl=0
Player.log: https://www.dropbox.com/s/hlg4rjjanngudoo/Player.log?dl=0

How did you download and install this?
CurseForge (download and manual installation)

@caipi- thank you for the 🐛 report.
Would you kindly try the below version and tell me if the issue still exists with it. Thank you!
Most recent version (the one I was about to release). Kindly tell me when you have it downloaded so I can remove the link.
AdjustableModPanel-<IP_ADDRESS>-release-CF.zip

I have downloaded it, you can remove it. I will try it in a few minutes.

@zer0Kerbal Initial test result in my KSP test environment & my regular heavily modded game: The NRE and issue did not happen with the new version <IP_ADDRESS>. It seems to be fixed.
So I'm just gonna close the issue here for now.
FYI: I also tested if the other mods I have installed created a similar issue. I went through several scenes and removed all buttons. No issue so far. Looks good and stable to me.
Btw: Please kindly disregard the fact that I accidentally had two ModuleManagers in my test environment in the initial logs. That was an oversight on my part after being happy to have found the reason/mod in my normal game (where only one MM is present, the latest one of course), hastily installing TUFX without realizing it came bundled with the old MM, and uploading the logs without looking at their beginning. -.-'

@project-bot project-bot bot moved this from Closed to Needs triage in Issue/Request Tracker

shakes 👊 at project-bot now you work, you ne'er-do-well rapscallion!
Thank you @caipi- very much appreciated!
On a side note, that is why I try to not include other .dll's in my releases - too easy to git multiple extras that can, and often do mess things up 🐒 🔧 - like miniAVC.dll....
It has happened to all of us - including and especially me. (multiple same .dll's)
Enjoy the early pre-release! You've earned it. 🦅 🧧


[Hacktoberfest] Add paste from clipboard button

Just like a copy to the clipboard, there should also be a button to paste from the clipboard.

@Susmita-Dey Assign this issue to me

@aashishpanthi I don't think that it was needed.


Tss2_Sys_EncryptDecrypt2() need to be implemented

See: TPM Rev 2.0 Part 3: Commands
https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-3-Commands-01.38.pdf
In Chapter 15, they say:

TPM2_EncryptDecrypt2() is identical to TPM2_EncryptDecrypt(), except that the inData parameter is the first parameter. This permits inData to be parameter encrypted.
TPM2_EncryptDecrypt is deprecated, and TPM2_EncryptDecrypt2() is preferred.

It seems that my hardware TPM refuses to execute the deprecated command and returns TPM_RC 0x0143 to me.
tpm2_encryptdecrypt won't work on my TPM.
For example:

sudo tpm2_encryptdecrypt -k 0x81010001 -P abc123 -D NO -I a.txt -o b.txt

ERROR: EncryptDecrypt failed, error code: 0x143

/usr/local/sbin/tpm2_rc_decode 0x143

error layer
  hex: 0x0
  identifier: TSS2_TPM_ERROR_LEVEL
  description: Error produced by the TPM
format 0 error code
  hex: 0x43
  name: TPM_RC_COMMAND_CODE
  description: command code not supported

commandIndex 0x0164 is not available for this TPM2.0 chip:

sudo tpm2_dump_capability -c commands

TPMA_CC: 0x02000163
  commandIndex: 0x163
  reserved1:    0x0
  nv:           clear
  extensive:    clear
  flushed:      clear
  cHandles:     0x1
  rHandle:      clear
  V:            clear
  Res:          0x0
TPMA_CC: 0x00000165
  commandIndex: 0x165
  reserved1:    0x0
  nv:           clear
  extensive:    clear
  flushed:      clear
  cHandles:     0x0
  rHandle:      clear
  V:            clear
  Res:          0x0

TPM 2.0 Command Code TPM_CC_EncryptDecrypt2 should be 0x00000193
(TPM_CC_EncryptDecrypt is 0x00000164)
#define  TPM_CC_EncryptDecrypt                (TPM_CC)(0x00000164)

Queuing this one up for the next minor release ...

@tstruk @flihp Any luck on getting this done soon?

The way things are going I think this would be the only change that went into a minor release if we did one. It'll definitely be in the 2.0 release but that's still months away. I think the difference between these two commands is pretty small (one parameter moved) so this could be a small task but I'm hesitant to use that as an estimate till I've looked at it a bit.
What are you thinking @williamcroberts? Do you want to port the tools over to this new command and line up a release behind it? That's a good way to motivate the work.

It'll definitely be in the 2.0 release but that's still months away.

@flihp that means that we won't be able to do a new major release of the tpm2-tools for months either, since as I mentioned in the mailing list, tpm2-tools master fails to build with the tpm2-tss 1.x branch.
@williamcroberts what's your plan for that? Maybe we can cut a 3.x branch and do a fixup there to allow the tools to be built with the tpm2-tss 1.x branch?
Also, I believe we should do this change in tpm2-tools (if you agree I can do a formal PR proposal):
diff --git a/configure.ac b/configure.ac
index aa1f68d9ce45..f22cf571f4c3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,7 +12,7 @@ AS_IF(
     [],
     [AC_MSG_WARN([Required executable pandoc not found, man pages will not be built])])
 AM_CONDITIONAL([HAVE_PANDOC],[test "x${PANDOC}" = "xyes"])
-PKG_CHECK_MODULES([SAPI],[sapi])
+PKG_CHECK_MODULES([SAPI],[sapi >= 2.0])
 # disable libtcti-device selectively (enabled by default)
 AC_ARG_WITH(
     [tcti-device],

PKG_CHECK_MODULES([SAPI],[sapi >= 1.9])

">=1.9" should work for me since the tss-2.0 version seems to be released months later.

@martinezjavier
Yes if we need to do that for 3.0 we can fork off master and edit to use an older version of tss. However, I need to hit all those next milestone features first.
@liuqun I understood @martinezjavier change to be suggested on master, which is being built against tss master, which is being built with: -DVERSION="2.0.0-dev"
@martinezjavier we should take that change to package config. If your at it, maybe add checks for all those missing dependencies in configure?
https://github.com/01org/tpm2-tools/issues/450

@williamcroberts I see, I (mis)understood from our last conversation what we where near to a next release (IIRC you mentioned the end of October). There are 24 issues with a "next" milestone, so I guess it will take some time to finish those.
Are you planning to start wrapping up in preparation for the next release (i.e: not labeling any new issue for next until the release)? Otherwise I feel that we keep piling up stuff and getting a next release gets harder.
That's why I always prefer time based release model than a feature based one, but that's a different conversation :smiley:

@martinezjavier Nothing new will be added to next without dropping something. Normally I would be all about time based, but since there is a lot of non-backwards compatible things, id like to get as many of those in as possible.
This ticket will likely need to be dropped as this is not supported in the TSS as of yet.

@williamcroberts yep, agreed. Ok, I'll help closing the pending issues then so we can finally do a new release.

Didn't want to make any promises about getting this in since I'm traveling this week but after hours I managed to get an implementation working. I'll start backporting this to the 1.x branch. Shouldn't take more than a few hours. Should be able to have it done by the end of the week.
@williamcroberts : If we can get the timing right we may want to switch the tools over to use this new function in the tpm2_encryptdecrypt command. Thoughts?

@flihp agreed

Great. Imma start backporting this tonight.

What is the current status of this?   Compiling tools-30-rc2 against TSS 1.3.0 still results in the following compilation errors:
tools/tpm2_encryptdecrypt.o: In function encrypt_decrypt': /home/ioliver/code/tpm2/tpm2-tools-3.0-rc2/tools/tpm2_encryptdecrypt.c:104: undefined reference to Tss2_Sys_EncryptDecrypt2'
collect2: error: ld returned 1 exit status
Makefile:1592: recipe for target 'tools/tpm2_encryptdecrypt' failed
make: *** [tools/tpm2_encryptdecrypt] Error 1

@iolivergithub are you sure you are building against the correct tpm2-tss version?
Tss2_Sys_EncryptDecrypt2() is definitely implemented in tpm2-tss version 1.3.0.

Solution...
(nb: yes, I can see the function being defined in tpm2-tss 1.3.0)
This might be specific to Ubuntu 17.04 but despite the libraries being correctly installed, LD_LIBRARY_PATH set, the various paths in /etc/ld.conf.d  compiling tools requires    export LDFLAGS='-L/usr/local/lib'  before running ./configure  otherwise the above function is not found.

@iolivergithub what does the following command say for you?
$ pkg-config --modversion sapi

My guess is that you have two sapi.pc pkg-config files in pkg-config's search path and so the configure script gets confused and picks the wrong one. And that's why you have to explicitly set linker flags.
So I would check that and remove the files for the old tpm2-tss installation if that's the case.the case.
BTW, why are you building 3.0-rc2 instead of the final release? There's a fix in tpm2-tools to check for sapi >= 1.3.0 sapi < 2.0.0 instead of just sapi < 2.0.0. That would had caught your issue at configure instead of at linker time.

$pkg-config --modversion sapi
returns nothing
Have had conflicting advice about the versions hence using the release candidates. However see the update above. Encyrptdecrypt is not enabled on the TPM I have from Infineon/Lenovo thus making this little more than an academic exercise.

returns nothing

Interesting, empty is sapi < 2.0.0 so your configure script didn't fail. I wonder why is empty thought.

Encyrptdecrypt is not enabled on the TPM I have from Infineon/Lenovo thus making this little more

Encyrptdecrypt or Encyrptdecrypt2?

AFAIK the Infineon TPMs do not support EncryptDecrypt (deprecated), only the newer EncryptDecrypt2. This was the whole reason for implementing the newer command in this last release. Since the newer command is implemented in the latest release and this issue seems to be related to an installation error I'm going to close the issue and ask that a new one be opened specific to the installation issue being seen.


for csv_dd, what is the "dataType" for date time?

Emily, is there a standard term here? dateTime, date-time, datetime??? Does it matter?

@regnans "datetime" Data_Type should be used to distinguish datetime fields from date. It's not currently required, but we are planning to revise the CSV dd to include the recommendation.

thanks. I'll add that in


[BUG] : ConvertTo-PnPPage: Could not find file 'PnP.Framework.resources'

Hi,
Problem Area
Getting error when running PowerShell script to convert webpart page to modern page.
Source: SharePoint 2013 OnPrem
Destination: SharePoint Online Team site connected to O365 group.
[ ] Page Transformation: Error during the use of page transformation from PnP PowerShell
Expected or Desired Behavior
Web part page from SharePoint 2013 should convert to a modern page within SharePoint Online.
Observed Behavior

Steps to Reproduce
Script:

I experienced this too. You need to use PowerShell version 7


Translations update from Hosted Weblate

Translations update from Hosted Weblate for Poop Journal/Poop Journal.
Current translation status:

Thank you so much for your support, @Vistaus! 😘


Scroll overflow

What it does
Sokatoa Issue
No longer overflows out of parent

I edited the description to add a image


Add '.uniq' method

View rendered readme.md

@rultor merge

@rultor merge

@dgroup OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@dgroup Done! FYI, the full log is here (took me 2min)


Cylinders

List of fixed issues (if they exist):

#870
#871
#872

Note that changes in precision may cause some test bitmaps to be imperceptibly different.

@neurolabusc , are you finished with this PR? If you’re still making changes we can convert it to a draft instead.

@neurolabusc , of the 288 puppeteer snapshots, there were 4 failed tests (below). I originally noticed the failures on the ubuntu github actions runner, but verified locally on my mac as well (sonoma, Arm64).
Expected snapshot on the left, actual on the right. Would you be able to look into these errors?
tests/test.loadTwoDocuments.js

tests/test.loadMZ3.js

tests/test.loadMZ3DoubleLayer.js

tests/test.loadMeshDocument.js

@hanayik nice catch by the tests. I have fixed these issues.


libutp won't build using Solaris Studio compilers

The pack #pragma statements are non-portable (and not supported even by gcc on Solaris). Using pack(1) / pack(0) instead works.

Submitted pull request


[6.0] Deployment-gate treatment of protocols without witness tables as never-dependent

Explanation: Within Swift 6.0, we expanded an optimization for witness tables that that allowed direct access to the witness table for conformances to any protocol that can never have a witness table, rather than requiring access through swift_getWitnessTable that might need to instantiate the witness table. However, this broke back-deployment for conformances affected by this, because client code built with Swift 6.0 would assume that the swift_getWitnessTable call was unnecessary (and skip it), while binaries built with older compilers still required it. Limit this optimization to Swift 6.0-and-newer deployment targets.

Scope: Affects binaries that access otherwise non-dependent conformances from resilient libraries built with pre-Swift 6.0 compilers where the involved protocols inherit from Sendable. In other words, very narrow.
Issues: rdar://133157093.
Original PRs: https://github.com/swiftlang/swift/pull/75769
Risk: Very low. We're backing off to an older access pattern when targeting platforms with older Swift runtimes, without affecting code built for platforms with newer Swift runtimes.
Testing: Tested against an affected framework, plus new tests
Reviewers: (workin' on it)

@swift-ci please test


Avoid NullReferenceException in Gestures.PointerReleased

What does the pull request do?
PR allows you to avoid crashes during multi-touch input #14249. This is not a complete fix as I'm not sure the new behavior is correct.
What is the current behavior?
The bug is described in #14249. In my case, I created an application with one large button. I pressed the Linux device's touch display several times with three fingers. After a few touches the app crashes with message:
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at Avalonia.Input.Gestures.PointerReleased(RoutedEventArgs ev)
What is the updated/expected behavior with this PR?
The application does not crash.
How was the solution implemented (if it's not obvious)?
There is three ways to avoid NRE here:

Add a null check in PointerReleased before raising the event. In this case the HoldingState.Completed event will not be raised in some cases. Is it good or bad? I don't know.
Store the value of s_lastHeldPointer.Type in separate field. Event HoldingState.Completed will be raised even if s_lastHeldPointer is null. I think this is better than the first case.
Figure out why s_lastHeldPointer might be null and causes NRE and rewrite (refactor?) this code.

I decided to take the second path as it is more reliable. I also changed the PointerPressed and PointerMoved methods to use s_lastHeldPointerType field just for consistency. These two methods do not throw NRE exceptions.
Checklist

[ ] Added unit tests (if possible)?
[ ] Added XML documentation to any related classes?
[ ] Consider submitting a PR to https://github.com/AvaloniaUI/avalonia-docs with user documentation

Breaking changes

Obsoletions / Deprecations

Fixed issues

@dotnet-policy-service agree


Export a basic notebook document with nbconvert test is failing

Failing on Insiders builds consistently.

These two builds only. From this change:
https://github.com/microsoft/vscode-jupyter/runs/7959359559?check_suite_focus=true

I have context here already so I'm investigating.


Benchmark

[x] cpu load
[x] memory allocation

Currently directly connected peers in network namespaces reach about a 1 Gbit throughput rate on my laptop. Profiling shows that worker threads are generally spending 33-50% of their time in writev syscalls. Regardless, iperf shows a large amount of retransmissions before reducing window size, meaning the system generally does get overwhelmed. Additionally, there is the occasional latency spike when pinging remotes. This is likely the result of the current router implementation. Memory wise, the encrypt function currently causes quite some reallocations, though not to the extent that warrants an immediate change. Basically, appending the nonce triggers the reallocation, because the returned encrypted Vec itself has insufficient capacity.
The current main points of contention are:

tun encrypts / decrypts packets in the task which also reads / sends packet on the device. Since these packets are Send / read from a channel, this essentially means receiving / sending a new packet is blocked on the encrytpion / decryption progress. To solve this, we can do the encryption / decryption in a block_on call. This runs the method on a worker thread pool and unblocks the task itself. We also need to wrap the tun to provide a stream interface, so we can run multiple receive tasks concurrent (receiving the next packet while encrypting the previous).
For peers the above is unneeded, though the aggressive locking should be reviewed
The router is another point of contention. Currently only one packet at a time can be routed. A same trick can be applied where multiple packets are read from the channel and the internal route lookup logic is done on a worker thread pool. The issue however is that the locking is rather aggressive, and in reality a system under load will likely have a huge amount of reads compared to a relatively small amount of writes, which are done in a stop the world kind of fashion, as the whole router is in a single lock. Some stuff in the router can be done to improve this: finer locks and atomics. Next to this however, we could also look into making the router state an ArcSwap, so a write takes a readonly copy and updates that, then swaps the existing copy with the new state. Alternatively, https://github.com/jonhoo/left-right would probably be a good fit for this.


The Augmented Datasets

Hi, I'm interested in your work. I was wondering if you could consider releasing the augmented datasets as well. Thanks!

We use the code in SCCL to augment our data
https://github.com/amazon-science/sccl/tree/main/AugData
Thanks for your attention.


Migrate activation issue template to Github form issues

Closes https://github.com/flutter/flutter/issues/119914
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

Please add screenshot of the updated template so that team member(s) reviewing this would see a preview of changes made as part of this PR.

@darshankawar Added a screenshot to https://github.com/flutter/flutter/pull/119916#issue-1569743286

Updated the screenshot of the form preview to reflect the changes I pushed


Add third_party/vulkan_extensionlayer submodule.

https://github.com/KhronosGroup/Vulkan-ExtensionLayer
We'll use VK_LAYER_KHRONOS_timeline_semaphore from this to emulate
VK_KHR_timeline_semaphore support on platforms where it isn't available
(mainly Android and other devices that don't have Vulkan 1.2 yet).

I don't have this building cleanly through any combination of [CMake, Bazel] x [Windows, Linux] yet, but I've prototyped it working upstream on Linux.


Discoverability of Binding information from App Perspective.

I've been wondering about the envVar bindings.
With a file mount bindings, I can iterate the directory, and know which bindings exist.. and in CF, there's only a single envVar (VCAP_SERVICES) which I process to know which bindings exist. However, if we start mapping binding info to individual envVars based on the wishes of the remote services.. then apps lose their ability to easily iterate the services bound to them.
We could resolve this by offering a binding index, either as an envVar (with a fixed name, so that app libraries can know to check for it, similar to VCAP_SERVICES), or as a flat file. The index would include the names of the other envVars that have been set. (I'm assuming here that I'll still iterate a directory for any mounted binding info). We could alternatively put this info into a generated file that could always be volume mounted, that could be read by the app to determine which other binding info is available for the app. (This could allow flexibility by allowing mounted binding info not to all be in one hierarchy, although keeping it organised that way would make it cleaner)
Neither approach would make any statement about what the information was.. just that it had been bound, enabling app libraries can scan the var/list, and then from there scan the env vars/files to determine which services are bound and configure them appropriately

I really like the idea of having an "umbrella" env var with a set name that listed the keys and if they were bound as files or env vars.
Maybe called BINDINGS, as a JSON payload with {keyname, [envVar | volume]}:
{ "KAFKA_USERNAME": "envVar", “KAFKA_PASSWORD”: ”volume” }

@sbose78 - I believe SBO would have all of the info to create this?

This would be a great addition.
On the Runtime Component operator side, since our operator is the one deploying the application, it needs to know whether the backing service intended to inject binding info as volume or env var. And this JSON payload seems to solve that problem nicely.

To summarize, this would be a dictionary of all the envVars that Service Binding is managing and exposing?
Talking implementation:
Maybe, we could include it in the same binding secret with a well-known key ? That way when the binding secret disappears, the exposed dictionary disappears as well?

@sbose78 - exactly.  A well known key inside the same binding secret.  It would list all of the secret variables and whether they were bindAs=envVar or bindAs=volume.
Two use cases:

our runtime Operator will use this to be able to properly consume the Secret created by SBO, injecting vs mounting as required
applications can iterate through this to know what bindings it should fetch.

Expanding on the JSON/YAML payload style:
bindingEntries:
  - name: KAFKA_USERNAME
    value: my-user
    type: envVar
  - name: KAFKA_PASSWORD
    value: my-password
    type: volume
    mountPath: /platform/bindings/secret
...

+1 for including it in the same secret with a known key.

@navidsh - would we need to include the value in the bindingEntries element, if there will be already a key/value pair in the same secret?

That's right, no need for the value. Just updated the example.

Fixed via #28


Video Super Resolution error

[concat @<PHONE_NUMBER>5a62c0] No files to concat
results/input_vidlist.txt: Invalid data found when processing input
inference: 0sub_video [00:03, ?sub_video/s]

+1, having the same issue

+2, same


Move http transport to httpclient5, move kinesis to separate module, update Flink integration's structure

To remove usage of vulnareble library commons-codec coming from outdated HTTP library https://github.com/OpenLineage/OpenLineage/issues/3182

removed it's usage
moved KinesisTransport to separate module, as underneath Kinesis depends on old http client
restructured Flink integration - removed cyclic dependency between OL integration and example jobs, now the example jobs are build separately and depend on generated shadow jar, and they themselves produce shadow jar that's used in the integration tests, rather than having direct code dependency.

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 85.73%. Comparing base (7fd8762) to head (081d31e).
Report is 2 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3205   +/-   ##
=======================================
  Coverage   85.73%   85.73%
=======================================
  Files          54       54
  Lines        3119     3119
=======================================
  Hits         2674     2674
  Misses        445      445

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


No parallel movement of gripper and arm (throwing object example)

Trying to get the throwing example running i realised that there is (no longer?) the possibility to open the gripper while the arm is moving. Essentially not throwing the cube.
The interesting part is, that the planning seems to be delayed. I have not enough insight in Moveit2 yet to figure out exactly where this is coming from unfortunately.
Found while working on Jazzy-Harmonic adaptation
(
https://github.com/AndrejOrsula/panda_ign_moveit2/pull/34
https://github.com/AndrejOrsula/ign_moveit2_examples/pull/27
)

This issue has likely been present in pymoveit2 since Humble.

Related to https://github.com/AndrejOrsula/panda_ign_moveit2/issues/31

I have never looked into it deeper, so I am unsure about the origin of this regression. For an application like this, maybe using moveit2_py bindings would be the better approach going forward.


Put it on Hackage

I couldn't figure out why these libraries aren't on Hackage/Stackage, but need installing from git?

We're going to aim to push to Hackage at end of August.  We originally had some larger changes planned before pushing to Hackage but in response to your request we've decided to instead:

Document our roadmap for planned changes so that we're more transparent about the development process
Release to Hackage after a pass to polish up the current state of the library and iterate on that

Thanks, that would be great!

Are there any updates on this?
(Sorry to bump the issue thread, it's just been a few months and I'm curious if Hackage/Stackage publication is still on some roadmap)

@jkachmar: Sorry for the delay.  We're really behind on this as you can probably tell.  I'll do my best to address this before the holidays.

Maybe we can revisit in the next few months?

Any update on this?

Hey I just got to this repo from https://hackage.haskell.org/package/grpc-haskell

Yeah, I just forgot to close this issue.  Thanks for the reminder! 🙂


Offer alternative collection methods that honor conventions

This is a follow-up to #27531.
This exposes an alternative API for updating collection properties that honors convention:

(List|Set)Property.append*(...)
MapProperty.insert*(...)

Changes in behavior comparing to the original add and put methods:

if a property has no explicit value, the convention will be applied before the change is applied
if both explicit value and convention are effectively missing (set to a missing provider, or by containing a missing element provider), an empty collection will be applied before the change is applied
if the actual value of the property is undefined, an empty default will be applied before the change is applied
if the the addition is for a new element or iterable provider that is missing, the result will be as if no change was performed

@bot-gradle test RFN

I've triggered the following builds for you. Click here to see all build failures.

ReadyForNightly build

@bot-gradle test RFN

I've triggered the following builds for you. Click here to see all build failures.

ReadyForNightly build

@bot-gradle merge

The merge queue build has started. Click here to see all failures if any.


Allow failures for 3.10-dev

Unfortunately, GA has no Travis-like allow-failures option: the whole status will be "red".

Probably, not an option, until https://github.com/actions/toolkit/issues/399 is open.


ci: forge fmt over all sol files in testdata

Dogfooding!
Ran forge fmt over our *.sol files, and added a check to the CI.

@joshieDo need to either reset the fixtures for abi2solidity* tests
or plugin formatting when generating interfaces.
or exclude the folder


Add controller tests / integration tests that check controller hierarchy

We need tests for

PostChildCreated
PreChildDestroyed
ParentController

See - https://github.com/canoo/dolphin-platform/issues/382


cloudflare_access_organization forces optional session_duration to be set due to default value

Confirmation

[X] My issue isn't already found on the issue tracker.
[X] I have replicated my issue using the latest version of the provider and it is still present.

Terraform and Cloudflare provider version
Terraform v1.3.7
on darwin_amd64

provider registry.terraform.io/cloudflare/cloudflare v4.17.0

Affected resource(s)
cloudflare_access_organization
Terraform configuration files
resource "cloudflare_access_organization" "test" {
  account_id       = "[REDACTED]"
  auth_domain      = "[REDACTED]"
  name             = "[REDACTED]"
  session_duration = null
  custom_pages {}
  login_design {
    background_color = "#0066EE"
    logo_path        = "[REDACTED]"
  }
}

Link to debug output
Terraform will perform the following actions:

  # cloudflare_access_organization.test will be updated in-place
  ~ resource "cloudflare_access_organization" "test" {
        id                        = "[REDACTED]"
        name                      = "[REDACTED]"
      + session_duration          = "24h"
        # (4 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.

Panic output
No response
Expected output
https://developers.cloudflare.com/api/operations/zero-trust-organization-update-your-zero-trust-organization
session_duration to not be required to be set. No default is defined in CF documentation
Actual output
session_duration is requiring to be set
Steps to reproduce

set session duration in cloudflare access organization to be 'Same as application session timeout'
import existing cloudflare_access_organization resource
align terraform code with imported resource
run terraform plan
observe a requirement to always update the resource with the session_duration

Additional factoids
No response
References
No response

https://developers.cloudflare.com/api/operations/zero-trust-organization-update-your-zero-trust-organization shows no default
https://github.com/cloudflare/terraform-provider-cloudflare/blame/master/internal/sdkv2provider/resource_cloudflare_access_organization.go#L37
That line was likely copied from elsewhere and accidentally included the default.

Not sure if this adds some additional context but the behavior when making requests from the UI is to omit the session_duration entirely when set to 'Same as application session timeout' at the org level.  So there is a functional difference between the 'Same as application session timeout' meaning at the org level from usages elsewhere (like access application policies where it clones the value in the API request)

Similar story for application policies - the default is unset and inherits the application value. After updating to v4.17.0, the provider explicitly sets the policy session_duration to 24h, which may not match what is configured for the application. There also seems to be some inconsistency in the API schema - session_duration isn't shown for zone level access policies at all.

Hi, ditto @scluff. Seeing the same issue with cloudflare_access_policy. After upgrading to v4.19 from v4.11, the default session_duration is now set to 24h instead of Same as application session timeout. There also does not seem to be a way for session_duration to be set to the value of Same as application session timeout.


raidboss/oopsy: ex6 improvements

Based on #5425 (thank you!)
Closes #5425.
Changes:

forcejump in timelines
fixes Arctic Assault (east/west seemed reversed)
combines Arctic Assault with Terrastorm / Gale Sphere
combines partner/healer stack with Gale Sphere calls
calls out Gale Sphere incrementally
Azdaja tells so you know what's coming
headmarker triggers (knockback, flare, towers)
followup calls during front/back "phases of the X" mechanic
changed --jump-- to --middle-- and --north-- for clarity
updated front/back timeline entries to reflect damage snapshots
removed (record) entries from timeline as they seemed noisy

Main set of changes have had like ~11 kills worth of testing, and I gave the last few things I changed another round and I think it all looks good.

If anybody has any belated feedback on this please let me know, and I'll be happy to address it.


uefitoolPackages.new-engine: A62 -> A67

Description of changes
This commit upgrades uefiToolPackages.new-engine to the latest version as of writing. Version A67 is now using Qt6 and no longer comes with a custom build script, so the build logic compared to the old-engine variant has become sufficiently divergent that I decided that it would be easier to split them into two entirely different derivations.
Additionally, I:

added myself as a maintainer
added a patch that allows the new-engine variant to build on Darwin
correctly set mainProgram in the old-engine variant

A67 release on GitHub: https://github.com/LongSoft/UEFITool/releases/tag/A67
Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux (via qemu)
[x] x86_64-darwin (via rosetta)
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

is the old-engine variant still useful? if not, maybe we can just drop it.

Theoretically the A in the version number of the new-engine variant stands for alpha, but on the other hand the old engine hasn't seen an update in 3 years. Not sure if people are still using it. It's not really much of a hassle to keep it, so I figured I'd leave it in until the devs condider the new engine to no longer be "alpha".

Rebased on master and updated to A68.

Rebased on master.


pytorch implementation

Hi Thank you for the interesting paper. Do you know if there is any pytorch implementation of this paper? Thanks.

Hi cxw-droid, Not yet. Plan to create one but execution is slow.

My plan is to have one on the end of Q3 2023


Time-series widget won't filter with named maps

If you create a map with public data, time series widget filtering works. But making the data private won't. The POST request won't finish because tiler fails:
[2016-04-01 09:09:31.274] [INFO] [default] - undefined OPTIONS juanignaciosl.localhost.lan:8181/api/v1/map/named/tpl_735e54b2_f7e8_11e5_a5c0_080027880ca6?stat_tag=735e54b2-f7e8-11e5-a5c0-080027880ca6&filters=%7B%22layers%22%3A%5B%7B%22a234da58-cf0f-4fd1-997f-4e80e9d8f446%22%3A%7B%22min%22%3A1422642150%2C%22max%22%3A1422808537.5%7D%7D%5D%7D 200 1 ms -> text/html; charset=utf-8 (undefined)
[2016-04-01 09:09:31.306] [ERROR] [default] - Uncaught exception: TypeError: Cannot read property 'type' of undefined
    at FilterFactory.getFilter (/home/ubuntu/www/node-windshaft/current/node_modules/windshaft/lib/windshaft/models/filters/factory.js:14:32)
    at /home/ubuntu/www/node-windshaft/current/node_modules/windshaft/lib/windshaft/models/mapconfig.js:333:34
    at Array.map (native)
    at MapConfig.getLayerFilters (/home/ubuntu/www/node-windshaft/current/node_modules/windshaft/lib/windshaft/models/mapconfig.js:332:46)
    at MapConfig.getLayer (/home/ubuntu/www/node-windshaft/current/node_modules/windshaft/lib/windshaft/models/mapconfig.js:155:24)
    at MapConfig.<anonymous> (/home/ubuntu/www/node-windshaft/current/node_modules/windshaft/lib/windshaft/models/mapconfig.js:169:21)
    at Array.map (native)
    at MapConfig.getLayers (/home/ubuntu/www/node-windshaft/current/node_modules/windshaft/lib/windshaft/models/mapconfig.js:168:29)
    at /home/ubuntu/www/node-windshaft/current/node_modules/windshaft/lib/windshaft/backends/map_validator.js:58:19
    at Function.finish (/home/ubuntu/www/node-windshaft/current/lib/cartodb/models/mapconfig/create_layergroup_provider.js:37:20)

cc @xavijam

PS: it only happens in the editor just after adding the widgets. After a reload it works.

There has been no activity on this issue for more several months. We are closing it. If you think this still needs to be addressed please open a new issue.


Add Space Weaver -- vector map application.

This really needs more work (as documented in README), but this is already quite useful.
Please check app.js file -- I used library for conversion between xyz and lat/lon, so its license applies. It seems to be compatible with bangle apps license.

Thanks! What are the chances of having something that can be run from within the app loader to load data?
I know we have the beer compass/others that can grab data from openstreetmap - i'm not sure if that's enough to use as a base for this?

Thank you!
I'm not really a web programmer, so something running from app loader would be quite hard for me. I'm considering creating small "demo data" -- most likely world map -- so that app is not empty by default.

Thanks - yes, that sounds like a good idea!


Model fail on updateOrCreate() when Modal haven't $primaryKey

Laravel Version: 5.4.19
PHP Version: 7.0.*
Database Driver & Version: mysql

Description:
Model fails on updateOrCreate() when Modal haven't $primaryKey.
QueryException in Connection.php line 647:
SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (SQL: update `tokens` set `token` = some_token_here, `updated_at` = 2017-05-05 10:32:47 where `` is null)

Steps To Reproduce:
Table schema SQL
CREATE TABLE `tokens` (
  `merchant_id` int(11) unsigned NOT NULL,
  `token` varchar(255) DEFAULT NULL,
  `platform` varchar(255) DEFAULT NULL,
  `expire_in` int(11) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Create a model
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Token extends Model
{
    protected $table = 'tokens';

    protected $primaryKey = null;
    public $incrementing = false;

    protected $fillable = [
        'merchant_id',
        'token',
        'platform',
        'expire_in'
    ];
}

Then use following code for creating first row
        Token::updateOrCreate(
            [
                'merchant_id' => 1,
                'platform' => 'qwerty'
            ],
            [
                'token' => 'some_token_here',
                'expire_in' => 12345678
            ]
        );

When Model and table has primary key everything worked as expected.

Hi ways to fix when model do not have any primary key. Did you found out the solution?

FYI, I ran across this same issue in Lumen 5.8.  Adding a primary key to the table made it go away.


[docs] Adds EnhancedButton to migration guide

This PR adds and item to the migration documentation for EnhancedButton from v0.x.
I am not sure how many items are to be included in this section of the docs, but in a project I am migrating, EnhancedButton was migrated as such. I considered adding the variant prop, but decided not to as I don't see one for enhanced.
Before

After

@mxmcg I'm sorry, it's an internal component, not part of the public API, now, it's should be ButtonBase.


Use the GitHub organisation title when available

Small feature request. The index currently uses the organisation part of the repository URL as the organisation "title". For example "Macro-swift" in here (but also appears in other contexts):

It would be cool if those places would actually use the GitHub organisation name, when available. E.g. "Macro.swift" in this case: https://github.com/Macro-swift:

(the two usually differ if the organisation name uses character which are not allowed in the GH backend, e.g. the . in this case).

Great idea. We'll collect that information as part of #975. Thanks Helge

It's hard to find all the appropriate places. Though, here's what I've got after a search for model.owner field usage and following the discussion:

The author's (organization) page:

https://swiftpackageindex.com/Macro-swift

The package's page

"More packages from this author" -> "More packages from "?

What do you think about truncating long organization names?

The author's page

The package's page

This is great progress. Some things to note:

Looking at the real-world data we've gathered, better test data would include spaces. There are some long owner names, up to 38 characters to be specific, but they all have several spaces in them. I'd imagine wrapping will work better than truncation.
There may be some extreme cases in the future where we get a very long owner name without spaces. I'd suggest we cope with this as and when it happens as I don't think it's likely to be a big problem.
We should fallback to the owner username when the owner name is blank, there are 102 owners with a NULL owner_name

I've attached a CSV file of the longest owner names. I've also DMed you a copy of the latest database so you can test with real-world data.


We need autocomplete for the origin field

https://world.openfoodfacts.org/cgi/suggest.pl?tagtype=origins&term=fr&lc=en

@M123-dev
If I am not wrong #596 has been merged but not yet in release, so I should wait for it be in the next off release

Yes @AshAman999 good catch
Blocked on https://github.com/openfoodfacts/openfoodfacts-dart/pull/599

Just upgrade off-dart to 1.27.0. It's very easy.