ice4j 3.0 does not generate the IPv4 srflx candidate when android device APN is set to IPv4/IPv6

See https://sanctum9.wordpress.com/2019/03/15/switch-to-ipv6-on-android/ on how to change network APN on android device.
The problem is observed with android device Note-10+ when the network APN is set to both 'IPv4/IPv6' (default);
The observation is performed on ice4j  v3.0-55-g32a8aad on aTalk between Note-10 and SM-J730GM android devices. The HostCandidateHarvester#harvest() returns 3 host candidates containing an IPv6 public address.
2022-03-13 07:05:47.138 15183-15469/org.atalk.android I/aTalk: [245] org.ice4j.ice.harvest.HostCandidateHarvester.log() Host candidate added: candidate:1 1 udp<PHONE_NUMBER> 2401:7400:4005:e3d9:1:1:9694:173e 5000 typ host
2022-03-13 07:05:47.158 15183-15469/org.atalk.android I/aTalk: [245] org.ice4j.ice.harvest.HostCandidateHarvester.log() Host candidate added: candidate:2 1 udp<PHONE_NUMBER> <IP_ADDRESS> 5000 typ host
2022-03-13 07:05:47.179 15183-15469/org.atalk.android I/aTalk: [245] org.ice4j.ice.harvest.HostCandidateHarvester.log() Host candidate added: candidate:3 1 udp<PHONE_NUMBER> <IP_ADDRESS> 5000 typ host

when this happen, the jingle:transports:ice-udp stanza contains only the following candidates with srflx candidate missing.
Because of the missing srflx candidate, the call setup failed.
<candidate port='58979' foundation='363454872' component='1' priority='2122262783' type='host' generation='0' protocol='udp' ip='2401:7400:4000:2e4a:1:2:93f1:b634' id='e49ea0a0-87e9-46a1-9c2e-1666b6ce8e32'/>
<candidate port='53151' foundation='2382162603' component='1' priority='2122194687' type='host' generation='0' protocol='udp' ip='<IP_ADDRESS>' id='97f487cc-5eb7-43a2-addf-9c2f4e782553'/>
<candidate rel-port='53151' port='53151' foundation='842163049' component='1' priority='1685987071' type='srflx' generation='0' protocol='udp' ip='<IP_ADDRESS>' rel-addr='<IP_ADDRESS>' id='f5b8f308-5810-49b5-bc14-f4d0d25953fc'/>
<candidate rel-port='53151' port='50438' foundation='1623785525' component='1' priority='41820671' type='relay' generation='0' protocol='udp' ip='<IP_ADDRESS>' rel-addr='<IP_ADDRESS>' id='3527fcc4-c91b-48f2-bce6-5bc283c320ef'/>
<candidate rel-port='53629' port='55128' foundation='776666309' component='1' priority='25042943' type='relay' generation='0' protocol='udp' ip='<IP_ADDRESS>' rel-addr='<IP_ADDRESS>' id='51efb2b2-fe49-4c15-ae80-a00a02d21617'/>

Not sure if there is such thing as IPv6 srflx candidate; or even work on android device that supports only IPv4 address if so.
Running conversations on Note-10+, it sends all the above candidates, and also the srflx candidate with IPv4 public address i.e.
<candidate foundation='3' component='1' protocol='udp' priority='1677724415' generation='0' id='11' ip='<IP_ADDRESS>' port='5002' type='srflx' rel-addr='<IP_ADDRESS>' rel-port='5002' network='0'/>
However when network APN is set to IPv4 only; then host candidates and  jingle:transports:ice-udp contents are captured as below.
It is found that the transport candidate now contains the candidate type srflx, then the call setup is successfully.
2022-03-13 07:05:47.158 15183-15469/org.atalk.android I/aTalk: [245] org.ice4j.ice.harvest.HostCandidateHarvester.log() Host candidate added: candidate:1 1 udp<PHONE_NUMBER> <IP_ADDRESS> 5000 typ host
2022-03-13 07:05:47.179 15183-15469/org.atalk.android I/aTalk: [245] org.ice4j.ice.harvest.HostCandidateHarvester.log() Host candidate added: candidate:2 1 udp<PHONE_NUMBER> <IP_ADDRESS> 5000 typ host

<candidate foundation='1' component='1' protocol='udp' priority='2130706431' generation='0' id='9' ip='<IP_ADDRESS>' port='5002' type='host' network='0'/>
<candidate foundation='2' component='1' protocol='udp' priority='2130706431' generation='0' id='10' ip='<IP_ADDRESS>' port='5002' type='host' network='0'/>
<candidate foundation='3' component='1' protocol='udp' priority='1677724415' generation='0' id='11' ip='<IP_ADDRESS>' port='5002' type='srflx' rel-addr='<IP_ADDRESS>' rel-port='5002' network='0'/>
<candidate foundation='4' component='1' protocol='udp' priority='2815' generation='0' id='12' ip='<IP_ADDRESS>' port='50446' type='relay' network='0'/>

After further investigation, below are my findings that give rise to the problems:
When the android mobile APN is set to IPv4/IPv6, it is found that all the user defined STUN servers FQDN host names are also resolved to IPv6 addresses. Therefore with the below 3 discovered Host candidates, except for the first IPv6 candidate, the user defined STUN servers are not reachable with the other two IPv4 candidates.
2022-03-14 15:13:32.322 6643-7172/org.atalk.android I/aTalk: [239] org.ice4j.ice.harvest.HostCandidateHarvester.log() Host candidate added: candidate:1 1 udp<PHONE_NUMBER> 2401:7400:4004:3b9f:1:2:9ce8:6fc8 5000 typ host
2022-03-14 15:13:32.324 6643-7172/org.atalk.android I/aTalk: [239] org.ice4j.ice.harvest.HostCandidateHarvester.log() Host candidate added: candidate:2 1 udp<PHONE_NUMBER> <IP_ADDRESS> 5000 typ host
2022-03-14 15:13:32.327 6643-7172/org.atalk.android I/aTalk: [239] org.ice4j.ice.harvest.HostCandidateHarvester.log() Host candidate added: candidate:3 1 udp<PHONE_NUMBER> <IP_ADDRESS> 5000 typ host

However the STUN server returns a redundant srflx candidate on STUN request for the first IPv6 public address, hence it is discarded. Currently, the problem can be resolved when the user entered the STUN server with an actual IP address e.g. STUN harvester(srvr: <IP_ADDRESS>:19302/udp).
No sure if there is any way to force android device to return both IPv4 and IPv6 addresses for a user defined FQDN STUN host name; when the device mobile APN = IPv4/IPv6.
Found that android chrome browser is able to show both IPv4 and IPv6 addresses for the device public IP.

Found the solution with implementing the following function in IceUdpTransportManager.
    /**
     * Generate a list of TransportAddress from the given hostname, port and transport.
     * The given host name is resolved into both IPv4 and IPv6 InetAddresses.
     *
     * Note: android InetAddress.getByName(hostname) returns the first IP found, any may be an IPv6 InetAddress;
     * if mobile network setting for APN=IPV4/IPv6 or APN=IPv6. This causes problem in STUN candidate harvest:
     * @see https://github.com/jitsi/ice4j/issues/255
     *
     * @param hostname the address itself
     * @param port the port number
     * @param transport the transport to use with this address.
     */
    protected List<TransportAddress> getTransportAddress(String hostname, int port, Transport transport)
    {
        List<TransportAddress> transportAddress = new ArrayList<>();
        try {
            // return all associated InetAddress in both IPv4 and IPv6 address
            InetAddress[] inetAddresses = InetAddress.getAllByName(hostname);
            for (InetAddress inetAddress : inetAddresses) {
                transportAddress.add(new TransportAddress(inetAddress, port, transport));
            }
        } catch (UnknownHostException e) {
            Timber.e("UnknownHostException: %s", e.getMessage());
        }
        return transportAddress;
    }

Found the solution with implementing the following function in IceUdpTransportManager.
    /**
     * Generate a list of TransportAddress from the given hostname, port and transport.
     * The given host name is resolved into both IPv4 and IPv6 InetAddresses.
     *
     * Note: android InetAddress.getByName(hostname) returns the first IP found, any may be an IPv6 InetAddress;
     * if mobile network setting for APN=IPV4/IPv6 or APN=IPv6. This causes problem in STUN candidate harvest:
     * @see https://github.com/jitsi/ice4j/issues/255
     *
     * @param hostname the address itself
     * @param port the port number
     * @param transport the transport to use with this address.
     */
    protected List<TransportAddress> getTransportAddress(String hostname, int port, Transport transport)
    {
        List<TransportAddress> transportAddress = new ArrayList<>();
        try {
            // return all associated InetAddress in both IPv4 and IPv6 address
            InetAddress[] inetAddresses = InetAddress.getAllByName(hostname);
            for (InetAddress inetAddress : inetAddresses) {
                transportAddress.add(new TransportAddress(inetAddress, port, transport));
            }
        } catch (UnknownHostException e) {
            Timber.e("UnknownHostException: %s", e.getMessage());
        }
        return transportAddress;
    }

I've encountered the same problem in my self hosted jitsi. But in current JVB version, getTransportAddress can not be found any more. Did you upgrade your jvb and found the new solution?
Looing forward to your reply eagerly and thx a lot in advance!


Update assign-ediscovery-permissions.md

Missing a "to"

Learn Build status updates of commit 6c68565:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-365/compliance/assign-ediscovery-permissions.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel


docs: Clearer problem statement in README

I spent longer than I care to admit staring at that sentence trying to understand it.
I can add back "often", the main fix is just removing the unneeded "is"
edit:
Just added this to my project and it's great! Thanks for publishing it 🙂

@all-contributors please add @seanyesmunt for docs


Restore support for env-based API server discovery

Current and expected behavior
In Linkerd, we have a report that https://github.com/kube-rs/kube-rs/commit/dd0b2585729dab5c140ab96dc35c00484cc992bc breaks discovery for some configurations of Azure clusters. I'm not 100% clear on the details, but it sounds like they can't rely on the default kubernetes service.
Given that client-go still honors these environment variables, this manifests as only the Rust controllers being unable to communicate with the API server.
Possible solution
In the interest of compatibility (i.e., with client-go's behavior), I think it would be best to restore support for the environment variables.
If we really don't want to continue to support the environment variables, we should probably engage client-go about removing support for the environment variables so that there's really no expectation that they can be used.
Additional context
No response
Environment
...
Configuration and features
...
Affected crates
kube-client
Would you like to work on fixing this bug?
maybe

From recent AKS release notes https://github.com/Azure/AKS/releases/tag/2022-07-17:

The annotation kubernetes.azure.com/set-kube-service-host-fqdn can now be added to pods to set the KUBERNETES_SERVICE_HOST variable to the domain name of the API server instead of the in-cluster service IP. This is useful in cases where the cluster egress is via a layer 7 firewall, like Azure Firewall with Application Rules.

AKS clusters with egress firewalls basically require the use of the environment variables for discovery :(

Seems like the important section is https://docs.microsoft.com/en-us/azure/aks/limit-egress-traffic#required-outbound-network-rules-and-fqdns-for-aks-clusters. This seems like a pretty weird way to handle things on their end, but I can see other use cases for letting users override the address. And as you say, it's probably worth at least trying to stay aligned with client-go to minimize confusion.
I'd be +1 on reverting #876, but waiting for @clux's input since he seemed to have pretty strong opinions on the topic.

Well, the problem is that the old method also has problems, so not sure there's many great solutions here for us.

AWS had problems with it using IPV6 https://github.com/kube-rs/kube-rs/issues/874
rustls does not work in-cluster without explicit dns names https://github.com/kube-rs/kube-rs/issues/153

And as long as client-go has this TODO, it's not super tempting to switch our default way back to what is also broken.
What about some way to opt-into to old behaviour like some KUBE_LEGACY_CLUSTER_IP evar for AKS?

The AWS thing looks like an error on our side, Rust's IpAddr also seems to accept "bare" IPv6 addresses. I think a reasonable heurestic would be to apply [{host}]:{port} if host.contains(':'), otherwise stick to {host}:{port}.
The rustls situation is sadder, but outside of our control (and an opt-in feature).

@clux Thanks. This is helpful context.

What about some way to opt-into to old behaviour like some KUBE_LEGACY_CLUSTER_IP evar for AKS?

Something like this is probably a good middle-ground. In Linkerd, we could support an install flag that enables this.
Alternatively, we could do something more clever (but maybe too clever): only honor KUBERNETES_SERVICE_HOST when it is not an IP. E.g.
fn kube_dns() -> String {
    if let Ok(h) = std::env::var("KUBERNETES_SERVICE_HOST") {
        if !h.is_empty() && h.parse::<std::net::IpAddr>().is_err() {
            return h
        }
    }
    "kubernetes.default.svc".to_string()
}

Alternatively, we could do something more clever (but maybe too clever): only honor KUBERNETES_SERVICE_HOST when it is not an IP. E.g.

This feels waaaay too weird and magical IMO.
Maybe if we emit a loud warning but that would give 99% of users a warning for a non-issue that they have no control over.

I also opened https://github.com/kubernetes/kubernetes/issues/112263 to discuss changing client-go's behavior.

too magical

Yeah, same. Given this is legacy behaviour, only affects a smaller number of users, and can be reasonably opted in by Linkerd, it is preferable for us to have it be an explicit opt-in in our codebase about what this is meant to do - and that it is not intended to stick around (unless client-go does a 180 at some point).
Logging a message for using non-standard Kubernetes behaviour when activating this code path is probably a good idea as well, but it can be less loud when it's opt-in.
(The IPv6 issue could also be fixed, but when we tried that fix it, we ran into cert validation issues, so making it opt-in avoids us spending time on that.)

#1001 adds a separate config constructor; but https://github.com/kubernetes/kubernetes/issues/112263#issuecomment-1240013405 suggests that client-go's behavior may be "correct." If that's the case, #1001 at least fixes host/port formatting for IPv6; and we should probably try to fix the webpki problem in Rustls...
https://github.com/rustls/webpki/ is a recent fork of briansmith/webpki that will be maintained by the rustls folks. We may have a path forward to fix IP validation in that repo. But, from our experience in Linkerd, there are more than enough quirks in rustls that make it a poor choice for supporting a wide variety of cluster configurations.

Looking at some of the officially supported kubernetes client libraries, all appear to use the environment variables and none use the in-cluster DNS

https://github.com/kubernetes-client/javascript/blob/98414841064cbc322b617538a34bf0f5e31a5122/src/config.ts#L194-L219
https://github.com/kubernetes-client/python/blob/16935036252be0fdf164f8ce624bd71eb8d35e89/kubernetes/base/config/incluster_config.py#L68-L70
https://github.com/kubernetes-client/c/blob/2bb4393cc827e4c105fe57ded59e787bc3a4fbf0/kubernetes/config/incluster_config.c#L44-L67
https://github.com/kubernetes-client/csharp/blob/f0d15cb39ef377370b219f0aa5f860764f0cc12a/src/KubernetesClient/KubernetesClientConfiguration.InCluster.cs#L51-L52
https://github.com/kubernetes-client/haskell/blob/e848bc0c5c8d4fe4d2c9e8555331c219814c8ec9/kubernetes-client/src/Kubernetes/Client/Config.hs#L97-L99
https://github.com/kubernetes-client/java/blob/73ae39a97dfdec9936944c23015edc1ab6742589/util/src/main/java/io/kubernetes/client/util/ClientBuilder.java#L242-L253
https://github.com/kubernetes-client/ruby/blob/33861097e2eab9954b3f07f6898e5e8199199731/kubernetes/src/kubernetes/config/incluster_config.rb#L22-L46

I think this means that we really can't rely on the in-cluster DNS name.


Request: Bookmarks fix

Is it possible to add a way so that the bookmark won't appear on the side and instead opens as a separate instance?

I'm sorry but I cannot fix now.
It is maybe difficult and I cannot come up with an idea of how to fix it…


update PaperColor.vim

since PaperColor.vim removed its own theme (See) and the theme in vim-airline-theme does not work (cannot be automatically applied), i replaced it by the removed one.
an official screenshot:

Great! I had the same problem

missing newline at end of file

For the origin author mentioned he will have a separate repository for Airline themes for PaperColor in the future, so this PR is closed now.


Link for cilium in provider.md broken

What happened:
Link for cilium in provider.md broken
What you expected to happen:
link should be working
How to reproduce it (as minimally and precisely as possible):
click on link
Anything else we need to know?:
NA

/kind documentation

/assign

page to update :
https://github.com/kubernetes-sigs/ingress2gateway/blob/main/README.md

Thanks @kundan2707 !


Translate text that tells you to reload browser to pick up new language preference

See https://chat.zulip.org/#narrow/stream/137-feedback/topic/.28minor.29.20translations for details and technical direction.

@zulipbot claim

@zulipbot claim

@zulipbot I am still working on the issue. Thanks for the reminder!

@zulipbot claim


[Web] Update regex pattern for creating new tags

tasks

update editor in draft page
update editor in /tags
update editor in tag detail page

refs

doc

design

figma

to apply same changes in thematters/matters-server#2658


Breaking API change in py_trees causes experiment to fail

In January 2023 a breaking change in py_trees API was introduced that changed the base class of behaviours, decorators and composites. The functionality of tree_units.py silently fails and the output of run_experiments is just "Start Sim" and "Finished all experiments" with the sim_data folder being empty. Adding "memory" and "policy" arguments to composites and parallel nodes respectively should fix this issue.

Feel free to fix, this is not intended. I do not currently have bandwidth to support this repo but am happy to answer questions.

Congratulations on finishing your PhD. I would be happy to look into a fix. Do you happen to know in the original design, are the composite nodes supposed to retain memory and what your intended policies of parallel nodes were?

Thanks!
As a preface, most of this tool is predicated as a proof of concept for our ICRA paper. You may or may not get more out of the concepts in the paper than the code (I personally get more out of code so that is why the repo is public).
From what I recall:

we formulated the BT as using a generic blackboard approach, more out of convenience than anything. So, if I'm understanding correctly, no extra memory retention inside composites outside of what is needed for "normal" function e.g., sequence nodes remembering what node would be next.
parallel nodes can have really any policy you would like. There are only 2 possible places for parallel nodes in our approach:

the top of the tree: this facilitates all the subtree behavior so depends on what your tree structure design/actions require
actions that happen under the same condition (referred to as parallel/selector composites within the paper). Again, this would depend on the design of your actions (i.e., given the set of conditions are true, would the behaviors normally act in || or not)

Hopefully this is helpful!

Just the changes to include memory and policy doesn't seem to be sufficient. I'm still generating empty folders while "Start Sim" and "Finished all experiments" being printed.  @b0guslaw Can you please detail the changes you made to generate data and BTs?

@b0guslaw Thank you so much for that heads up. After I made all the changes throughout the code, I see that the data and behavior trees are generated. However, NOT all trees are generated. Can you please detail all the changes you made to make this work?

I have abandoned this effort and opted for a different approach.


Fix erroneous unwrap in async export function

The original code actually fails on this line if the guest function doesn't return an result, which is already fishy.
Removing the unwrap solves the problem.

Clippy is failing because apparently it can't be run on forks. Checking out the repo locally works fine, so I'm going to go ahead and merge this.


Configuring swarm to communicate between nodes using eth1

Hey there. I'm using docker-machine to build swarm cluster over digitalocean droplets. I want to configure it to use digitalocean private interfaces (eth1) instead of public(eth0).
 My thought was that this should be enough to satisfy my needs, but unfortunately it doesn't work as expected...
Let's check eth1 interface on master node:
bash-3.2$ docker-machine ssh test-swarm-master ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 04:01:8e:ce:2a:02
          inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
          inet6 addr: fe80::601:8eff:fece:2a02/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1630 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1597 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:369220 (369.2 KB)  TX bytes:245840 (245.8 KB)

Let's try docker info:
bash-3.2$ docker info
Containers: 4
Images: 3
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
 test-swarm-1: <IP_ADDRESS>:2376
  └ Status: Healthy
  └ Containers: 2
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 514.5 MiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.13.0-71-generic, operatingsystem=Ubuntu 14.04.3 LTS, provider=digitalocean, storagedriver=aufs
 test-swarm-master: <IP_ADDRESS>:2376
  └ Status: Healthy
  └ Containers: 2
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 514.5 MiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.13.0-71-generic, operatingsystem=Ubuntu 14.04.3 LTS, provider=digitalocean, storagedriver=aufs, type=proxy
CPUs: 2
Total Memory: 1.005 GiB
Name: 0f99e736baf7

As you probably see, nodes are advertised using external IP (example: <IP_ADDRESS>:2376). I want it to be <IP_ADDRESS>:2376. Looks like --engine-opt="cluster-advertise=eth1:2376" option doesn't work. Hope I'm not missing anything.
Additional info:
bash-3.2$ docker-machine ssh test-swarm-master ps aux | grep swarm
root      3985  0.1  2.5  26028 12736 ?        Ssl  13:43   0:01 /swarm manage --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server.pem --tlskey=/etc/docker/server-key.pem -H tcp://<IP_ADDRESS>:3376 --strategy spread consul://<IP_ADDRESS>:8500
root      4069  0.0  1.0  19688  5500 ?        Ssl  13:43   0:00 /swarm join --advertise <IP_ADDRESS>:2376 consul://<IP_ADDRESS>:8500

Hm, I don't know if it's solvable immediately, given that this line:
https://github.com/docker/machine/blob/master/libmachine/provision/configure_swarm.go#L42-L48
Always uses the public IP address.  This is necessary if, for instance, you're connecting across clouds.
I can certainly see the use case and we'll keep it in mind in the future.  I've thought about adding some way to get and use private IPs at the driver level, but doing so would be a pretty large undertaking.

Thanks, @nathanleclaire! Do you have any workarounds in your mind? I tried to remove swarm-agent and put it back with --advertise ${internalIP} but node doesn't return to cluster unfortunately :(

@wildsurfer Try that same move (re-run Swarm container with different IP) using a discovery service other than the Hub token (e.g. Consul).  I know that Hub tokens have had a lot of issues with Swarm nodes leaving and re-joining for me in the past.

@nathanleclaire in example above I already use consul... so in theory node should get back, right?

This issue is related to #2687

@nathanleclaire I understand that it is required for nodes connecting across clouds, but that doesn't really justify taking the option away from users?
I want to elaborate a bit on what issues I encountered in this context:

cluster of 3 consul nodes for redundant service discovery
cluster of 3 manager nodes for redundant swarm management
cluster of N agent nodes for actually hosting containers

Ideally, I would want the networking to work this way:

consul nodes use the private network on digital ocean (works)
manager nodes use the private network for advertising but are still reachable over public network by binding to <IP_ADDRESS>
agent nodes use the private network for advertising

Unfortunately, there is no option to use the private networking for swarm communication (which, by the way, makes the --digitalocean-private-networking kind of pointless).
In order to address this, I created non-swarm host and manually configured them, then adjusted the config.json with machine so I could use them as swarm hosts. I then reconfigured each node by relaunching swarm. Unfortunately, they stopped connecting to each other because the TLS certificates are generated only for the public IP addresses, and thus are invalid on the private network.
I could now go and manually generate new certificates for all hosts, but that kind of defeats the purpose. If I go that far, I can just set up the docker swarm manually from scratch without using machine, it will be pretty much the same amount of work. Unfortunately, this is not very scalable or easy to maintain.

Unfortunately, they stopped connecting to each other because the TLS certificates are generated only for the public IP addresses

Is it possible to create 1 certificate for 2 ip addresses? Seems to me that this may be a first step in solving this issue.

@wildsurfer It is indeed possible to create a CA certificate for more than one name, including IP addresses. I'm not sure that's the best approach, though.
It seems to me like the digital ocean driver would need a bit of refactoring to implement this cleanly. Can we agree on a common approach before I potentially start working on anything? I think the cleanest way to do this would be:

one flag to enable private networking on the created node
one flag to advertise private address on masters
one flag to advertise private address on nodes
one flag to bind master to public/private/all interfaces

I don't like to have command line options too long, does someone have good suggestions for the naming?

one flag to enable private networking on the created node
Don't we have one already(DIGITALOCEAN_PRIVATE_NETWORKING)?

one flag to advertise private address on masters
one flag to advertise private address on nodes
What if we will use one flag for both situations?
PRIVATE_ADVERTISE=true (or --private-advertise)

one flag to bind master to public/private/all interfaces
BIND_TO=all

Is there an update on this issue?


Flow: fix react-beautiful-dnd

flow-typed/npm/react-beautiful-dnd
Add stub module so we don't have to add Flow suppressors when importing.
flowconfig

Don't ignore the package so that types can be automatically inferred.
Ignore 'raf-schd' instead (packaged used by dnd), since it's one level down. Shouldn't have happened, but not sure what's going on.

sortableList, homepageSort
Addressed the Flow warning on 'style' potentially not the same type as what the code expects.
Also fixed mistake with useRef, where the object is being used instead current.
claimList
Similarly handled 'style' like previous case. But for the bottom part of the code, I don't want to re-test all clients, so just suppressed the warning and added an assert to keep this a "flow only" change.

See second commit, lol.
Can probably set to undefined and remove the ref to make it look "correct", but leaving things in old form.


Packer works with NVM, but not with Volta. Issues with various webpack loaders when installed through Volta

Describe the bug
These days it is common to install node via a version manager such as https://github.com/nvm-sh/nvm or https://volta.sh/. NVM works but is quite slow compared to Volta.
Right now packer works perfectly via NVM. But it does NOT work via volta. Packer installs globally correctly and you can issue packer commands inside your project, but packer fails to build files due to "missing loaders". Webpack fires up warnings about loaders being missing for SCSS files. If you manually add the loaders, the issue still persists.
This same issue does not happen with NVM. In fact if you have both installed you can easily swap between nvm and volta by having your .bashrc or .zshrc file reference/load one or the other. If you load nvm and run packer build in the directory, everything works swimmingly. If you swap to volta and run packer build, you all of a sudden get the webpack loader errors. This still happens if you remove the node_modules directory and reinstall all packages from scratch.
To Reproduce
Steps to reproduce the behavior:

Install volta from https://docs.volta.sh/guide/getting-started
Install node through volta install node
Install yarn globally through volta install yarn
Install packer globally either via yarn global add @hayes0724/shopify-packer or volta install @hayes0724/shopify-packer
Run yarn install within your project's directory
Run packer build within your project's directory

Expected behavior
I expect packer to build and bundle everything correctly as it does through a standard node install. What currently happens is a myriad of errors stating that loaders are missing. If I manually add the loaders, and add the rules for the necessary file type (.scss files in this case) to the webpack config in the dev.config file or prod.config file, the issues still persists.
Screenshots

System (please complete the following information):

OS: macOS 11.6
Node Version: 14.7.6

Packer (please complete the following information):

Version 2.2.0

This works again in newer packer versions, but specifically if Packer is installed directly into the project instead of globally. To run the various packer commands you need to use your package manager instead of the global packer command. Ex: yarn start runs the local project's packer instead of the global installation.


peft_module_casting_to_bf16 util method and append_concat_token flag

What does this PR do?

Inline with QLoRA code when using bf16 here, added peft_module_casting_to_bf16.
Added append_concat_token flag so that datasets which already have eos_token at the end of each sample can skip appending the eos/concat token

cc @lewtun and @younesbelkada

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


Add arrow color variables to menu components

Adds arrow color variables to dropdown menu, drilldown and accordion menu. I recently tried to change the arrow colors in a recent project but found I wasn't able to, hence this!

I like this idea @gakimball what do you think?

I figured this would be requested eventually, thanks for putting it together!
Can you resolve the merge conflicts?

@gakimball Any pointers on how to do that? Sorry I'm pretty new to using Git and haven't worked out how to do that yet...

In the folder of your Foundation fork, run this:
# Adds a remote reference to the official repo
git remote add foundation https://github.com/zurb/foundation-sites.git

# Downloads references to branches
git fetch foundation

# Merge the "develop" branch of Foundation into your work
git merge foundation/develop

I think that works.

thanks @gakimball I hope I've done that correctly! This and 7514 will be a big help in my current project :smiley:

@brettdewoody Yep! Now I can merge it automatically, thanks :)


Issue al compile compose web

I download the template (https://github.com/JetBrains/compose-jb/tree/master/templates/web-template) and follow all the steps, and always I have the same problem, after run ./gradlew jsBrowserRun the terminal show me this error

I added this to my afterEvaluate block
    rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin::class.java) {         rootProject.the<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension>().versions.webpackCli.version = "4.9.0"     }
see: https://github.com/webpack/webpack-cli/issues/2990

the workaround is not needed anymore when using compose-for-web 1.0.1-rc2 with kotlin 1.6.10

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


iOS crash because of SIGSEGV(SEGV_ACCERR) GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer

Steps to reproduce
Many users have these crash, The stack information is as follows because it's an online crash, I don't know how to reproduce it
Expected results
no crash
Actual results
crash
Code sample
It is not a mandatory crash, so there is no sample code.
Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs

Flutter 0x0000000113693804 std::_fl::__function::__func<fml::internal::CopyableLambda<flutter::GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer(SkISize const&)::$_0>, std::_fl::allocator<fml::internal::CopyableLambda<flutter::GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer(SkISize const&)::$_0> >, boolean (flutter::SurfaceFrame&, flutter::DlCanvas*)>::operator()(flutter::SurfaceFrame&, flutter::DlCanvas*&&) (../../third_party/libcxx/include/__memory/shared_ptr.h:815)

Flutter 0x000000011369378c std::_fl::__function::__func<fml::internal::CopyableLambda<flutter::GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer(SkISize const&)::$_0>, std::_fl::allocator<fml::internal::CopyableLambda<flutter::GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer(SkISize const&)::$_0> >, boolean (flutter::SurfaceFrame&, flutter::DlCanvas*)>::operator()(flutter::SurfaceFrame&, flutter::DlCanvas*&&) (../../third_party/libcxx/include/__memory/shared_ptr.h:701)

Flutter 0x000000011357fffc flutter::SurfaceFrame::Submit() (../../flutter/flow/surface_frame.cc:51)

Flutter 0x00000001134bbdd8 flutter::Rasterizer::DrawToSurfacesUnsafe(flutter::FrameTimingsRecorder&, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>>>) (../../flutter/shell/common/rasterizer.cc:752)

Flutter 0x00000001134bc2c4 std::_fl::__function::__func<flutter::Rasterizer::DrawToSurfaces(flutter::FrameTimingsRecorder&, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask> >, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask> > > >)::$_1, std::_fl::allocator<flutter::Rasterizer::DrawToSurfaces(flutter::FrameTimingsRecorder&, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask> >, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask> > > >)::$_1>, void ()>::operator()() (../../flutter/shell/common/rasterizer.cc:552)

Flutter 0x00000001133b32c4 fml::SyncSwitch::Execute(fml::SyncSwitch::Handlers const&) const (../../flutter/fml/synchronization/shared_mutex.h:29)

Flutter 0x00000001134bb510 flutter::Rasterizer::DrawToSurfaces(flutter::FrameTimingsRecorder&, std::_fl::vector<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>, std::_fl::allocator<std::_fl::unique_ptr<flutter::LayerTreeTask, std::_fl::default_delete<flutter::LayerTreeTask>>>>) (../../third_party/libcxx/include/__functional/function.h:470)

Flutter 0x00000001134bd114 std::_fl::__function::__func<flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> > const&)::$_0, std::_fl::allocator<flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> > const&)::$_0>, void (std::_fl::unique_ptr<flutter::FrameItem, std::_fl::default_delete<flutter::FrameItem> >)>::operator()(std::_fl::unique_ptr<flutter::FrameItem, std::_fl::default_delete<flutter::FrameItem> >&&) (../../third_party/libcxx/include/vector:423)

Flutter 0x00000001134bc960 flutter::Rasterizer::Draw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem>> const&) (../../third_party/libcxx/include/__memory/unique_ptr.h:259)

Flutter 0x00000001134d4e14 std::_fl::__function::__func<fml::internal::CopyableLambda<flutter::Shell::OnAnimatorDraw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> >)::$_0>, std::_fl::allocator<fml::internal::CopyableLambda<flutter::Shell::OnAnimatorDraw(std::_fl::shared_ptr<flutter::Pipeline<flutter::FrameItem> >)::$_0> >, void ()>::operator()() (../../flutter/shell/common/shell.cc:1260)

Flutter 0x00000001133b1930 fml::MessageLoopImpl::FlushTasks(fml::FlushType) (../../flutter/fml/message_loop_impl.cc:128)

Flutter 0x00000001133b50e4 fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*) (../../flutter/fml/platform/darwin/message_loop_darwin.mm:86)

Flutter Doctor output
[!] Flutter (Channel [user-branch], 3.19.6, on macOS 14.3 23D56 darwin-x64, locale zh-Hans-CN)
! Flutter version 3.19.6 on channel [user-branch]
Currently on an unknown channel. Run flutter channel to switch to an official channel.
If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.
! Upstream repository unknown source is not a standard remote.
Set environment variable "FLUTTER_GIT_URL" to unknown source to dismiss this error.
• Framework revision https://github.com/flutter/flutter/commit/54e66469a933b60ddf175f858f82eaeb97e48c8d (2 个月前), 2024-04-17 13:08:03 -0700
• Engine revision c4cd48e186
• Dart version 3.3.4
• DevTools version 2.31.1
• If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades

The crash trace is similar to https://github.com/flutter/flutter/issues/149885 and it's confirmed as fixed on Flutter 3.22.2 and enabling impeller. Closing as a duplicate.

GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer

Can you see the crash log "GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer"  which is different  from "GPUSurfaceMetalSkia::AcquireFrameFromCAMetalLayer"  carefully?
Obviously, The impeller occurs crash and I am very sure, I enable impeller

The crash trace is similar to #149885 and it's confirmed as fixed on Flutter 3.22.2 and enabling impeller. Closing as a duplicate.

Can you find the crash log "GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer" which is different from "GPUSurfaceMetalSkia::AcquireFrameFromCAMetalLayer" ?
Obviously, The impeller occurs crash and I am very sure, I enable impeller

Please see the updated trace from the author of that issue here https://github.com/flutter/flutter/issues/149885#issuecomment-2154669673 which also contains GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLayer. And please try upgrading Flutter SDK to 3.22.2+.


Run augurs algorithms in a web worker

I've done this as a plugin before but haven't tried doing it in this library, it feels like it might be a bit presumptuous. Worth investigating though.

I'm not sure it's possible to do in a library due to bundler interactions (i.e. Webpack).


implement ABitOfEverythingService

Thank you for your contribution.  Could you fix the minor issues before merge?

done

fixed race conditions

LGTM

need this? https://github.com/mattn/grpc-gateway/blob/62000f7e3bf9a8791ee05710e87b4d518d76f155/examples/server/main.go#L110

thank you @mattn LGTM


Uncaught RangeError after setContent in onFocus function

Describe the bug
I try to implement a placeholder-like feature in my tiptap component.
I get a placeholder and a content parameter from the parent component, and if the content parameter is empty, I put the placeholder parameter as the default text inside the tiptap-editor.
On the onFocus method, i want to make the placeholder disappear on the first focus. But when i try to use the setContent method, i get a Uncaught RangeError error in the console (see screenshot)
Here is my code component:

export default {
  name: 'quick-editor',
  components: {
    EditorContent,
    EditorMenuBar
  },
  props: ['parentContent', 'blur', 'placeholder'],
  data() {
    return {
      editorContent: this.parentContent,
      isFocus: false,
      editor: new Editor({
        extensions: [
          new Blockquote(),
          new BulletList(),
          new CodeBlock(),
          new HardBreak(),
          new Heading({ levels: [1, 2, 3] }),
          new HorizontalRule(),
          new ListItem(),
          new OrderedList(),
          new TodoItem(),
          new TodoList(),
          new Link(),
          new Bold(),
          new Italic(),
          new Strike(),
          new Underline(),
          new History()
        ],
        content: this.parentContent || '<i>' + this.placeholder + '</i>',
        onFocus: () => {
          if (!this.parentContent && !this.hasBeenUpdated) {
            this.editor.setContent(''); // here i get the uncaught rangeError
          }
          this.isFocus = true;
        },
        onBlur: () => {
          this.isFocus = false;
          this.blur(this.editorContent);
        },
        onUpdate: (e) => {
          if (!this.hasBeenUpdated) this.hasBeenUpdated = true;
          this.editorContent = e.getJSON().content[0].content ? e.getHTML() : '';
        }
      })
    };
  },
  beforeDestroy() {
    this.editor.destroy();
  }
};

Environment

OS: macOs Mojave 10.14.4
Browser: Chrome
Version: Version 74.0.3729.131 (Official Build) (64-bit)
Desktop

you can use this.editor.clearContent() instead of this.editor.setContent('')

Hi Phillipp, thanks for the reply!
I already tried, and I still get the error.

Hi @philippkuehn ,
any news on this one ?

I can reproduce this bug but I'm not sure whats wrong here. In my tests it has something to do with prosemirror-gapcursor which I'm using as a core plugin.

Alright, thank you for time.
What about introducing a placeholder feature in tiptap? Do you think it's possible? If yes, I can try to do  a PR for that.

There is already a placeholder extension. But I think it doesn't  work for nested nodes at the moment.

Can you please test it again with the latest version?

Hi @philippkuehn .
I just tested with the v1.19.6, and the bug is fixed! Many thanks :)
(i just had to change the style of the div with contenteditable at true to remove the outline, but that is not a bug ;))
Again, thanks!


Update editor.md

Fixed some incorrect statements and made some edits for clarity.
Description of the change:
Reason for the change:
Link to original source:

Closes #

Hello @sendgrid-ryan,Thanks again for the PR! It's HACKTOBERFEST! We want to show our appreciation by sending                                              you some special Hacktoberfest swag. If you have not already, could you please fill out                                              this form so we can send it to you? Thanks!                                             Team SendGrid DX


[BUG] Rancher agent's CATTLE_REQUEST_CACHE_DISABLED env var is false by default

Rancher Server Setup

Rancher version:
Installation option (Docker install/Helm Chart):

If Helm Chart, Kubernetes Cluster and version (RKE1, RKE2, k3s, EKS, etc):

Proxy/Cert Details:

Information about the Cluster

Kubernetes version:
Cluster Type (Local/Downstream):

If downstream, what type of cluster? (Custom/Imported or specify provider for Hosted/Infrastructure Provider):

User Information

What is the role of the user logged in? (Admin/Cluster Owner/Cluster Member/Project Owner/Project Member/Custom)

If custom, define the set of permissions:

Describe the bug

Cache is enabled in agent but is not being used by UI yet. This is causing memory to spike. In the long term we need to address the memory issues but for now it should be disabled by default in the agent.
To Reproduce

create a downstream cluster
install monitoring
create 1000 configmaps with any data of at least size 1kb in downstream cluster. You can make either number larger to make it easier to notice the difference.
list configmaps

Result
should see more memory used than usual.
Expected Result

Now that it is disabled you should see at least 1mb less data than usual.
Screenshots

Additional context

Can I link to this issue? It seems the same issue to me. https://github.com/rancher/rancher/issues/41225

@orangedeng we are separating it out because we need a more long term fix. This issue and https://github.com/rancher/rancher/issues/41378 are related to https://github.com/rancher/rancher/issues/41225. This should just improve the situation for now.

release note:
A feature that resulted in a significant memory increase in both rancher and downstream clusters has been disabled.

If anyone needs to loop through their Rancher environment.
rancher server switch
for x in `rancher cluster ls --format '{{.Cluster.Name}}'`;
do
  kubectl set env deploy/cattle-cluster-agent -n cattle-system CATTLE_REQUEST_CACHE_DISABLED=true --context $x
done

The issue title is a little bit confusing. I read through the PR and it means that the list cache in steve will be disable by default and only setting CATTLE_REQUEST_CACHE_DISABLED=false will enable the list cache.

The wording in general is confusing. It is not being changed because this is only temporary and will be once again enabled by default. That logic will be changed at that time. This way we do not need to introduce another env var. See https://github.com/rancher/steve/pull/106#discussion_r1190471067.

QA TEST PLAN
Scenario1: Fresh install v2.7-head (Test Result: To be updated)

Install Rancher and a downstream cluster.
Install monitoring chart on local and downstream cluster.
In the downstream cluster, Create a project with 5 namespaces. Create 2000 config maps in each namespace with data of 2KB in size.
In the Rancher UI, navigate to the config maps page of the downstream cluster the first time, and wait until all the config maps are listed. After a few minutes, capture the memory usage of the rancher pods in the local cluster and the cattle-cluster-agent pods in the downstream cluster.
Refresh the ConfigMaps Page multiple times at different intervals. Capture the memory usage data of the Rancher pods in the local cluster and the cattle-cluster-agent pods in the downstream cluster. Verify that the memory usage IS NOT significantly more than usual.

Scenario2: Upgrade from v2.7.3 to v2.7-head (Test Result: To be updated)

Install Rancher v2.7.3 and a downstream cluster.
Install monitoring chart on local and downstream cluster.
In the downstream cluster, Create a project with 5 namespaces. Create 2000 config maps in each namespace with data of 2KB in size.
In the Rancher UI, navigate to the config maps page of the downstream cluster the first time, and wait until all the config maps are listed. After a few minutes, capture the memory usage of the rancher pods in the local cluster and the cattle-cluster-agent pods in the downstream cluster.
Refresh the ConfigMaps Page multiple times at different intervals. Capture the memory usage data of the Rancher pods in the local cluster and the cattle-cluster-agent pods in the downstream cluster. Verify that the memory usage IS significantly more than usual.
Upgrade the cluster to v2.7-head.
Refresh the ConfigMaps Page multiple times at different intervals. Capture the memory usage data of the Rancher pods in the local cluster and the cattle-cluster-agent pods in the downstream cluster. Verify that the memory usage IS NOT significantly more than usual.


DownloadFile should support directory paths passed in localPath

ahah, I got the reason, your argument 'localPath' with DownloadFile() missing the last fileName block.
It must be a FullPath with filename, could not be a directory path.

This is what got me. I was first testing with DownloadFilesAsync, then realized I needed more logging so I was going to iterate over the list myself, and changed it to DownloadFileAsync, not realizing the hints changed from localDir to localPath. Though even that subtle word change could still be interpreted as the same thing.
Maybe we need it to be something like localFullPathWithFilename for the slightly less observant :)
@robinrodricks I think the real issue though is that the error coming back was "Access Denied" not something that pointed to the real issue. I spent a day checking my access and testing. :(

Done.
https://www.nuget.org/packages/FluentFTP/33.1.7


AccordionItem closes after button click

I have something like this.
  handleDeleteUser = (e) => {
    if (this.state.confirm) {
      this.setState({
        confirm: false
      })
    } else {
      this.setState({
        confirm: true
      })
    }
  }

...

<button type='button' id={id} onClick={this.handleDeleteUser}>
  {this.state.confirm ? 'Really?' : 'Delete'}
</button>

Setting state within the handler closes all open accordions. Any ideas why?

Is the button within an AccordionTitle or inside of an item? do you have a more complete example?

Yup, that's the one, sorry about that.

This kind of seems different to me in that this is closing accordions and in #116 it seems like the accordion functionality breaks, but maybe I'm misreading that?


A11y_AzureDataStudioSQLMigration_MigratetoAzureSQL_MigrationAssessment_DeveloperTool:There is a name declarative table defined for the table.

“Check out Accessibility Insights! - Identify accessibility bugs before check-in and make bug fixing faster and easier.”
GitHubTags: #A11yMAS;#A11yTCS;#A11ySev2;#SH_AZUREDATASTUDIOSQLMigration_June2021;#SQL Azure Data Studio;#Win10;#FTP;#DesktopApp;#WCAG4.1.2;#AINotInScope;#DevTool
Environment Details:
Application Name: SQL Azure Data Studio
Windows Version: Win10
Repro Steps:

Launch the application-Azure Data Studio-Insiders and install extension Azure SQL Migration.
Connect to any sql server.
Tab till Azure SQL migration Tab and press enter.
Tab till Migrate to azure sql and press enter.
Add azure account and tab till next button and press enter.
Select SQL server on azure virtual machine radio button and tab till view/select button and press enter.
Tab till database table.
Open developer tool using ctrl+shift+I and hover over to the table.

Actual:
There is a name declarative table defined for the table.
Similar issue is observed with tables throughout the application.
Expected:
There should be a proper name "database table" defined for it.
User Impact:
Screen reader users will not know which table is being announced.

Closing this bug as the issue is not repro
Version- 1.42.0-insider(user-setup)

GithubTags:#Closed;


Update DOMMatrix support

No browser currently support DOMMatrix for SVG, which is half of the reason for it to exist (merge CSSMatrix and SVGMatrix)

@dstorey Can you provide or point me to a test for DOMMatrix support for SVG? Looked around a bit and wasn't able to find anything.

Currently https://github.com/w3c/web-platform-tests/pull/10296 but it isn't merged yet

(or you can just look at the browser WebIDL files and see that the define SVGMatix, SVGPoint, et al)

Thanks!


[$250] Task - Long Task title is overlapped by task arrow

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.33-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4955214&group_by=cases:section_id&group_order=asc&group_id=291935
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause Internal Team
Action Performed:

Go to Group chat> +> Assign Task
In title field enter long text> Finish the flow
Take a look at Task title in Group chat

Expected Result:
Task title should not be overlapped by arrow
Actual Result:
Task title is overlapped by task arrow
Workaround:
Unknown
Platforms:

[x] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/user-attachments/assets/a56f5ff7-f70f-466b-af99-89959042df96

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021834296909071158877
Upwork Job ID:<PHONE_NUMBER>071158877
Last Price Increase: 2024-09-12

Issue OwnerCurrent Issue Owner: @rayane-djouah

@Christinadobrzyn  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

Proposal
Please re-state the problem that we are trying to solve in this issue.
Task - Long Task title is overlapped by task arrow
What is the root cause of that problem?

ArrowRight icon is not included in view container.
https://github.com/Expensify/App/blob/4c424a2b6efec6aef7477adc4e22a1b7460947c5/src/components/ReportActionItem/TaskPreview.tsx#L125-L129

What changes do you think we should make in order to solve the problem?
Move icon in view container.
                <View style={[styles.flex1, styles.flexRow, styles.alignItemsStart, styles.mt1]}>
                    <View style={[styles.taskCheckboxWrapper, styles.alignSelfCenter]}>
                        <Checkbox
                            style={[styles.mr2]}
                            isChecked={isTaskCompleted}
                            disabled={!Task.canModifyTask(taskReport, currentUserPersonalDetails.accountID)}
                            onPress={Session.checkIfActionIsAllowed(() => {
                                if (isTaskCompleted) {
                                    Task.reopenTask(taskReport);
                                } else {
                                    Task.completeTask(taskReport);
                                }
                            })}
                            accessibilityLabel={translate('task.task')}
                        />
                    </View>
                    {taskAssigneeAccountID > 0 && (
                        <Avatar
                            containerStyles={[styles.mr2, styles.alignSelfCenter, isTaskCompleted ? styles.opacitySemiTransparent : undefined]}
                            source={avatar}
                            size={CONST.AVATAR_SIZE.SMALL}
                            avatarID={taskAssigneeAccountID}
                            type={CONST.ICON_TYPE_AVATAR}
                        />
                    )}
                    <View style={[styles.alignSelfCenter]}>
                        <RenderHTML html={isTaskCompleted ? `<completed-task>${htmlForTaskPreview}</completed-task>` : htmlForTaskPreview} />
                    </View>
                <Icon
                    src={Expensicons.ArrowRight}
                    fill={StyleUtils.getIconFillColor(getButtonState(isHovered))}
                />

                </View>

What alternative solutions did you explore? (Optional)
Reminder: Please use plain English, be brief and avoid jargon. Feel free to use images, charts or pseudo-code if necessary. Do not post large multi-line diffs or write walls of text. Do not create PRs unless you have been hired for this job.

I can reproduce this. I think it can be external and I also think we need design to review this to see what would be best for the layout of the arrow.

I'm pretty sure this is a regression. Not sure from where but this definitely used to not happen. We just need to wrap the text to multiple lines like we used to.

Ah thanks @dannymcclain - let me dig into any PRs that might relate...

Hey @thienlnam this is a regression that was found when executing this GH. Do you happen to know which PR this might relate to?

I'm not sure, maybe this one? https://github.com/Expensify/App/pull/48552

@rayane-djouah would you be able to help us look into what this might be a regression of? Or, I think if we can't find the original PR we should consider just fixing this as a new job. @rayane-djouah let me know your thoughts

Reverting https://github.com/Expensify/App/pull/48552 locally does fix the issue for me.
Inspecting the element on prod shows that the element structure matches the changes from the PR.

A View (div) with an align self: center and a children of the RenderHTML.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Task - Long Task title is overlapped by task arrow
What is the root cause of that problem?
App/src/components/ReportActionItem/TaskPreview.tsx
Lines 122 to 124 in 65a21fc
<View style={[styles.alignSelfCenter]}>
         <RenderHTML html={isTaskCompleted ? `<completed-task>${htmlForTaskPreview}</completed-task>` : htmlForTaskPreview} />
     </View>

What changes do you think we should make in order to solve the problem?
We need to replace this code
<View style={[styles.alignSelfCenter]}>
         <RenderHTML html={isTaskCompleted ? `<completed-task>${htmlForTaskPreview}</completed-task>` : htmlForTaskPreview} />
     </View>

by
<RenderHTML html={isTaskCompleted ? `<completed-task>${htmlForTaskPreview}</completed-task>` : htmlForTaskPreview} />
Also If you want arrow in center then need to add style styles.alignItemsCenter on this
https://github.com/Expensify/App/blob/65a21fc7936b81e389be08c57d96b1089c8ff5c1/src/components/ReportActionItem/TaskPreview.tsx#L87
so code will be
<PressableWithoutFeedback
                onPress={() => Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(taskReportID))}
                onPressIn={() => DeviceCapabilities.canUseTouchScreen() && ControlSelection.block()}
                onPressOut={() => ControlSelection.unblock()}
                onLongPress={(event) => showContextMenuForReport(event, contextMenuAnchor, chatReportID, action, checkIfContextMenuActive)}
                shouldUseHapticsOnLongPress
                style={[styles.flexRow, styles.justifyContentBetween, styles.alignItemsCenter]}
                role={CONST.ROLE.BUTTON}
                accessibilityLabel={translate('task.task')}
            >

What alternative solutions did you explore? (Optional)

Thanks @rayane-djouah and @bernhardoj - if this is a regression of https://github.com/Expensify/App/pull/48552 should someone on the PR provide a proposal (I'm not sure)

I think I like the idea of the styles.flex1 solution, but with the top alignment that we have from the task view page. Curious if the other designers agree.

Can we see a side-by-side of what Shawn is suggesting and everything being centered? I'm not in love with the alignment here:

and would be curious to see what it's like with everything centered (on the preview only)

Here you go

current
icon centered

Thank you!
Of those options, centered definitely looks best to my eye. Would love to hear @Expensify/design's thoughts/if they have any other alignment ideas I might not be thinking of.

Ah gotcha - yeah I do think that's what Shawn was suggesting. Let's see what him and @dubielzyk-expensify think!
I think I'm down with center-aligned or your "Updated style 2" - with a teeny tiny preference for centered.

Can we see the center aligned version where it has 3+ lines, and where there are multiple tasks in a row?

I think I prefer when it's aligned to the top-aligned, but I'd still prefer the checkbox to be vertically aligned to the avatar when that's present, and the text when there's no avatar present:

If both @dannymcclain and @shawnborton prefer the centered version, I'm happy to go for that though

I definitely prefer Jon's latest mockups after seeing the centered version with more than two lines... I think the centered version has the potential to look a little wild when the task title is long, not to mention it's not common to see bulleted list items (I know we're using checkboxes, but similar story here) where the bullet can float in the middle of the row. So I think I am team align to top, with those small adjustments to make sure the checkbox + avatar + arrow feel vertically aligned.

Great point about bulleted lists Shawn, I am absolutely down to go with that version that you and Jon are into. Makes perfect sense to me!

Proposal
Please re-state the problem that we are trying to solve in this issue.
Task title is out of bounds when it's very long. We also want to center the checkbox to the avatar.
What is the root cause of that problem?
This happen when we wrap the RenderHTML with a view.
https://github.com/Expensify/App/blob/040c8017219d4ca3650e41d41660c04d6b5a2d64/src/components/ReportActionItem/TaskPreview.tsx#L122-L124
If we look at the inspect element, the render HTML elements has the flex 1, but the new view wrapper doesn't have it, so the width is not restricted.
What changes do you think we should make in order to solve the problem?

To fix the out of bound long text, we can add flex 1 to the view wrapper.
https://github.com/Expensify/App/blob/040c8017219d4ca3650e41d41660c04d6b5a2d64/src/components/ReportActionItem/TaskPreview.tsx#L122-L124
to center the checkbox to the avatar and the text, remove the align self center style from here
https://github.com/Expensify/App/blob/040c8017219d4ca3650e41d41660c04d6b5a2d64/src/components/ReportActionItem/TaskPreview.tsx#L114-L115
https://github.com/Expensify/App/blob/040c8017219d4ca3650e41d41660c04d6b5a2d64/src/components/ReportActionItem/TaskPreview.tsx#L98
It will make the checkbox centered to the text thanks to taskCheckboxWrapper style which has the same height as the text height and centered vertically. But for the avatar, since the size is bigger, we need a bigger height too. So, we need to update taskCheckboxWrapper to accept a height param (or move it to StyleUtils).
taskCheckboxWrapper: (height) => ({
    height,
    ...flex.justifyContentCenter,
}),

Then, pass the avatar height if there is an avatar.
const checkboxWrapperHeight = taskAssigneeAccountID > 0 ? StyleUtils.getAvatarSize(CONST.AVATAR_SIZE.SMALL) : variables.fontSizeNormalHeight;

<View style={[styles.taskCheckboxWrapper(checkboxWrapperHeight)]}>
    <Checkbox ...

If we want to center the arrow too, we can add the same style to the icon
https://github.com/Expensify/App/blob/040c8017219d4ca3650e41d41660c04d6b5a2d64/src/components/ReportActionItem/TaskPreview.tsx#L126-L129
additionalStyles={styles.taskCheckboxWrapper(checkboxWrapperHeight)}

proposal
updated

Updated proposal

Hi @rayane-djouah, when you have a moment can you check out the revised proposals? TY!

head up - I'm going to be ooo for the rest of the week. I don't think there's any reason to add another BZ teammate as we're reviewing proposals.
@arosiclair feel free to review this proposal review when you have a moment! TY! https://github.com/Expensify/App/issues/49086#issuecomment-2368990363

We can modify the style of the html renderer, but instead of doing that, we can just replace the RenderHTML and its View wrapper with a simple Text component.

Note: We introduced the use of RenderHTML in the task preview in this commit to display the user mention. However, since we are now displaying the user photo instead of mention, RenderHTML is no longer needed, we can use Text instead 👍 .

I had a concern about this as well. @rayane-djouah @bernhardoj can we be sure to test that scenario for regressions? Thanks.

PR is ready
cc: @rayane-djouah

The PR was reverted because of https://github.com/Expensify/App/issues/50209. In that issue, the task name is not updated dynamically.
The root cause is, the react-compiler automatically memoize the task title here. It will only be updated if taskReportID or action?.childReportName is updated.
https://github.com/Expensify/App/blob/99f280b0edae75ff59614a1c5e98c47b39800aa5/src/components/ReportActionItem/TaskPreview.tsx#L72
We don't touch the task title code, but why this happens after our PR?
Before the PR, react-compiler somehow wrongly optimized the component by causing the task title to be recomputed on every re-render. So, even if we write:
const taskTitle = useMemo(() => Str.htmlEncode(TaskUtils.getTaskTitle(taskReportID, action?.childReportName ?? '')), []); // empty deps

the memo will still run on every re-render. If we disable the react-compiler for that component by using "use no memo" directive, then the useMemo will work normally again.
After the PR, react-compiler optimization now works as expected.
The new PR revert the "revert" and add the fix for above issue by passing the taskReport instead of its ID.
cc: @rayane-djouah

A few more days until payment but creating a summary in preparation
Payouts due:

[ ] Contributor: $250 @bernhardoj (NewDot - please submit a request for payment)
[ ] Reviewer: $250 @rayane-djouah (Upwork offer - https://www.upwork.com/nx/wm/offer/104113003)

Requested in ND.

Hum, @rayane-djouah @bernhardoj can you confirm if this is a regression? https://github.com/Expensify/App/issues/50209
Or what needs to be resolved before payment?

I wouldn't call it a regression since the root cause of the issue exists before https://github.com/Expensify/App/issues/50209 which I explained here.
cc: @arosiclair

$250 approved for @bernhardoj (agree with the comment above)

Agree as well

okay thanks @bernhardoj and @arosiclair!
Paid out based on this payment summary - https://github.com/Expensify/App/issues/49086#issuecomment-2409673613
Regression test - https://github.com/Expensify/Expensify/issues/436505
Closing as complete!


Link to user's profile from roster

Just a link on their name. It would be super nice

This is done


Add instances for SNat, SSymbol, and SChar

These were introduced to GHC.TypeNats and GHC.TypeLits in base-<IP_ADDRESS>.

@RyanGlScott they really should (even they are trivial).GEq will get super-class constraints too.

There's future base versions and base-orphans, so the ship is still in sight ;)
But I'd rather not merge this until the missing instance are added, otherwise the adding of superclass to GEq will be blocker (or the instances will need to be removed).

Fair enough. I will try to find time to write a couple follow-up CLC proposals to expand the SNat API. (I thought I was thorough, but there is a lot of ground to cover for that one type!)

Good news: the Eq and Ord instances for SNat et al. just landed upstream in GHC in this commit. I will mark this PR as a draft until there is a new base-orphans release with these instances available.

base-orphans-0.9.1 has been released, which backports the Eq and Ord instances for SNat and friends to older versions of base. I've updated this PR to conditionally depend on base-orphans to ensure that these instances are always in scope, which finally allows us to define EqP and OrdP instances.

https://hackage.haskell.org/package/some-1.0.6 is on hackage


Minor usage refactor for readability and (probably) performance

Description of the PR
Minor usage refactors for readability and (probably) performance
Also fixes a usage min/max bug
Changes Proposed in this Pull Request (List new items in CHANGELOG.MD)

Small refactors
Doc fixes
Change Possible.resolveLimit to non-static

Semver Classification
PATCH

[ ] This PR only includes documentation or non-code changes.
[x] This PR fixes a bug and does not change the (intended) framework interface.
[ ] This PR adds methods or properties to the framework interface.
[ ] This PR removes or renames methods or properties in the framework interface.

Maybe hold off on merging this, for now. I think the usage system could use more commentary, so I I'll add that, as I go through it.

I see, will fix

No, just no to the last commit

But if it's hardcoded, it'll break if any new types are ever added. I guess a comment to update the number when adding new types would suffice

The Possible class is exactly as it should be in master at this time. This pr should not change how it is from master.

I'm done with this PR now, unless there's anything else.


⚠ Bofrost.lu has degraded performance

In 682fe33, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 937 ms

Resolved: Bofrost.lu performance has improved in 3c26914 after 2 hours, 2 minutes.


WIP feat(platform): platform is upgraded to v9

Big upgrade nice!

Big upgrade nice!

Haha, yeah, I got an email from someone asking if we could upgrade, I said sure, let's give it a shot, apparently this lib is being used by a lot of folks! Pretty exciting.

Nice!!

Big upgrade nice!

Haha, yeah, I got an email from someone asking if we could upgrade, I said sure, let's give it a shot, apparently this lib is being used by a lot of folks! Pretty exciting.

That was me, hehe. I'm glad with it and I am looking forward to the release! :D

Hi @wesleygrimes. Are you still planning to work on this?


Could you please release a new version

Latest publish version is 0.0.4 and do not yet support latest feature (Builder)
Latest commit doesn't build on Jitpackio https://jitpack.io/#ragnraok/RxCamera

do you mean the RxCameraActionBuilder?
and I didn't publish this library on jitpack, please use jcenter

RxCameraConfig config = new RxCameraConfig.Builder()
.useBackCamera()
.setAutoFocus(true)
.setPreferPreviewFrameRate(15, 30)
.setPreferPreviewSize(new Point(640, 480), false)
.setHandleSurfaceEvent(true)
.build();
Is not available with the 0.0.4 version
Jitpack just allow to use any version of the lib available on github, even version derived from commit. It is usefull in your case, but as it doesn"t work, I had to put a module with your lib i my app project (it less easy to update)

ok, I will released the new version after some necessary bugs fixed


metadata extra not honored by inherited plugin

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/3400
Originally created by @tbriggs2 on 2022-04-14 20:18:50

What is the current bug behavior?
If the metadata extra is defined in the base configuration of an inherited plugin it is not respected - the metadata from the base configuration of the parent plugin is used instead.
What is the expected correct behavior?
The metadata extra from the inherited plugin definition should be used.
Steps to reproduce
Using the attached meltano.yml run
meltano --environment=prod run tap-mysql2 target-jsonl
SomeTable2 will get replicated but with replication-method=LOG_BASED. If instead you run
meltano --environment=dev run tap-mysql2 target-jsonl
SomeTable2 will be replicated using replication-method=FULL_TABLE as expected. The point being that this appears to be a problem specifically with metadata defined on the base inherited plugin only.
Note also that if you change the metadata in the base parent plugin to not use a wildcard, i.e.
    metadata:
      SchemaName-SomeTable:
        replication-method: LOG_BASED

The pipeline will fail with an error about the replication method not being defined for SomeTable2. I think that's relevant because it shows that the wildcard isn't overriding the inherited plugin configuration.
Further regression test
Ensure we automatically catch similar issues in the future

[ ] Write additional adequate test cases and submit test results
[ ] Test results should be reviewed by a person from the team

From https://gitlab.com/meltano/meltano/-/issues/3400#note_915746214:

Yes, I can confirm that the parent's metadata is used, when it's defined. If it's undefined, the child plugin's metadata is used.

Seems to be happening to this user in Slack:

after upgrading, the workflows that were running fine so far now fail with Extractor failed: Unrecognized replication_method None. I did meltano config tap-postgres--orchest-dashboard set _metadata '*' replication-method FULL_TABLE again just in case, still fails (which makes sense, because nothing changed in meltano.yml).

@edgarrmondragon They suggest it used to work before upgrading though, are you sure this is the same issue?

@DouweM I'm almost sure this bug was introduced in a 1.10x.0 release and I noticed they're using inheritance. I asked them to confirm if they upgraded from 1.105.0.
I also tested on main and I can confirm the same behavior: metadata in child plugin is only honored if parent's is clear.

@edgarrmondragon Thanks, I've put this in the current iteration!

Since this comes from the message I posted originally in Slack, let me continue the conversation here.
I don't think this has to do with inherited plugins though, so perhaps it's worth reopening #6129. This is my meltano.yml:
version: 1
default_environment: dev
send_anonymous_usage_stats: false
plugins:
  extractors:
  - name: tap-postgres
    variant: transferwise
  loaders:
  - name: target-postgres
    variant: transferwise
    pip_url: pipelinewise-target-postgresp
environments:
- name: dev
  config:
    plugins:
      extractors:
      - name: tap-postgres
        select:
        - '*.*'
        metadata:
          '*':
            replication-method: INCREMENTAL
            replication-key: id
      loaders:
      - name: target-postgres
        config:
          add_metadata_columns: true
          default_target_schema: public

And this is the stderr of meltano run tap-postgres target-postgres and meltano 1.104.0 (the one that supposedly was working so far):
2022-06-10T11:54:24.588577Z [info     ] Environment 'dev' is active
2022-06-10T11:54:25.289995Z [error    ] The `discovery.yml` manifest received from https://discovery.meltano.com/discovery.yml could not be parsed.
2022-06-10T11:54:25.290440Z [warning  ] Falling back on the cached `discovery.yml` manifest...
2022-06-10T11:54:26.012284Z [warning  ] No state was found, complete import.
2022-06-10T11:54:26.210956Z [info     ] time=2022-06-10 11:54:26 name=tap_postgres level=INFO message=Selected streams: [...] cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.263786Z [info     ] time=2022-06-10 11:54:26 name=tap_postgres level=CRITICAL message=Unrecognized replication_method None cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.264402Z [info     ] Traceback (most recent call last): cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.264846Z [info     ]   File "/project-dir/meltano-tests/.meltano/extractors/tap-postgres/venv/bin/tap-postgres", line 8, in <module> cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.265401Z [info     ]     sys.exit(main())           cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.265801Z [info     ]   File "/project-dir/meltano-tests/.meltano/extractors/tap-postgres/venv/lib/python3.9/site-packages/tap_postgres/__init__.py", line 435, in main cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.266386Z [info     ]     raise exc                  cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.266780Z [info     ]   File "/project-dir/meltano-tests/.meltano/extractors/tap-postgres/venv/lib/python3.9/site-packages/tap_postgres/__init__.py", line 432, in main cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.269035Z [info     ]     main_impl()                cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.269520Z [info     ]   File "/project-dir/meltano-tests/.meltano/extractors/tap-postgres/venv/lib/python3.9/site-packages/tap_postgres/__init__.py", line 421, in main_impl cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.270144Z [info     ]     do_sync(conn_config, args.catalog.to_dict() if args.catalog else args.properties, cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.270619Z [info     ]   File "/project-dir/meltano-tests/.meltano/extractors/tap-postgres/venv/lib/python3.9/site-packages/tap_postgres/__init__.py", line 293, in do_sync cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.271529Z [info     ]     sync_method_for_streams(streams, state, default_replication_method) cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.272102Z [info     ]   File "/project-dir/meltano-tests/.meltano/extractors/tap-postgres/venv/lib/python3.9/site-packages/tap_postgres/__init__.py", line 107, in sync_method_for_streams cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.272662Z [info     ]     raise Exception(f"Unrecognized replication_method {replication_method}") cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.273207Z [info     ] Exception: Unrecognized replication_method None cmd_type=elb consumer=False name=tap-postgres producer=True stdio=stderr string_id=tap-postgres
2022-06-10T11:54:26.374375Z [error    ] Extractor failed
Traceback (most recent call last):
  File "/opt/conda/lib/python3.9/site-packages/meltano/core/logging/output_logger.py", line 127, in redirect_logging
    yield
  File "/opt/conda/lib/python3.9/site-packages/meltano/core/block/extract_load.py", line 438, in run
    await self.run_with_job()
  File "/opt/conda/lib/python3.9/site-packages/meltano/core/block/extract_load.py", line 460, in run_with_job
    await self.execute()
  File "/opt/conda/lib/python3.9/site-packages/meltano/core/block/extract_load.py", line 430, in execute
    await manager.run()
  File "/opt/conda/lib/python3.9/site-packages/meltano/core/block/extract_load.py", line 626, in run
    _check_exit_codes(
  File "/opt/conda/lib/python3.9/site-packages/meltano/core/block/extract_load.py", line 775, in _check_exit_codes
    raise RunnerError("Extractor failed", {PluginType.EXTRACTORS: producer_code})
meltano.core.runner.RunnerError: Extractor failed
2022-06-10T11:54:26.375536Z [error    ] Block run completed.           block_type=ExtractLoadBlocks err=RunnerError('Extractor failed') exit_codes={<PluginType.EXTRACTORS: 'extractors'>: 1} set_number=0 success=False
Run invocation could not be completed as block failed: Extractor failed

meltano 2.0 now produces identical output.
I noticed that

Trying to redirect stderr to a file produces all the bash special characters for coloring. Maybe the coloring should only be enabled if the output is a tty?
Setting MELTANO_CLI_LOG_LEVEL=debug works, but the intermediate configurations and catalogs generated by meltano are removed after invocation, which makes debugging much more difficult. Is there a way to prevent these temporary files to disappear?

Does it work if you move the select and metadata sections under the top-level plugins/extractors/name:tap-postgres instead? That would show if this is an issue with the environments feature.

Progress: the original error is gone, but now I get a new one:
$ meltano invoke tap-postgres
2022-06-10T15:04:26.945653Z [info     ] Environment 'dev' is active
time=2022-06-10 17:04:29 name=tap_postgres level=INFO message=Selected streams: ['public-countries', 'public-departments', 'public-dependents', 'public-employees', 'public-jobs', 'public-locations', 'public-regions']
time=2022-06-10 17:04:29 name=tap_postgres level=INFO message=No streams marked as currently_syncing in state file
time=2022-06-10 17:04:29 name=tap_postgres level=INFO message=Beginning sync of stream(public-countries) with sync method(incremental)
time=2022-06-10 17:04:29 name=tap_postgres level=INFO message=Stream public-countries is using incremental replication with replication key id
{"type": "SCHEMA", "stream": "public-countries", "schema": {"type": "object", "properties": {"country_id": {"type": ["string"], "maxLength": 2}, "country_name": {"type": ["null", "string"], "maxLength": 40}, "region_id": {"type": ["null", "integer"], "minimum": -2147483648, "maximum":<PHONE_NUMBER>}}, "definitions": {"sdc_recursive_integer_array": {"type": ["null", "integer", "array"], "items": {"$ref": "#/definitions/sdc_recursive_integer_array"}}, "sdc_recursive_number_array": {"type": ["null", "number", "array"], "items": {"$ref": "#/definitions/sdc_recursive_number_array"}}, "sdc_recursive_string_array": {"type": ["null", "string", "array"], "items": {"$ref": "#/definitions/sdc_recursive_string_array"}}, "sdc_recursive_boolean_array": {"type": ["null", "boolean", "array"], "items": {"$ref": "#/definitions/sdc_recursive_boolean_array"}}, "sdc_recursive_timestamp_array": {"type": ["null", "string", "array"], "format": "date-time", "items": {"$ref": "#/definitions/sdc_recursive_timestamp_array"}}, "sdc_recursive_object_array": {"type": ["null", "object", "array"], "items": {"$ref": "#/definitions/sdc_recursive_object_array"}}}}, "key_properties": ["country_id"], "bookmark_properties": ["id"]}
{"type": "STATE", "value": {"bookmarks": {"public-countries": {"last_replication_method": "INCREMENTAL", "replication_key": "id", "version":<PHONE_NUMBER>915}, "public-departments": {"last_replication_method": "INCREMENTAL"}, "public-dependents": {"last_replication_method": "INCREMENTAL"}, "public-employees": {"last_replication_method": "INCREMENTAL"}, "public-jobs": {"last_replication_method": "INCREMENTAL"}, "public-locations": {"last_replication_method": "INCREMENTAL"}, "public-regions": {"last_replication_method": "INCREMENTAL"}}, "currently_syncing": "public-countries"}}
{"type": "ACTIVATE_VERSION", "stream": "public-countries", "version":<PHONE_NUMBER>915}
time=2022-06-10 17:04:29 name=tap_postgres level=CRITICAL message='NoneType' object has no attribute 'get'
Traceback (most recent call last):
  File "/home/juanlu/Projects/Orchest/Singer/test-replication-none/.meltano/extractors/tap-postgres/venv/bin/tap-postgres", line 8, in <module>
    sys.exit(main())
  File "/home/juanlu/Projects/Orchest/Singer/test-replication-none/.meltano/extractors/tap-postgres/venv/lib/python3.8/site-packages/tap_postgres/__init__.py", line 435, in main
    raise exc
  File "/home/juanlu/Projects/Orchest/Singer/test-replication-none/.meltano/extractors/tap-postgres/venv/lib/python3.8/site-packages/tap_postgres/__init__.py", line 432, in main
    main_impl()
  File "/home/juanlu/Projects/Orchest/Singer/test-replication-none/.meltano/extractors/tap-postgres/venv/lib/python3.8/site-packages/tap_postgres/__init__.py", line 421, in main_impl
    do_sync(conn_config, args.catalog.to_dict() if args.catalog else args.properties,
  File "/home/juanlu/Projects/Orchest/Singer/test-replication-none/.meltano/extractors/tap-postgres/venv/lib/python3.8/site-packages/tap_postgres/__init__.py", line 312, in do_sync
    state = sync_traditional_stream(conn_config,
  File "/home/juanlu/Projects/Orchest/Singer/test-replication-none/.meltano/extractors/tap-postgres/venv/lib/python3.8/site-packages/tap_postgres/__init__.py", line 175, in sync_traditional_stream
    state = do_sync_incremental(conn_config, stream, state, desired_columns, md_map)
  File "/home/juanlu/Projects/Orchest/Singer/test-replication-none/.meltano/extractors/tap-postgres/venv/lib/python3.8/site-packages/tap_postgres/__init__.py", line 86, in do_sync_incremental
    state = incremental.sync_table(conn_config, stream, state, desired_columns, md_map)
  File "/home/juanlu/Projects/Orchest/Singer/test-replication-none/.meltano/extractors/tap-postgres/venv/lib/python3.8/site-packages/tap_postgres/sync_strategies/incremental.py", line 61, in sync_table
    replication_key_sql_datatype = md_map.get(('properties', replication_key)).get('sql-datatype')
AttributeError: 'NoneType' object has no attribute 'get'

(I realized I don't need the target-postgres for anything here)
On the other hand, if the actual location of the select and metadata sections is under the top-level plugins/extractors/name:tap-postgres, then meltano config set is doing it wrong:
$ cat meltano.yml
version: 1
default_environment: dev
send_anonymous_usage_stats: false
plugins:
  extractors:
  - name: tap-postgres
    variant: transferwise
environments:
- name: dev
  config:
    plugins:
      extractors:
      - name: tap-postgres
        config:
          user: read-only
          password: secretpassword
          port: 6001
          dbname: data
$ meltano select tap-postgres "*"
2022-06-10T15:07:23.318014Z [info     ] Environment 'dev' is active
$ cat meltano.yml
version: 1
default_environment: dev
send_anonymous_usage_stats: false
plugins:
  extractors:
  - name: tap-postgres
    variant: transferwise
environments:
- name: dev
  config:
    plugins:
      extractors:
      - name: tap-postgres
        config:
          user: read-only
          password: secretpassword
          port: 6001
          dbname: data
        select:
        - '*.*'

Can you please file a separate issue about the TTY problem?

Done: https://github.com/meltano/meltano/issues/6152

As for debugging, the best way to get the generated config is to use meltano invoke --dump=config . That also works for --dump=catalog, for example. There's not currently a way to stop meltano invoke/elt/run from cleaning that up when it's done, since we don't want credentials hanging around the filesystem.

Fair enough, I opened #6150 related to it but I see the security concern.

@astrojuanlu That error suggests that the countries table doesn't have an id, and you should set the replication key to country_id instead. You can specifically override that for the public-countries stream in the metadata section:
        metadata:
          '*':
            replication-method: INCREMENTAL
            replication-key: id
          public-countries:
            replication-method: INCREMENTAL
            replication-key: country_id

You'll have to the same for any other tables that have a primary key other than id.
metadata definitely should work under environments where meltano config set puts it, so the fact that it doesn't work there, but does at the top level, is the bug you're running into! So it looks like metadata is broken in some way with inheritance, and with environments.

Opening a separate issue for the AttributeError: 'NoneType' object has no attribute 'get': https://github.com/meltano/meltano/issues/6154

metadata definitely should work under environments where meltano config set puts it, so the fact that it doesn't work there, but does at the top level, is the bug you're running into! So it looks like metadata is broken in some way with inheritance, and with environments.

Thanks for the clarification 🙏🏽

I think this might actually be two different bugs. I have pinned down the problem with environments in https://github.com/meltano/meltano/pull/6376, so I'm happy to fix the environment bit there and continue investigating the inheritance problem separately.
@tayloramurphy


[WIP] Compute total times in global stats

This avoid to compute the values on the front-end

The PR is ready for review:

Compute total times in global stats, to avoid computing the values on the front-end
Add irmin data to both global & block statistics
Add read & write times in global statistics

The endpoint GET /stats/context takes a new query parameter context_name to select between irmin and tezedge


SyntaxError: Unexpected token

The following change:
https://github.com/highlightjs/highlight.js/commit/373b9d862401162e832ce77305e49b859e110f9c#diff-a22d79c61d34b336a15f45f37dd494693dc3fe5aadc5f85e05b3c97e65075f2bR162
Is causing the following error:
/node_modules/highlight.js/lib/languages/perl.js:186
),
^
SyntaxError: Unexpected token )
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)

Node version?

node v6.11.0 (npm v3.10.10)

We upgraded to v10 and all is well


fix: Use an explicit message_counter instead of using std::distance

As @ojura reported and explained in #940, there is a critical issue with the new changes introduced in the mentioned PR, which significantly slows down the offline node.

The reason of this problem was that In order to count the number of processed messages the std::distance function was used which is computationally expensive(O(n)).
Instead, the former log_counter_ and now message_counter_ class variable which was used to print a message every X seconds is also employed to count the number of the processed (and also skipped) messages.

@wally-the-cartographer merge

Merge requested by authorized user pifon2a. Merge queue now has a length of 1.


Update sierra transformer messaging and storage libs

It made sense to do this again and bring in the all the nicer changes from #129.
This closes #121.

Forced a merge of this, the build is failing due to api stuff which is unrelated, but master is also.


Outline the package in README.md

@andyzhangstat will update the README

Here is the requirement:

a summary paragraph that describes the project at a high level
a bulleted list of the functions (and datasets if applicable) that will be included in the package (this should be a 1-2 sentence description for each function/dataset)
a paragraph describing where your packages fit into the Python ecosystem (are there any other Python packages that have the same/similar functionality? Provide links to any that do. If none exist, then clearly state this as well).

Check the pull request.


added my name (Dnyanesh Nimbalkar)

Related issue

What changes does this PR do?
Screenshots (If any)
Questions

hey, please add your name in alphabetical order:)

ohkay

How to delete previous repo?
On Sat, 1 Oct 2022, 6:27 am Raheem Amer, @.***> wrote:

@.**** requested changes on this pull request.
Kindly apply the changes listed in the review
In README.md
https://github.com/EddieHubCommunity/hacktoberfest-practice/pull/1929#discussion_r985016571
:

@@ -522,7 +522,7 @@ A GitHub conflict is when people make changes to the same area or line in a file

Cynthia Teeters

D

Don't alter this line
In README.md
https://github.com/EddieHubCommunity/hacktoberfest-practice/pull/1929#discussion_r985016776
:

@@ -522,7 +522,7 @@ A GitHub conflict is when people make changes to the same area or line in a file

Cynthia Teeters

D

Dnyanesh Nimbalkar

Your name should be in line 572
—
Reply to this email directly, view it on GitHub
https://github.com/EddieHubCommunity/hacktoberfest-practice/pull/1929#pullrequestreview-1127447491,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASTUSW5VVR3S7O5CXYVMDM3WA6D7DANCNFSM6AAAAAAQZYTSGA
.
You are receiving this because you were mentioned.Message ID:
<EddieHubCommunity/hacktoberfest-practice/pull/1929/review/1127447491@
github.com>

No need to delete the whole repo just do the changes listed in the review and your PR will be ready to get merged


What's your experience using hal+json?

I just came across hal+json this week, and am trying to find a good .NET library for consuming this API format.  Most of the C#/.NET ones seem rather painful to work with.  I also tried quicktype.io for creating .NET data type bindings for a hal+json endpoint (to avoid typing in the data model and making mistakes). Then I started to think "Could there be an F# type provider for this?"
The demo code in the README for this project doesn't show deserializing hal+json into POCOs (Plain Old CLR objects), so I am curious if this project has any opinions on how to walk the HAL object tree?  Or is this project just for serializing objects into HAL format, not deserializing?

Hi, this lib only covers serialisation. Unfortunately I have non experience with any hal+json consuming libs so far. So have no recommendation.


⚠ ClamAV has degraded performance

In 3dc23f0, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 210 ms

Resolved: ClamAV performance has improved in 9b341fc.


Make env.yml work both on Windows and Linux

Now by using Conda package specification this env.yml is able to be used on Windows without modification. And now the versions are all consistent with those in requirements.txt.
A potential problem should be requirements of pywin32 and pypiwin32 are only needed on Windows and therefore installed by pip rather than conda, which could cause collisions when installing them.
Anyone who has a Mac can have a test on MacOS.

Cool, thanks for doing this. Really appreciated.


Links for download and CLIP model weights

Dear authors,
Thank you for your work! When will the dataset be available for download? Additionally, when will the weights of the CLIP model fine-tuned on the RS5M dataset will be released?
Thanks
Xavi

Dear authors, Thank you for your work! When will the dataset be available for download? Additionally, when will the weights of the CLIP model fine-tuned on the RS5M dataset will be released? Thanks Xavi

Hi,
The metainfo of this dataset has been released to huggingface, and you can download them through URLs. As for the image files, we are working on the copyright issues, hopefully we can release them in 2023.
We are cleaning the codebase now, and the model weights will be released in a few months along with the training & inference code.

Dear authors, Thank you for your work! When will the dataset be available for download? Additionally, when will the weights of the CLIP model fine-tuned on the RS5M dataset will be released? Thanks Xavi

Hi,
The weights has been released: https://huggingface.co/Zilun/GeoRSCLIP/tree/main
The updated instruction can be found in the readme.md of this repo.
Feel free to use them.
Best,
Zilun