CFP: Investigate if it's possible to support GatewayAddress in Gateway API

Cilium Feature Proposal
The first cut for Gateway API was done in https://github.com/cilium/cilium/pull/21749, however, we have a couple of follow-up tasks to support more features from Gateway API upstream.
This issue is to track the work of supporting GatewayAddress in Gateway resources. The current design is to just offload this to Cloud Provider by creating LoadBalancer service type i.e. once the LB service is provisioned and ready, we just take the allocated IP/Hostname from the LoadBalancer service and propagate the same to related Gateway. In order to support GatewayAddress, we need to investigate if similar capability is possible in different cloud providers (e.g. AWS, Google cloud, Azure to start with). My hunch is to just add the annotation in LB service.

[ ] Gateway

[ ] Support for Spec.Address (if possible).

Goals
Investigate if it's possible with the current design, if not, we should make it clear in the documentation.
Proposed solution
TBD
Tasks
TBD

My two cents on the issue. Services have the .spec.loadBalancerIP field which can be used to request a single IP and is universally supported. Now this field is deprecated according to comments on the go struct.

// As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available.
// This field may be removed in a future API version.

In the case of the LB-IPAM feature, we have a fairly straightforward io.cilium/lb-ipam-ips annotations. Cloud providers tend to have a list of annotations which can be used to together, not only including a requested IP but also a lot of other settings:

AWS
Azure/AKS
GKE

The easiest and most straightforward route would be to somehow forward annotations from the Gateway object to the Service object. However, I have no clue if there is anything in the Gateway API spec at this time that allows that.
The most straightforward way within the current spec would be to just translate the requested addresses into all of the well-known annotations for the different providers. You would miss out on the "additional" settings which do not fit the IP or Hostname primitive.
My last suggestion, which would be way more work, would be to introduce custom address types for every LB provider we want to support. Then allow users to specify all of their settings in the value which can be a K/V format and translate these to the proper annotations on the service.
For example:
aws.amazon.com/alb: load-balancer-name=abc,ip-address-type=ipv4,shield-advanced-protection=true
Would translate to
alb.ingress.kubernetes.io/load-balancer-name: abc, alb.ingress.kubernetes.io/ip-address-type: ipv4, alb.ingress.kubernetes.io/shield-advanced-protection: true
The obvious downside is that we now have to maintain this translation, keep-up-to-date with new annotations added and so forth. Though I see this at least being an option for our own LB-IPAM.

One of the major goals for Gateway API is to remove this sort of annotation proliferation, so I'm pretty strongly -1 on anything that copies annotations around. I think that I'd like to see something like this:

We maintain a mapping of "Gateway.spec.addresses entries equals this annotation on each could provider"
Other Loadbalancer settings are set in a GatewayClass ParametersRef (so a cluster can have a GatewayClass that allows shield advanced protection, and one that doesn't by having different config in the ParametersRef).

For AWS, choosing ELB/NLB/ALB should probably be handled by different GatewayClasses, and then you create Gateways that create a LB of that type.
#21923 covers the work to build out Cilium support for ParametersRef.

We'll need to do this to finish out #21929.

I don't see any mention of on-perm deployments in this thread. How would this work with BGP Control Plane, or L2 Announcements (v1.14) for those who are not in cloud based situations?
I'm currently using MetalLb since cilium LB IPAM doesn't properly support all CIDRs or arbitrary ranges such as pools of one (https://github.com/cilium/cilium/issues/24351).
Also consider the scenario where someone needs the Gateway address / load balancer to be the only public address, and the backend services are all of type cluster IP. For example your gateway is a single A + PTR address/record, and then all of the services are CNAME record subdomains which point to the A record, and the gateway breaks it up by host, eg wiki.mysub.university.edu, log.mysub.university.edu, dash.mysub.university.edu, etc.
I think if cilium is going to make a point to try and support smaller on perm deployments as specifically stated in the L2 announcements documentation, then these kind of things should be carefully considered and also documented.

Thanks for that @j-gooding. I think the asks you have there are reasonable, and we should support them when we can.
In terms of the Gateway API support, when we've been thinking about #21929, it seems likely that we'll end up with something like this:

For the shorter term, we'll create LB Services to fulfill a Gateway request in as many places as we can, and ensure that those LB services will allow setting the address.
This will also apply for Cilium's LBIPAM.
For other relevant annotations or LB Service config, we'll probably look to make use of the new infrastructure stanza that's being added to Gateway (see kubernetes-sigs/gateway-api#1868 for the initial PR) - annotations are a likely use case for that stanza too.

We also need to add the code to actually look at spec.addresses for Gateways - currently the Cilium code basically ignores this stanza altogether. This shouldn't be too hard, but we've missed the window for 1.14 features (feature freeze started last Friday), so we'll need to see if this meets the backport criteria once it's done, otherwise, it should hopefully be in 1.15.

I don't see any mention of on-perm deployments in this thread. How would this work with BGP Control Plane, or L2 Announcements (v1.14) for those who are not in cloud based situations?
I'm currently using MetalLb since cilium LB IPAM doesn't properly support all CIDRs or arbitrary ranges such as pools of one (#24351).
Also consider the scenario where someone needs the Gateway address / load balancer to be the only public address, and the backend services are all of type cluster IP. For example your gateway is a single A + PTR address/record, and then all of the services are CNAME record subdomains which point to the A record, and the gateway breaks it up by host, eg wiki.mysub.university.edu, log.mysub.university.edu, dash.mysub.university.edu, etc.
I think if cilium is going to make a point to try and support smaller on perm deployments as specifically stated in the L2 announcements documentation, then these kind of things should be carefully considered and also documented.

I agree with this 100%. Currently in the same situation on-prem with BGP Control Plane, would make a lot of sense to me to have this functionality.

Might this be on the plan for upcoming releases?  or not a priority since it's more about on-prem deployments?

Yes, we would like to get this done, just a matter of picking an approach, and deciding how closely this will work with BGP control plane and L2Announcment.

This is not solely for on-prem envs. It can be very important to control IP Address assignments in the cloud as well. E.g. if you intend the gateway NOT to be exposed publicly. Then you want an internal type LoadBalancer service in Kubernetes ... and that being the case ( at least that's how it is in GCP ), you have to specify an IP that the cloud-provider provisioned LB gets.
In certain cases it might also be beneficial to control the public ip that an GW API instance gets. E.g. if your company have it's on public range of IP's.
Thanks.

Thanks for that @larssb. I agree that it's important to also support cloud environments, but for those, the best option is probably going to be support for creating an LB Service, as I mentioned above.
However, it turns out that there's no standard way to request an address on cloud providers - all of the big 3 require annotations to be set on the generated Service, so to support this, we'll need to special-case spec.address support per cloud-provider.  I'm going to discuss this upstream with some SIG-Network folks and see if there is anything planned for Service to help with that. (I suspect the answer will be "no, that's what Gateway is for", which leaves us in a lovely paradox.)
All of this is to explain why this is not done already - we'll see if we can come up with anything else.

I should note that because all of the cloud providers support setting IP addresses etc via annotations, you can currently get around this limitation using the infrastructure stanza in Gateway, implemented in #25357.
That's in no way the best solution here, but for anyone finding this issue in the meantime, may keep you moving while we sort this out. Again, sorry to not be able to just solve this one.

Hi @youngnick,
Thank you very much for chiming in with some great details.
Hmm I can't seem to find a proper annotation to use on Kind: Service of the LoadBalancer type on Google Cloud. The only annotation coming close to making sense is kubernetes.io/ingress.global-static-ip-name found at . However, as I understand it, this annotation having the following downsides.

It requires extra actions. E.g. the reservation of the IP on Google Cloud
I'm not even sure that it works with an Gateway API Gateway instance

But, yes, the networking.gke.io/load-balancer-type: "Internal" could be set via the .spec.infrastructure.annotations stanza. We just seems to end up in a half-baked situation where I still have to manipulate the underlying generated Kind: Service of the LoadBalancer type.

Maybe I should also try/use the Kyverno route of using a MutatingWebhookConfiguration like others. Or potentially I've misunderstood or just didn't find the proper annotation to use.
Thanks.

Hmm, setting the Service .spec.loadBalancerIP may be a reasonable first step for Cilium to do that would add some support for Gateway spec.addresse. I'll look into that, thanks @larssb!

I'm happy to hear that you back that part @youngnick. Much appreciated. I think too ( unsurprisingly :-) ). Also spec.addressis not cloud provider specific - obviously - so should be a okay to use and support.
Thank you very much.

Aaaah good point @larivierec!
I wasn't properly aware on the deprecation of the .spec.loadBalancerIP . Important to know. But, as mentioned in the ticket/issue you refer to: "it'll properly take along time before that field is fully truly deprecated and removed entirely". So far no cigar at least.
But, then it would be great that Cilium's Gateway API implementation supported the plural field in the spec on Kind: Service of the LoadBalancer type. Because, as previously stated the annotation option seems to differentiate a great deal between cloud solutions and e.g. GCP ( at least according to what I've been able to identify ), do not support controlling the IP in a good way through an service annotation.
Thanks.

Thanks for that @larssb. I agree that it's important to also support cloud environments, but for those, the best option is probably going to be support for creating an LB Service, as I mentioned above.
However, it turns out that there's no standard way to request an address on cloud providers - all of the big 3 require annotations to be set on the generated Service, so to support this, we'll need to special-case spec.address support per cloud-provider.  I'm going to discuss this upstream with some SIG-Network folks and see if there is anything planned for Service to help with that. (I suspect the answer will be "no, that's what Gateway is for", which leaves us in a lovely paradox.)
All of this is to explain why this is not done already - we'll see if we can come up with anything else.

Tbh this seems like a flaw in the spec design and in my opinion I would prefer it get dropped entirely.
We already have types for requesting loadbalancing. The spec is suggesting that a valid implementation could be that during gateway creating cloud APIs are used to request the addresses, ie cloud controllers need to implement Gateway to watch for requested addresses, or the gateway controller needs to implement cloud provider APIs.
A better way to me would be for the infrastructure stanza to allow selecting an existing loadbalancer service as part of the infrastructure request if specific addresses are necessary.
I really wonder if they have thought of a reference implementation for this feature, because putting all this responsibility on every Gateway controller implementation seems like a big ask to me.
Especially since service.spec.loadbalancerip has been deprecated because they felt that the configuration of external loadbalancers is too cloud specific and thus does not fit in the core spec, I don't understand how they more or less decided to bring it back with Gateway Api.

I recently came across the azure implementation for gateway api and this is very in line with my issues with the current spec:
https://learn.microsoft.com/en-us/azure/application-gateway/for-containers/how-to-ssl-offloading-gateway-api?tabs=byo
They gateway api implementation uses a custom controller that handles everything that is needed of the cloud provider. This is very nice, if you're using azure. And this works perfectly with the cloud-native gateway api implementation, They can simply take the requested ip from the gateway, provision this in azure and light up the integration in kubernetes. They don't even need to use a Service to request the load balancer, they can do it directly. Any cross-cloud or more generic gateway api implementation can't do this without having to build support for every cloud provider api. This new gateway api spec seems very cloud provider focused, and not so friendly to cross-cloud vendors.

The intent with Gateway API is for it to be widely implemented, yes. And ideally, eventually the cloud providers will support Gateway resources with TCPRoutes or UDPRoutes as an alternative to Loadbalancer Services. (Cilium's LBIPAM support will probably grow direct support like this eventually too).
The Gateway API is explicitly designed to be used both by cloud providers in this way, and north/south use cases (replacing an Ingress controller).
There has been some discussion of selecting existing LB Services as an option in infrastructure, but there has been no consensus about it.
I'd suggest bringing your feedback to the Gateway API project itself, we're always looking for more passionate users.

What's the current status of this? I'm using L2 and Gateway API and would really like to be able to request a specific IP from my pool. Right now, I've to make sure my two gateways comes up in the "correct" order so they get the "correct" IP, which really feel like a horrible hack.

+1 here. We would love to have this ability!

I would be thrilled if this would be implemented!
For now,as a workaround, I manually edit the service created by the gateway, and add the io.cilium/lb-ipam-ips annotation to get the IP I want for the pool.
I would be delighted to get rid of this ugly hack, and would be happy if you can tell a less ugly way to do it in the meantime.

I would be thrilled if this would be implemented!
For now, as a workaround, I manually edit the service created by the gateway, and add the io.cilium/lb-ipam-ips annotation to get the IP I want from the pool.
I would be delighted to get rid of this ugly hack, and would be happy if you can tell a less ugly way to do it in the meantime.

You can do this with the experimental crd and the infrastructure stanza already.

@rouke-broersma  Can you point us at the docs for the crd and infrastructure stanza?

@rouke-broersma  Can you point us at the docs for the crd and infrastructure stanza?

https://github.com/cilium/cilium/issues/21926#issuecomment-1882556513

I'd definitely like to implement this functionality, but it will need to work differently on each platform:

Cilium lb-ipam
Cilium BGP
Cloud providers require specific annotations or labels on the created Service

Folks who are interested here, could I please ask that you comment with the environment you want to be able to set an address in? That will let us prioritize which work we do first.

Azure
BGP

And I'm cilium LB-IPAM, though easily surviving with IPs requested through the infrastructure stanza for the moment. Although that should make it trivial to support 😉

I'd definitely like to implement this functionality, but it will need to work differently on each platform:

Cilium lb-ipam
Cilium BGP
Cloud providers require specific annotations or labels on the created Service

Folks who are interested here, could I please ask that you comment with the environment you want to be able to set an address in? That will let us prioritize which work we do first.

Hi, i am using:

lb-ipam
BGP
on-prem environment

I'm using it on:

LB-IPAM with L2 announcements
on-prem setup with kubeadm and kubeProxyReplacement

for me:
LB-IPAM with L2 announcements
on-prem setup with kubeadm and kubeProxyReplacement

Same here:

LB-IPAM with L2 announcements
on-prem setup with kubeadm and kubeProxyReplacement

I really wish you could tag comments with +1

Pardon my ignorance,  how and why?From: Jo Rhett @.>Sent: Wednesday, July 17, 2024 2:30:08 PMTo: cilium/cilium @.>Cc: ksully-execute @.>; Comment @.>Subject: Re: [cilium/cilium] CFP: Investigate if it's possible to support GatewayAddress in Gateway API (Issue #21926)
Same here:
LB-IPAM with L2 announcements
on-prem setup with kubeadm and kubeProxyReplacement
I really wish you could tag comments with +1
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

@chaunceyjiang is proceeding on work on #33042 to add this functionality for LB-IPAM only (for now). Once that gets in, we'll see about extending the functionality to other platforms.
I encourage anyone who finds this issue and is interested in their platform being supported to comment with their platform. Notable ones are Cilium's BGP support, or the various cloud provider Loadbalancer Services (like GKE, AKS, and EKS).

on-prem
kube-proxy replacement
LB-IPAM
cilium BGP Control Plane

I'd definitely like to implement this functionality, but it will need to work differently on each platform:

Cilium lb-ipam
Cilium BGP
Cloud providers require specific annotations or labels on the created Service

Folks who are interested here, could I please ask that you comment with the environment you want to be able to set an address in? That will let us prioritize which work we do first.

on-prem (k3s)
kube-proxy-less
LB-IPAM
BGP Control Plane (for OpenBSD firewall in front of the cluster that runs bgpd and pf)

On-prem

On-premise
Cilium instead of kube-proxy
LB IPAM
L2 arp with plans for BGP

on-prem
kube-proxy-less
lb-ipam
Cilium BGP

Thanks very much for all the feedback folks! With #33042 in review, we are a fair way along at supporting LB-IPAM, so once that is merged, I'll note here and everyone can test.
I'd still like to encourage people who aren't using LB-IPAM to comment here if you need Gateway Address support for your platform though!


KAFKA-7922: Return authorized operations in Metadata request response (KIP-430 Part-2)

Use automatic RPC generation in Meta Request/Response classes
https://cwiki.apache.org/confluence/display/KAFKA/KIP-430+-+Return+Authorized+Operations+in+Describe+Responses

Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

This PR is built on top of #6352.

retest this please

@rajinisivaram  Thanks for the review. Addressed the review comments and Updated the response protocol to support null default values for clusterId.


LCOM4 is not counted

ChineseRemainderTheorem.zip
I downloaded the last version https://repo1.maven.org/maven2/org/jpeek/jpeek/0.30.9/jpeek-0.30.9-jar-with-dependencies.jar
Then I compiled Java file and got byte-code for each class. But when I ran  jpeek from the command line, I did not see LCOM4 metrics.
java -jar jpeek-jar-with-dependencies.jar --sources . --target ./jpeek
Could you please tell me, how is it possible to see LCOM4 metric?

@paulodamaso/z please, pay attention to this issue

@lyriccoder Seems like its Report is not being generated

@0crat in

@0crat in (here)

@paulodamaso Job #452 doesn't exist, can't set role

I have added examples of java classes in the archive. Could you please check? I want to compute LCOM4, but I would like to know what is happening and why the report was not generated

@0crat assign me

@0crat assign me (here)

@paulodamaso The job #452 assigned to @paulodamaso/z, here is why; the budget is 30 minutes, see §4; please, read §8 and §9; if the task is not clear, read this and this; there will be a monetary reward for this job

@lyriccoder LCOM4 report was not being added to the report stack; because of this, jPeek wasn't generating it even if we passed asked just for this report. I've added LCOM4 report generation in PR #458; after its merge, you'll be able to generate it by using the --metrics parameter, like:
java -jar target/jpeek-jar-with-dependencies.jar --sources . --target ./jpeek --overwrite --metrics "LCOM4"

oh, thank you very much @paulodamaso

@lyriccoder 2 puzzles #460, #461 are still not solved.

Job #452 is not in the agenda of @paulodamaso/z, can't set title

@lyriccoder 2 puzzles #494, #506 are still not solved.

@0crat assign me (here)

@paulodamaso Job #452 is closed, can't start order

@0crat in (here)

@paulodamaso @paulodamaso/z not enough funds available in the project, can't set budget of job #452, see §21; @paulodamaso/z will get no money on completion; in order to fix that, add funds to the project and assign the job again

@paulodamaso/z resigned from #452, since the job is not in scope anymore


Enable egraph-based optimization by default.

This PR follows up on #5382 and #5391, which rebuilt the egraph-based optimization framework to be more performant, by enabling it by default.
Based on performance results in #5382 (my measurements on SpiderMonkey and bjorn3's independent confirmation with cg_clif), it seems that this is reasonable to enable. Now that we have been fuzzing compiler configurations with egraph opts (#5388) for 6 weeks, having fixed a few fuzzbugs that came up (#5409, #5420, #5438) and subsequently received no further reports from OSS-Fuzz, I believe it is stable enough to rely on.
This PR enables use_egraphs, and also normalizes its meaning: previously it forced optimization (it basically meant "turn on the egraph optimization machinery"), now it runs egraph opts if the opt level indicates (it means "use egraphs to optimize if we are going to optimize"). The conditionals in the top-level pass driver are a little subtle, but will get simpler once we can remove the non-egraph path (which we plan to do eventually!).

Hmm, some issues caused by my reimplementation of #5534 (GVN + idempotency) for egraphs; switching this to draft for now.

Pushed updates, but I'll factor out the idempotent-GVN updates for egraphs into a separate PR tomorrow then rebase this.

Rebased on the idempotency fix; should be ready to review now!

I think one final location to touch doc-wise would be here too perhaps?

I think one final location to touch doc-wise would be here too perhaps?

Ah, yes, updated!

In an extremely amusing twist, adding the deprecation warning for the cranelift_use_egraphs config option makes our fuzz target build throw a warning (because it can configure Cranelift not to use egraphs), and this makes our no-warnings build fail. I'm going to just remove the deprecation warning for now to get this in and am happy to talk about ways to warn while still using it internally in a followup PR.

In an extremely amusing twist, adding the deprecation warning for the cranelift_use_egraphs config option makes our fuzz target build throw a warning (because it can configure Cranelift not to use egraphs), and this makes our no-warnings build fail. I'm going to just remove the deprecation warning for now to get this in and am happy to talk about ways to warn while still using it internally in a followup PR.

You can #[allow(deprecated)] on the specific function that does the deprecated call in the fuzzing infra.


Set default settings for new volumes from existing are from orig

This commit ensures that volumes created from existing snapshots
or volumes are configured with the same defaults.  For volumes,
the VolumeType, IOPS, and Size are replicated.  For snaphshots,
the Size is replicated.  The parameters to override this are
standard volume creation options.

Satisfies feedback from https://github.com/emccode/rexray/issues/124 and https://github.com/emccode/rexray/issues/129


back-end - auth.js

Update the auth middleware function to work with Graphql API

Accidently did all the changes in main branch, it wasn't until I committed the code that I realized. Woops.

For auth, need to figure out if i should just return the request or send to next endpoint.


Upgrade Node.js 18.x to 20.x

Changes

Upgrade Node.js 18.x to 20.x

/kind

Fixes #

Release Note

Docs

The reason we have Node 18 is that Janus community also uses the same version: https://github.com/janus-idp/backstage-plugins/blob/main/.nvmrc
If that's ok, I want to hold this PR and check with them. They're extending Backstage and I think they have a better context than I do.


🍒 Cherry pick PR #18361 to staging 🍒

🍒 Cherry pick https://github.com/Expensify/App/pull/18361 to staging 🍒

🚀 Cherry-picked to staging by https://github.com/OSBotify in version: 1.3.9-16 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.

🚀 Deployed to production by https://github.com/roryabraham in version: 1.3.12-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Cherry-picked to staging by https://github.com/AndrewGable in version: 1.3.28-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.

🚀 Deployed to production by https://github.com/AndrewGable in version: 1.3.28-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


"Bulzești" is listed in the drop-down menu

Description:
"Bulzești" is listed in the drop-down menu alongside its corresponding county and commune, according to the law.
Precondition:
The website is up an running.

Step 1
Type "Bulzești" in the search bar.

Expected results
The location is listed in the drop-down menu as "Comuna Bulzești, DOLJ".


chore(master): release 1.0.1

:robot: I have created a release beep boop
1.0.1 (2024-02-06)
Bug Fixes

package.json: Update peer dep to @angular/cdk (0dbcaa5)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/HosseinSalmanian/ngx-autocomplete/releases/tag/v1.0.1 :sunflower:


Typo in apparmorprofile comment

Signed-off-by: John Howard<EMAIL_ADDRESS>Minor typo specified --> specifies

On Tue, Jun 21, 2016 at 01:57:21PM -0700, John Howard wrote:

Minor typo specified --> specifies

c601539f looks good to me.

LGTM

LGTM


Can’t check for firmware update

When jailbroken, even with “disable updates” set to off, it loads endlessly when selecting ‘software update’.

Would I be safe to reboot my a7 iOS 11 device and update it from Settings then jailbreak? Or would it be more proficient to update via iTunes?

Is it just me or has battery life increased exponentially with u0 3.5.5. Still running iOS 11.2.6.

Is it just me or has battery life increased exponentially with u0 3.5.5 (after sub-3.3.4). Still running iOS 11.2.6.

Part of the jailbreak is that it stops your phone from searching and updating...
OTA updates are fine, i did update from my SE then JB on 3.5.2....
Sorry for the late replys

Don’t update with installed JB. Remove the JB via Restore RootFS, than Update ist via iTunes! Then install jailbreak Ägäis

Why so? And I’ll have to restore via iTunes anyhow for compatible iOS 12.4 only.


Update opentracing java version to 0.22.0

@pavolloffay Version updated - could you release after merged?

Will update the PR once a new version of spanmanager (that uses 0.22) is available.


cherry pick PR#3283 about sending schemas in exchangeSender (#3318)

This is an automated cherry-pick of #3318
What problem does this PR solve?
Issue Number: close #xxx
Problem Summary: cherry p r#3318 with 3283
What is changed and how it works?
Proposal: xxx
What's Changed:
Related changes

PR to update pingcap/docs/pingcap/docs-cn:
Need to cherry-pick to the release branch:

Check List
Tests

Unit test
Integration test
Manual test (add detailed scripts or steps below)
No code

Side effects

Release note
None

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Fails to get version on first release

Hi, great action!
I noticed that per keep-a-changelog spec, if you have a fresh changelog (1.0.0) then this action will fail.
It is looking for ... separator that doesn't exist on ...release/tag/1.0.0
https://github.com/thomaseizinger/keep-a-changelog-new-release/blob/5bc232893483441c5d6cd6c9dcb1e48abf9a2bae/src/updateChangelog.ts#L117
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.0] - 2022-02-08

### Added

-   Initial release of this action!

[Unreleased]: https://github.com/me/myapp/compare/1.0.0...HEAD

[1.0.0]: https://github.com/me/myapp/releases/tag/1.0.0

My workaround for now is to change the url to .../compare/1.0.0...1.0.0

Interesting. There is a testcase for this https://github.com/thomaseizinger/keep-a-changelog-new-release/tree/master/tests/fixtures/first_release.
Would you mind opening a PR with a failing test case?

I may have a similar issue with the first release. Before the first release I added the following to the CHANGELOG.md:
[Unreleased]: https://github.com/gschwaer/myrepo/compare/22549a94e175db0b8fedd0ffffd3936bfa744769...HEAD

Where 22549a94e175db0b8fedd0ffffd3936bfa744769 was the initial commit.
After the action ran (with version = v0.1.0), the CHANGELOG.md contained:
[Unreleased]: https://github.com/gschwaer/myrepo/compare/v0.1.0...HEAD

[0.1.0]: https://github.com/gschwaer/myrepo/compare/95d5280d0b43f9d6610c680621c85af39a8b7dea...v0.1.0

Where 95d5280d0b43f9d6610c680621c85af39a8b7dea is the same as v0.1.0. Why did it change that? I assumed it would only change the label and the second part of the compare (after ...).
Or maybe, was it incorrect to add the unreleased link in the initial CHANGELOG.md?

The action should handle adding the first link by itself. Can you try without adding the unreleased link?


ACS swagger - quick edit pass

To bootstrap the doc improvement, I edited descriptions per style guidelines: Initial capital letter, ending period, capitalize acronyms. Generally pretty good already. I added "summary" tags for short API descriptions, and copied longer descriptions from the existing REST API docs on MSDN (https://msdn.microsoft.com/en-us/library/azure/mt711470.aspx.)
Recommendations for further improvement for you to make:

Consider more info about the response codes rather than "OK", etc.
Consider putting request/response JSON from MSDN topics into "example:" tags in the swagger.
Additional doc guidelines here: https://microsoft.sharepoint.com/teams/azurecontentguidance/Docs/_layouts/15/WopiFrame.aspx?sourcedoc={8315F197-C412-442F-89F1-9842BCD32502}&file=Azure_Ref_Content_Dev_Process_Training_v1_2.pptx&action=default&IsList=1&ListId={5A02932C-2447-4263-994D-0F3F564506AC}&ListItemId=24

Feel free to include me on code reviews going forward to review doc descriptions.

Below is a longer list of guidance, for future reference:
For publication, we require that the descriptions in the Swagger file meet some basic criteria for quality:

There are no empty description fields (including HTTP status code descriptions).
All descriptions start with a capital letter and end in a period.
All operation/method descriptions start with a verb.
All acronyms are fully capitalized; e.g. “SKU” instead of “Sku”, “ID” instead of “Id”, “URL” instead of “Url”. Note: “iot” should be “IoT” in authored prose.
The descriptions provide a reasonable level of detail, including any details that the developer customer should know to be successful; e.g. default values, MIME types, and some explication of body parameter and response objects.
No HTML (or links to Hydra specs) in the descriptions.
Run Grammarly (or other grammar checker, including Word) on the descriptions. (Consider extracting them programmatically for this.)


Rework the CLI completion documentation

Goal: simplify the documentation, leave Homebrew out of it.
Release Playbook

[ ] Rebase against master
[ ] Code review
[ ] Merge into master
[ ] Verify changes at http://site-staging.convox.com
[ ] Promote release on site-production in the convox/production Rack

@ianmalott should we recommend using the custom completion script now?

@soulshake sure, didn't realize we had that. Is it already linked on the site anywhere? Is it somewhat battle-tested?

@ianmalott Not linked yet, not really battle-tested either. We can wait and test it ourselves first for sure.


IOError: [Errno 2] No such file or directory: u'COM11'

When I clone the repo and run python lglaf.py, I get the following error:
Traceback (most recent call last):
  File "lglaf.py", line 404, in <module>
    main()
  File "lglaf.py", line 382, in main
    comm = autodetect_device()
  File "lglaf.py", line 314, in autodetect_device
    return FileCommunication(serial_path)
  File "lglaf.py", line 187, in __init__
    self.f = open(file_path, 'r+b')
IOError: [Errno 2] No such file or directory: u'COM11'

I'm running Python 2.7 on Windows 10 x64, with an LG G5 (H830).

I have not tested this with Windows 10, but in theory it should work if you have drivers installed. Is that the case? (See README)

I have driver v4.2.0 installed. LGUP recognizes it, as well as Windows in My Computer.

Can you try with Python 3?

Almost the same error:
Traceback (most recent call last):
  File "lglaf.py", line 404, in <module>
    main()
  File "lglaf.py", line 382, in main
    comm = autodetect_device()
  File "lglaf.py", line 314, in autodetect_device
    return FileCommunication(serial_path)
  File "lglaf.py", line 185, in __init__
    self.f = open(file_path, 'r+b', buffering=0)
FileNotFoundError: [Errno 2] No such file or directory: 'COM11'

@BehindTheMath  Com port number need <10

@lamloanmobile I tried it with Windows 10 x64 with an LG G3 (d850) manually set to COM2. Same error:
Traceback (most recent call last):
  File "lglaf.py", line 404, in <module>
    main()
  File "lglaf.py", line 382, in main
    comm = autodetect_device()
  File "lglaf.py", line 314, in autodetect_device
    return FileCommunication(serial_path)
  File "lglaf.py", line 185, in __init__
    self.f = open(file_path, 'r+b', buffering=0)
FileNotFoundError: [Errno 2] No such file or directory: 'COM2'

@BehindTheMath  i do it ok LG V20  7.0
F:\LG\lglaf-master>python lglaf.py --unlock  --debug
LGLAF.py: DEBUG: Using serial port: COM9
LGLAF.py: DEBUG: Challenge: 78:e4:25:3a
LGLAF.py: DEBUG: Response: 4d:6f:97:77:55:d3:ed:f4:bc:b2:d1:8f:f2:51:a3:f7
LGLAF.py: DEBUG: Hello done, proceeding with commands
LGLAF.py by Peter Wu (https://lekensteyn.nl/lglaf)
Type a shell command to execute or "exit" to leave.

Hi.
I have the same issue. Windows 10 x64. Both Python 2 or Python 3, same error.
Any suggestion?
Thanks

Fixed this on https://github.com/steadfasterX/lglaf/pull/9

For me I just changed the FileCommunication ctor from:
def __init__(self, file_path):
        super(FileCommunication, self).__init__()
        if sys.version_info[0] >= 3:
            self.f = open(file_path, 'r+b', buffering=0)
        else:
            self.f = open(file_path, 'r+b')

to:
def __init__(self, file_path):
        super(FileCommunication, self).__init__()
        if sys.version_info[0] >= 3:
            self.f = open('\\\\.\\'+file_path, 'r+b', buffering=0)
        else:
            self.f = open('\\\\.\\'+file_path, 'r+b')


feat: add "value" to default scope slot

Hi :wave:
First let me thank you for this library, we are using it on multiple projects and we are really happy about it!

We are working with Algolia Vue InstantSearch and we created a custom range slider.
It looks like this and it works fine:
<template>
  <AisRangeInput v-bind="$attrs">

      <vue-slider
        :min="range.min"
        :max="range.max"
        :value="toValue(currentRefinement, range)"
        lazy
        contained
        tooltip="none"
        @change="(event) => refine({ min: event[0], max: event[1] })"
      />

  </AisRangeInput>
</template>

However, we want to display the current slider's value while dragging and when lazy enabled (which prevent useless and costly refine() calls, to Algolia), like the following screens:

I was able to make it working by:

putting a reference to vue-slider component (slider)
creating a computed sliderValue() which returns getValue() from ref slider
using vue-reactive-refs since ref are not reactive

<template>
  <AisRangeInput v-bind="$attrs">

      <vue-slider
+       ref="slider"
        :min="range.min"
        :max="range.max"
        :value="toValue(currentRefinement, range)"
        lazy
        contained
        tooltip="none"
        @change="(event) => refine({ min: event[0], max: event[1] })"
      />

  </AisRangeInput>
</template>

An other alternative would be to remove lazy property and use a custom debounce function for Algolia's refine, but I don't know if it will works since refine is a scoped props... And I don't want to use a ref, the less you use them, the better you feel :sweat_smile:
I think you will agree with me that both solution are not ideal. In this PR, I propose to send getValue() to the default slot's scope:
<vue-slider lazy>

    Current value: {{ value }}

</vue-slider>

What do you think?
Thank!

I think it is a bit unnecessary, if you need the internal value you can listen to the dragging event.
I think getting the internal value in the slot is too limited, and there is no guarantee whether the user really needs the internal value in this scenario.
Finally, thank you for your use and suggestions, and look forward to your reply.

I'm not sure if you don't know if dragging can get internal values, or if it can't meet your requirements.
If you think you need to get this value in the slot, then I can merge this pr, but I might change the example.

Yea I was using the dragging event, but it's not synchronized when Algolia instantsearch clear refinements with https://www.algolia.com/doc/api-reference/widgets/clear-refinements/vue/

Thank you! 🎉

Has been released to version 3.1.4.


nms get error

when I ran the eval section, it get error Segmentation fault (core dumped) in the nms part. I think it is the .so error. my gcc version is gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) and my cuda is 8.0

This probably means that you have compiled the library using GCC < 4.9, which is ABI incompatible with PyTorch. Maybe you should upgrade your gcc.

hi,我用gcc 4.9.4重新编译了一遍ext下面的东西，运行到nms.py 下面 keep = _nms(boxes, scores, nms_thresh)，还是报错segmentation fault (core dumped),求指导

Do you recompiling ext again after cleaning the build folder with rm -rf build? By the way, my gcc version is gcc version 5.4.0 20160609.

我重新编译了，

OK了

多谢


Use ecoindex reference modules

This is a proposal for pooling ecoindex calculation methods.
We propose to replace the calculation of the ecoindex by several modules dedicated solely to this.
This results from several observations:

The reference data used is obsolete. The ecoindex_reference (https://www.npmjs.com/package/ecoindex_reference) module allows the use of up-to-date data from the community in charge of the ecoindex
The calculation method is not identical to the one used by ecoindex.fr. The ecoindex module (https://www.npmjs.com/package/ecoindex) standardizes and updates the ecoindex calculation methods.
The metrics recovery method is not identical to that of the ecoindex. The ecoindex_puppeteer (https://www.npmjs.com/package/ecoindex_puppeteer) module makes it possible to standardize the method of retrieving the metrics used for the calculation of the ecoindex via a unified user journey.

The proposed modification should not impact your module feature. Normally, it should only move the calculation logic to the community modules

Sorry, deprecated repo


[WIP] Fix historical botmessages to be sent by Notification BoT

For issue https://github.com/zulip/zulip/issues/13583
This isn't properly tested yet, wanted to get feedback on whether this behavior looks right first.
I think potentially the most controversial would the bot-fetching function:
    def get_bot_by_delivery_email(email: str) -> Any:
        result = UserProfile.objects.select_related().filter(delivery_email__iexact=email.strip())
        if not result:
            raise UserProfile.DoesNotExist
        if len(result) == 1:
            return result[0]
        else:
            # If there's more than 1 account matching email, return the one in the system bot realm,
            # or raise exception if doesn't exist.
            return result.get(realm=internal_realm)

The idea is for the function to do its best to find the bot account, and if that fails, we catch the exception and just do nothing for the bot.
Also, I'm uncertain whether we should query by email or delivery_email?

Bonus question: In models.py the function:
def get_user_by_delivery_email(email: str, realm: Realm) -> UserProfile:
    # Fetches users by delivery_email for use in
    # authentication/registration contexts. Do not use for user-facing
    # views (e.g. Zulip API endpoints); for that, you want get_user,
    # both because it does lookup by email (not delivery_email) and
    # because it correctly handles Zulip's support for multiple users
    # with the same email address in different realms.
    return UserProfile.objects.select_related().get(delivery_email__iexact=email.strip(), realm=realm)

The comment seems to imply this function doesn't correctly handle Zulip's support for multiple users with the same email address in different realms, but it looks to me like it handles it the same as get_user? Am I missing something, or is the comment wrong?

The difference between get_user_by_delivery_email and get_user is whether they use delivery_email or email.  There's probably a more clear way to express in the comments that email is supposed to be unique.  It would also be helpful to explain the scenario where two different users have the same delivery email--I'm assuming it's a scenario where a single human wants to create two different Zulip accounts without using a different delivery email.

Added bbcfd03541e058892f6baaa957fbccc1496157a8 to impreove the docs around those functions.  I think part of the docstring had been copied from get_user at a time when there was a lot more use of get_user_profile_by_email in a way that's confusing.

@timabbott Pushed with the function for grabbing bots changed and tested manually, seems to work. We don't handle Huddles with these bots though, is that something we can ignore and let them get deleted when we .delete() the bots? Fixing them up would be more complicated though...

Well, they won't get actually get deleted, they'll be put in some pretty weird incosistent state. I'll try thinking of a decent fix :thinking: This may require adjusting Subscription objects.

Yeah, I checked and zulipchat.com has 0 huddles involving these users; and it is the main place they would have appeared given that these settings were disabled by default.
That said, if there were any Huddles involving these users, I think the current code would not catch them, because deleting the bot user doesn't delete its recipient object due to the foreign key structure.
So I think we probably will want to adjust this to add:

A to_delete_subs = Subscription.objects.filter(recipient__type=Recipient.HUDDLE, user_profile=user_profile) and delete the Huddle Recipient object (which will in turn delete all associated messages and Subscription objects)
Deleting the Recipient object for the bot user.

As a sidenote, while investigating this in the zulipchat.com database, I've noticed we have a bit of a related problem that when we fully delete a realm with Realm.objects.delete(string_id="foo"), e.g. just before doing a data import when the realm was registered as a placeholder, we end up leaking Recipient objects for all the deletes users/streams/etc.
The fix for that is probably a change to introduce a do_delete_realm function that doesn't leak Recipient objects which we can use for that use case instead, complete with a migration to remove any such leaked objects, in a follow-up commit.

I have been working on an attempt for "fully correct" dealing with huddles, which ended up as a separate function so that it could be unit tested and once complete, could be nearly copy-pasted into the migration.
So I pushed a commit with it to show its current state and see if we want to go with something like this (testing isn't finished yet though) or just the much simpler approach of deleting things.
About the delete approach:

A to_delete_subs = Subscription.objects.filter(recipient__type=Recipient.HUDDLE, user_profile=user_profile) and delete the Huddle Recipient object (which will in turn delete all associated messages and Subscription objects)
Deleting the Recipient object for the bot user.

I think we should delete the Huddle object as well?
Finally, I think at least this from the "fully correct" attempt  should be ported?
    message_ids_already_tied_to_new_user = UserMessage.objects.filter(user_profile=new_user).values_list('message_id', flat=True)
    UserMessage.objects.exclude(message__in=message_ids_already_tied_to_new_user).filter(user_profile=user).update(user_profile=new_user)
    UserMessage.objects.filter(message_id__in=message_ids_already_tied_to_new_user, user_profile=user).delete()

to have UserMessages table in a state consistent with how we're altering Message?

Pushed again with the leaking bot Recipient fixed. What we're still missing is the decision on handling Huddles - whether to go for the simple approach and delete or try to get the "correct" way from the [wip] PR tested and working.

I think we should delete the Huddle object as well?

Yeah, that seems right.

to have UserMessages table in a state consistent with how we're altering Message?

I think the cross-realm bots in question here were never eligible to have UserMessage rows associated with them, so this is probably unnecessary.

Okay, pushed with the changes to delete Huddles and Recipients.
Tested manually, by creating messages as hamlet and othello and then running this script to make those messages as if they came from feedback/newuser bots using the django shell script below, and then applying the migration and verifying manually that things look good.
Probably nobody should waste time figuring out this script that I used to make othello and hamlet messages into bot messages, but for reference:
from zerver.lib.actions import do_create_user

RECIPIENT_HUDDLE = 3

def replace_messages_user(original_user: Any, new_user: Any) -> None:
    personal_messages_to_bot = Message.objects.filter(recipient=original_user.recipient)
    personal_messages_to_bot.update(recipient=new_user.recipient)

    bot_huddle_subs = Subscription.objects.filter(user_profile_id=original_user.id,
                                                    recipient__type=RECIPIENT_HUDDLE).select_related('recipient')
    huddle_recipients_with_bot = [sub.recipient for sub in bot_huddle_subs]

    for huddle_recipient in huddle_recipients_with_bot:
        huddle_subs = Subscription.objects.filter(recipient_id=huddle_recipient.id)
        huddle_member_ids = set([sub.user_profile_id for sub in huddle_subs])
        huddle_member_ids.remove(original_user.id)

        fixed_huddle = get_huddle(list(huddle_member_ids | {new_user.id}))
        fixed_huddle_recipient = Recipient.objects.get(type=RECIPIENT_HUDDLE, type_id=fixed_huddle.id)
        Message.objects.filter(recipient_id=huddle_recipient.id).update(recipient_id=fixed_huddle_recipient.id)

        Huddle.objects.get(id=huddle_recipient.type_id).delete()
        huddle_recipient.delete()

    all_messages_from_bot = Message.objects.filter(sender=original_user)
    all_messages_from_bot.update(sender=new_user)

    UserMessage.objects.filter(user_profile=original_user).update(user_profile=new_user)

    original_user.delete()

internal_realm = get_realm("zulipinternal")
<EMAIL_ADDRESS>None, internal_realm, "Feedback Bot", "feedback",
               bot_type=UserProfile.DEFAULT_BOT)
<EMAIL_ADDRESS>None, internal_realm, "Newuser Bot", "newuser",
               bot_type=UserProfile.DEFAULT_BOT)

new_user_bot =<EMAIL_ADDRESS>feedback_bot =<EMAIL_ADDRESS>
zulip_realm = get_realm("zulip")
hamlet =<EMAIL_ADDRESS>zulip_realm)
othello =<EMAIL_ADDRESS>zulip_realm)

replace_messages_user(hamlet, new_user_bot)
replace_messages_user(othello, feedback_bot)

from zerver.apps import flush_cache
flush_cache(None)

Merged as 3b582931af883f5c7c3ac9478279117eecacf353, thanks @mateuszmandera!  I added a block comment explaining the migration and also a proper commit message before merging.
I think we should reuse what we've learned from this PR to implement #10533 while it's still at elast somewhat fresh.


Can't find Henson class

in my gradle
compile 'com.f2prateek.dart:henson:2.0.0'
provided 'com.f2prateek.dart:henson-processor:2.0.0'

but can't find Henson in my project.
I don't know why..

me too

Within your Another Activity, you should remove the @HensonNavigable annotation, then you will see the Henson object

@soaringEveryday
Tks ,I will try it again.
if this activity need to get intent and startactivity.what should i do .
@HensonNavigable  can't use with @InjectExtra
才发现也是中国人...
如果我这个activity 即需要接收前面传过来的intent 也需要去启动别的activity.
这时我这个activity同时用到了@HensonNavigable  注解和@InjectExtra
该怎么办.

@soaringEveryday
我在别的activity中没有使用@HensonNavigable ，也无法找到Henson.class
然后我尝试在别的activity上加@HensonNavigable ，然后在主activity中也无法找到

Hi @HappyImp ,
Please have a look at the following issue, you might find the solution there: https://github.com/f2prateek/dart/issues/107
Regarding @HensonNavigable, you only need it if you want to navigate to an activity with no @InjectExtras. By default, gotoXXX is only generated for activities with @InjectExtra.

@HappyImp
我的理解是Henson找不到这个类是因为编译出错，编译出错的原因就是@HensonNavigable 和@InjectExtra冲突

This issue is closed. Please @soaringEveryday and @HappyImp , GH is generally used in english as its supposed to be more universal than any other language. we would appreciate your next comments to be in english too.


Support for locations in the launch_template method

Environment details

OS type and version:
Python version: Python 3.8.11
pip version: pip 21.0.1
google-cloud-dataflow-client version: Version: 0.1.2

Steps to reproduce

If I specify asia-northeast1 as the location in launch_template, the error occurs.

Code example
dataflow.TemplatesServiceClient().launch_template(
    {
        "project_id": "project"
        "location": "asia-northeast1",
        "gcs_path": "gs://",
        "launch_parameters": LaunchTemplateParameters(
            {
                "job_name": "job_name",
                "parameters": {
                  "foo": "bar"
                },
                "environment": {
                  "service_account_email": "service_account_email",
                },
            }
        ),
    }
)

Stack trace
Task 'dataflow_dag_run': Exception encountered during task execution!
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/google/api_core/grpc_helpers.py", line 67, in error_remapped_callable
    return callable_(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/grpc/_channel.py", line 946, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/usr/local/lib/python3.8/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking
    raise _InactiveRpcError(state)
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
	status = StatusCode.FAILED_PRECONDITION
	details = "(1839ef6e6abbd74d): The workflow could not be created, since it was sent to an invalid regional endpoint (asia-northeast1). Please resubmit to a valid Cloud Dataflow regional endpoint. The list of Cloud Dataflow regional endpoints is at https://cloud.google.com/dataflow/docs/concepts/regional-endpoints."
	debug_error_string = "{"created":"@1629880821.759668305","description":"Error received from peer ipv4:<IP_ADDRESS>:443","file":"src/core/lib/surface/call.cc","file_line":1069,"grpc_message":"(1839ef6e6abbd74d): The workflow could not be created, since it was sent to an invalid regional endpoint (asia-northeast1). Please resubmit to a valid Cloud Dataflow regional endpoint. The list of Cloud Dataflow regional endpoints is at https://cloud.google.com/dataflow/docs/concepts/regional-endpoints.","grpc_status":9}"

If you want to specify Locations, you will likely need to use an API that supports Locations.
https://cloud.google.com/dataflow/docs/reference/rest/#rest-resource:-v1b3.projects.locations.templates

Bump, I’m dealing with the same problem

We've identified similar issues in other repos and have escalated this to the API service team since it's not a language-specific library issue. Here are the related issues:

https://github.com/googleapis/python-dataflow-client/issues/31: ListJobsRequest is not using the 'location' filter #31
https://github.com/googleapis/python-dataflow-client/issues/25: Support for locations in the launch_template method #25
https://github.com/googleapis/nodejs-dataflow/issues/19: The location option of launchFlexTemplate is not working #19
https://github.com/googleapis/java-dataflow/issues/64: Dataflow: The location field of LaunchFlexTemplateRequest building is not working #64
https://github.com/googleapis/google-cloud-dotnet/issues/7038: ListJobsAsync() returns only us-central1 jobs #7038 (context from issue is that the location parameter isn't working)

Marking this as a P1 bug w/ external label.

It's been abandoned for about two months now, when will it be addressed?

I couldn't find an existing issue in the Google Issue Tracker so I created one here. I suggest starring this issue to anyone else that runs across this problem, hopefully it will get some attention from Google soon.

Hi guys meanwhile you could use the google-api-python-client.
`from googleapiclient.discovery import build
from google.oauth2 import service_account
import os
key_path = os.getenv('GOOGLE_APPLICATION_CREDENTIALS')
credentials = service_account.Credentials.from_service_account_file(
key_path, scopes=["https://www.googleapis.com/auth/cloud-platform"],
)
service = build('dataflow', 'v1b3',credentials=credentials)
data = {
"projectId":config["project"],
"location":"us-east1",
"body":{
"environment":{  "tempLocation":"gs://kokoro-rd-2-poc/kokoro/tmp/" },
"gcsPath":"gs://kokoro-rd-2-poc/kokoro/templates/2bq/template-kokoro-flag",
"jobName":'python-cloud-function-test-'+str(uuid.uuid4())[:8],
"parameters":{
"time": "6 hours",
}
}
}
service.projects().locations().templates().create(**data).execute()
`
Just a solution to keep going until someone fix it.

@jcarrizobrass 's answer is good but I need to work a bit on performances and google-api-python-client is a 50MB library...
@meredithslota The team responsible (https://issuetracker.google.com/issues/208105329) said that they currently have no plan to fix it. The current workaround consist in using another API endpoint which is not exposed by many of the Google client libraries:
v1b3/projects/{projectId}/locations/{location}/templates:launch
https://cloud.google.com/dataflow/docs/reference/rest/v1b3/projects.locations.templates/launch
additionally to the current:
/v1b3/projects/{projectId}/templates:launch
https://cloud.google.com/dataflow/docs/reference/rest/v1b3/projects.templates/launch
As a fix, could this endpoint be exposed? Currently my fix is to call v1b3/projects/{projectId}/locations/{location}/templates:launch API directly and it would be great if I could throw away this code to use your pretty-looking and lightweight client.

For those interested in a quick copy-paste solution, here is a workaround without using the 50MB google-api-python-client (you can skip the Retry part if you don't have, like me, a google-cloud-storage dependency).
API doc for parameters: https://cloud.google.com/dataflow/docs/reference/rest/v1b3/projects.locations.templates/launch
Calling from a Cloud function with the dependencies:
google-cloud-storage==2.1.0
google-cloud-dataflow-client==0.3.1
import google
from google.cloud.storage.retry import DEFAULT_RETRY
from google.cloud import dataflow_v1beta3
from google.auth.transport.requests import AuthorizedSession

dataflow_client = dataflow_v1beta3.TemplatesServiceClient()
credentials, _ = google.auth.default()
http = AuthorizedSession(credentials)
http.mount("https://", HTTPAdapter(max_retries=DEFAULT_RETRY))
http.post(
            f"https://{dataflow_client.DEFAULT_ENDPOINT}/v1b3/projects/{project_id}/locations/{location}/templates:launch",
            params={"gcsPath": dataflow_template_path},
            json=body,
        )

The fix has been merged on PR https://github.com/googleapis/gapic-generator-python/pull/1284 and it should be available on release 0.65.2 or later.
I'm closing this, but please re-open if the issue still persists.


it stop working with this error

Traceback (most recent call last):
  File "/home/kira/.local/bin/gcalcli", line 5, in <module>
    from gcalcli.cli import main
  File "/home/kira/.local/lib/python3.8/site-packages/gcalcli/cli.py", line 30, in <module>
    from gcalcli.gcal import GoogleCalendarInterface
  File "/home/kira/.local/lib/python3.8/site-packages/gcalcli/gcal.py", line 31, in <module>
    from apiclient.discovery import build
  File "/home/kira/.local/lib/python3.8/site-packages/apiclient/__init__.py", line 3, in <module>
    from googleapiclient import channel, discovery, errors, http, mimeparse, model
  File "/home/kira/.local/lib/python3.8/site-packages/googleapiclient/discovery.py", line 43, in <module>
    from google.auth.exceptions import MutualTLSChannelError
ImportError: cannot import name 'MutualTLSChannelError' from 'google.auth.exceptions' (/usr/lib/python3/dist-packages/google/auth/exceptions.py)

for some unknown reason it started to work now


fix: correct license tool and license header

What this PR does / why we need it:
Add your description
Which issue(s) this PR is related to (optional, link to 3rd issue(s)):
Fixes #
Reference to #

Special notes for your reviewer:
/cc @whalecold

Release note:

NONE

/cherrypick release-0.5

/lgtm

/cherrypick release-0.5

/cherrypick release-0.5


Error when running dotnet ef database update

The application to execute does not exist: 'C:\Users\gojan.dotnet\tools.store\dotnet-ef\2.2.4-servicing-10062\dotnet-ef\2.2.4-servicing-10062\tools\netcoreapp2.2\any\dotnet-ef.dll'.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 00961883-36eb-f736-b906-73d4c35e69b0
Version Independent ID: 3a2fd493-9682-eedf-fad1-571b9391cd46
Content: ASP.NET Core with SQL Database - Azure App Service
Content Source: articles/app-service/app-service-web-tutorial-dotnetcore-sqldb.md
Service: app-service-web
GitHub Login: @cephalin
Microsoft Alias: cephalin

The issue was because I have .NET Core 3 preview installed. uninstalling the current dotnet-ef tool and installing the preview version as suggested here solved the issue.

@gojanpaolo We are happy to hear you were able to resolve the issue. Please reach out if you have any issues in the future.


Badge Invalid hook call (Nextjs)

Hi there, looks like the badge component is having rendering issues when used by a Next.js 13  server component.
error - TypeError: Cannot read properties of null (reading 'useState')
Warning: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app

Repro
import {  Badge } from '@tremor/react';
import { SignalIcon } from '@heroicons/react/24/outline';

export const dynamic = 'force-dynamic';

export default async function IndexPage() {
  return (
    <main className="p-4 md:p-10 mx-auto max-w-7xl">
      <Card className="mt-6">
        <List>
          {repos.map((repo) => (
            <ListItem key={repo.id}>
              <Link href={repo.url} target="_blank">
                <Flex>
                   <Badge>connected</Badge>
                </Flex>
              </Link>
            </ListItem>
          ))}
        </List>
      </Card>
    </main>
  );
}

hey @danieldelcore what Next version are you using and do you use the app dir?

@danieldelcore, this behaviour is expected because Badge is using a Tooltip which relies on a state. We recommend using the "use client" directive in Next13.

Oh of course, my bad!


BREAKING CHANGE: SqlServerNetwork: Add the possibility to use ListenAll and custom IPs

Pull Request (PR) description
Add the posibility to manage the TCP network with all aspects, including ListenAll and the custom IPs.
This Pull Request (PR) fixes the following issues:
Fixes #339
Task list:

[X] Change details added to Unreleased section of CHANGELOG.md?
[X] Added/updated documentation, comment-based help and descriptions in .schema.mof files where appropriate?
[X] Examples appropriately updated?
[X] New/changed code adheres to Style Guidelines?
[ ] Unit and (optional) Integration tests created/updated where possible?

This change is

Codecov Report

Merging #1045 into dev will decrease coverage by <1%.
The diff coverage is 64%.

@@         Coverage Diff          @@
##            dev   #1045   +/-   ##
====================================
- Coverage    97%     97%   -1%
====================================
  Files        32      32
  Lines      3925    3954   +29
  Branches      0       2    +2
====================================
+ Hits       3839    3851   +12
- Misses       86     101   +15
- Partials      0       2    +2

Hi @johlju
Yes, because you will never know on which IP address group which IP address IPv4/IPv6 is configured. Normally, when I want to setup an SQL server, I want to control on which IP the SQL server is listening. The IP group is just a management container. With my PR, I will automatically search for the valid IP group where the IP is configured.

@claudiospizzi But what if the IP address is not configured before, or the IP address in the configuration is not listed in any of the IP address groups? Can that happen?

@johlju You are right, this can happen if the IP address was not already configured on the system during the SQL setup. Maybe, in this case, we just add an IP address group with the target IP? Is there a supported way of adding IP address groups? I can't find any.

@claudiospizzi I will get back to your question as soon as I have time. It has been a long days at work recently. I haven't forgot. 😄

@claudiospizzi I will focus on this PR this weekend. It has been a hectic time at the day job recently.

@claudiospizzi went thru and tried to wrap my head around this. I think we need to make a design choice here. Please let me know what you think about the below.
IP Address groups are added depending on available network cards, see Adding or Removing IP Addresses. In my lab server I only have IP1-IP6 and IPAll. But in a test server with a cluster I have IP1-IP8 and IPAll.
So we cannot support adding and removing IP address groups, but I think we should support managing IP address groups with the SqlServerNetwork resource. For that reason I see a need for a IpAddressGroup parameter that is mentioned in the https://github.com/PowerShell/SqlServerDsc/issues/339#issuecomment-298329440. The user can then choose which group should have which IP address, and if it should be enabled or not. This resource will most likely be used to change the IP addresses to different once that wasn't used during installation, or configure additional ones when network configuration changes.
If possible it would be good to be able to support all these properties (but that could be another PR).

Also, I think the property ListenAll need to be in a separate resource (together with KeepAlive and Enabled which is protocol properties). Reason for this that these could otherwise be set differently if resource could be used multiple times in a configuration (depending on the schema after above change).
Maybe we should change this resource SqlServerNetwork to just handle protocol properties for each protocol 'Named Pipes', 'Shared Memory' and 'TCP/IP'. Another resource SqlServerNetworkTcp' could handle managing IP address groups. The names SqlServerNetworkandSqlServerNetworkTcpdoesn't seem appropriate if we do this, maybeSqlServerProtocoland 'SqlServerProtocolTcp' would be more appropriate? We could create those side-by-side and eventually make the oldSqlServerNetwork` resource obsolete.
PS > $managedComputerObject.ServerInstances['SQL2017'].ServerProtocols

Parent              : Microsoft.SqlServer.Management.Smo.Wmi.ServerInstance
DisplayName         : Named Pipes
HasMultiIPAddresses : False
IsEnabled           : False
IPAddresses         : {}
ProtocolProperties  : {Enabled, PipeName}
Urn                 : ManagedComputer[@Name='SQLTEST']/ServerInstance[@Name='SQL2017']/ServerProtocol[@Name='Np']
Name                : Np
Properties          : {Name=DisplayName/Type=System.String/Writable=False/Value=Named Pipes, Name=HasMultiIPAddresses/T
                      ype=System.Boolean/Writable=False/Value=False, Name=IsEnabled/Type=System.Boolean/Writable=True/V
                      alue=False}
UserData            :
State               : Existing

Parent              : Microsoft.SqlServer.Management.Smo.Wmi.ServerInstance
DisplayName         : Shared Memory
HasMultiIPAddresses : False
IsEnabled           : True
IPAddresses         : {}
ProtocolProperties  : {Enabled}
Urn                 : ManagedComputer[@Name='SQLTEST']/ServerInstance[@Name='SQL2017']/ServerProtocol[@Name='Sm']
Name                : Sm
Properties          : {Name=DisplayName/Type=System.String/Writable=False/Value=Shared Memory, Name=HasMultiIPAddresses
                      /Type=System.Boolean/Writable=False/Value=False, Name=IsEnabled/Type=System.Boolean/Writable=True
                      /Value=True}
UserData            :
State               : Existing

Parent              : Microsoft.SqlServer.Management.Smo.Wmi.ServerInstance
DisplayName         : TCP/IP
HasMultiIPAddresses : True
IsEnabled           : True
IPAddresses         : {IP1, IP2, IP3, IP4...}
ProtocolProperties  : {Enabled, KeepAlive, ListenOnAllIPs}
Urn                 : ManagedComputer[@Name='SQLTEST']/ServerInstance[@Name='SQL2017']/ServerProtocol[@Name='Tcp']
Name                : Tcp
Properties          : {Name=DisplayName/Type=System.String/Writable=False/Value=TCP/IP, Name=HasMultiIPAddresses/Type=S
                      ystem.Boolean/Writable=False/Value=True, Name=IsEnabled/Type=System.Boolean/Writable=True/Value=T
                      rue}
UserData            :
State               : Existing

Hi @johlju
I agree with you, a redesign of the resource and spliting it up into two new resources is a good idea. The two resources will then be simpler and therefore easier to maintain. Creating the new resources side-by-side and deprecate the old resource is fine with me. I've used your proposal of the new resource name SqlServerProtocol for the following draft of the two new resources:
[ClassVersion("<IP_ADDRESS>"), FriendlyName("SqlServerProtocol")]
class MSFT_SqlServerProtocol : OMI_BaseResource
{
    [Write, Description("The host name of the SQL Server to be configured. Default value is $env:COMPUTERNAME.")] String ServerName;
    [Key, Description("The name of the SQLf instance to be configured.")] String InstanceName;
    [Key, Description("The name of protocol to be configured."), ValueMap{"SharedMemory", "NamedPipes", "TcpIp"}, Values{"SharedMemory", "NamedPipes", "TcpIp"}] String ProtocolName;
    [Write, Description("Enables or disables the protocol.")] Boolean Enabled;
    [Write, Description("Specifies to listen on all IPs. Only used for the TCP/IP protocol.")] Boolean ListenOnAllIPs;
    [Write, Description("Specifies the keep alive duration. Only used for the TCP/IP protocol.")] UInt16 KeepAlive;
    [Write, Description("Specifies the named pipe name. Only used for the Named Pipes protocol.")] String PipeName;
    [Write, Description("If set to $true then SQL Server and dependent services will be restarted if a change to the configuration is made. The default value is $false.")] Boolean RestartService;
    [Write, Description("Timeout value for restarting the SQL Server services. The default value is 120 seconds.")] UInt16 RestartTimeout;
}

[ClassVersion("<IP_ADDRESS>"), FriendlyName("SqlServerProtocolTcpIp")]
class MSFT_SqlServerProtocolTcpIp : OMI_BaseResource
{
    [Write, Description("The host name of the SQL Server to be configured. Default value is $env:COMPUTERNAME.")] String ServerName;
    [Key, Description("The name of the SQLf instance to be configured.")] String InstanceName;
    [Key, Description("The name of the IP address group in the TCP/IP protocol.")] String IpAddressGroup;
    [Write, Description("Enables or disables the IP address. Only used if the IP address group is not set to 'IPAll'. If not specified, the existing value will not be changed.")] Boolean Enabled;
    [Write, Description("The IP address. Only used if the IP address group is not set to 'IPAll'. If not specified, the existing value will not be changed.")] String IPAddress;
    [Write, Description("Specifies whether the SQL Server instance should use a dynamic port. Value will be ignored if TcpPort is set to a non-empty string. If not specified, the existing value will not be changed.")] Boolean TcpDynamicPort;
    [Write, Description("The TCP port(s) that SQL Server should be listening on. If the IP address should listen on more than one port, list all ports separated with a comma ('1433,1500,1501'). If not specified, the existing value will not be changed.")] String TcpPort;
    [Write, Description("If set to $true then SQL Server and dependent services will be restarted if a change to the configuration is made. The default value is $false.")] Boolean RestartService;
    [Write, Description("Timeout value for restarting the SQL Server services. The default value is 120 seconds.")] UInt16 RestartTimeout;
}

I hope this draft of the resource schema should give an idea, how we can use the new resource in a configuration in the future. What do you think about that?

@claudiospizzi Sorry I missed this one! I labeled it as 'needs review' so will get back to this next week.

@claudiospizzi I'm good with your proposal of two new resource! Could you create two new issues for them, so we can close them individually? Do you want to run with this?

Currently I don't have time to get onto this. Maybe in July.

I have added issue https://github.com/PowerShell/SqlServerDsc/issues/1377 and issue https://github.com/PowerShell/SqlServerDsc/issues/1378 to track the redesign. I'm closing this PR at this time.


Fix duplicate keys in ChatResponseMetadata for OllamaApi.ChatResponse

Resolve duplicate metadata keys when creating ChatResponseMetadata from OllamaApi.ChatResponse.

eval-duration and eval-count were duplicated.
so they have been updated to prompt-eval-duration and prompt-eval-count to avoid overwrite.
AS-IS

TO-BE

Fix assertion for ModelManagementOptions .

AS-IS
Incorrect object was being asserted. observationRegistry
So, NPE occurs at line 105 where OllamaModelManager is being created.

TO-BE
Replace observationRegistry with ModelManagementOptions
Proper exception handling and error messages for modelManagementOptions.

@ilayaperumalg
Hi, I have revised the content of the PR comment in detail and added test code to verify the changes.
Thanks.

@jitokim Thanks for the PR! The changes look good to me.


Fix hanging when a future wakes itself

It's possible that either the future wakes itself or the something requests to be awoken while the future is being polled. This PR adds a bool to the waker state to track whether that happened, and will immediately unpark the executor if it did.
Also add bors for nicer merging.

bors r+

bors cancel

bors r+


scrapping with exact name and city

Hello, thank you for you efforts ! It's a great job what you've done :)
I had some issues while trying to scrape information using "exact_name" + "city" (below the debug screenshot). It seems that it works only when maps is showing a list of results. Do you have an idea how to fix this ?
thank you again !

Yes, it can only scrape list. At this point of time, I'm not planning to add this feature.
However, should more users express this problem, I will surely reconsider my decision.
Thank you for your understanding.
Chetan

Fixed in latest Version


Adding text message option to phone prop

Thanks for the work on this. I've added an option to launch text messages with the phone prop and thought it might be helpful for others.

Awesome! I'll publish to npm shortly


[BugFix] WasmPlugin: Call forwardToEnvoy in the same thread

This PR prevent using forwardToEnvoy function in multiple threads.
Potentially, calling from multiple threads may cause blocking the loop in handleUpstreamResponse.
In details, as commented in https://github.com/grpc/grpc-go/blob/e41f868588c99493b35169e258a11b2ce128e139/stream.go#L1416-L1418, we should not call SendMsg, which is called by forwardToEnvoy at last, in multiple threads.
This fixes the second/third issues in https://github.com/istio/istio/issues/39063 .

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

Test name
Commit
Details
Required
Rerun command

release-notes_istio
cd2f9507733f6d553070afcf3bfe7d8847d5fad7
link
true
/test release-notes_istio

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

/test release-notes_istio

In response to a cherrypick label: new pull request created: #39176

In response to a cherrypick label: new pull request created: #39177

In response to a cherrypick label: new pull request created: #39178


Google geocoder not using most specific value for neighborhood.

Example:
            {                "long_name" : "Midtown",                "short_name" : "Midtown",                "types" : [ "neighborhood", "political" ]             },             {                "long_name" : "Manhattan",                "short_name" : "Manhattan",                "types" : [ "sublocality_level_1", "sublocality", "political" ]             },
The geocoder will select "Manhattan" as the value for neighborhood when the more specific candidate value "Midtown" is available.

#167

Should be fixed now.


Tagged version 0.1.0 doesn't support Catalyst ;) But master does.

Seems something went wrong with the tagging.
Not a big deal, I have the Swift Package pointing at master, but I thought you'd want to know, in case you haven't noticed.

Good catch! Fixed the changelog here 18c8c7f


QUARKUS - USING THE REDIS CLIENT

Description
This guide demonstrates how your Quarkus application can connect to a Redis server using the Redis Client extension.
Related links

https://quarkus.io/guides/redis
https://rheb.hatenablog.com/entry/quarkus1.7.0.Final

Not enough docs especially pub/sub examples. try later


Recommendation Algorithms

[x] Random
[ ] RedThread
[ ] PageRank
[ ] KGTK

Instead of just PPR, maybe try to parameterize the centrality measure to allow use of degree/eigenvector/Katz/etc as well


Add Latest Media

[x] Matt on Bitcoin Audible - https://dcs.megaphone.fm/CSN1927053229.mp3?key=286a0f8c65f04236628c5747acd43df3
[x] Lex on Once Bitten - https://anchor.fm/daniel-prince6/episodes/Grassfedbitcoin---Sovereign-Computing-with-start9labs--299-e1ractb
[x] Matt on Simply Bitcoin - https://www.youtube.com/watch?v=p4FbsM7ZATI
[x] Matt on Talking in Bits - https://www.youtube.com/watch?v=wtqNLkeW7A4
[x] Matt and Aiden on Cafe Bitcoin - https://anchor.fm/thecafebitcoinpodcast/episodes/Sovereign-Computing--Decentralizing-the-Internet-and-Owning-your-Data-with-Matt-Hill-and-Aiden-from-Start-9---November-30th--2022-e1ri6ij
[x] Matt on Closing the Loop - https://www.seetee.io/podcast/s3e9/matt-hill-the-era-of-sovereign-computing-is-here/
[x] Dread on Bullish Bit - https://www.youtube.com/watch?v=Ct0sS9UmjG0&t=0s

Got another one - Dread on Bitcoin, Peace, Music - https://www.youtube.com/watch?v=00cdk9kAhdI


Allow a prepared Statement to be called like a function

I'm aware that this maybe doesn't go entirely hand-in-hand with the intent of this library, but here's my pitch:
I've noticed that, in my own workflow, I often construct a Statement ahead of time and then call execute on it several times later.
In a lot of ways, the way I treat the Statement is how I might treat a function, except I can't call it directly.
I personally think it would be Julia-idiomatic for a Statement to be a functor that can be called, e.g.:
stmt = LibPQ.prepare("... \$1;")
data = [["hello"], ["world"]]
map(stmt, data)

I have also added tests to make sure that the current Statement tests also yield the same results using the functor call, and I have added some degree of documentation.

A second commit has been made after I realized that it's even more idiomatic to allow the following:
stmt = LibPQ.prepare("... \$1 ... \$2;")
stmt("hello", "world")

The previous commit required users to do
stmt = LibPQ.prepare("... \$1 ... \$2;")
stmt(["hello", "world"])

The second syntax is still allowed and viable in this 2nd commit, but the first syntax also works now.

There is one minor API flaw here if stmt actually expects exactly 1 vector or something as an argument; in that case, the user will have to wrap this vector in an additional vector or tuple in order to get the desired result (otherwise, Postgres will error).

This seems problematic. How about just removing the vector form, as the same effect can be had with splatting:
stmt = LibPQ.prepare("... \$1 ... \$2;")
stmt("hello", "world")

args = ["hello", "world"]
stmt(args...)

Good point. Will adjust the pull request at some point in the near future along these lines.


shuffle some things around, add 'profiles' command to binary

just shuffled some things around, moved the executable into "bin", moved some scripts to "index.js" where it made sense, also added a "description" field to profiles and added a command to list the available commands.

I can tell by the pixels, this commit is nice.


Core: guard against null & undefined values in required method

Ref #2049

I don't think there is a way to test it without using the normalizer. But the normalizer will not return undefined or null until #2054 was merged.
I will update the tests of the other PR and merge it and then update this one to use the normalizer.
For now, I added a description to the commit describing the needs for this fix.

Merged the other pr, we can add the tests here

We are good to go.

I'm going to merge this for now.
Thanks for the review and for merging the other PR.

Awesome that our normalizer layer also turned out to be a good value-mocking test utility 😸

Yes, and also I see (from Stackoverflow and here) that a lot of folks are using it and found it useful too.
Thanks :)


Algorithmic Square Randomizer

Hi, my name is Shaurya. I am 14 years old and in 8th grade, this is my submission. My dad suggested this to me, so I gave it a try. I've dabbled in lot's of different programming languages and have been using scratch since I was 8-9. This looked very interesting so I tried to come up with something that would change each time it ran. However, my project does not meet the criteria, as I intended it such. Before pouring my time and effort, I would like to know any suggestion, or rather feedback you have for me to improve/enhance my project to where it is deemed as fulfilling the criteria. I have some idea for the future of my project, I have listed them in the project file itself. Please take a look, write me back some feedback and or suggestions. This way I can know for certain whether my project is worth pursing, or if I should drop it and start another project with a differing objective.

I think this is a great start. Maybe you could add more projections of polygons that work the same way but don't overlap on the front face. Then fill the image this way. Does that make sense?

I’ve had a week full of sports and activities, and got around to finishing this over the weekend. I spent a couple hours and took it from one square, to as many as someone would want. I experimented with having 3 squares initially in random positions, then converted it into a scalable function. This allowed me to make more projections, and fill the screen without making it cluttered. I then wrapped it in a loop so that I can call upon the function as many times as wanted (i.e., by tweaking the cpx range) to create a cool effect.  Here are some screenshots of the latest runs, tell me what you think

Can you make it so the shapes don't overlap with each other. Trying using the cut and cover functions.

I'm going to close this for housekeeping but feel free to resubmit when you are ready in the future.


Terms

Description
@thestarsahil
[Feature] : Design Terms Page #643
Please include a summary of the change and which issue is fixed. List any dependencies that are required for this change.
Fixes #643 (issue_no)
Replace issue_no with the issue number which is fixed in this PR
Screenshots

Checklist

[x] Tests have been added or updated to cover the changes
[x] Documentation has been updated to reflect the changes
[x] Code follows the established coding style guidelines
[x] All tests are passing

@thestarsahil
i created new pr with fetched all upstream
now you can check this


Envoy Dynamic Proxy with ExtAuthZ filter to authorize requests

I want to build dynamic forward proxy configuration that authorizes request with ExtAuthZ XDS service before it is actually forwarded by dynamic forward proxy. If I got it right, I can achieve this by having a chain of http filters attached to  :

ExtAuthz to Authorize requests
If request is authorized, use Dynamic Forward Proxy to actually forward it

Here's a draft of configuration. Please let me know if the concept is right or something needs to be adjusted.
  access_log_path: %WD_HOME%/logs/admin_access.log
  address:
    socket_address: { address: <IP_ADDRESS>, port_value: %ADMIN_PORT% }

static_resources:
  listeners:
    - name: exposed_admin_listener
      address:
        socket_address: { address: <IP_ADDRESS>, port_value: %EXPOSED_ADMIN_PORT% }
      filter_chains:
        - filters:
            - name: envoy.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
                stat_prefix: ingress_http
                codec_type: AUTO
                access_log:
                  - name: envoy.file_access_log
                    typed_config:
                      "@type": type.googleapis.com/envoy.config.accesslog.v2.FileAccessLog
                      path: %WD_HOME%/logs/exposed_admin_access.log
                route_config:
                  name: envoy_admin
                  virtual_hosts:
                    - name: envoy_admin
                      domains: ["*"]
                      routes:
                        - match: { prefix: "/app_info/metrics" }
                          route: { cluster: exposed_admin, prefix_rewrite: "/stats/prometheus" }
                http_filters:
    - name: envoy.router
      address:
        socket_address:
          address: <IP_ADDRESS>
          port_value: 10324
      filter_chains:
        - filters:
            - name: envoy.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
                stat_prefix: ingress_http
                route_config:
                  name: local_route
                  virtual_hosts:
                    - name: local_service
                      domains: ["*"]
                      routes:
                        - match:
                            prefix: "/"
                          route:
                            cluster: dynamic_forward_proxy_cluster
                          per_filter_config:
                            envoy.filters.http.dynamic_forward_proxy:
                              auto_host_rewrite_header: "X-Host-Port"
                        - match:
                            prefix: "/"
                          route:
                            cluster: dynamic_forward_proxy_cluster
                http_filters:
                  # 1. ExtAuthz to Authorize requests
                  - name: envoy.ext_authz
                    typed_config:
                      "@type": type.googleapis.com/envoy.config.filter.http.ext_authz.v2.ExtAuthz
                      grpc_service:
                        envoy_grpc:
                          cluster_name: xds_cluster
                        timeout: 5s
                  # 2. If request is authorized, use Dynamic Forward Proxy to actually forward it
                  - name: envoy.filters.http.dynamic_forward_proxy
                    typed_config:
                      "@type": type.googleapis.com/envoy.config.filter.http.dynamic_forward_proxy.v2alpha.FilterConfig
                      dns_cache_config:
                        name: dynamic_forward_proxy_cache_config
                        dns_lookup_family: V4_ONLY
                  - name: envoy.router

  clusters:
    - name: xds_cluster
      connect_timeout: 5s
      type: LOGICAL_DNS
      dns_lookup_family: V4_ONLY
      lb_policy: ROUND_ROBIN
      http2_protocol_options: {}
      transport_socket:
        name: envoy.transport_sockets.tls
        typed_config:
          "@type": type.googleapis.com/envoy.api.v2.auth.UpstreamTlsContext
          common_tls_context:
            alpn_protocols: [
              "h2"
            ]
      dns_refresh_rate:
        seconds: 3600
      load_assignment:
        cluster_name: xds_cluster
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: %XDS_HOST%
                      port_value: %XDS_PORT%
    - name: dynamic_forward_proxy_cluster
      connect_timeout: 5s
      lb_policy: CLUSTER_PROVIDED
      cluster_type:
        name: envoy.clusters.dynamic_forward_proxy
        typed_config:
          "@type": type.googleapis.com/envoy.config.cluster.dynamic_forward_proxy.v2alpha.ClusterConfig
          dns_cache_config:
            name: dynamic_forward_proxy_cache_config
            dns_lookup_family: V4_ONLY

    - name: exposed_admin
      connect_timeout: 0.250s
      type: STATIC
      hosts:
        - socket_address: { address: <IP_ADDRESS>, port_value: %ADMIN_PORT% }

node:
  id: %NODE_ID%
  cluster: %NODE_CLUSTER%
  metadata:
    instance: %NODE_INSTANCE%
    host: %NODE_HOST%
    port: %NODE_PORT%
    admin_port: %ADMIN_PORT%

@mabukhovsky I think that's correct. A small detail though, your target for ext_authz is ext_authz service (that implements external_auth Authorization service: envoy/service/auth/v2).
I put together an example here: https://github.com/dio/authz. Good luck!

@dio I truly appreciate your help. Your sample app is exactly what I need. Will be testing it later this week. Thank you so much Dhi! You are rockstar :)


⚠ Bofrost.de has degraded performance

In 32b9c83, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1564 ms

Resolved: Bofrost.de performance has improved in b299dc9.


Hidden actors are sometimes unresponsive.

Describe the bug
Hidden actors that are positioned within view of the camera when a player changes scene are unresponsive until they somehow re-enter frame.
To Reproduce
Steps to reproduce the behavior:

Create a new actor on the top-down example.
Add a "On Init -> Hide Self" to the new actor.
Add a "On Interact -> Show Dialogue" to the new actor.
Position the actor near the exit of the title screen warp point. It must be within frame of the camera from that warp point.
Run the game and enter the scene. Trying to interact with the hidden actor will do nothing.
Move the player so the hidden actor is no longer in frame.
Move the player back to the hidden actor and it can be interacted with again.

Expected behavior
I expected the hidden actor to remain responsive the entire time like visible actors are.
Screenshots
In this video I have a hidden actor positioned on the tree stump. It is unresponsive until it goes out of frame and then comes back into frame.

Platform (please complete the following information):

OS: Windows 10
App version: 3.0.3

Additional context
I am using invisible actors to add flavour text to elements in the scene background which is why I want them to be hidden. This issue does not affect non-hidden actors.

A temporary workaround is to use actors with sprites full of transparency color so they look invisible but aren’t hidden


fix: don't clear default suite's hooks

Fixes #1430
@testing-library/react puts afterEach, beforeAll, afterAll hooks when initialized. In --threads clearing doesn't matter, since [paths] is always initialized once, but with --no-threads we need to remember previously initialized global hooks.

We discussed another implementation:

When node_modules is imported, mark current suite as modulesSuite
if current suite is moduleSuite, every hook is shared between tests
Make hooks global, when importing from node_modules, if they are not


Expose onTick/Poll event

Often, for bulk queries, a long time is spent polling for a download to be ready from Salesforce. In many applications, especially those controlled by a parent process, it's necessary to emit events on each poll / tick or every so often to make sure that the child application is staying active. Additionally, a user of this module may want to record each time they poll Salesforce to track API usage and whatnot.
Is there any way I can run a function onTick/onPoll? If not, is this something that you'd think about adding? I'm open to sending PRs, any tips / pointers in the right direction would be great.

The Batch instance emits progress event when polling.
var batch = conn.bulk.load('Account', 'insert', input);
batch.on('progress', function(res) {
  console.log(res);
});

Awesome!


Move SSH keys section into GitHub

The 'SSH Keys' section talks about GitHub, not about Git.

#212 #220 #221 #143 #143


The format of pinned semvers could be improved

whatfeatures -d -n tokio-net

tokio-net/0.2.0-alpha.6
  normal
    crossbeam-utils        = ^0.6.0
    futures-core-preview   = = 0.3.0-alpha.19
    futures-util-preview   = = 0.3.0-alpha.19
    lazy_static            = ^1.0.2
    mio                    = ^0.6.14
    num_cpus               = ^1.8.0
    parking_lot            = ^0.9
    slab                   = ^0.4.0
    tokio-codec            = = 0.2.0-alpha.6
    tokio-executor         = = 0.2.0-alpha.6
      - features: blocking
    tokio-io               = = 0.2.0-alpha.6
    tokio-sync             = = 0.2.0-alpha.6
    tracing                = ^0.1.5           if cfg(test)
      - features: log
    optional
      bytes                = ^0.4
      crossbeam-queue      = ^0.1.2           if cfg(unix)
      futures-sink-preview = = 0.3.0-alpha.19
      iovec                = ^0.1
      libc                 = ^0.2.42          if cfg(unix)
      mio-named-pipes      = ^0.1             if cfg(windows)
      mio-uds              = ^0.6.5           if cfg(unix)
      signal-hook-registry = ~1               if cfg(unix)
      tracing              = ^0.1.5
      winapi               = ^0.3             if cfg(windows)

things like = = 0.2.0-alpha.6  should probably changed (the double equal signs)

This is a non-issue


Hang on Windows 10 when PromptForDestinationFolder=true

Release: 15.
I drag-n-drop png on your app.
I've got: hang (more than 2 minutes on Core i7).
Same behavior I had in 13'th release on Windows 7 several months ago. I even don't know what this flag does, but it is set to "true" by default...
When
<add key="PromptForDestinationFolder" value="false"/>

there is no hang. That issue keeps bothering me each time I update your app :smile:

Thanks! :bowtie:


Support lower macOS versions

Hello, really cool library! Right now the provided wheels require users to have macOS 10.15, would it be possible to set the deployment target to a lower version?

@wseaton I was able to tests it today on some older macOS versions and it installed correctly 😄 I guess you can push an new release 🚀
Thanks for the help and the quick responses!


⚠ Bofrost.be has degraded performance

In 86db3f0, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2103 ms

Resolved: Bofrost.be performance has improved in d9f933c.