Support for private plugins

Do you want to request a feature or report a bug?
Feature
What did you expect to see?
Support for private plugins. Connecting plugins from private repositories.
Maybe: this plugin must be placed locally, and we should to define path to plugin in the configuration file.
That plugin should not be traking by Pilot

Hi @negasus 👋
Plugins are super fresh in Traefik, and for now, we want to focus on making those stable.
Even though there are specific use cases where you need private plugins, right now, we do want to focus on the most requested feature: open source plugins.
But we would love to hear some use cases where private plugins would be required.
Thanks :)

I'm not suggesting doing this right now)
For example:
In my case, we need to authorize users by the auth header. And I want to make plugin for obtain some data from Database, cache it, and use this data fot check users. This case very specific for out application. And may contains some business logic.

Would love to see support for plugins in private repositories as well.
Following...

But we would love to hear some use cases where private plugins would be required.

@emilevauge, in some cases, I have to use traefik in intranet, so there is no option to use pilot or else, but I can place plagins in private repos in local git or place them directly to the docker-image.

I would also love this. there's some logic that we need to run specific to us, and I'd rather not expose the logic or create a non-reusable plugin

The other part of the current plugin implementation is that it requires the routing to be connected to Traefik pilot.
I don't have any problem open-sourcing the plugins I need, but I'd love to be able to create plugins that, for example, enable more middlewares, but being able to do that without having to connect to an arbitrary server at runtime (or startup time) to download arbitrary code (even if signed by Traefik). Instead, I'd like to build "my own" Traefik version, with any plugins I need built into the image.
Other reverse proxies like Skipper allow any developer to do that easily, and I would hope to be able to do the same with Traefik.

@SantoDE : you mentioned in #7515 that private plugins goes against the spirit of the "open-source" catalog
(quoting)

The challenge I see with private plugins is that it directly contradicts many of the positive outcomes we're trying to achieve with the plugin feature.

and also asked to continue the conversation here.
Could we continue the conversation here?
My use case is: I have a very specific rule I want to introduce, where using native traefik rules would be extremely complex. But could be extremely simple if I could add a new rule type (similar to what I can do with (custom predicates in Skipper)[https://opensource.zalando.com/skipper/tutorials/development/#predicates]
I want to forward to one backend or the other based on a relatively complex condition
- Path(/foo) && MyCustomRule(true) -> backend1.example.com
- Path(/foo) && MyCustomRule(false) -> backend1.example.com

MyCustomPredicate(input) would be something like
complexRule := Query(`foo=bar`) && !Query(`other=value`)
return complexRule == input

How am I supposed to solve this problem using native rules, or current plugin architecture?

@SantoDE : you mentioned in #7515 that private plugins goes against the spirit of the "open-source" catalog
(quoting)

The challenge I see with private plugins is that it directly contradicts many of the positive outcomes we're trying to achieve with the plugin feature.

and also asked to continue the conversation here.
Could we continue the conversation here?
My use case is: I have a very specific rule I want to introduce, where using native traefik rules would be extremely complex. But could be extremely simple if I could add a new rule type (similar to what I can do with (custom predicates in Skipper)[https://opensource.zalando.com/skipper/tutorials/development/#predicates]
I want to forward to one backend or the other based on a relatively complex condition
- Path(/foo) && MyCustomRule(true) -> backend1.example.com
- Path(/foo) && MyCustomRule(false) -> backend1.example.com

MyCustomPredicate(input) would be something like
complexRule := Query(`foo=bar`) && !Query(`other=value`)
return complexRule == input

How am I supposed to solve this problem using native rules, or current plugin architecture?

I would like to use plugins but due to legal requirements I can't use Pilot or allow any remote code download.
Reading the linked issue, there're reason I don't really understand.

Why the ability to write, store and run my own plugins makes traefik less open source and force me to use a private service like Traefik Pilot doesn't?
Using Kubernetes ecosystem as example, in many scenarios you need signed images to be able to run it into your platform, or at least have the opportunity to. Enable something like Traefik Pilot it's a back door that can't be accepted under certain scenarios (that for the work I use to do are the most)

Exactly the same issue here. I'm not allowed to connect our internal Traefik proxy to an external service due to security constraints, as that creates a potential attack vector.
It makes me kind of sad that a request such as this (and also the PR mentioned ealier) isn't taken more seriously.
I also don't see what "open-source" has to do with preventing plugins from being used offline...
Actually I just wrote an open-source plugin specifically for a use case at my current job (https://github.com/lion7/traefik-jwt-headers-plugin). It works great on my laptop, but now I can't use it on our server due to the ealier mentioned constraints.
For me, a private repo isn't really necessary but the ability to use plugins offline is very relevant.

almost a year and no decision on that, while i can see some ideas already implemented for EE version. Seems it is time to start looking for alternative or compile each time won binaries. what is strange because Traefik is MIT and Yaegi under Apache 2, why not just remove Pilot lock and let people use plugins locally.
As other guys from above we can't connect our instances to 3rd party services due to security concerns. EE version is an option, but i not see any confirmation that EE free of such limits also if i can't prove that Traefik plugins so nice it is "no go" to ask for EE budget.

In my case automatic fork is acceptable, maybe someone will help too.

Hey all :wave:,
Im sorry for the long time without another response from our side on that quite important topic here.
Be assured, it's certainly not about "letting things rot" but rather, try to come up with a solution :)
First of all, our goal has always been to commit to the Open Source philosophy and thus, Traefik plugins should be open sourced as well.
However, we do understand that this topic is a pain point for you since it forces Traefik to be able
to potentially speak "outside" the cluster and at the same time, have a hard dependency on our systems (Pilot).
For the EE version, we were able to solve that issue a couple months ago by deploying a local plugin registry alongside our Traefik EE control plane, which handles most of the job Pilot does for Traefik.
However, this solution is not applicable for Traefik in itself for obvious reasons, as the EE version
follows a completely different architecture and is not just "a good old proxy".
That being said, we are actively (as of this week) discussing alternatives how we can allow the usage of private plugins locally, while still trying to solve our goal of having plugins open sources.
I'll let you know soon, once I know more.

Can't you just force the regular Traefik proxy to only work with open-source plugins residing on GitHub.com?
Or making Yaegi only compile open-source plugins?  I'd rather grab my updates from the main repo instead of some fork.
From the point of view of my current job the problem is not really using source code from the internet, because choosing which plugins to use is a decision that developers can make for themselves. But, that plugin should be able to do its work without allowing a remote party to 'peek' inside the infrastructure. Once downloaded, I should be able to block all outgoing traffic and it should still just work.
Obviously, a plugin author could add malicious code to an used plugin. But that scenario can be easily dealt with by implementing proper policies about when and how to update plugins, etc. I just don't really see a strong (technical) argument why a connection with Pilot is absolutely necessary for plugins to work, they're just made of code like all the other built-in middleware...

Hey, Manuel, thanks for replying.
If there's something as simple as https://github.com/PrivPlugMatt/traefik-private-plugins that can be done, there should be plenty of ways to natively solve this issue.
To me, the effort you're putting towards force everyone to only be able to use open-source plug-ins doesn't align with MIT licenses, where everyone is able to do whatever they want with the code. Or GPL, which enforces its open-source vitality much more than MIT, doesn't go that far: you're only forced to redistribute the code if/when you also redistribute the binaries. And not even AGPL, which forces you to give the the code to the anyone who "uses" the software. But every single open source license gives you the freedom to use the code privately however you want.
So I think you should reconsidered relicense Traefik to a different license that better fits the spirit of what you want to achieve, to avoid any misunderstanding. But MIT is definitely not aligned with what you're trying to do.

Thank you, @xavivars,  for sharing your patch, it will save my time!

Hey everyone :wave:
Sorry for not coming back to you last week, but we had some things to clarify first :)
After further consideration and assessment of the situation, we want to bring
private plugin support to Traefik.
As I already described last time, we totally can see the need to be somewhat independent
on our systems for using plugins, and thus, we want to improve this situation for everyone in the community. Doing so for Traefik EE was relatively easy, but we weren't so sure about how its do-able for Traefik Proxy easily.
To do so finally, we can imagine two different approaches:

deploy an own local registry (as we do on Traefik EE)
** advantages: we can still ensure integrity & versioning of plugins, potentially
support different locations where to store plugins
** disadvantage: a bit more complex to setup
just load plugins from a volume (as it was already proposed in 2 PRs)
** advantage: simple to first use
** disadvantage: you have to handle integrity, versioning etc

Let's discuss together in this issue, and see which option makes the most sense. Ideally, we would
love to include that possibility with the next upcoming release of Traefik V2.5 :)

@SantoDE  as for me i see benefits from both solutions registry and/or local.
Because for example some people who not have strong restrictions still can benefit from using pilot plus as extra they will have opportunity to use local-folder plugins or/and extra private/public registry.
So i can see functionality where you can allow to use:

Pilot public registry
Custom private registry
Local location (folder) plugins
And it will be nice to use one of the ways or as combination. Also i think Traefik EE will benefit from this as well, because i can see that as EE user i would like to have ability also use private registries but maybe local-folder based plugins.

I also agree that local plug-ins is probably the easiest option, and by being able to pass a custom path (or have a default one that can be mounted using a volume or a Dockerfile that builds on top of traefik one) should be enough.
And as md2k says, you could leave private registries for the EE version

We are working on it @md2k :)

May I ask when we can expect this feature to hit the public? The issues under v2 doesn’t seem to include actions. Thanks for your work!


Add HIP to view

lol oops my bad!

I comment out lines in Dockerfile's as I go as a development technique - e.g., I don't have to start over if/when one fails. Seems like I totally forgot to uncomment (and update to remove the compiler I was testing). Thanks @davidbeckingsale sorry for my mistake!


Best practices for using Eureka for 0-downtime Blue/Green deployments

This issue is more of a discussion that I want to open up to the community so we can figure this out. The goal is to use Eureka to facilitate blue-green deployments with 0 downtime.
Example 1: From application code
Say you have 2 instances of an app deployed using two distinct uris:
spring.application.name: api

---
spring.profiles: blue
eureka.instance.hostname: api-blue.example.com

---
spring.profiles: green
eureka.instance.hostname: api-green.example.com

Let's say both are up and healthy. You have a client app my-app that needs to make requests to api:
@RestController
@SpringBootApplication
@EnableDiscoveryClient
public class MyApp {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @RequestMapping("/hit-api")
    public Object hitApi() {
        return restTemplate().getForObject("https://api/something", Object.class);
    }

When green-api.example.com goes down for upgrade, it gracefully shuts down and deletes its registration from Eureka. my-app won't know this happened until it fetches the registry again, which happens every 30 seconds by default. So for up to 30 seconds, the @LoadBalanced RestTemplate will send requests to api-green.example.com even though its down.
There are a few things we can do:
Use Ribbon's support for retry
This doesn't work out of the box because the @LoadBalanced RestTemplate doesn't use Netflix's RestClient and related classes, which provide the retry functionality. One of the reasons for not using it is because it's deprecated, and doesn't support PATCH.
Use Spring Retry
By adding the following to my project:
    compile("org.springframework.boot:spring-boot-starter-aop")
    compile("org.springframework.retry:spring-retry")

// ...
@EnableRetry
public class MyApp {
// ...
    @Retryable
    @RequestMapping("/hit-api")
    public Object hitApi() {
// ...

A request made to api-green.example.com will error out, the RestTemplate with throw an exception, that exception breaks out of the @Retryable method and the method is executed again. Because the @LoadBalanced RestTemplate round robins, the next method execution tries a different server, api-blue.example.com which is still up. This works great.
The default is to retry on any exception, but you may need to narrow down which exceptions should be retried. In CloudFoundry, you get a 404 when the app is down, so to zero-in on such a HttpClientErrorException, it looks like you'll need to write a RetryPolicy which I haven't attempted.
Example 2: From Zuul
Let's say we've configured Zuul to proxy to apps registered with Eureka, and are using its retry support provided by Netflix classes:
@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy
public class ApiGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayApplication.class, args);
    }
}

zuul:
  routes:
    api:
      path: /api/**
      serviceId: api
      retryable: true

Here's where I got stuck, at least in CloudFoundry, because the 404 doesn't get handled by the retry logic in RequestSpecificRetryHandler and I don't see a way of customizing this as well.
Does anyone else have experiences to share in doing blue/green with Spring Cloud Netflix projects?

Thanks for starting this discussion @william-tran.  It would be great if we could gather feedback here that we can either use to incorporate into a best practices article and/or use to make enhancements to Spring Cloud to make blue/green deployments easier.
You mention we don't use Netflix's RestCient in our LoadBalanced RestTemplate so you can't take advantage of the the retry logic, but yet when proxying through Zuul we can use the retry logic.  Zuul is using ribbon under the covers so have you found that we are using Netflix's RestClient with Zuul then?  I would imagine we would want to be consistent.
I also think in real world blue/green deployments there are probably a couple of other "phases" you go through as you do the deployment.  In my mind you have 3 distinct steps in rolling out a new instance of a service.

Deploy the new version of the service.  At this point the service is running in a production environment but is not reachable by any clients.  As the service owner you will want to verify the service is working as you expect before allowing any clients access to the service so you might be running various tests against the new service version to make sure things work as expected.  If the new version is not working as expected than you can kill it.

Assuming step 1 goes OK, than you may want to allow clients access to the service.  In all likelihood you are going to want to do this slowly only allowing a portion of the requests to hit the new service version.  You will want to monitor the performance of the new service version to make sure it is behaving as expected.  If everything seems to be working as expected you will most likely increase traffic.  If not than you will want to take the service instance offline and address any issues (this will reflect the scenario you describe above).

At some point once you are satisfied the new service version is working fine you will want to take the old version offline and direct all traffic to the new version (and perhaps scale up the number of instances).  Again this is the scenario you describe above.

If there are other important steps in the process I am missing please let me know.

On the client being used in RestTempalte vs Zuul, here's a conversation from the #spring-cloud Pivotal Slack channel on Aug 12

William Tran
I’m trying to figure out how to get Ribbon retry to work with a @LoadBalanced RestTemplate
But I can’t seem to connect the dots to an instance of com.netflix.client.RetryHandler

Spencer Gibb [1:18 PM]
by default we don’t use the ribbon client (it doesn’t support patch for example), therefore it's retry doesn’t work by default.

William Tran [1:19 PM]
ahh ok thanks. Is retry supported on SC-Zuul?

Spencer Gibb [1:21 PM]
in brixton restclient is still the default I think, so yes. In camden it is no longer the default. It should still retry though

About the phases of blue-green, being able to manage all those phases would be ideal, but I'm really looking for support of the most basic slice, where an app instance goes down (planned or unplanned), and you want to fail over to other instances without service interruption. I guess this fail-over feature that I'm asking for isn't only useful for blue green deployments.

Great thanks for the reminder!  We certainly need a reliable failover routine for when services are down and when others are available.  I am in the middle of trying various combinations of scenarios to see how SC behaves.  We can use this issue to track the results and enhancements/bug fixes we need to make.

Did a lot of investigation into retry logic in FeignClients, Ribbon, and Zuul today.  Here is the basic breakdown of how retry logic works in both Brixton and Camden.  (Most of it is the same as what @william-tran stated above.)

In Brixton:
Feign has its own retry logic
Ribbon has no retry logic
Zuul uses the Ribbon http client retry logic

In Camden:
Feign has its own retry logic
Ribbon has no retry logic
Zuul has no retry logic bc it is not using the ribbon http client

When it comes to customizing how retry logic works it depends on how your client is making the request.
Ribbon
Since we do not use the Ribbon HTTP Client there is no retry logic by default.  You can customize it using your own HTTP Client, or by using Spring Retry
Feign
Since Feign has its own retry logic, most of the ribbon.* properties regarding timeouts and retries have little effect on FeignClients.  There are some special cases where some properties might effect your FeignClients.

If your FeignClient is making a GET request, you can use ribbon.OkToRetryOnAllOperations to disable retries on opperations other than connection exceptions.  See the (crazy) logic here https://github.com/spring-cloud/spring-cloud-netflix/blob/1.1.x/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignLoadBalancer.java#L83.
ribbon.ConnectTimeout, ribbon.ReadTimeout, ribbon.FollowRedirects, can also be used to change the behavior of FeignClients.

The default FeignClient retry logic can be found in Retryer.Default.  This logic will retry the request 5 times.  There is also a NEVER_RETRY class included that you can use to never retry the requests.
Note:  By default Hystrix is involved in the picture as well since all FeignClient requests are wrapped in circuit breakers, keep that in mind when dealing with timeouts.  A timeout can occur at the hystrix level as well as at the client level.
Zuul
Brixton
In Brixton we use the Ribbon HTTP Client when proxying requests through Zuul.  This means you can use all ribbon.* properties to configure retry and connection logic with Zuul.
Camden
In Camden we no longer use the Ribbon HTTP Client so none of the ribbon.* properties will help you control the retry logic.

@william-tran regarding your Zuul use case....
I think you can override RequestSpecificRetryHandler by creating your own RestClient bean and overriding getRequestSpecificRetryHandler.  I proved this out locally in my own dev environment.
However I dont think doing that is actually going to help out to much because isRetriableException will only be called when the RestClient encounters an exception making the request.  To be more specific, it will only be called if RestClient.execute throws an exception.  That happens today for things like timeouts.  However if a request is made and any type of response is returned (good or bad) that is considered a "success" from the client perspective and no retry logic is run.  Now of course you can override RestClient.execute in your RestClient bean so that if anything other than a 20x is returned you throw an exception and then can begin handling those to force retry logic to occur.  I have yet to try this but in theory it seems like it would work.
Another option might be to wrap RestClient.execute with Spring Retry logic like you did with just plain Ribbon.  Again I have not tried that either just a thought.
I will continue to experiment with some solutions.
I also have a number of notes I need to organize around the logic of retrying requests in Zuul that I will post here as well.

These are some notes I have gathered as it relates to using Ribbon to retry requests in Spring Cloud Brixton.
Ribbon Rest Client Load Balancer

by default uses Round Robin Load balancing
If instance is marked as down we continue to use that instance until list is refreshed on the client
In this case no retry logic is used so we continue the round robin approach and every time we hit the no longer functioning instance we get an error

Zuul Retry Logic
In Brixton, we use the Ribbon RestClient to proxy requests.  By default the Ribbon RestClient will only retry any operation

If an exception is thrown from RestClient.execute

The exception that is thrown is deemed retryable.  An exception is retryable if

okToRetryOnAllErrors is set to true in RequestSpecificRetryHandler
If the exception is a ClientException AND the status code is a 429 (any other ClientException with a  different status code will not be retryable) and we are not trying to retry on the same server (if we are trying to retry on the same server than we will not retry the request since the server is telling us to throttle back the requests)
okRetryOnConnectionErrors is true in RequestSpecificRetryHandler and the exception is a SocketException

RequestSpecificRetryHandler is created in RestClient.getRequestSpecificRetryHandler.  Variables like okToRetryOnAllErrors and okRetryOnConnectionErrors are set in this method depending on how Zuul is configured and the HTTP Request Method.  With all default configuration in place

GET requests will be retried on any type of errors (okToRetryOnAllErrors is set to true in RequestSpecificRetryHandler)
Everything else besides a GET will only retry on a SocketException
If you set ribbon.OkToRetryOnAllOperations to true then all HTTP methods will be retried on any error (both okToRetryOnAllErrors and okToRetryOnConnectionErrors is set to true in RequestSpecificRetryHandler)

To disable all retry logic from happening you can set zuul.retryable to false.
If you want to disable retry logic for a specific route you can set zuul.routes.serviceId.retryable to false.  You want to set zuul.routes.serviceId.retryable to true for non GET requests that you want to retry on connection errors.
Customizing Your Retry Logic
If you want to customize the retry logic used by Ribbon you will need to provide your own RestClient implementation and RetryHandler.  To do this you need to provide a customized Ribbon Client Configuration.
You can provide a default configuration for all clients by specifying the following annotation on your application class.
@RibbonClients(defaultConfiguration = MyRibbonConfiguration.class)

You can also specify configuration for specific clients by adding the @RibbonClient annotation on the configuration class itself
@RibbonClient(name=”foo”, configuration = MyRibbonConfiguration.class)

In addition you want to make sure that Ribbon configuration classes are not included in the main application context.  That means if you are using @ComponentScan or @SpringBootApplication you need to make sure these configuration classes are excluded.  For example, if you add the below @ComponentScan annotation to your application class
@ComponentScan(basePackages = "com.ryanjbaxter.spring.cloud.ocr.web",
        excludeFilters<EMAIL_ADDRESS>                type = FilterType.REGEX,
                pattern = "com.ryanjbaxter.spring.cloud.ocr.web.exclude.*"))

You would want to place any Ribbon configuration classes in the package com.ryanjbaxter.spring.cloud.ocr.web.exclude.
Here is a sample project that demonstrates custom retry logic
https://github.com/ryanjbaxter/zuul-retryer

Thanks for digging into this @ryanjbaxter. I took a look at the sample project and that would seem to provide the hooks needed to catch the Go Router's 404, if for example we were on a Cloud Foundry environment and wanted to retry the request on a different server because that server was down.
The customization does seem a bit invasive though, and relies on an API that will change in Camden. What about a Zuul route filter that uses Spring Retry? If you're already using Spring Retry to wrap calls to a @LoadBalanced RestTemplate then you might be able to reuse the RetryPolicy in this filter.

I wanted to point you both at a pull request I submitted a while back. We had quite a discussion on getting the RestTemplate to use the Netflix RestClient.
https://github.com/spring-cloud/spring-cloud-netflix/pull/945
Eventually, Spencer did merge this request, but you must OPT IN to tell Spring cloud to use the legacy netflix rest client.
See this: https://github.com/spring-cloud/spring-cloud-netflix/issues/961
Bottom line (in Brixton) to get the RestTemplate to use a load balanced Netflix RestClient:

you need to set the property "ribbon.http.client.enabled" to "true"
you need to annotate your rest template with @Loadbalanced

As for the retry handler, you can configure a custom retry handler as part of your ribbon client configuration:
	@Bean 	public RetryHandler buildRetryHandler() { 		return new BuildRetryHandler(); 	}
It looks like for Camden all of this will be standardized to use Spring Retry.

@tkvangorder thanks for pointing this out.  It is certainly an option as well.

@ryanjbaxter This just dawned on me, using the status override endpoint: https://github.com/Netflix/eureka/wiki/Understanding-eureka-client-server-communication#about-instance-statuses
I still need to test this out. I'd imagine one would PUT /eureka/v2/apps/appID/instanceID/status?value=OUT_OF_SERVICE, wait for that to propagate to all the apps that use that service, and then take it down.
https://github.com/Netflix/eureka/wiki/Eureka-REST-operations

@william-tran yes for sure.  We also integrate with the /health endpoint with Actuator.  So for example when a new version of the app is deployed you can leave it in an Unknown state and only change its status to UP once you are ready for it to be used by clients.  Something to play around with for sure.

@william-tran @ryanjbaxter I've created an actuator endpoint to do exactly that. It will be part of Dalston.

I've tested this and it works OOTB in Brixton SR6.

@william-tran Of note you can use eureka.instance.initialStatus=OUT_OF_SERVICE to the instances come up initially that way, then use the endpoint mentioned above to change the status to UP.

Thanks @spencergibb I thought eureka.instance.instanceEnabledOnit would work at first but the value of eureka.instance.initialStatus will aways be used.

In camden how to as kRibbon to retry , above I read ribbon doesn't retry and need to start using Spring retry.

@pradeepkusingh correct, I have a couple of pull requests that will address this.
See #1375 and #spring-cloud-commons/137

any idea when above pull request will be available to use in camden sr1 ?

Waiting for my teammates to finish their reviews.

@ryanjbaxter So I'm confused by the comment made by pradeepkusingh. Because I actually did some experiments about the retry logic of zuul and ribbon：
I ran two user services and set the thread to sleep 5 seconds to make the timeout for one of the two user services, below is my configuration of api gateway(zuul):
`zuul:
routes:
user:
path: /user/**
serviceId: user-service
ribbon:
ReadTimeout: 5000
hystrix:
command:
default:
execution:
isolation:
strategy: THREAD
thread:
timeoutInMilliseconds: 100000`
Here I have two questions:

when zuul used with ribbon, Is the retry made by ribbon?  does zuul have the retry functionality itself?  If it has, so what is the retry logic?
I found the zuul (or ribbon ?) would retry to request the user service when the ribbon timeout occured no matter what the spring cloud version I was use ( Brotrix SR4 or Camden SR2)? So I felt so confused with the comment: "In camden how to as kRibbon to retry , above I read ribbon doesn't retry and need to start using Spring retry." above.

So does the zuul ( or ribbon ) will retry when using camden SR2 ? and when it will retry ?
Thanks a lot !

@ryanjbaxter : is this issue(https://github.com/spring-cloud/spring-cloud-netflix/issues/892) fixed with CAMDEN SR2 ?

@Sunrry see this comment about Zuul in Camden
https://github.com/spring-cloud/spring-cloud-netflix/issues/1290#issuecomment-242204614
You cannot control the retry logic of Zuul using the Ribbon properties.  However it will still retry failed requests.  Zuul will retry on any type of SocketException (for example a timeout).

@pradeepkusingh if it was it would have been closed.

Thank you. I will test. Another question is how to use spring retry in Camden sr2 with Zuul/ribbon ? Any specific configuration.
Sent from my iPhone
On Nov 14, 2016, at 9:02 AM, Ryan Baxter <notifications<EMAIL_ADDRESS>wrote:
@pradeepkusinghhttps://github.com/pradeepkusingh if it was it would have been closed.

You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/spring-cloud/spring-cloud-netflix/issues/1290#issuecomment-260376687, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOuX0SMZjTjGgHMNKg-xggkiDnI6MLjrks5q-IYYgaJpZM4JrHyD.

there are no changes in Camden.SR2 related to Zuul/Ribbon.

I thought all retry logic is changed. Which release we are targeting?
Sent from my iPhone
On Nov 14, 2016, at 9:19 AM, Ryan Baxter <notifications<EMAIL_ADDRESS>wrote:
there are no changes in Camden.SR2 related to Zuul/Ribbon.

You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/spring-cloud/spring-cloud-netflix/issues/1290#issuecomment-260381823, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOuX0aigaSRjXm0Mtak5X55FcZEdCBKoks5q-IobgaJpZM4JrHyD.

The only thing that changed related to retrying requests in Camden.SR2 had to do with load balanced RestTemplates using Ribbon.

I am going to close this issue.  Load Balanced RestTemplates, Feign, and Zuul now allow you to use Spring Retry in both Camden.BUILD-SNAPSHOT and Dalston.BUILD-SNAPSHOT.  The next release of both streams will contain all the necessary functionality.  This should facilitate a consistent Blue/Green deployment with 0 downtime.

@ryanjbaxter thx a lot for the analysis.
I am using Dalston.BUILD-SNAPSHOT version along with 1.5.3.RELEASE Spring Boot Version.
and I have set the following properties
 MaxAutoRetries: 5
  MaxAutoRetriesNextServer: 5
  OkToRetryOnAllOperations: true
  OkToRetryOnAllErrors: true

the above properties are being reflected in the LoadBalancerCommand.retryHandler.
but they are not being reflected (applied) in RequestSpecificRetryHandler, I am not trying to customize Zuul retry logic at least for now ... I only want the retry mechanisim to kick in upon Connect failures ! but while debugging RequestSpecificRetryHandler variables  (okToRetryOnAllErrors, okToRetryOnConnectionErrors) are always set to false the constructor  of RibbonLoadBalancingHttpClient is always invoked (
		return new RequestSpecificRetryHandler(false, false, RetryHandler.DEFAULT, null);

@hodeh please open a separate issue

Have a similar use case:
Having 5 already running instances in PCF prod env, now I need to do a rolling bounce on these instances without impacting ongoing traffic.
I was trying out eureka endpoints as mentioned here
After doing PUT /eureka/v2/apps/appID/instanceID/status?value=OUT_OF_SERVICE for 1 instance, it is going out of service in service registry, but still I see traffic flowing through this instance.
Any help here is appreciated.

@ganeshcbhanage, remember that information published from Eureka is cached on each client (and will be refreshed every 30 seconds by default). We eventually landed on not bothering to change the status on Eureka at all and instead, we just make sure that socket-based errors are retried on the next available node.


Lack of descriptive message when adding an incorrect schema manifest

To Reproduce
Steps to reproduce the behavior:

First, add access the menu in the top right corner 'Extensions: Wikidata' -> 'Select Wikibase instance' -> 'Add Wikibase'
Then, paste/write your manifest containing syntax mistakes (see screenshot)
Finally, select 'Add Wikibase' in the bottom right corner of the window

Current Results

The error "Invalid Wikibase manifest." appears in red letters.
Expected Behavior

A more descriptive error would help narrow down and fix the mistakes.
Screenshots

Versions

Operating System: Ubuntu 18.04
Browser Version: Chrome 95
JRE or JDK Version: jdk 11
OpenRefine: 3.6

Datasets

Extract:
{
"version": "1.0",
"mediawiki": {
"name": "Wikimedia Commons",
"root": "https://commons.wikimedia.org/wiki",
"main_page": "https://commons.wikimedia.org/wiki/Main_Page",
"api": "https://commons.wikimedia.org/w/api.php"
},
//..
"wikibase": {
"site_iri": "https://commons.wikimedia.org/entity",
"maxlag": 5,
"properties": {
"instance_of": "P31",
"subclass_of": "P279",
}
}
Additional context

n/a

Closed by #4341.


[Doc]: Update doc for "Set up the Documentation"

Describe your documentation update
During the Step 3 from README.rst, step for updating docs/conf.py needs to be added to avoid the following issue.
>>> make docs

rm -rf docs/generated
cd docs && make html
Running Sphinx v5.3.0

Configuration error:
There is a programmable error in your configuration file:

Traceback (most recent call last):
  File "/Users/lee1043/mambaforge/envs/pcmdi_utils_dev/lib/python3.10/site-packages/sphinx/config.py", line 350, in eval_config_file
    exec(code, namespace)
  File "/Users/lee1043/Documents/Research/git/pcmdi_utils/docs/conf.py", line 24, in <module>
    import python_template
ModuleNotFoundError: No module named 'python_template'

make[1]: *** [html] Error 2
make: *** [docs] Error 2

@tomvothecoder I made a quick fix for this but repo does not allow me to create a PR. I'd be happy to provide the minor updated code via email or PR if you are okay with granting me permission.
$ git push -u origin lee1043-patch-1

ERROR: Permission to tomvothecoder/python-template-repo.git denied to lee1043.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

@lee1043 Thanks for trying out this repo. I added you as a collaborator so you should be able to create a branch directly on the repo now.


Prospect squares are not added in 1.18.2-rc.2

This was working for me in 1.18.1, but when I upgraded to 1.18.2-rc.2, it stopped working. The old prospect info is still displayed on the map, but new squares are not added after using the prospecting pick.
The below image is from a fresh world with only ProspectorInfo and hudclock installed. Since the below image is from a fresh world, it does not have any existing overlay squares to show from 1.18.1. The bottom left of the screenshot shows that the pick identified ores on the chunk, but they are not shown on the map. The ProspectorInfo window is open, so the mod was loaded.

Tested on:

Linux
VS-1.18.2-rc.2
ProspectorInfo-4.2.0.zip

Here's an unofficial build with my PR:
ProspectorInfo-4.2.0-fix.zip


network: rename pod iface names

What this PR does / why we need it:
Use a different - non ordinal based - algorithm to generate the pod interface names requested from multus.
Up to now we requested these interfaces named net1, ..., netX, depending on the ordinal of the given interface within the VMI spec.
This commit breaks that pattern, using something non-ordinal (compute the hash of the interface name, pruned to 11 characters).
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

Rename the pod interface names, using the SHA256 of the corresponding VMI interface name

/test pull-kubevirt-e2e-k8s-1.24-sig-network

/test pull-kubevirt-e2e-k8s-1.24-sig-network

/test pull-kubevirt-e2e-kind-1.23-sriov
let's get some feedback from the sriov lanes .... I expect something to break here, since afaiu we use net1 in that test file.

/cc @xpivarc
/uncc @iholder101
Lubo wrote the macvtap chown code.

/test pull-kubevirt-e2e-k8s-1.24-sig-network
/test pull-kubevirt-e2e-k8s-1.25-sig-network

/retest-required

/test pull-kubevirt-e2e-k8s-1.23-sig-network
/test pull-kubevirt-e2e-k8s-1.24-sig-network
/test pull-kubevirt-e2e-k8s-1.25-sig-network
/test pull-kubevirt-e2e-k8s-1.25-ipv6-sig-network

/test pull-kubevirt-e2e-k8s-1.25-sig-storage
/test pull-kubevirt-e2e-k8s-1.25-sig-operator
/test pull-kubevirt-e2e-k8s-1.25-sig-compute
/test pull-kubevirt-e2e-k8s-1.24-sig-storage
/test pull-kubevirt-e2e-k8s-1.24-sig-compute-migrations-nonroot
/test pull-kubevirt-e2e-k8s-1.24-sig-compute-migrations

/approve

/test pull-kubevirt-unit-test

/approve cancel

/test pull-kubevirt-generate
/test pull-kubevirt-unit-test

Various migration tests due to the following error:
"message": "VirtualMachineInstance migration uid e2fda21e-0e52-4316-ab83-474bb64a4a19 failed. reason:Live migration failed error encountered during MigrateToURI3 libvirt api call: virError(Code=38, Domain=0, Message='Unable to create tap device eth0: Invalid argument')",

https://prow.ci.kubevirt.io/view/gs/kubevirt-prow/pr-logs/pull/kubevirt_kubevirt/8899/pull-kubevirt-e2e-kind-1.23-sriov/1605233953071960064
It seems that there is a problem with the interface name passed while patching the domain just before migration stats, I think it should be the created tap device name and not the pod interface name (e.g: tap0 instead of eth0). Also, in virt-launcher logs we see that the tap device name has the old name scheme (tap0) instead of the new one (random hash), maybe the new field is updated at the wrong place in the code.

The primary interface name is not subject to this new naming scheme.
We need to pass/store the pod interface name - the current code generates the tap device names from the pod interface names. I'd rather keep the changes to a minimum.
I'll debug this once I'm back at work (I'm aware the code currently published is not working e2e for all the required scenarios).

/test pull-kubevirt-verify-go-mod
/test pull-kubevirt-unit-test
/test pull-kubevirt-generate
/test pull-kubevirt-e2e-k8s-1.24-operator
/test pull-kubevirt-e2e-k8s-1.24-operator-root

/test pull-kubevirt-e2e-k8s-1.24-operator
/test pull-kubevirt-e2e-k8s-1.24-operator-root
... had forgotten to deploy multus.

Regarding "migration, upgrade: modify interface names for migration " commit , How about passing the vm-pod-iface mapping through the handler-launcher channel (using VirtualMachineOptions object), is it possible?

This is exactly what is currently being done for NUMA placement / CPU pinning. I'm just expanding that solution to this new problem domain.
@vladikr never the less, this is a good question. Can you provide some feedback about this suggestion  ?

/test pull-kubevirt-e2e-k8s-1.24-operator
/test pull-kubevirt-e2e-k8s-1.24-operator-root
let's retry after having specified the type of interface in the test.

/test pull-kubevirt-e2e-k8s-1.24-operator


docker-entrypoint.sh: line 29: exec: su-exec: not found

I have my kong database running postgres 9.6
I have tried deploying kong 0.15.0-centos, and 1.0.0-centos, and receive the same startup failure for both.
docker-entrypoint.sh: line 29: exec: su-exec: not found
Looks like that line may have recently been refactored?  Any input or guidance?
https://github.com/Kong/docker-kong/blob/691d3b57430ecca159532980f0c891aa1e46612f/centos/docker-entrypoint.sh#L29

1.0.3 was just released, should arrive shortly on Dockerhub (takes a bit of time)

The issue is now fixed.
Please re-open if otherwise.


Pythonic.dict.swift needs to be ported to Swift 2.1

See https://github.com/practicalswift/Pythonic.swift/blob/master/src/Pythonic.dict.swift

Done!


Add empty Sort Key support

This pull request implements support for empty sort key definition. This kind of feature applies when the developer wants to set custom column store variables without setting a column as a sort key.
Example:
Schema::create('table', function (Blueprint $table) {
    $table->string('name');

    $table->sortKey()->with(['columnstore_segment_rows' => 100000]);
});

@carlsverre I noticed the README still contains info about saying the package is a pre-release beta. Was the warning forgotten there or is it still valid? The package seems solid to me :)

This is awesome @srdante. Thanks for the PR!
And good call, I will start the process of marking it as "production ready".


Initial pan/zoom values

Hey!
I'm trying to figure out the best way of setting the initial pan/zoom, so that I can save the current pan/zoom levels for the next time a user returns to the page.
I can see that there's a zoom-level property, but nothing for pan. I've also noticed the onSvgPanZoomInitialized but actually setting pan/zoom from the callback does nothing.
Is there a 'standard' way, without waiting for the component to load and then calling on any of the instance methods, to achieve this?
Cheers!

Awesome!
The way you handle issues and your community so well is why I’m glad I chose this great little package.
Thank you very much and keep up the amazing work.


added ds store

We fixed the Tutorial discrepancy in Unity and the build elsewhere, this change was not the issue.


.

@danturn is there an issue to be reported? You haven't put any information.

I've had this problem before as well, I know how frustrating it can be to type whole paragraphs only to end up looking at the screen and realizing the only key that registered was .. Frustrating.
But never fear! I solved the problem by disconnecting the keyboard input interface device from the computer and giving it a nice cleaning with isopropyl alcohol. When I plugged it back in and typed everything again, It showed e. which is a 100% increase in the number of characters it registered! That's a huge win if you're a big math guy like me :smile:

Nope! sorry, no idea how that happened sorry!


It stopped working

"Connection timed out" - it took to long to get response from the server.
It was either your internet problem, or Crunchyroll servers problem.
Your best bet is to try again, and if it doesn't work - check all of your internet peripherals.

I guess it was a temporary server promlem. closing


gh-copilot: add auto-updating

Description of changes
Modified script from https://github.com/NixOS/nixpkgs/blob/8e9745496f2c3b4da48dc1aac628c5644c55525c/pkgs/misc/urbit/update-bin.sh. Not updating the package now to test if it will auto-update properly (locally script works).
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/4666


When is the new version going to be released?

We are still using the workaround for the ServiceKeyOption non-conformance.
I am aware that the changes are already merged into master, but they haven't been released.
I just wanted to know if anything has been scheduled yet.

Is this project still active? When will we see a new release? The last release was 1 Apr 2019!

@jakubvano
@tkohout
@yoichitgy

Any update on this?

Looks like its abandoned, I guess its time to move on.

Looks like its abandoned, I guess its time to move on.

+1

@yoichitgy
@mpdifran

@ChediB thanks for bringing to our attention! Sounds like the fix is already in master, I'll prioritize a release here ASAP!

Thanks @mpdifran! 😃
I merged some PRs for Swift 5 and Xcode 12.5 too🚀
As far as I checked, unit tests for iOS and tvOS success, but fail for macOS. I think we can make a release with the macOS problem as a known issue.

I'm still not sure we still need PR #140🙏

@yoichitgy awesome thanks! I'll spend a bit of time to see if I can get the macOS tests passing, but I won't treat it as a blocker. I'll take a look at #140 as well.

Just released version 2.2.1 of SwinejctStoryboard!
It's my first time doing the release, please let me know if anything is wrong and I'll try to rectify it.


add test case which contains anonymous model for multipart/form-data

real service: https://github.com/Azure/azure-rest-api-specs/blob/b414505c35526e7f6c64c9351d2bf97ee95e7ff5/specification/purview/Azure.Analytics.Purview.DataMap/routes.tsp#L763

Note that in Azure, service teams are required to provide a name, so this is not blocking, but yes we should solve it for unbranding

Actually, OpenAI Assistants did exactly this :-(
https://github.com/Azure/azure-rest-api-specs/blob/main/specification/ai/OpenAI.Assistants/files/routes.tsp#L43-L56
I remember DataMap doing this as well...


Export marketplaceEnum

Exporting marketplaceEnum as the constants of this type are exported but hard to use without the type exported too.
Small error handling improvement

Thank you for your advice.


[BUG] - binary of latest release has a wrong package name

Internal/External
External   otherwise.
Area
Other   Any other topic (Delegation, Ranking, ...).

Build 6092531 has the right package name for example.

If you take a look at the GitHub commit (/PR), you can see the checks that were run against it (automated naturally).

Look for the ci/hydra-build:required, that's the link to the relevant build based on the PR. It contains all the built packages and within those, the artifacts.

thanks, now I found these artifacts! - so do you know why https://hydra.iohk.io/job/Cardano/cardano-node/cardano-node-linux/latest-finished not pointing to https://hydra.iohk.io/build/6092531 ?

I can only assume so will wait for one of the owners/builders to comment, sorry :|

Closing this. If this is still relevant please reopen.


[mini.files] Swap alert causes error while go_in

Contributing guidelines

[X] I have read CONTRIBUTING.md
[X] I have read CODE_OF_CONDUCT.md
[X] I have updated 'mini.nvim' to latest version

Module(s)
mini.files
Description
First, thanks for amazing plugin. I've been enjoying this plugin so much! The issue is:
When I go in to the file inside mini.files and there's a swap alert, after I respond to swap alert I'm seeing this error:

This is not that annoying for regular go in. But for go_in_plus (key L) which closes the mini.files window when I go inside the file, this error actually prevent the closing of the mini.files window.
Neovim version
760c1f3619418f769526884a3de47f0b76245887 (top of tree)
Steps to reproduce

Setup mini.files with default setting
Go in plus to file with swap using key 'L'
Error shows up and the mini.files window does not close

Expected behavior
No error and mini.files window closes
Actual behavior
Error shows up and mini.files window does not close

This should now be fixed on latest main. Although I couldn't create a reproducible test, 'mini.files' error should not show up while regular swap file notification should still be there.

I just tried it now and it's indeed fixed!


Update to latest versions

This PR updates this project to the latest versions of the CosmosDB and FSharp. I also applied some code style improvement suggestions provided by Rider.

Updated to remove unintended changes. I was using Rider, and it aggressively added the PackageReference elements. I also had a few API changes that should be done on a different pull request. Those have been removed.

This is ready to merge. Your suggested changes have been addressed.


Use as library

Firstly, thanks for creating a great project!
I'm looking to integrate this into another CLI tool and am wondering how open you are to that. I'm happy to fork and make it happen. Just let me know your thoughts and I'll create a PR.
Thanks.

This is a good reminder that all tools should be written as a library first, with a tiny CLI-adapter module second. Sooner or later, someone will want to use a given tool as a library.
To make gow usable as a library, some issues need to be resolved. Off the top of my head, here's a non-exhaustive list, in no specific order:

Incomplete cleanup. Main.Deinit doesn't terminate goroutines for .Stdio, .Sig, and .Watcher, because currently, these are singletons which are terminated when shutting down gow. A library would have to implement proper cleanup because it has no right to assume that each type is only used once.
Switching the terminal to raw mode and back may require additional coordination to avoid race conditions restoring the terminal to the wrong state. Currently there's only once instance of TermState, but when this is used as a library, there may be more, and they may need to coordinate between each other, or the API should ensure that there's only one instance with a counter for "clients" calling its init/deinit, to avoid redundant terminal state changes. (Worth noting that the current version of gow already has a related issue mentioned in the readme; it needs coordination of terminal state updates between different gow processes running concurrently in the same terminal tab.) This could be resolved by excluding support for raw mode and hotkeys from the library version, only implementing them in the CLI version, but that could also be tricky.
The current implementation assumes exclusive rights over the standard input of the gow process and always reads from it.
The current implementation has dependencies. I'm of a firm mind that libraries should only depend on the standard library. Libraries with dependencies create various issues for apps using them. The reason I've been cavalier about using dependencies in gow is because it was CLI only. Unfortunately, this is "wontfix".
The current implementation has very little synchronization because there's not a lot of concurrent access to shared resources. If each internal type becomes a library type, they can no longer make this assumption, and may need additional synchronization for various methods and behaviors.


create dockerfile for lightlda and multiverso-v2

rt

Thanks, Yiyong! I suggest to move the docker files to the Multiverso repo. Let's discuss later.

The dockerfiles do not depend path, so you can put them to any place which you prefer.


Key Sequence bug on duplication of Citrix Interaction

If you duplicate a Citrix Interaction that contains many key sequences (for exemple like pressing scroll up many times), the original and duplicated citrix interactions are clearly differents but the keysequences are the same.
Actually if you modify the keysequence of the original citrix interaction, it impacts the cloned citrix interaction...
I suspect it is some sort of clone of java objects that have the same reference for the key sequence list...

Thanks @cnico
We will analyze and resolve the bug as soon as possible.


document how to test remotes

These tests (mostly in func/test_data_cloud.py) are skipped by default and appear to be far from evident to set up. Not sure whether this should be added to contributing page or a new one.

@Suor is it a duplicate of #238 ?

closing a a duplicate of #238 . @Suor feel free to reopen it if I missed something.


fix(producttemplatecard): adding bottom border for all cards

Motivation

according to the new Zopa designs for one of our projects, we need the the bottom border of each card to be visible in mobile view instead of only the last one

What has changed

applied the bottom border for each card item not only the last one

 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.


TPM support

This will still need changes to the build setup to produce different a different binary for the tpm build right?

Yes. It requires x64 musl build I think. To run together with gateway_rs inside docker

This will still need changes to the build setup to produce different a different binary for the tpm build right?

Yes. It requires x64 musl build I think. To run together with gateway_rs inside docker

Can you make that happen in a PR?

This will still need changes to the build setup to produce different a different binary for the tpm build right?

Yes. It requires x64 musl build I think. To run together with gateway_rs inside docker

Can you make that happen in a PR?

I'll try and then ask for help if it fails

This will still need changes to the build setup to produce different a different binary for the tpm build right?

Yes. It requires x64 musl build I think. To run together with gateway_rs inside docker

Can you make that happen in a PR?

I'll try and then ask for help if it fails

I added support to github ci. However build fails because it can't find header files. I tried to reproduce in ubuntu 22.04 docker and it's fine there. Not sure what's wrong

Replaced by #24


[5.1] Backport self-related relationship issue fixes

This is a backport to 5.1 of PR #12146 which fixed issues on self-related relationships in 5.2.
Issue #12219 was reported for 5.1 after PR #12146 was merged into 5.2. After having confirmed that the fixes in 5.2 worked in 5.1 (with a slight tweak for BelongsToMany), as well as resolved the problem in issue #12219, I created this PR to backport the fixes into LTS 5.1.

@patrickcarlohickman Next time, please just send to 5.1. It's unusual for us to "Backport" things. Merging into 5.1 first is more normal. 5.1 -> 5.2 merges are trivial for us to do, and we do this basically automatically.

@GrahamCampbell I will keep that in mind. Thanks for letting me know. :)


Knock::AuthTokenController and auth parameter validation

To reproduce :

Setup Knock
Generate a token controller rails generate knock:token_controller XXX
Send a post request with a string parameter called  auth to the generated endpoint

Expected response : Status 4XX
-> Bad parameters = Client issue
Actual response : Status 500 - Internal Server Error

Just a quick question. You hcave XXX after token_controller. Did you change it by the model you plan to use (User or else)?

@spaquet Yes, I'm using my User model

Can confirm this. I would expect a 403 to be returned.


added factorial app

Algorithm
#572
Proposed Changes

computing big factorial of big numbers

Additional Info

no

Checklist

[x ] ✅ My code follows the code style of this project.
[ ] 📝 My change requires a change to the README.
[ ] 🎀 I have updated the README accordingly.
[x ] 👀 I have read the CONTRIBUTING document.
[ ] ✨ I have added tests to cover my changes.
[ ] 🚩 All new and existing tests passed.
[ x] 🌟 ed the repo

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Output Screenshots

Title goes here
Title goes here

Image goes here
Image goes here

Make sure your Pull Request is descriptive and complete the checklist .
I would recommend you to go through this tutorial video of the project here ,thanks.
///------------------Description -----------------------///
For contribution and more guidelines i would recommend you to go through this
tutorial video of the project here, thanks.
///------------------Description -----------------------///
Let me show you how to check the check list , there should be no space inside brackets like [x]
[x]

[x] Checklist
[ ] Or you can just check them from outside without doing any of these
[x] ✨ I have added tests to cover my changes.
[x] 🚩 All new and existing tests passed.
[ ] 🌟 ed the repo

Starr the repo if you haven't !
Have you watched this video ?

///----------------------PR README --------------------///
You need to follow particular guidelines for your README , please follow
these guidelines click here
also you can see how your README should look like see here
for more please go through these here

You have Stolen the issue without permissions


Appstudio update test-component-pac-balq

Pipelines as Code configuration proposal

Pipelines as Code CI/test-component-pac-balq-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
12 seconds
init

✅ Succeeded
23 seconds
clone-repository

✅ Succeeded
23 seconds
build-container

✅ Succeeded
8 seconds
deprecated-base-image-check

✅ Succeeded
10 seconds
inspect-image

✅ Succeeded
11 seconds
clair-scan

✅ Succeeded
33 seconds
clamav-scan

✅ Succeeded
10 seconds
sbom-json-check

✅ Succeeded
14 seconds
optional-label-check

✅ Succeeded
14 seconds
label-check

✅ Succeeded
16 seconds
show-summary

✅ Succeeded
16 seconds
show-sbom


[Question] Navigation between ViewControllers (Master/Detail)

Hi!
I'm trying to implement a "Master / Detail" with a "Navigation drawer" but I'm not getting.
                               ---mm_left---[NavigationController]---root---[LeftViewController]:3 items---push--- to [ViewController2] below
           [MMDrawerController]---mm_center---[NavigationController]---root---[HomeController]---push---[ViewController1]---push---[ViewController2]
                               ---mm_right---.....

The problem I have is that when from the "HomeViewController" change to another "ViewController" I still can open the "Navigation Drawer" and I'm not interested. What I want is that when the Detail can not open the "NavigationDrawer" only when press back and then the "HomeViewController".
Attached image "StoryBoard":

I leave the link to the example I have done.  https://github.com/joselufo/MMDrawerControllerDemo

Just as a note - the gist works perfectly for most cases, but fails when an interactive gesture is started and then canceled. The solution is to become the is to conform to UINavigationControllerDelegate and replace popViewController with the -(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated.


Error: unable to verify the first certificate

I got new error when run the tool
[07/27/2024 6:40:22] Requesting Available Location....
Error: unable to verify the first certificate
at TLSSocket.onConnectSecure (node:_tls_wrap:1674:34)
at TLSSocket.emit (node:events:519:28)
at TLSSocket.emit (node:domain:488:12)
at TLSSocket._finishInit (node:_tls_wrap:1085:8)
at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:871:12) {
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
}

getting same error

I'm also getting the same error.

Getting same error.

Same here.. tried running on codespace and local, getting same here.
Appreciate any help

With this certificate issue, is there anything we have to do?

@yoyoy74662000 update the app to the v3.1.0 version by using "git pull" command or simply just delete codespace and create a new one

First of all, thank you so much for sharing this code and fixing the problem, I am able to run this on my local.
However, I am getting next error, not sure it's due to local? should it work fine on code space?
Got 403 status code, retrying...
[07/29/2024 11:59:30] ERROR:
403 Forbidden

403 Forbidden
Microsoft-Azure-Application-Gateway/v2

[07/29/2024 11:59:30] WARNING -> Got 403 status code, retrying...


Additional coverage can be checked after the runn run

refs #748
Support --coverage-out otpion
$ runn run --shuffle on --shard-n 2 --shard-index 1 --coverage-out coverage.json path/to/**/*.yml

How about having the output in json format?
Most of the processing accounts for runbook load time, and having the coverage output in post-processing at test time uses less computer resources than running it separately!

I tested it on a project that already had runn installed, but it took about 4.5 minutes just for static analysis. 😅

I think it's a good developmental feature!

I'll be happy to work on this


Pass "form" into props for each field

I have a need to pass the name of a form down into each Field / FieldArray. This allows me to do things like fire asynchronous actions from the field that will update the correct form / field name in the redux store via redux actions after the asynchronous action is completed.
Currently each Field receives it's name but in certain situations it's important to also know the form name.

Can you use the change function that is passed into the form? It will change the field in the form without you needing to pass in the name.

No because as far as I understand you're only supposed to pass plain objects into redux actions, not functions since they can't be serialized.

Gotcha. I misunderstood what you were trying to do.

I marked it as an enhancement 😉

Fix released as v6.5.0.


Error logged "no version information available"

Hello,
I see an error whenever I open a new shell, either bash or zsh, with the following output:
/usr/bin/zsh: [$HOME]/.pkgx/invisible-island.net/ncurses/v6.4.0/lib/libtinfo.so.6: no version information available (required by /usr/bin/zsh)

From what I understand, the LD_LIBRARY_PATH is being modified to include installed packages, and somehow this is conflicting with the system libraries for system applications.
What I don't understand is, ZSH should already be running by the time pkgx starts modifying PATH and LD_LIBRARY_PATH, so why would it complain about this? The other question is, why would this dependency be missing the version information or is incompatible with the system? (Ubuntu 20.04, WSL 2)
Appreciate the help, and thanks for this amazing project.

Hi, @mbbyn, this is a non-harmful message due to https://github.com/pkgxdev/pantry/blob/d432ac7118e7251d66c3b3f6520f0e8ac7823a33/projects/invisible-island.net/ncurses/package.yml#L49-L63
ideally, we'd figure out some way to suppress this, or be selective about using the other curses library names, but nothing obvious has presented itself yet for linux. if you have ideas or want to look into it, by all means, go ahead. perhaps we should move them out to a shims package so we don't have to pollute everything.

it's possible it might be as simple as --with-termlib          generate separate terminfo library. i'll try it out.


Create Chef cookbook for Open PDS

I'm eager to get a cookbook working to making standing up a server as simple as possible in a secure fashion with server hardening, etc.
Is anyone close to running openpds in a production-ish environment?

Good idea. We took many steps in the right direction near the end of 2014 (around the last time you / I / Albert discussed this project) wrt. deployment and documentation on deployment. This made deploying the system more straightforward, but left deployment in a production environment as an exercise for the reader.
There have been production deployments of openPDS, both in this implementation, as well as other implementations of the SafeAnswers concept. The code itself doesn't typically need to be modified - running each of the components in a separate Docker container and only linking between them as needed is typically sufficient, security-wise. Performance is the bigger issue at scale.
On that note, I should say that we're planning a bit of a barebones re-write of openPDS with the main goal of making it dead simple to deploy (and simplifying the codebase further by leaving features out of the rewrite that haven't seen much use, or aren't the main focus of the project). Timeframe for starting on this is in the coming weeks, with a working version expected in the coming months. We welcome any contributions you might have.

Thanks for the context!  I'll see if I can dig in tonight :)

Anyhow, here's the repo if anyone wants to track it, but it's definitely not functional yet:
https://github.com/patcon/chef-openpds
Once I sort out my issues, I'll probably get it working under the application_python cookbook, get some serverspec tests in place, and then do an official release. Then I'll work on the registry server, if that makes sense.


Refine the latest chart name build on master branch

Rename the latest master chart name to x.y.z-nighty-build

What this PR does / why we need it:
Currently, the latest chart name is like x.y.z-rc-master conflicts with our release-candidate chart name. So we rename the chart.

Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

@wonderflow FYI, the bad chart name is also deleted from Helm Chart repo.


Correction for raw affiliation University of Lyon – CNRS UMR 5600 EVS, Lyon Cedex 07, France

Correction needed for raw affiliation University of Lyon – CNRS UMR 5600 EVS, Lyon Cedex 07, France
raw_affiliation_name: University of Lyon – CNRS UMR 5600 EVS, Lyon Cedex 07, France
new_rors: 02feahw73;029brtt94;0256r1e04
previous_rors: 02feahw73;029brtt94
works_examples: W2052308899
contact: aea33c1f32443c7085793080ee2828a5:8d9f4f5d6def408a94af49690c9b @ ens-lyon.fr

This issue was accepted and ingested by the OpenAlex team on 2024-12-19. The new affiliations should be visible within the next 7 days.


chore(swr): extract http client in swr

Status

READY
Description
follow up #1387
I plan to allow the swr client to select an http fetcher.
Therefore, I extracted the http request processing to a file to be able to branch flexibly.
Related PRs
none
Todos

[x] Tests
[x] Documentation
[x] Changelog Entry (unreleased)

Steps to Test or Reproduce
none

Thank you for review


[CMake] improve support for Clang-CL

This introduces SWIFT_COMPILER_IS_MSVC_LIKE into CMake. This will help us avoid multiple checks for
if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
This is because clang-cl and MSVC have identical frontend arguments.
CMake natively supports clang-cl on Windows, and provides default compiler and linker flags.
This means that if we select clang-cl or MSVC as the compiler, and build the runtime with clang, compilation fails, because the flags are different.
As a result, use the just-built clang-cl if SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER is FALSE. I'm not sure if this affects the ABI of the runtime.
I also made SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER==true into a fatal error if we're not building with Clang as the primary compiler. This is because we don't actively support the runtime with any non-Clang compiler. Indeed, in the future, this support will be dropped.
@jckarter @jrose-apple @compnerd

Seems reasonable to me. @erg and @llvm-beanz are probably better people to ask then me and @jckarter, though.

Thanks. I was checking in with @jckarter because he mentioned the swift calling convention that will only be supported in clang. I just wanted to make sure clang-cl will support too, I think it will but not 100% sure

Ah, good point. I do think that's the plan, although it may need extra work to get it working properly.

We'd have to build clang-cl as part of the swift-clang build, if we don't already. If clang supports GCC-style attributes in MSVC mode, then hopefully things will just work.

I'm fairly sure we do, as the file exists in the build directory of swift-clang on my PC. I'm fairly sure clang-cl supports these GCC attributes so we're good here

Should've mentioned. SWIFT_COMPILER_IS_MSVC_LIKE is only used once in this PR - I'm going to make some changes to the windows port when this is merged in to use it in other places.

@swift-ci Please smoke test

This one seems ok on the MSVC side. It's possible there's a configuration that breaks because of not compiling with the just-built Clang. I guess we'll just have to see!
LGTM

Lets pull the trigger :-).


Email Gateway: support plain text messages

Steps:

send a plain text email to a stream

Expected behaviour:
See the email text in the stream coming from the Email Gateway
Actual behaviour:
The Email Gateway posts (No email body)

@timabbott Thank you! I suggest the following simple test (I did it, copying the text here would't help you). Do you have Gmail? Try sending a message from Gmail with the checkbox "Plain text" activated. What I did was subject test, content test. When I do that, I observe the behaviour above.

Gosh, oh yes! There was indeed a problem in the email config. Thank you very much!

@DreamFlasher can you share what the config issue was?  It's possible we should update our docs to make that error less likely.


Setting maximum iteration for diagnostic edmf to 8

Purpose

Sets maximum iteration to 8 and relative tolerance to 0.0003 (~0.1K) for saturation adjustment of subgrid-scale thermo state. It might not be ideal, but better than the default 40. Also reduces dt and t_end for Bomex.
Closes #1985
To-do

Check if the oscillation becomes weaker when reducing dt for Bomex

Content

[ ] I have read and checked the items on the review checklist.

Actually Bomex results change a bit too much I think. I'm trying tolerance 0.0003 (~0.1 K).

The changes in the results are smaller with maximum iteration 8 and tolerance 0.0003 (~0.1K). I think it's good for now. I will come back to the oscillations in Bomex after #1994 and implicit solver.

bors r+


[BUG] The Code preview tab the buttons were inconsistent

Description
On navigating to the DSA Examples page on clicking on View Code the buttons were First one is Copy Code and next one is Close. On navigating to Show more page in DSA Examples There on clicking on view code the buttons order was Close and Copy Code.
Expected Behavior
The buttons should be in the same order.
Screenshots (if applicable)
On the DSA Example page:

On Show More:

nice catch


Make own version of quay.io/rbo/ubi-awscli:latest

Forged: https://github.com/cloud-native-robotz-hackathon/ubi-awscli
Repo: https://quay.io/repository/cloud-native-robotz-hackathon/ubi-awscli
Problem building the container image:
26 files removed
Collecting awscli==1.25.83
  Downloading awscli-1.25.83-py3-none-any.whl (3.9 MB)
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 438, in _error_catcher
    yield
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 519, in read
    data = self._fp.read(amt) if not fp_closed else b""
  File "/usr/lib64/python3.9/http/client.py", line 463, in read
    n = self.readinto(b)
  File "/usr/lib64/python3.9/http/client.py", line 507, in readinto
    n = self.fp.readinto(b)
  File "/usr/lib64/python3.9/socket.py", line 704, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib64/python3.9/ssl.py", line 1275, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib64/python3.9/ssl.py", line 1133, in read
    return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 173, in _main
    status = self.run(options, args)
  File "/usr/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 203, in wrapper
    return func(self, options, args)
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 315, in run
    requirement_set = resolver.resolve(
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 94, in resolve
    result = self._result = resolver.resolve(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 472, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 341, in resolve
    self._add_to_criteria(self.state.criteria, r, parent=None)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria
    if not criterion.candidates:
  File "/usr/lib/python3.9/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
    return bool(self._sequence)
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 140, in __bool__
    return any(self)
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 128, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 32, in _iter_built
    candidate = func()
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 207, in _make_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 295, in __init__
    super().__init__(
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
    self.dist = self._prepare()
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 227, in _prepare
    dist = self._prepare_distribution()
  File "/usr/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 305, in _prepare_distribution
    return self._factory.preparer.prepare_linked_requirement(
  File "/usr/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 508, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "/usr/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 550, in _prepare_linked_requirement
    local_file = unpack_url(
  File "/usr/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 239, in unpack_url
    file = get_http_url(
  File "/usr/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 102, in get_http_url
    from_path, content_type = download(link, temp_dir.path)
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/download.py", line 145, in __call__
    for chunk in chunks:
  File "/usr/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py", line 144, in iter
    for x in it:
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/utils.py", line 63, in response_chunks
    for chunk in response.raw.stream(
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 576, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 541, in read
    raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
  File "/usr/lib64/python3.9/contextlib.py", line 137, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 443, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
Error: building at STEP "RUN yum install ${YUM_OPTS} -y python3-pip nss_wrapper &&     yum -y clean all &&     pip3 install ${PIP_OPTS} awscli==${AWSCLI_VERSION}": while running runtime: exit status 2

Mh looks like was a temp issue.
Let's update README and provide a multi-arch image.

quay.io/cloud-native-robotz-hackathon/ubi-awscli:1.25.83 ✅


Fix io_failure param name in steamworks_error signal

Parameters can't have spaces in their names.
This was causing Godot 4.0 .NET compilation to fail because it generated an event delegate with the parameter name "io failure" which is not valid because it contains a space.
In 3.x signals are not generated in C# so it doesn't really matter but spaces are still not valid in identifiers as far as I'm concerned so it's probably a good idea to avoid them.

Oh yeah, I'm aware they can't have spaces, this just appears to be a typo.  You can tell since it is the only one out of place.  Thanks for getting this corrected!


DHT Service

Describe Your Problem:
DHT Service is not working for me, even with RPi 4. In HomeKit shows each conditioner with Humidity 0% ; Temp 45. Is it a method to make it work properly? Thanks in advance
Logs:
Show the Homebridge logs here, remove any sensitive information.

Plugin Config:
Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

Plugin Version:
Homebridge Version:
Node.js Version:
NPM Version:
Operating System:

dedicated Ip for each conditioner, then in your plugin set each child bridge needs to be connected to a solid IP address. problem is with dht service, in homekit it can not read the status of current temp and humidity. do you know how to perform that?

To setup the DHT, in the home directory create a folder and add this file over here https://github.com/RaresAil/homebridge-gree-ac#dht-service with the name index.js
Then from the terminal in that folder run:

And press enter on all of the questions:npm init

After that runnpm install node-dht-sensor express

Make sure the DHT sensor is on GPIO 17
If the DHT is model 11 skip this step, but if is model 22 replace in index.js sensor.read(11, with sensor.read(22,
To run the DHT service executenode index.js

To auto start the service after restart follow this article but for ExecStart should be like /usr/bin/node /home/..your-path../index.js

You will need to buy a DHT11 or DHT22 (more accurate) sensor and connect it to RPi using GPIO

I'm searching for a method to view each room temp that is provided from greeAC. In the main app Gree+ it is working fine

e

The model i used didn't exposed a temperature sensor so i can display it and i no longer have a gree ac because i moved in a diff apartament, so i won't be able to add new features for it, i will add a custom config to change the default temperature from 45 to something else

thanks a lot

I added version 1.2.0 which allows to change the default temp
https://github.com/RaresAil/homebridge-gree-ac/issues/4#issuecomment-1156236301
Let me know if it is working

Hello
thank you for your work. It seems works fine
I have a question: Is it possible read the DHT temperature using a sensor in the home?
I havean esp8266 with DHT and simple web server. Would be possible use it? I could modify sketch to match with plugin
Thank you again

The model i used didn't exposed a temperature sensor so i can display it and i no longer have a gree ac because i moved in a diff apartament, so i won't be able to add new features for it, i will add a custom config to change the default temperature from 45 to something else

Could the follow document help to implement temperature reading?
Plugin would be great with temperature feature
https://github.com/tomikaa87/gree-remote

I added version 1.2.0 which allows to change the default temp
#4 (comment)
Let me know if it is working

just updated but Homebridge give an error

@GPL71 please try 1.2.1

Hello
thank you for your work. It seems works fine
I have a question: Is it possible read the DHT temperature using a sensor in the home?
I havean esp8266 with DHT and simple web server. Would be possible use it? I could modify sketch to match with plugin
Thank you again

if the response from that http server is in the forma, in the config, just add the url of the ESP and the path for that endpoint
{
  "temperature": 10,
  "humidity": 40.5
}

The model i used didn't exposed a temperature sensor so i can display it and i no longer have a gree ac because i moved in a diff apartament, so i won't be able to add new features for it, i will add a custom config to change the default temperature from 45 to something else

Could the follow document help to implement temperature reading? Plugin would be great with temperature feature
https://github.com/tomikaa87/gree-remote

I don't have a Gree AC anymore so i can't implement it

@GPL71 please try 1.2.1

It seem working. Thank you

The model i used didn't exposed a temperature sensor so i can display it and i no longer have a gree ac because i moved in a diff apartament, so i won't be able to add new features for it, i will add a custom config to change the default temperature from 45 to something else

Could the follow document help to implement temperature reading? Plugin would be great with temperature feature
https://github.com/tomikaa87/gree-remote

I don't have a Gree AC anymore so i can't implement it

ok ... I can offer as tester if that could help. I think @Forrest1313 could do it too

The model i used didn't exposed a temperature sensor so i can display it and i no longer have a gree ac because i moved in a diff apartament, so i won't be able to add new features for it, i will add a custom config to change the default temperature from 45 to something else

Could the follow document help to implement temperature reading? Plugin would be great with temperature feature
https://github.com/tomikaa87/gree-remote

I don't have a Gree AC anymore so i can't implement it

ok ... I can offer as tester if that could help. I think @Forrest1313 could do it too

I checked that code and didn't found a temperature sensor on the AC to get the temperature

The model i used didn't exposed a temperature sensor so i can display it and i no longer have a gree ac because i moved in a diff apartament, so i won't be able to add new features for it, i will add a custom config to change the default temperature from 45 to something else

Could the follow document help to implement temperature reading? Plugin would be great with temperature feature
https://github.com/tomikaa87/gree-remote

I don't have a Gree AC anymore so i can't implement it

ok ... I can offer as tester if that could help. I think @Forrest1313 could do it too

I checked that code and didn't found a temperature sensor on the AC to get the temperature

OK I'll try check how app could read the temperature or the api for wifi AC

@GPL71 Alright, let me know how is working, I enabled Discussions on this repo, just post there the feature request if you manage to find a way to get the temperature

I've found:
https://github.com/alexmuntean/gree-airconditioner-rest
And following explain how to get temperature
https://github.com/tomikaa87/gree-remote
https://github.com/tomikaa87/gree-remote#getting-the-current-temperature-reading-from-the-internal-sensor
seem following allow read temperature
https://github.com/tomikaa87/gree-remote/tree/master/PythonCLI

Can I disable the dht status?

@mpuff just remove dhtService from the config

@RaresAil, I only have this in the Config:
{
"name": "Klimagerät",
"broadcastAddress": "<IP_ADDRESS>",
"threeSpeedUnit": true,
"coolingMinTemp": 18,
"coolingMaxTemp": 30,
"heatingMinTemp": 20,
"heatingMaxTemp": 30,
"platform": "GreeACImplementationPlugin"
}
but I have still the temperature of 45 in the apple home app.

@RaresAil, I only have this in the Config:
{
        "name": "Klimagerät",

        "broadcastAddress": "<IP_ADDRESS>",

        "threeSpeedUnit": true,

        "coolingMinTemp": 18,

        "coolingMaxTemp": 30,

        "heatingMinTemp": 20,

        "heatingMaxTemp": 30,

        "platform": "GreeACImplementationPlugin"

    }

but I have still the temperature of 45 in the apple home app.

Add "defaultCurrentTemp" and give it what value you want


Bridgeless: Set ES6Proxy support off ReactNativeFeatureFlags

Summary:
This makes use of the new ReactNativeFeatureFlags infra to easily toggle Hermes ES6Proxy on/off as needed. By default it is enabled, following Hermes default:
https://github.com/facebook/hermes/blob/75cdee98363191d31b6a1cdc766926f8d120364b/public/hermes/Public/RuntimeConfig.h#L67
Changelog: [Internal]
Differential Revision: D55048700

Closing as abandoned internally


Use of Front Door for Inbound Traffic to App Service

Hello,
As we have a Front Door, we want to use it for Access restriction for Inbound traffic in App Service.
On App Service, under Settings, click Networking.

Add a rule for Front Door.

Now, when we open the Company Communicator App in MS Teams, we start to see CORS errors.
Access to XMLHttpRequest at 'https://communicator.azurewebsites.net/api/draftnotifications' (redirected from 'https://communicator.azurefd.net/api/draftnotifications') from origin 'https://communicator.azurefd.net' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Can someone please suggest?
Thank you!

Hi @nanddeepn,
Thanks for raising the query, we'll simulate this scenario using Azure Front door and explore the issue which you're facing and get back to you with our findings.

Please let us know if you are still facing this issue and require assistance and we will be happy to discuss. If no further action is needed at moment and no response is received, we will close out the issue in 3 business days. You may also always open a new issue or respond here if something does come back up.

Hi @SankarMicrosoft
You may close this issue.

how to solve this issue , we are also facing similar issue

Hi @sponlinedev
We had used the certificates to get across the CORS issue.


Model binding in Http triggers

Hi!
I wonder if there is any way to make the HttpTrigger to automatically bind a model. With in process it was possible, but with this new way I wasn't able to.
I also had a Custom Binding for binding a specific model class, but now it seems that I need to do a lot of stuff for making it work again.
So the work around for now is manually call the extension method req.ReadFromJsonAsync if I need to bind from the request body and do something like this NameValueCollection query = System.Web.HttpUtility.ParseQueryString(req.Url.Query); if I want to get the query params and manually create my query objects.
So, does anybody here knows about a library or something that can be used in order to create custom bindings without having to create nuget packages like stated here https://blog.maartenballiauw.be/post/2021/06/01/custom-bindings-with-azure-functions-dotnet-isolated-worker.html?
Thanks!

Flagging this for assignment as we should support this scenario with HTTP.

Support for this as been added for both, the standard HTTP model (HttpRequestData based) and for the ASP.NET Core Integration. Documentation for the latter is available here. The FromBodyAttribute works for both models.


Load GitHub in background

Review the latest update and respond here: New Comment
This is critical—take action now.
Stay secure!


dark magic v0.2.0: cargo

this is messy; but all other PMs will mostly work this way. so, we should get it right. but, this works at least. let's fight about better ways.

I think we should provide a pkg cargox that then behaves like npx etc. in that the files are installed to a location controlled by the tool rather than how this works where the executable ends up in ~/.local/bin

Or do it internally, but I don't think the executables should end up in a public path.

We can do that with the --root flag, so, that should be easy.

Shouldn't we usePrefix().bin somewhere? Or am I missing that

  const binDir = usePrefix().bin
useDarkMagic.ts:L52

If it's already installed, it'll show up in the path search before getting here.

Yes, it invokes, but it doesn't do anything if it's already installed

k well that's fine. If it's quick we can leave it and not mess around.


Bug report: F-Droid, no compatible versions

Describe the bug
I have a Samsung Galaxy J6 with Android 10 (no custom ROM, no root). I cannot install LocalSend because every version in F-Droid is not compatible.
To reproduce

Open F-Droid
Search "LocalSend"

Expected behavior
If the required minimum version of Android is 5.0, I expect to be able to install LocalSend without any problems.
Screenshots

Desktop (please complete the following information)
No response
Smartphone (please complete the following information)

Device: Samsung Galaxy J6
OS: Android
Version: 10

Additional context
No response

Settings
Incompatible, toggle ON
Expert, toggle ON
Go to app details
Expand versions
Read reason for incompatibility?
Attach a picture?

It is important to note that F-Droid only provides x64 and arm64 apks. arm32 is only available as APK on Github or Google Play

@wylited Requires arm64-v8a
@Tienisto It's true, I just found out now.


Database queue driver deadlock + solution

Laravel Version: 6.12.0
PHP Version: 7.2.11
Database Driver & Version: MySQL 5.7.24

Description:
Original issue: https://github.com/laravel/framework/issues/7046
When running more than one queue worker deadlocks happen.
Steps To Reproduce:

Create an empty job
Start 10 queue workers (database)
artisan queue:work
Add to queue 10,000 jobs
$arr = [];      for ($i = 0; $i < 10000; $i++) {$arr[] = new \App\Jobs\TestJob();} Queue::bulk($arr);
Expected: somewhere between 100 and 500 jobs will fail with a deadlock error.

Proposed solution
Remove "queue" column index from the "jobs" table. The only index on the "jobs" table should be the primary index on "id" column.
Expected outcome after removing the index

No more deadlocks and failed jobs
Somewhere around 20% performance increase in job processing.

Explanation of the fix (my guess)
When a queue job tries to reserve a new job by running SELECT...FOR UPDATE, it must get 2 locks on both indexes (id and queue). Acquiring those two locks is not atomic and if another worker releases the job by executing the delete statement in between, it can acquire the lock between those 2 actions and create a deadlock.
Can somebody test this and confirm that the findings are correct?

The queue index is necessary since the query uses the queue column to filter jobs. Upgrade to MySQL 8 and you won't have to worry about Deadlocks with the database queue :)

@themsaid I am having exactly same issue with MySQL version 8 !!!
Server version: 8.0.21-0ubuntu<IP_ADDRESS> (Ubuntu)
@mantas-done Did MySQL upgrade worked for you ??? .. or you went ahead with index removal from 'queue' column

@themsaid I am having exactly same issue with MySQL version 8 !!!
Server version: 8.0.21-0ubuntu<IP_ADDRESS> (Ubuntu)
@mantas-done Did MySQL upgrade worked for you ??? .. or you went ahead with index removal from 'queue' column

Removing index works perfectly.
Unfortunately, AWS Aurora Serverless DB won't support MySQL 8.0 in near future.

@themsaid I am having exactly same issue with MySQL version 8 !!!
Server version: 8.0.21-0ubuntu<IP_ADDRESS> (Ubuntu)
@mantas-done Did MySQL upgrade worked for you ??? .. or you went ahead with index removal from 'queue' column

Removing index works perfectly.
Unfortunately, AWS Aurora Serverless DB won't support MySQL 8.0 in near future.

Yes.. working for me too
Only issue as suspected was.. performance downgrade ! (coz we removed indexes)

Can confirm that queue column index removal is solution.
Also waiting for AWS Aurora MySQL 8 support


Allow user-defined runtime workflow

NOTE: these are preliminary notes.
For some cases like time-independent simulations or runge-kutta time stepping schemes, the runtime workflow that is currently defined in the framework, i.e., initialize+master_clock*(run_step+finalize_step)+finalize may not be the most appropriate. More flexibility would be nice.
Any runtime workflow may actually be defined in a very abstract manner, i.e., as multiple passes through the whole DAG of processes in a model, each pass executing a specific method implemented in each process class (or doing nothing if the process don't implement that method). The implementation of this abstract concept shouldn't be too challenging.
Regarding the API, we might simply use a "signature" string like the one above to define a particular workflow. The most simple workflow would have the signature run, which consist of one pass through the DAG executing the run method of each process (topologically sorted). What is more challenging is when the "signature" contains other information than method names (like master_clock above).
The right place to define such signature is probably either as an argument of xs.Model or when setting a simulation driver.

A intermediate option between the current, fixed workflow and the flexible workflow defined above would be to keep fixed initialize and finalize stages and, instead of two run_step and finalize_step stages, allow user-defined run step sub-stages (given by ordered levels). We could extend the API proposed in #40 to something like:
@xs.process
class Diffusion(object):

    @xs.run_step(level=0, args='clock,clock_diff')
    def run_one_step_first(self, t, dt):
        # use t or dt

    @xs.run_step(level=1, args=None)
    def then_run_another_step(self):
        # ...

For my usage of xarray-simlab in the current version of the Phydra package, with GEKKO as a backend solver, this issue is quite relevant as referenced in the issue on the Phydra repo automatically linked above.
Specifically the model processes would be much easier to implement if there were different levels of the initialize simulation stage that can be defined. This would be slightly different from what you proposed in the previous comment @benbovy, but perhaps this would be simpler to implement. Keeping the default level of initialize at 0 should not cause any problems with compatibility I think. If this seems reasonable, I could try working on a pull request. Would be happy to hear your thoughts, thanks!

Note that the suggestions in the comments above are still very elusive. I'm not sure at all if it is a good idea. At least it deserves carefull thinking to make the right design decisions. I'd like to avoid adding too much complexity and confusion.
I haven't looked in detail at your use case, but I wonder if you couldn't solve it by re-arranging your process classes, maybe by adding some aggregation classes (i.e., using xs.group). If that's not possible, I wonder if #62 (enforce user-defined process ordering) wouldn't better help than the suggestions made here.

Thank you for the feedback! I am not sure if #62 could solve my issues and commented over there for clarification.
To extend on your previous ideas and hopefully specify my use case: It would be useful if there was an interface to xarray-simlab that by default provides the standard runtime stages (i.e. initialize+master_clock*(run_step+finalize_step)+finalize), but when specified by the user would allow for custom runtime stages e.g. when no master clock is supplied initialize+run+finalize or even more complicated but also applicable to my own use case initialize1+initialize2+run+finalize_step+finalize or multiple initialize stages with step-wise solve. This would make xarray-simlab an incredibly powerful for developing all kinds of models.
I describe my current (incomplete) solution in more detail over on the phydra repo issue. I am using the construct of clocks = [0,1] at model setup precisely to use run_step() as a second initialize simulation stage, and finalize_step() as a run-step, where the model is solved in one step. This was inspired from your npzd xsimlab model code.  This means that I have no run_step() stage available to solve the model in the explicit xsimlab clock time step (which would be possible with the GEKKO backend solver). If you say this is a more complex issue, I will write up the first version of Phydra with current xarray-simlab functionality. I'd be happy to help with development, if you have ideas on how to tackle this.


Contributor's name not included in the contributor's list in the readme file.

Describe the bug
My name is not listed in the contributor's list in the readme file even though I contributed and the PR was merged.
Expected behavior
The expected behavior would be my name listed on the contributor's list in the readme file.
Screenshots

Resolved #201