Support merging of VirtualService resources on the same host

@rshriram @costinm @andraxylia
The fact that we require VirtualServices to be a monolithic unit of edit is proving problematic for users. Largely because it presents impedance in development workflows and existing CI systems or that were used to producing mergeable Ingress resources.
We adopted a monolithic resource approach as it allowed for total validation of the intent of routing within a context including the ability to validate for obvious conflicts. A single resource also has advantages when managing rollout of changes that could break production as it's a single unit to push through canary and rollback if necessary
If we support a merging protocol similar to the one @ZackButcher previously documented for Ingress
https://docs.google.com/document/d/1z9jOZ1f4MhC3Fvisduio8IoUqd1_Eqrd3kG65M6n854/edit#heading=h.yiu7n85qkofa
Fundamentally the solution would state

If you want absolute control over order then use a single resource
If you use multiple resources then the system will merge them and apply a standard ordering of the form

longest path prefix > longest path suffix > longest path pattern match > age of merged resource (creation timestamp) > default route
This form of merging is pretty typical and gives precedence to URLs as a hierarchical namespace. We use of 'age of merged resource' to give precedence to resources that are already running in production and are more likely to be safe. We put 'default' at the end as it is effectively a match with no condition.
Similarly we can support merging for TCP & TLS resources. TCP has a hierarchy as does the SNI suffix matching in
Note that while this solution is somewhat orthogonal to the RBAC discussion here
https://docs.google.com/document/d/17K0Tbp2Hv1RAkpFxVTIYPLQRuceyUnABtt0amd9ZVow/edit
it does overlap as it presents a different approach to the editing model. The solution presented here doesn't suggest a security model though it presumes that one can be layered on top separately

Linking some related issues here
https://github.com/istio/istio/issues/7674
https://github.com/istio/istio/issues/6486
https://github.com/istio/istio/issues/6070
https://github.com/istio/istio/issues/7776
https://github.com/istio/istio/issues/7529
It's worth noting from these that merging helps with a number of other known issues

mapping k8s ingress 1-to-1 into VirtualService and then doing the merge. A feature that was dropped in 1.0 and needs to be revived.
enabling auto-cert provisioning to create a resource to merge that captured the authorization handshake

@ayj it's worth noting that with Pilot implementing merging this has an affect on the validation phase of Galley. Pilot may decide to reject the resource because it can't be merged with the others its aware of. This is particularly important when there is more than one system providing VirtualService resources to Pilot at the same time.

Per discussion on slack, can we start with the simple merging where we simply concatenate the http/tcp/tls blocks in a virtual service, while keeping the default route in the end? Looking at all the issues, the simple concatenate and order by time will satisfy all the issues you pointed to above.
Btw, the same should also be applicable for Destination rules as it too is a single unit of edit. No point in using subsets in a separate virtual service but defining the subsets in one global destination rule. So we need to do the same merging there as well. And it does bring about some interesting issues (subsets with same names and different labels, etc.).

Side question.
In terms of CRD, how this is going to be planned ? Pilot/Galley will manage all the VS generated by the user and create a new synthethic CRD VS with the merge, deleting the previous ones ? The old ones will remain with some flag like "active/non active" ?
I try to figure out the final picture from the third party tooling that manages configuration (i.e. Kiali) and adds additional semantic validation (i.e. a VS defined where no host is located, or similar validations).

Another request for this from @nmnellis a while back:  https://github.com/istio/istio/issues/5006
+100 for supporting a simple merge of VS for the same host.  cc @frankbu @ijsnellf @GregHanson @esnible

@louiscryan I think that the functionality requested in this feature (delegation of edit) is a subset of functionality covered in the VirtualService Delegation proposal. The proposal provides a delegation of edit in a way that RBAC and delegation of permission can be added in future.
I'm not sure how you can add permissions/RBAC (for e.g. separate ownership for Public/Private hostnames) in the solution mentioned here. It feels like this is solving for specific cases rather than a flexible config model for users. In this solution for every hostname a user would have to list all VirtualService resources, then do a mental merge of all VirtualServices sharing the hostnames (as there is no order or priority via config) before adding more routes.

@lucasponce The merging will likely need to be done in Pilot, not in Galley, otherwise it would mean too much component specific knowledge in Galley.

Pilot may decide to reject the resource because it can't be merged with the others its aware of

The notion of per-resource applied/operational status would be useful here. Resources that were previously applied to configuration maybe later become un-applied due to higher precedence resource. https://github.com/istio/istio/issues/7794 proposes a feedback loop between Pilot and Galley where this operational status (include merge confligs) could be reported.

@nrjpoddar I've added some comments in that design doc. One of the concerns with the delegation proposal is that by having a single root resource you force a read-modify-write cycle on that resource for the injection of additional behavior into that host. We have a few data points indicating that creates some impedance for users (lets encrypt capture, CI systems, k8s ingress).
These things are not mutually exclusive but we do need to prioritize based on some collective agreement about relative value. Happy to follow up offline or discuss at the next WG meeting

@andraxylia But the merging is "virtual" I mean. An user would see the original config resources (VS, DR) or those will be gone and at the end the final CRD will be the "composed/merged" resource managed by Pilot ?
Perhaps that's my main doubt.
I'm thinking in scenarios Kiali is managing today:

Where it will add additional "semantic validation" over the configuration resources.

@lucasponce the merging is virtual, it is not correct to replace the original resources. It is correct to set the value of the status field - similar to how a Pod status would change to Scheduled, running etc. The doc explains more about the merging.

@louiscryan Thanks for your feedback. With VirtualService delegation I agree there's a read-modify-write cycle only on the "root" resource and only for injecting additional behaviors as your mentioned.
This issue also exists in the convention based merging proposal as you can have scenarios where you would have to update/patch a resource rather than creating new ones which can follow the merge convention and inject additional behaviors.
Would love to chat offline early this week if it works for you.

@nrjpoddar @louiscryan I would prefer if the approach gets discussed during the networking meeting this Thursday rather than in offline chats.

@louiscryan, I assume that CreationTime is a last-resort sort key, just to ensure that pilot always resolves the same config for a given set VirtualServices, and it is not intended to be exploited for any priority resolution. Is that correct?
Also, what does “longest path pattern match” mean? I would assume it means the longest path matched by a regex, but I don’t see how that can be implemented at config merge time.

@bmarshall13
Yes, it's there so we can produce a deterministic output, no one should rely on it for real priority.
By "“longest path pattern match” I mean the longest regex specification, not the longest text that could be matched by that. This is clearly a very rough approximation of specificity (and therefore priority) but it may be better than nothing
@nrjpoddar The examples I gave around merging (let encrypt, ingress, CI) don't typically require read-modify-write. They are fully specified by outside systems so they only need write & delete semantics typically.

@louiscryan I'm wondering how well this design works for virtual services with multiple hosts, the use case where the the first host (that should be merged) is an external host bound to a gateway (e.g., bookinfo.com) and the second host is the internal service name (e.g., reviews.default.svc.cluster.local).
In this case, each virtual service typically serves two purposes:

defines the external paths that should route to the service.
defines the rules (e.g., version routing) for the service.

Two hosts are used so that when we upgrade a service from version v1 to v2, for example, we don't have to add the new routing rule in two different virtual services (one for bookinfo.com and one for reviews.default.svc.cluster.local).
If we use a delegation approach, like @nrjpoddar's proposal, we can move the two function into separate virtual services (one host each) and then we can configure the routing rules in the delegate virtual service that applies regardless of whether the request is from an internal or external caller.
With this merging proposal, we have the advantage of not needing to update the root virtual service whenever we add or remove external paths, but on the downside, we need to add AND path matches to every route rule in the virtual services.  If you forget one, the rule from some team can suddenly start capturing all traffic that isn't already captured by other path-specific matches in rules that happen to be higher precedence in the merged sort order.
I'm wondering if it might make sense to add a new top level default path match field in a virtual service that is automatically applied to every rule in the service, or something like that? That would certainly make it cleaner. Maybe even requiring something like that before virtual services can be merged?
I'm assuming this is one of, if not the primary use case (separating monolith paths into team-specific virtual services) driving the merging requirement, so I think we should make sure it works well for this case.

@frankbu that's an interesting scenario. In my opinion the proposal here and the VirtualService delegation are both needed and are not exclusive. Convention based merging is great for path prefix matches and as @louiscryan pointed out for systems like let's encrypt, ingress which only require add/delete semantics.
For more complicated merging, delegation makes sense as it assigns a user defined priority and reuse of config via composability. Combining both is really powerful and I think will solve your use case.

I agree with @nrjpoddar here. Delegation would be within the context of a match expression which naturally implies an AND with the matches in the specification being delegated to. Note that the AND can be elided if the outer condition is a strict subset of the inner one, in the case of paths this works pretty well. E.g. outer path match is '/sales' and delegated match is '/sales/advertising'

why cna't the delegation be done as part of pre-processing? After all, its just a construct to reduce the repeated configuration. ITs not something that influences runtime routing. A galley plugin could read in the virtual services with delegation and spit out the final processed virtual service without delegation. Will simply the code inside pilot as well. And allows for people to turn this on demand rather than doing this for everyone. And with some smarts, we could allow people to define the merge semantics they want, that befits their organization rather than imposing one format for everyone.
Essentially, the "concatenation" proposed in this issue can be part of the core. Its simply appending multiple rules into one. The delegation, which requires merging can be done as a galley pre-processor plugin, (same as the hostname ownership as well).

I agree in principle with Shriram here: there's not one obviously best way to merge VS clauses.vThe general problem is that while HTTP may be "simple" enough (in practice it remains to be seen given we support matching on things like port, gateway, etc), other protocols aren't necessarily. Defining merge semantics per-protocol is going to be a real drag.  In my opinion the right thing for us to do here is develop a simple CLI to iterate on how merging might work, verify with real users that what we want to do solves their pain points. Then we can codify that as part of Pilot's implementation. (And certainly we can define protocol specific merge semantics and for the rest just say "concat them together".)
However, I do think that if we're going to change Pilot to support merging in the short term, we can carve out a subset of HTTP to define reasonable merge behavior that's better than "concat the clauses together" (that's why I wrote the document about VS merging to do just this eight months ago :) ).
So taking a stab at a "reasonable" merging algorithm, taking in to account the fact that we have matches other than just exact/prefix/regex on the URI, I think the order of merged clauses should be in these groups:

Exact URI matches (order doesn't matter, but we'll say longest to shortest)
Prefix URI matches, ordered shortest to longest
Regex URI matches, in creation timestamp order ("length" is meaningless for regexes, unless we're talking about the maximum length of a string in the language they'll match, and we can't determine that statically)

We might want to special case the .* regex to the very end

Non-URI matches in creation timestamp order (we could also potentially order them by number of predicates, most to fewest)
The fallthrough/default route (the oldest default route wins)

Within each of the 1,2,3 blocks (the URI matching blocks), we'll order by number of other predicates in the match to tiebreak when the matches are the same length. When two match conditions have exactly the same number of predicates, we'll put them in creation time stamp order. We do not differentiate between the type of predicate (i.e. we don't say "gateway matches before port matches but after..."). In other words, given three separate VirtualServices like:
hosts:
- ratings.prod.svc.cluster.local
http:
- match:
  - headers:
      end-user:
        exact: jason
    uri:
      prefix: "/ratings/v2/"
  route:
  - destination:
      host: a
---
hosts:
- ratings.prod.svc.cluster.local
http:
- match:
  - headers:
      end-user:
        exact: jason
    gateways:
    - "billy"
    uri:
      prefix: "/ratings/v2/"
  route:
  - destination:
      host: b
---
hosts:
- ratings.prod.svc.cluster.local
http:
- match:
    uri:
      prefix: "/ratings/v2/"
  route:
  - destination:
      host: c

(note all match on identically the same host and URI prefix) we should produce the merged VirtualService:
hosts:
- ratings.prod.svc.cluster.local
http:
- match:
  - headers:
      end-user:
        exact: jason
    gateways:
    - "billy"
    uri:
      prefix: "/ratings/v2/"
  route:
  - destination:
      host: b
- match:
  - headers:
      end-user:
        exact: jason
    uri:
      prefix: "/ratings/v2/"
  route:
  - destination:
      host: a
- match:
    uri:
      prefix: "/ratings/v2/"
  route:
  - destination:
      host: c

I am not sure ordering by URIs first and then tie-breaking by other params is the way to go. We have several parameters (ports, gateways, source labels). We are also eliding headers, authorities, methods, schemes. We need to define a natural order of merging across all these parameters (and keep the door open for future match parameters we introduce. For example, some have been asking for source CIDRs in http matches as well).
Why can't we take an alternate approach and define a mergeKey field in every match condition? At runtime or in galley, we can sort by the merge key in the match conditions and order them.  The key space can be partitioned across teams (e.g., "global-..", "team1-...").
We could even define a new API that defines the composition order for virtual services based on the merge keys (it could be alphabetic by default). I think this is similar to what @frankbu was suggesting earlier. Define a host or path and define the key prefixes - which control the order of concatenation of virtual services.
We can handle the degenerate case of K8S ingress, lets encrypt etc. by simple time based concatenation and it will work for the most part, because these systems tend to define disjoint resources mostly. The only case we elide is one where k8S ingress users start defining overlapping ingress resources (one defines /acme, and another defines /acmefoo). These people who have complex ingress resources with potentially overlapping routes/paths etc. are likely to be careful and examine the istioctl tool generated virtual service rather than trusting us to auto-merge.

If these changes are going to be made in pilot (or any public API), I suggest that any "conflicting" VirtualService resources (or match rules) be ignored. i.e. Keep only the oldest, instead of including all sorted by creating time.
This would allow the merge ordering to start simple, and become more complex over time, without breaking existing use cases.  Any new merge rules added in future versions will gives clear ordering to previously conflicting (and ignored) resources which can't break an existing functioning config.
This assumes that if there are conflicts, the user is aware and has removed the conflicts. Ideally this is in VirtualService status, but it can be as simple as a pre-upgrade check. "Remove these VirtualService rules to prevent config changes after the upgrade"
If all rules are included in the live config with simplistic ordering that is made more intelligent during an upgrade, then a set of VirtualServices that are implementing the user intent may break. There may not be a set of VirtualServices in the new version that will satisfy the user goals. (Like what happened from v1alpha1 to v1alpha3).
This might make fewer people happy now, but at least we won't make happy people unhappy in the future.

This was implemented.


Ensure model visibility works when element not renderable

Previously, we keyed off of CSS transition events to know when to switch model visibility state internally. However, when an element is in a non-renderable state (such as when its layout is collapsed or when its computed CSS display property is none), transitions don't occur and so the associated events do not fire.
This change adds a check for "renderable" element state. The element is considered renderable if its layout dimensions are greater than 0. If it is renderable, we proceed as before. If it isn't, we perform the necessary side-effects immediately instead of waiting for a transition to complete.
Fixes https://github.com/GoogleWebComponents/model-viewer/issues/524

It looks like every browser that relies on the ResizeObserver polyfill has problems with this approach. Specifically, the polyfill appears to be unable to detect changes due to style property manipulation, so we don't get a resize update.
This has implications beyond the scope of this bugfix, but for now I will try to address the polyfill case for just this bug in isolation.

(Side-note / silver lining: Edge, Firefox and Safari are all adding ResizeObserver in their next major releases https://caniuse.com/#search=resize).

Closing this as it has become quite dated. Part of what this change endeavored to fix is resolved by #755 , and the remainder of the design work should be addressed with #733 .


Why this package isn't on PyPI?

Bump! This tiny library is amazing, it definitely should be at PyPI.
However, there's already a lib "PyCard" in there, which is about creating vCard objects. Although we do like the name, the author (@orokusaki) may consider changing the name of this library to avoid conflicts and confusing.
@rougeth Do you have a suggestion?

Nice to hear that @emyller. My suggestions are (best ones first):

pyccard
ccard
creditcard
pycreditcard

Hey @rougeth @emyller - thanks for the suggestions / help. I'm going to come back and take a look at all 3 open issues this weekend. I've been slammed lately.

@emyller @rougeth what do you two think about captain-pycard?

@orokusaki that's awesome! 😆

..Yeah. Not bad. :wink:

Make it so!

Hey @orokusaki. Did you have a chance to upload it?
PS: Enjoy the end of the year.

@emyller I haven't yet - I'm sorry. I actually got stuck trying to determine everything required to do so. It seems like you need a dev and production PyPi account, etc. Do you have any experience with PyPi uploads yourself?

Also, have a happy New Years too, @emyller!

@orokusaki There's no need of dev account (actually it's a test account that can be used to test the upload without really creating a package, see https://test.pypi.org).
I'm used to use twine to upload to PyPI.Take a look: https://github.com/pypa/twine.
Happy New Year guys! :)

Hey @orokusaki! Once you have your PyPI [regular] account, you just python setup.py register and python setup.py sdist upload to have it online.
Or, as @rougeth recommended, use twine to take advantage of a secure (HTTPS) connection to transmit data to PyPI in older Python versions and a few other perks.
Happy New Years everybody!

Thanks, you two are great!
I'll get this uploaded tonight after work.

On Dec 29, 2016, at 8:23 AM, Evandro Myller<EMAIL_ADDRESS>wrote:
Hey @orokusaki! Once you have your PyPI [regular] account, you just python setup.py register and python setup.py sdist upload to have it online.
Or, as @rougeth recommended, use twine to take advantage of a secure (HTTPS) connection to transmit data to PyPI in older Python versions and a few other perks.
Happy New Years everybody!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@emyller @rougeth @paulmcgoldrick
(Captain Pycard is official)[https://pypi.python.org/pypi/captain-pycard]!
All these years, I've avoided uploading things to PyPi... and it was this easy! Thanks for the help.

That's great news, @orokusaki! Thanks for this.

Awesome!! 👏 👏 👏


10-bit doesn't appear to work on UserFuncs

I scratched my head for awhile until I figured it out but it appears the max brightness the UserFunc can support is 255. I'm using a Wemos D1 mini pro (pretty common esp8266 board) and the pwm brightness level is 10bit. I was trying to write a custom UserFunc that would blink the onboard LED between off and a lower maximum brightness. However, it's an active-low LED so I need to set it to 1023 for it to be off which I cannot do with the library expecting uint8_t.
I read that you added 10-bit support but I'm not sure how to activate it in Platform.io. My platform.ini file for my project contains:
[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino
Has the UserFunc code also been modified to support 10-bit? If so, can you point me in the direction to get going? If i create a function and just have it return 1023, the LED lights up the same as if I did a return 255 (because it's a BYTE and hence clips it to 255).
Thanks for the great library!
-Josh

Hi Josh,
internally the library only uses 8 bits and assumes 0==off and 255=full brightness/on.
When compiled for ESP8266 (ESP8266 should be #defined) the value is scaled to 10 bits before the the actual analogWrite(). So it is transparent for the application.
For an low-active LED just use LowActive() during construction:
JLed led = JLed(9).Breathe(1500).LowActive();
This should do the trick.
To sum up: Return 0 from your UserFunc to turn the LED off and 255 for full brightness. If the LED is low-active, construct it with LowActive()
greetings Jan

Closed as not being a bug.


Add cross-platform support

I am creating this PR mostly to start the discussion on getting Posh-SSH to work cross-platform. The required changes are minimal: for non-Windows machines, just use the .ssh directory for thumbprints. The target framework is set only to netcoreapp3.1, but I'm aware this needs to be changed before the PR can be accepted. Also, this requires the 2020.0.0-beta1 version of the SSH.net library.

Did you looked at the 3.0 branch? That is where the effort is being made to support multi platform
Sent from my iPhone

On Jun 23, 2020, at 7:03 AM, htaudah<EMAIL_ADDRESS>wrote:

I am creating this PR mostly to start the discussion on getting Posh-SSH to work cross-platform. The required changes are minimal: for non-Windows machines, just use the .ssh directory for thumbprints. The target framework is set only to netcoreapp3.1, but I'm aware this needs to be changed before the PR can be accepted. Also, this requires the 2020.0.0-beta1 version of the SSH.net library.
You can view, comment on, or merge this pull request online at:
https://github.com/darkoperator/Posh-SSH/pull/337
Commit Summary
Working on PowerShell 7 running on Linux machine
File Changes
M Source/PoshSSH/PoshSSH/NewSessionBase.cs (2)
M Source/PoshSSH/PoshSSH/PoshSSH.csproj (31)
M Source/PoshSSH/PoshSSH/Properties/AssemblyInfo.cs (18)
M Source/PoshSSH/PoshSSH/TrustedKeyMng.cs (73)
Patch Links:
https://github.com/darkoperator/Posh-SSH/pull/337.patch
https://github.com/darkoperator/Posh-SSH/pull/337.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

My mistake. I see now that this has pretty much already been implemented and just waiting for the next ssh.net release. Shall I will assume there is nothing pending for Posh-SSH and just discard my changes?

Need to revisit the code since it is old and compile a new version and test. You are welcomed to help out :) with my work schedule is hard to set time to work on it during this work yearly quarter

I try it on CentOS 7/8, but... "New-SSHSession: Could not load file or assembly 'SshNet.Security.Cryptography, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=2fa9220ff3eadda4'. The system cannot find the file specified."
PS Install-Package SshNet.Security.Cryptography -Version 1.3.0    don't help
Compile at VS2019 with ssh.net 2020.0.0-beta1 and TargetFramework netcoreapp2.1


How could I control amplify DataStore sync

Is your feature request related to a problem? Please describe.
I want to configure the syncing of data from indexed-db to dynamo in a button click. Now it syncs all data when it online.
Describe the solution you'd like
Please see the code
import { DataStore} from "@aws-amplify/datastore";
import { Post } from "../models";
import Amplify from "@aws-amplify/core";
import awsconfig from "./aws-exports";

Amplify.configure(awsconfig);

public async findAllPosts() {
    return await DataStore.query(Post);
}

Describe alternatives you've considered
I have two models Post and Comment. When I am fetching all data from Post, it syncs Comments data too. I want only Post data for a particular user, but it syncs Comment too. How could I achieve this? Please help.
Is the feature request related to any of the existing Amplify categories?
No response
Additional context
No response
Tags: Amplify_DataStore, GraphQL, aws_amplify

is that JS code? If so, could you open the issue over in https://github.com/aws-amplify/amplify-js ?

@nikhil-dabhade It seems like the code snippet you posted is JavaScript, you might need to open a new issue in the JS library repository https://github.com/aws-amplify/amplify-js.
I'm closing this issue due to inactivity, but feel free to reopen if you need more help :)


typo

@stuartleeks : Thanks for your contribution! The author, @sffamily, has been notified to review your proposed change.

thanks for the catch @stuartleeks !


testing new ts-perf results

@typescript-bot perf test this

9 out of 166 benchmark results show significant, which is roughly 5%, matching our chosen alpha value of 0.05 (very standard). We have so many benchmarks we are p-hacking ourselves!


HTML5 Canvas in Indonesian Language

Terima kasih
What does this PR do?
Add resource(s) | Remove resource(s) | Add info | Improve repo
For resources
Description
Why is this valuable (or not)?
How do we know it's really free?
For book lists, is it a book? For course lists, is it a course? etc.
Checklist:

[x] Read our contributing guidelines
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction)

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

It's a good moment to apply suggested changes. When done, request for a rewiew again using GitHub :arrows_clockwise: button.

Thanks, and welcome to free-programming-books!


Is there a way to describe a window as "AlwaysOnTop"?

I made a simple desktop clock that is hovering over other windows. However, when clicked on a window that would overlap, it disappear according to a lower z-order. Is there a way to describe the window as "AlwaysOnTop" ?

window.isTopmost

I have tried this, but didnt have the desired effect. Or is the following not possible?
<html window-isTopmost="true">

Is there documentation that describes what is and isn't possible from the <html window-...> tag?

The issue is resolved, but the naming isAlwaysTopmost would have made more sense, plus the difference what can and can not be in the html window definition.

https://github.com/c-smile/sciter-js-sdk/blob/main/docs/md/HTML.md#window-attributes


Viettel-smart

#sign-off
Originally posted by @PatAltimore in https://github.com/MicrosoftDocs/azure-docs/pull/76263#issuecomment-853449949

@Mr-feu, Thanks for taking time to post this feedback. I see PatAltimore (our author) has sign-off the PR - reviewed and approved the requested changes to be merged into the repo (it's the process to perform PR merge) .  To know more about Git sign off, please see this. If you have any specific questions/feedback, please let us know.

Content: Deploy Hyperledger Fabric consortium on Azure Kubernetes Service - Azure Blockchain
Content Source: articles/blockchain/templates/hyperledger-fabric-consortium-azure-kubernetes-service.md


Wrong variable naming in 'Output Variables'

In the section Support for output variables there is following snippet:

When you define an environment in a deployment job, the syntax of the output variable varies depending on how the environment gets defined. In this example, env1 uses shorthand notation and env2 includes the full syntax with a defined resource type.

- stage: MyStage
  jobs:
  - deployment: A1
    pool:
      vmImage: 'ubuntu-16.04'
    environment: env1
    strategy:
      runOnce:
        deploy:
          steps:
          - script: echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is the deployment variable value"
            name: setvarStep
          - script: echo $(System.JobName)
  - deployment: A2
    pool:
      vmImage: 'ubuntu-16.04'
    environment:
      name: env1
      resourceType: virtualmachine

But I couldn't find the specified env2 variable - maybe you have entered the same 'env1' twice.
Furthemore I'd be glad if there would be an example of how to pass:
<Stage>.<Deployment>.<Step>.<Variable>
output variables from one stage to another, as I'd like to have a conditional deployment for it.

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

ID: 5aeeaace-1c5b-a51b-e41f-f25b806155b8
Version Independent ID: fd7ff690-b2e4-41c7-a342-e528b911c6e1
Content: Deployment jobs - Azure Pipelines
Content Source: docs/pipelines/process/deployment-jobs.md
Product: devops
Technology: devops-cicd-process
GitHub Login: @juliakm
Microsoft Alias: jukullam

Thanks @DSpirit. We've fixed this example.


What's the point of using stderr instead of stdout?

Just curious about why you put "Here is your SID" to stderr.

I think I just want to put all piddling info to stderr at that moment.


Sonnet's base AbstractModule now requires named arguments (Sonnet v1.6 and Python 3)

To use a recent version of Sonnet, I did changes regarding the new behavior, see: https://github.com/deepmind/sonnet/commit/601c4f393037ea76c625d39c88d9d576f438c7ae
The tests pass, except for two parameterizations of testValues in QuadraticTest of problems_test.py. It looks like floating points rounding errors that are somehow unrelated to my changes:
======================================================================
FAIL: testValues_0 (__main__.QuadraticTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/ubuntu/miniconda/lib/python3.6/site-packages/nose_parameterized/parameterized.py", line 392, in standalone_func
    return func(*(a + p.args), **p.kwargs)
  File "problems_test.py", line 111, in testValues
    self.assertEqual(output, ((w * value) - y)**2)
AssertionError: 24.999998 != 25.0

======================================================================
FAIL: testValues_3 (__main__.QuadraticTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/ubuntu/miniconda/lib/python3.6/site-packages/nose_parameterized/parameterized.py", line 392, in standalone_func
    return func(*(a + p.args), **p.kwargs)
  File "problems_test.py", line 111, in testValues
    self.assertEqual(output, ((w * value) - y)**2)
AssertionError: 288.99997 != 289.0

I tested the changes under:

Sonnet v1.6
TensorFlow 1.2 (with GPU)
Python 3.6.1 (miniconda)
Ubuntu 16.04
Amazon AWS p2 instance (1 x Tesla K80)

I signed it!

(To be precise, my current employer signed the corporate CLA, so he added me to a Google Group containing my email to allow me to contribute)

Thanks!


Not Supporting laravel/framework v8

Hi.. This is not supporting laravel v8 :(

Hi @ZsgsDesign
This version of laravel-pdf-latex is not supporting laravel 8.x

ok @dhruva81

Hi @ZsgsDesign
If possible, kindly upgrade it to support Laravel 8.x.
My educational website is build on version 8.
And I need this package to create maths and science worksheets for students.
Please...
Thanks


Add Rhythm Games Converter to Showcase

I've been working on this project for a while and I've recently added Spotify as a source. The code shows an example of how to handle information for tracks in a playlist and how to paginate.

Very cool!
Did you have any problems integrating the beta versionsbeta.XX

No, everything worked perfectly fine! You're working on something really useful here and I can't wait to see how it turns it!


Don't play when I change the Voice Chat region (specific problem)

Description
So, I have lavalink for a discord bot, and so far, all good.
But, when we need to change the region of the voice chat server, sometimes work, sometimes not.
I have the lavalink hosted in Germany (at Contabo) and the bot in js on Spain (at FDCServers).
A note, this only happens when I can connect to the new server faster than the bot can. For example, I change the region to India, and if the bot connects first to the voice chat, and I connect in second, I can listen to the music, but if the reverse happens, I can't listen.
Maybe this video can show better the problem: https://youtu.be/dj5rtGuwcnU
Version info
root@plesk2:/lavalink# java -jar -Xmx15G Lavalink.jar --version
Version:        3.4
Build:          1257
Build time:     26.10.2021 14:18:37 UTC
Branch          master
Commit:         a364833
Commit time:    26.10.2021 14:15:20 UTC
JVM:            11.0.12
Lavaplayer      1.3.96-original
Output of java -version:
root@plesk2:/lavalink# java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.12+7-
post-Debian-2deb10u1, mixed mode, sharing)
Logs (I send the full folder):
logs.tar.gz

It looks like you have Java 11 which has problem with lavalink. Read this for more info
Java 11 appears to have some issues with Discord's TLS 1.3. Java 14 has other undiagnosed HTTPS problems. Use Java 13. Docker images have been updated.

Gonna check that. Thank you soo much!
I will give feedback as soon as possible.

Hello @Atharv-Pathak-14
Tried with Java 13, didn't solve the problem.
I can try with a Docker version, but I think it's gonna be the same result.

thats prob the same problem as when you move the bot user into a different voice channel
this bug is known
the current workaround is to pause & play again after like 0.5s

Hello community, I have an update on this situation
So, after changing the bufferDurationMs from 400 to 100 (application.yml), it seems that the problem "it's solved".
After changing a lot of times from Brazil/USA/Japan/Australia/other regions to Europe (now Rotterdam) and vice-versa, the bot reacts correctly and plays the music.
However, the same doesn't happen when you move the bot, but for my case (a server to my class) it's just fine.
Thank for all the help, and Stay Safe!


Calculate target scene coordinates using 3D model

Hi, @ebrach
Thanks for your awesome work!
In the paper, DASC++ shows good results using 3D model. But seems in this project you only use depth to render scene coordinates. I tried it on 7scenes, but find 3D model can't align with the images.
Did you meet the same problem? And will you release the related code ?
Best.

@dihuangdh
Hello
Were you able to align 3D model with the images ?
Thanks


Fix wrong voting state on refresh of page

Fixes #189

Not sure if it actually resolves #189, but seems like an OK fix


big appa

I am building a big app but as its fixing one issue another appears. Now I am just burning tokens trying to fix something that was right before the something that was wrong before. Going in circle's  I am on the 200 per month plan but don't think I will ever finish. we need to stop changing pages that was right to fix something that was wrong. think I must wait a few months before logging in again maybe the product will get better. that said this is the best thing since sliced bread.

Hi @MyAiLaptop,
Glad to hear you are liking Bolt! A few things you can try:

If you right-click a file in the Bolt code editor and select "Lock file" this will prevent the AI from making further changes to that file. This can be done to multiple files.
This page here has a number of helpful insights on using Bolt most effectively while maximizing token efficiency.
As your application becomes more complex you may run into programming challenges that require additional research and intervention, which you can read more about here.

Hope this helps!


Provide upstream-provider-name to upgrade-provider action

Once https://github.com/pulumi/upgrade-provider/pull/66 is merged (specifically this commit), we can pass in upstream-provider-name as an input to our github action.

Could we do this by defining the config file consumed in https://github.com/pulumi/upgrade-provider/pull/61 for each provider? That way, it remains easy to run the upgrade-provider tool locally.

Could we do this by defining the config file consumed in pulumi/upgrade-provider#61 for each provider? That way, it remains easy to run the upgrade-provider tool locally.

Done 👍🏼


[Feature]: Bun runtime

Is there an existing issue for this?

[X] I have searched the existing issues

Summary
Adding Bun as a Coolify base package.
Bun is a real fast JavaScript runtime.
📝 Developemnt
I can chip in and create the Bun package.
Why should this be worked on?
Bun advantages:

Built-in server
Use typescript files - no need to transpile, it happens on the fly.
Faster loading time.
Blazing fast request processing.
Binary lock file.

I've created a few projects with Bun, and the process - building, testing, and producing - was fast and efficient.

I'm closing this issue, because tracking features will be moved to GitHub discussions. Github issues will be only for bugs.
Version 4 is in full focus. v3 related issues will be closed, if it is not a critical bug.
Thanks for your understanding.


Warn when targets relabelled to same labels

closes https://github.com/prometheus/prometheus/issues/5136
Signed-off-by: darshanime<EMAIL_ADDRESS>

thanks @LeviHarrison, addressed your comments.

This indeed does not belong to the discovery manager but to the scrape manager.

@roidelapluie the logic is currently in scrape manager's reload() method, after the Sync() has been called for each group. Do you think it should be someplace else?

@roidelapluie the logic is currently in scrape manager's reload() method, after the Sync() has been called for each group. Do you think it should be someplace else?

I think @roidelapluie is affirming the location in this PR is correct.

Could you please also add a quick test for this?

Picking this up during our bug scrub. @darshanime are you still up to adding a test?

How about doing this here https://github.com/prometheus/prometheus/blob/eea6ab1cdd24ec69c94ba4b0d165030c89860c8b/scrape/scrape.go#L486 instead of re-looping again?
We may need to do the same for notifier/notifier.go, I don't know if it's possible to get sups in there.

ran the benchmark:
$ go test -bench=BenchmarkScrapeLoop -run=- -count 6 | tee main
$ go test -bench=BenchmarkScrapeLoop -run=- -count 6 | tee duplicate_targets
$ benchstat main duplicate_targets
goos: darwin
goarch: arm64
pkg: github.com/prometheus/prometheus/scrape
                      │    main     │         duplicate_targets         │
                      │   sec/op    │   sec/op     vs base              │
ScrapeLoopAppend-10     37.58µ ± 2%   37.31µ ± 1%       ~ (p=0.065 n=6)
ScrapeLoopAppendOM-10   36.76µ ± 1%   36.64µ ± 1%       ~ (p=0.485 n=6)
geomean                 37.16µ        36.97µ       -0.51%

Please add -benchmem to the benchmark.
Also check that benchmark calls the function you are changing.

@bboreham, i have created a new benchmark; as expected the operation isn't memory intensive for 10k targets...
$ go test -bench=BenchmarkManagerReload -benchmem -run=- -count 6  -benchtime=10000x
goos: darwin
goarch: arm64
pkg: github.com/prometheus/prometheus/scrape
BenchmarkManagerReload-10    	   10000	    703110 ns/op	  319529 B/op	       3 allocs/op
BenchmarkManagerReload-10    	   10000	    698015 ns/op	  319529 B/op	       3 allocs/op
BenchmarkManagerReload-10    	   10000	    706037 ns/op	  319529 B/op	       3 allocs/op
BenchmarkManagerReload-10    	   10000	    701210 ns/op	  319529 B/op	       3 allocs/op
BenchmarkManagerReload-10    	   10000	    700095 ns/op	  319529 B/op	       3 allocs/op
BenchmarkManagerReload-10    	   10000	    695985 ns/op	  319529 B/op	       3 allocs/op
PASS
ok  	github.com/prometheus/prometheus/scrape	42.650s

When posting benchmark results it is traditional to give the before/after comparison.
However when I tried to run the benchmark against the code "before", it hung.
This is because the benchmark does more work when it runs faster, which makes it an invalid benchmark.

You are right about the delta being the traditional way to showcase benchmark results, but (as you found out too), without this patch, the loop does so little work that the numbers don't register at all (are mostly all 0s). How do you wish to proceed from here? imo, the "benchmark" shows that the patch only adds a single, inexpensive pass thru the target set; so it did its work.

How do you wish to proceed from here?

Write a valid benchmark, that does the same amount of work per iteration.

the benchmark without this patch is not interesting

I think it's interesting to know what the delta is. About 0.8ms for 10K targets.  On a large Kubernetes cluster, with changes happening all the time, that might be significant.  I'm not sure what the true baseline would be.
20ns is sufficiently small that it makes me check what the benchmark does in the 'before' version, which is nothing at all.
m.targetSets is not initialized, so that loop falls through.  So it's not a benchmark of the reload function, and should not be named as if it is.

Hello from the bug-scrub!
We wondered whether this requirement is now covered by #12933?
If not, we noted that the question of overhead could be avoided by putting this behind a feature flag.


feat: Support configuring a global provider list in ai-proxy plugin

Ⅰ. Describe what this PR did
Support configuring a global provider list in ai-proxy plugin. Meanwhile, the old-style configurations are also supported.
New config style:
provider: my-azure
providers:
  - id: my-azure
    type: azure
    apiTokens:
      - "YOUR_AZURE_OPENAI_API_TOKEN"
    azureServiceUrl: "https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/chat/completions?api-version=2024-02-15-preview",
  - id: my-qwen
    type: qwen
    apiTokens:
      - "YOUR_QWEN_API_TOKEN"
    modelMapping:
      'gpt-3': "qwen-turbo"
      'gpt-35-turbo': "qwen-plus"
      'gpt-4-turbo': "qwen-max"
      'gpt-4-*': "qwen-max"
      'gpt-4o': "qwen-vl-plus"
      'text-embedding-v1': 'text-embedding-v1'
      '*': "qwen-turbo"

Ⅱ. Does this pull request fix one issue?

Ⅲ. Why don't you add test cases (unit test/integration test)?
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 44.21%. Comparing base (ef31e09) to head (c1d506f).
Report is 111 commits behind head on main.

Additional details and impacted files

@@            Coverage Diff             @@
##             main    #1334      +/-   ##
==========================================
+ Coverage   35.91%   44.21%   +8.30%
==========================================
  Files          69       76       +7
  Lines       11576     9895    -1681
==========================================
+ Hits         4157     4375     +218
+ Misses       7104     5184    -1920
- Partials      315      336      +21

see 91 files with indirect coverage changes


env_param config for debugging and any tips

Hi @thomasschmied,
Thank you for releasing the code! I want to quickly benchmark some of the metaworld v2 environments but stuck at mujuco setup I have the following doubts and would be grateful for any advice

The data paths, I assume the links on the readme point to these names in the config dm_control_1M_v3_full and metaworld_v2_cwnet_2M in the config, so just renaming the data subfolder should be good?
Can you provide a config for pretraining runs, 1 seed, 1 env to debug since loading all the trajectories tend to take time?
[Resolved] What version of mujoco to use? I had some issues with installing mujoco-py==<IP_ADDRESS> as seen in the requirements.txt so had to downgrade to 2.0,2.8, and use mujoco version.

I get the following error when I try to run the pretrain configs
python main.py -m experiment_name=pretrain seed=42 env_params=multi_domain_mtdmc run_params=pretrain eval_params=pretrain_disc agent_params=cdt_pretrain_d
isc agent_params.kind=MDDT agent_params/model_kwargs=multi_domain_mtdmc agent_params/data_paths=mt40v2_dmc10 +agent_params/replay_buffer_kwargs=multi_domain_mtdmc +agent_params.accumulation_steps=2

  File "/home/a9karthi/.conda/envs/mddt/lib/python3.9/site-packages/dm_control/mujoco/index.py", line 623, in struct_indexer
    attr = getattr(struct, field_name)
AttributeError: 'MjData' object has no attribute 'qacc_unc'

It was caused by mujoco version issue downgrading it to mujoco==2.1.5 fixed it.
Thanks!

Hi @Abc11c,
Regarding you questions:

Yes, renaming the data subfolders should do it. Make sure that the data dirs are set correctly, as described here: https://github.com/ml-jku/L2M?tab=readme-ov-file#experiment-configuration
Do I understand it correctly, that you want to pre-train and evaluate on a single env only? In this case, you coudl for example set env_params.eval_env_names=reach-v2 and use the follwing data_paths config:

mt40_v2:
  base: ${DATA_DIR}/your_metaworld_dir
  names:
    - reach-v2.pkl

Thanks for posting your solution here.

I hope this helps!


[WFLY-17153] Remove warning message WFLYWELD0052 in hibernate quickstart

https://issues.redhat.com/browse/WFLY-17153

@Skyllarr @manovotn @jasondlee
(Jason, the context here is the discussion on a similar PR starting at [4].)
I wonder if this is a long-standing problem. Mojarra provides a CDI extension and uses it to install bunch of producers.[1] Those use the 'beanClass(EE API class)' idiom, e.g. [2].  This looks much the same as the wildfly-elytron-ee code that's being updated at [3] to eliminate the need for these kinds of module deps in the EE Security API module.
I wonder if it's a long-standing problem because the Mojarra code in question has been there for a long time.
[1] https://github.com/eclipse-ee4j/mojarra/blob/master/impl/src/main/java/com/sun/faces/cdi/CdiExtension.java#L177
[2] https://github.com/eclipse-ee4j/mojarra/blob/master/impl/src/main/java/com/sun/faces/cdi/FacesContextProducer.java#L39
[3] https://github.com/wildfly-security/wildfly-elytron-ee/pull/22
[4] https://github.com/wildfly/wildfly/pull/16155#issuecomment-1280901376

Those use the 'beanClass(EE API class)' idiom, e.g. [2].

Note that what I described in the other PR is not a hard fact from CDI specification. The spec says next to nothing about beanClass and the javadoc doesn't mention synth beans at all[1]. Nonetheless, it is a handy way to determine which CL loads the bean in a modular environment (in case of synth beans anyway).
I think we could/should fix this on Mojarra side as well; I can author the PR tomorrow.

I wonder if it's a long-standing problem because the Mojarra code in question has been there for a long time.

I am not aware of any Weld changes that would trigger this in the latest versions of WFLY. I wouldn't be surprised if this was around for a while and nobody noticed :)
[1] https://github.com/jakartaee/cdi/blob/master/api/src/main/java/jakarta/enterprise/inject/spi/Bean.java#L37-L42

I've created Mojarra issue(https://github.com/eclipse-ee4j/mojarra/issues/5157) along with a PR(https://github.com/eclipse-ee4j/mojarra/pull/5158).
I also noticed one other suspicious usage of beanClass in their extension for which I created a separate issue(https://github.com/eclipse-ee4j/mojarra/issues/5159) but without PR since I don't know the spec/impl enough to see what exactly they need to achieve.
I should also correct myself because after some digging in the specification, I now think it is clearer what beanClass should stand for in case of syth beans. There is a section in the specification that states how it works for synth beans and that this is needed for inter-module injection which is IMO akin to what we are seeing here.

How important are the Mojarra changes for WF 27? We already have one change that we've had them merge, and I am about to ask for a release, but if this needs to be in 27, I'll push for this one as well before asking for a release. If not, I'll get the release and integrate it.

@jasondlee This PR works around the issue, so unless @manovotn feels otherwise and you're comfortable approving the PR  there is no particular urgency to get a Mojarra fix for WF 27.
In both this and https://github.com/wildfly/wildfly/pull/16155 my main concern has been that we understand the issue before implementing a workaround, and at this point I feel like we do.
I am still curious whether the log WARN occurs with the WildFly 26 quickstarts, as that would further confirm that we understand the reported issue, but that checking that is a nice to have.

That works for me. I've approved this, and I'll push for a Mojarra release. We'll get the Mojarra change linked here next time 'round.

@jasondlee This PR works around the issue, so unless @manovotn feels otherwise and you're comfortable approving the PR there is no particular urgency to get a Mojarra fix for WF 27.

+1, I agree with Brian.

Thanks @Skyllarr @manovotn and @jasondlee

This is candidate to be reverted by https://github.com/eclipse-ee4j/mojarra/issues/5457. How exactly was it previously failing in WildFly?


NRF52Pin::wasTouched() default mode is capacitative instead of the pin state

From https://github.com/lancaster-university/codal-nrf52/blob/0643733703b4f8f788af81a996f40d1f1a1527bc/inc/NRF52Pin.h#L315 wasTouch has a default argument, so wasTouched() == wasTouched(TouchMode::Capacitative ):
 int wasTouched( TouchMode touchMode = TouchMode::Capacitative );

Compared to isTouched(), which does not have a default value, so it uses the pin state as default:
https://github.com/lancaster-university/codal-nrf52/blob/0643733703b4f8f788af81a996f40d1f1a1527bc/inc/NRF52Pin.h#L277-L300
int isTouched(TouchMode touchMode);

int NRF52Pin::isTouched() {
    // Maintain the last type of sensing used.
    return isTouched(status & IO_STATUS_CAPACITATIVE_TOUCH ? TouchMode::Capacitative : TouchMode::Resistive);
}

MakeCode & MicroPython do not keep track of the configured pin state, so they just need to call isTouched() with the right argument once to change the mode and then just isTouched() without arguments. We should do the same for wasTouched().

@JohnVidler PR submitted:

https://github.com/lancaster-university/codal-nrf52/pull/53


Since Moving to Shared Storage Not Assets Found

Hello,
When running with a single pod statefulset storage backend I can no longer find any assets so the cache pulls aren't working:-
2022/02/27 15:01:05 Fetching Directory [urn:fdc:buildstream.build:2020:v1:bst-common/base/2aaa3338e361f55c77eb31c634545891985a4590c23cee4f4cde5e8b4de79d2b] with qualifiers []
2022/02/27 15:01:05 FetchBlob completed for [urn:fdc:buildstream.build:2020:v1:bst-common/base/2aaa3338e361f55c77eb31c634545891985a4590c23cee4f4cde5e8b4de79d2b] with status code 5

The asset configMap looks like this:-
  asset.jsonnet: |
    local common = import 'common.libsonnet';
    {
      fetcher: {
        caching: {
          fetcher: {
            https: {
              allowUpdatesForInstances: [''],
              contentAddressableStorage: common.blobstore.contentAddressableStorage,
            }
            'error': {
              code: 5,
              message: "Asset Not Found",
            }
          }
        }
      },

      assetCache: {
        actionCache: {
          blobstore: common.blobstore,
        },
        blobAccess: {
          assetStore: {
            'local': {
              keyLocationMapOnBlockDevice: {
                file: {
                  path: '/storage/key_location_map',
                  sizeBytes: 1024 * 1024,
                },
              },
              keyLocationMapMaximumGetAttempts: 8,
              keyLocationMapMaximumPutAttempts: 32,
              oldBlocks: 8,
              currentBlocks: 24,
              newBlocks: 3,
              blocksOnBlockDevice: {
                source: {
                  file: {
                    path: '/storage/blocks',
                    sizeBytes: 200 * 1024 * 1024,
                  },
                },
                spareBlocks: 3,
              },

              # Add this chunk if you also want it to be persistent across restarts. If no persistency is needed, just omit this.
              persistent: {
                stateDirectoryPath: '/storage/persistent_state',
                minimumEpochInterval: '5m',
              },
            },
          },
          contentAddressableStorage:
            common.blobstore.contentAddressableStorage,
        },
      },
      grpcServers: [{
        listenAddresses: [':7981'],
        authenticationPolicy: { allow: {} },
      }],
      allowUpdatesForInstances: [''],
      maximumMessageSizeBytes: 16 * 1024 * 1024,
    }

With the common configMap looks like:-
  common.libsonnet: |
    {
      blobstore: {
        contentAddressableStorage: {
          sharding: {
            hashInitialization:<PHONE_NUMBER>3637837490,
            shards: [
              {
                backend: {
                  grpc: { address: 'storage-0.storage.buildbarn:7982' },
                },
                weight: 1,
              },
              {
                backend: {
                  grpc: { address: 'storage-1.storage.buildbarn:7982' },
                },
                weight: 1,
              },
              {
                backend: {
                  grpc: { address: 'storage-2.storage.buildbarn:7982' },
                },
                weight: 1,
              },
            ],
          },
        },
        actionCache: {
          completenessChecking: {
            sharding: {
              hashInitialization:<PHONE_NUMBER>7481274433,
              shards: [
                {
                  backend: {
                    grpc: { address: 'storage-0.storage.buildbarn:7982' },
                  },
                  weight: 1,
                },
                {
                  backend: {
                    grpc: { address: 'storage-1.storage.buildbarn:7982' },
                  },
                  weight: 1,
                },
                {
                  backend: {
                    grpc: { address: 'storage-2.storage.buildbarn:7982' },
                  },
                  weight: 1,
                },
              ],
            },
          },
        },
      },

Have I missed something or done something wrong here. Do I need to use a frontend and reference that somewhere, or is this an issue ? Thanks.

I suspect that status code 5 in that error message above stands for NOT_FOUND:
https://grpc.github.io/grpc/core/md_doc_statuscodes.html
Still impractical that that code doesn't display the full gRPC status object, including the message.

Hi,
There's some misconfiguration going on here which is likely the cause.
assetCache requires one of actionCache or blobAccess as per the proto[1]
Also your fetched is configured with multiple OneOfs also, try removing the
'error' block and just leave the Https field/value. Take a look at the
README example[2] for how the Https fetcher can be configured properly with
caching etc
1:
https://github.com/buildbarn/bb-remote-asset/blob/6a6e6f90b379c69884ab2f35170878420fba22c4/pkg/proto/configuration/bb_remote_asset/bb_remote_asset.proto#L41
2:
https://github.com/buildbarn/bb-remote-asset#setting-up-the-remote-asset-daemon
On Sun, 27 Feb 2022, 15:06 Paul Seymour, @.***> wrote:

Hello,
When running with a single pod statefulset storage backend I can no longer
find any assets so the cache pulls aren't working:-
2022/02/27 15:01:05 Fetching Directory [urn:fdc:buildstream.build:2020:v1:bst-common/base/2aaa3338e361f55c77eb31c634545891985a4590c23cee4f4cde5e8b4de79d2b] with qualifiers []
2022/02/27 15:01:05 FetchBlob completed for [urn:fdc:buildstream.build:2020:v1:bst-common/base/2aaa3338e361f55c77eb31c634545891985a4590c23cee4f4cde5e8b4de79d2b] with status code 5
The asset configMap looks like this:-
asset.jsonnet: |
local common = import 'common.libsonnet';
{
fetcher: {
caching: {
fetcher: {
https: {
allowUpdatesForInstances: [''],
contentAddressableStorage: common.blobstore.contentAddressableStorage,
}
'error': {
code: 5,
message: "Asset Not Found",
}
}
}
},
  assetCache: {
    actionCache: {
      blobstore: common.blobstore,
    },
    blobAccess: {
      assetStore: {
        'local': {
          keyLocationMapOnBlockDevice: {
            file: {
              path: '/storage/key_location_map',
              sizeBytes: 1024 * 1024,
            },
          },
          keyLocationMapMaximumGetAttempts: 8,
          keyLocationMapMaximumPutAttempts: 32,
          oldBlocks: 8,
          currentBlocks: 24,
          newBlocks: 3,
          blocksOnBlockDevice: {
            source: {
              file: {
                path: '/storage/blocks',
                sizeBytes: 200 * 1024 * 1024,
              },
            },
            spareBlocks: 3,
          },

          # Add this chunk if you also want it to be persistent across restarts. If no persistency is needed, just omit this.
          persistent: {
            stateDirectoryPath: '/storage/persistent_state',
            minimumEpochInterval: '5m',
          },
        },
      },
      contentAddressableStorage:
        common.blobstore.contentAddressableStorage,
    },
  },
  grpcServers: [{
    listenAddresses: [':7981'],
    authenticationPolicy: { allow: {} },
  }],
  allowUpdatesForInstances: [''],
  maximumMessageSizeBytes: 16 * 1024 * 1024,
}

With the common configMap looks like:-
common.libsonnet: |
{
blobstore: {
contentAddressableStorage: {
sharding: {
hashInitialization:<PHONE_NUMBER>3637837490,
shards: [
{
backend: {
grpc: { address: 'storage-0.storage.buildbarn:7982' },
},
weight: 1,
},
{
backend: {
grpc: { address: 'storage-1.storage.buildbarn:7982' },
},
weight: 1,
},
{
backend: {
grpc: { address: 'storage-2.storage.buildbarn:7982' },
},
weight: 1,
},
],
},
},
actionCache: {
completenessChecking: {
sharding: {
hashInitialization:<PHONE_NUMBER>7481274433,
shards: [
{
backend: {
grpc: { address: 'storage-0.storage.buildbarn:7982' },
},
weight: 1,
},
{
backend: {
grpc: { address: 'storage-1.storage.buildbarn:7982' },
},
weight: 1,
},
{
backend: {
grpc: { address: 'storage-2.storage.buildbarn:7982' },
},
weight: 1,
},
],
},
},
},
},
Have I missed something or done something wrong here. Do I need to use a
frontend and reference that somewhere, or is this an issue ? Thanks.
—
Reply to this email directly, view it on GitHub
https://github.com/buildbarn/bb-remote-asset/issues/27, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABXQCXOU55YSB44CMWEYHSDU5I4Y5ANCNFSM5PPBV3JA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you are subscribed to this thread.byMessage
ID: @.***>

Thanks for the help.
Changing the remote-asset configuration to:-
data:
  asset.jsonnet: |
    local common = import 'common.libsonnet';
    {
      fetcher: {
        caching: {
          fetcher: {
            http: {
              allowUpdatesForInstances: [''],
              contentAddressableStorage: {
                grpc: {
                  address: "frontend.buildbarn:8888"
                },
              }
            }
          }
        }
      },

      assetCache: {
        blobAccess: {
          assetStore: {
...
          contentAddressableStorage:
            common.blobstore.contentAddressableStorage,
        },
      },

Firstly is the entry in the fetcher correct as it points to a frontend storage pod, or should it detail all the storage shards ?
With this config in I now get the following from my buildstream test build:-
    [00:00:00][2aaa3338][ pull:base.bst                      ] FAILURE Failed to pull artifact 2aaa3338: Failed to pull ref bst-common/base/2aaa3338e361f55c77eb31c634545891985a4590c23cee4f4cde5e8b4de79d2b: <_InactiveRpcError of RPC that terminated with:
    	status = StatusCode.PERMISSION_DENIED
    	details = "HTTP Fetching of directories is not supported!"
    	debug_error_string = "{"created":"@1646040952.964894316","description":"Error received from peer ipv4:<IP_ADDRESS>:11002","file":"src/core/lib/surface/call.cc","file_line":1074,"grpc_message":"HTTP Fetching of directories is not supported!","grpc_status":7}"

Now getting a RC 7 from the remote-asset pod :)
2022/02/28 09:35:52 Fetching Directory [urn:fdc:buildstream.build:2020:v1:bst-common/base/2aaa3338e361f55c77eb31c634545891985a4590c23cee4f4cde5e8b4de79d2b] with qualifiers []
2022/02/28 09:35:52 FetchBlob completed for [urn:fdc:buildstream.build:2020:v1:bst-common/base/2aaa3338e361f55c77eb31c634545891985a4590c23cee4f4cde5e8b4de79d2b] with status code 7

Any help for me would be appreciated.

Ah ofcourse this is for buildstream and not bazel!
iirc the configurations with buildstream generally avoid http fetcher and support the push functionality of buildstream. If you replace the http with the 'error'' block you had before does it work?
As for the sharding configuration, I would avoid passing unnecessary data through the frontend if you have access to the sharding configuration (like in this example). Clients should go through the frontend for cache access.

Hi,
Yes if I move the fetcher block back to the original and remove the actionCache block from inside the blobAccess and leave contentAddressableStorage I get pushes / pulls OK it seems. It's not the quickest so wondering if it's optimal. 49s for 600mb approx artifacts on a local network - not too bad I suppose :)
Pipeline
     waiting 5a9cd54bcaa0a9b01e6244ced5361d0d9259e932a8b16fcae5c86296bb9d33e0 base.bst
===============================================================================
[--:--:--][5a9cd54b][ pull:base.bst                      ] START   bst-common/base/5a9cd54b-pull.2368.log
[--:--:--][5a9cd54b][ pull:base.bst                      ] STATUS  Pulling artifact 5a9cd54b <- http://buildbarn-cache.my.domain:11001
[--:--:--][5a9cd54b][ pull:base.bst                      ] INFO    Pulled artifact 5a9cd54b <- http://buildbarn-cache.my.domain:11001
[00:00:47][5a9cd54b][ pull:base.bst                      ] SUCCESS bst-common/base/5a9cd54b-pull.2368.log
[--:--:--][][] START   cache_size/cache_size.2439.log
[--:--:--][][] STATUS  Cache usage recomputed: 559.5M / infinity (0%)
[00:00:00][][] SUCCESS cache_size/cache_size.2439.log
[--:--:--][5a9cd54b][ push:base.bst                      ] START   bst-common/base/5a9cd54b-push.2441.log
[--:--:--][5a9cd54b][ push:base.bst                      ] STATUS  Pushing artifact 5a9cd54b -> http://buildbarn-cache.my.domain:11002
[--:--:--][5a9cd54b][ push:base.bst                      ] INFO    Remote (http://buildbarn-cache.my.domain:11002) already has 5a9cd54b cached
[00:00:00][5a9cd54b][ push:base.bst                      ] SKIPPED Push

But this is certainly progress. Many thanks for the help, and pointers.

Thanks for all the help. This was a configuration error on my part.


O5 but cannot surf. mib get 84 have 4011 vlan, but 171 cannot

PCCW HK. original ONU is HG8040/HG8045
# omcicli mib get 84
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
VlanTagFilterData
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=================================
EntityID: 0x01
FilterTbl[0]: PRI 0,CFI 0, VID 4011
FwdOp:  0x04
NumOfEntries: 1
=================================
# omcicli mib get 171
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ExtVlanTagOperCfgData
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#

PON_VENDOR_ID
GPON_ONU_MODEL
HWVER
GPON_SN
ELAN_MAC_ADDR
MAC_KEY
ONT AUTHENTICATION MODE:ASCII
all set.
flashed all firmware here still no luck.
I set that VLAN-4011 in PVE(BCM57810) but still cannot connect.(untag tested..)
What value or setting should I check it next?

try this:
omcicli mib set 84 0x02 FwdOp 0x02

what is this? refer to this

like this, you need to use HGU firmware: https://github.com/Anime4000/RTL960x/blob/main/Firmware/DFP-34X-2C2/M114_sfp_ODI_hybrid_221209.tar
create a WAN Bridge for VLAN 4015 or 4011
as your ISP not using ME 171


Utterances added and trained to fix the attendance predictor bug. Fixes #14  #17(Closed Pull Request)

Sorry for multiple commits. There was some problem with my VS Code, few lines of rasa.md were missing.Problem Solved so please approve the pull request

Well I have just committed more utterances along with the replies to my fork just now. Please instruct me tomorrow about how to avoid merge conflicts with my fork after you merge this one.


Bump bb to 0.47.1

Problem
Noir master is currently compatible against Barretenberg v0.46.1, but not v0.47.1.
The new Barretenberg v0.47.1 offers the ability to generate Honk Solidity verifiers, which could be useful for Noir devs.
Happy Case
Update Noir / Barretenberg to make Noir master compatible with Barretenberg v0.47.1.
Workaround
None
Workaround Description
No response
Additional Context
Previous bump PRs for reference:
Project Impact
None
Blocker Context
No response
Would you like to submit a PR for this Issue?
None
Support Needs
No response

@TomAFrench why are we closing?

Dupe of https://github.com/noir-lang/noir/issues/5637


Add circular loading indicator to all dialogs

expect the ones that closes before the request has be send. (move to and copy to etc)
edit and add pending


Plug UI logs to CLI's logger

What was changed

Passed CLI's logger to UI
Depends on https://github.com/temporalio/ui/pull/1333
Why?

Controll UI's log level  with --log-level
Resolve https://github.com/temporalio/cli/issues/196
Checklist

Closes
How was this tested:

E2E wip

Any docs updates needed?

 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.


Update the ClientSession to use the new timeout parameter.

Previously only conn_timeout was being passed to aiohttp.ClientSession, meaning that any long or query would be interrupted after 5 minutes by the default total timeout of 5 minutes.
Additionally the connection timeout does not the original elasticsearch-py API, which specifies that the timeout parameter is the global timeout: https://elasticsearch-py.readthedocs.io/en/master/api.html#timeout
This PR updates the ClientSession instantiation to pass the timeout value to the global timeout.

OK I have signed the CLA.

Thanks for opening this. This functionality has been captured in https://github.com/elastic/elasticsearch-py/pull/1232


bug inside navigation view controller

I really liked your SV pull to refresh implementation, was extremely easy to implement.
However, if the tableview is housed inside a navigation view controller, when the table has finished loading, it goes undernearth the uinavigation bar and you cant see the top 1 and a half rows!
Best Regards,
Alex

Hi @wangyandong-ningxia  thanks for ur note. it's works and thank you!

That created another problem for me - the bottom row is cut off now.... :(


[BUG] Longhorn v1.0.0 can't be installed in the same set up where longhorn v1.0.2 was installed and deleted.

Describe the bug
Longhorn v1.0.0 can't be installed in the same set up where longhorn v1.0.2 was installed and deleted.
To Reproduce
Steps to reproduce the behavior:

Install longhorn v1.0.2 on a cluster.
Delete/uninstall longhorn.
Try to install v1.0.0.
Installation fails.

Expected behavior
Installation should be successful.
Log
time="2020-09-09T23:26:17Z" level=info msg="Start overwriting built-in settings with customized values"
time="2020-09-09T23:26:17Z" level=info msg="cannot list the content of the src directory /var/lib/rancher/longhorn/engine-binaries for the copy, will do nothing: Failed to execute: nsenter [--mount=/host/proc/3517/ns/mnt --net=/host/proc/3517/ns/net bash -c ls /var/lib/rancher/longhorn/engine-binaries/*], output , stderr, ls: cannot access '/var/lib/rancher/longhorn/engine-binaries/*': No such file or directory\n, error exit status 2"
E0909 23:26:17.509851       1 runtime.go:69] Observed a panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:76
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:65
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:51
/usr/local/go/src/runtime/panic.go:967
/usr/local/go/src/runtime/panic.go:212
/usr/local/go/src/runtime/signal_unix.go:695
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go:108
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go:45
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:303
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:219
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:152
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:153
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:218
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:177
/go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:196
/go/src/github.com/longhorn/longhorn-manager/upgrade/upgrade.go:88
/go/src/github.com/longhorn/longhorn-manager/upgrade/upgrade.go:66
/go/src/github.com/longhorn/longhorn-manager/app/daemon.go:120
/go/src/github.com/longhorn/longhorn-manager/app/daemon.go:60
/go/src/github.com/longhorn/longhorn-manager/vendor/github.com/urfave/cli/app.go:525
/go/src/github.com/longhorn/longhorn-manager/vendor/github.com/urfave/cli/command.go:174
/go/src/github.com/longhorn/longhorn-manager/vendor/github.com/urfave/cli/app.go:276
/go/src/github.com/longhorn/longhorn-manager/main.go:59
/usr/local/go/src/runtime/proc.go:203
/usr/local/go/src/runtime/asm_amd64.s:1373
time="2020-09-09T23:26:17Z" level=info msg="Upgrade leader lost: khush-test-lh-wk1"
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x143a5ca]

goroutine 1 [running]:
k8s.io/apimachinery/pkg/util/runtime.HandleCrash(0x0, 0x0, 0x0)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:58 +0x105
panic(0x15f5d60, 0x2623f60)
        /usr/local/go/src/runtime/panic.go:967 +0x166
k8s.io/client-go/tools/leaderelection/resourcelock.LeaseSpecToLeaderElectionRecord(...)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go:108
k8s.io/client-go/tools/leaderelection/resourcelock.(*LeaseLock).Get(0xc0000e8000, 0xc00004006a, 0x11, 0xc00035cf90)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/resourcelock/leaselock.go:45 +0x18a
k8s.io/client-go/tools/leaderelection.(*LeaderElector).tryAcquireOrRenew(0xc0001de000, 0x0)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:303 +0x13e
k8s.io/client-go/tools/leaderelection.(*LeaderElector).acquire.func1()
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:219 +0x65
k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1(0xc00051ea40)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:152 +0x5f
k8s.io/apimachinery/pkg/util/wait.JitterUntil(0xc00051ea40, 0x77359400, 0x3ff3333333333333, 0x1, 0xc0000822a0)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:153 +0xf8
k8s.io/client-go/tools/leaderelection.(*LeaderElector).acquire(0xc0001de000, 0x1a908a0, 0xc00037e200, 0x1a9a700)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:218 +0x1ee
k8s.io/client-go/tools/leaderelection.(*LeaderElector).Run(0xc0001de000, 0x1a908a0, 0xc00037e1c0)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:177 +0x6b
k8s.io/client-go/tools/leaderelection.RunOrDie(0x1a908a0, 0xc00037e1c0, 0x1a99ac0, 0xc0000e8000, 0x4a817c800, 0x2540be400, 0x77359400, 0xc0004b77d0, 0xc0000bc460, 0xc0000bc480, ...)
        /go/src/github.com/longhorn/longhorn-manager/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go:196 +0x96
github.com/longhorn/longhorn-manager/upgrade.upgrade(0xc00004006a, 0x11, 0xc00004002e, 0xf, 0xc0001b0960, 0xc0002d1570, 0xc000148a00, 0x0, 0x0)
        /go/src/github.com/longhorn/longhorn-manager/upgrade/upgrade.go:88 +0x302
github.com/longhorn/longhorn-manager/upgrade.Upgrade(0x0, 0x0, 0xc00004006a, 0x11, 0x0, 0x0)
        /go/src/github.com/longhorn/longhorn-manager/upgrade/upgrade.go:66 +0x191
github.com/longhorn/longhorn-manager/app.startManager(0xc000122840, 0x1800e2d, 0x0)
        /go/src/github.com/longhorn/longhorn-manager/app/daemon.go:120 +0x3b5
github.com/longhorn/longhorn-manager/app.DaemonCmd.func1(0xc000122840)
        /go/src/github.com/longhorn/longhorn-manager/app/daemon.go:60 +0x2f
github.com/urfave/cli.HandleAction(0x1558f40, 0x18b06a8, 0xc000122840, 0xc000122840, 0x0)
        /go/src/github.com/longhorn/longhorn-manager/vendor/github.com/urfave/cli/app.go:525 +0x7c
github.com/urfave/cli.Command.Run(0x1801ea2, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        /go/src/github.com/longhorn/longhorn-manager/vendor/github.com/urfave/cli/command.go:174 +0x56e
github.com/urfave/cli.(*App).Run(0xc0001e4540, 0xc00010c000, 0xb, 0xb, 0x0, 0x0)
        /go/src/github.com/longhorn/longhorn-manager/vendor/github.com/urfave/cli/app.go:276 +0x7ae
main.main()
        /go/src/github.com/longhorn/longhorn-manager/main.go:59 +0x590

Environment:

Longhorn version: Longhorn v1.0.2
Kubernetes version: 18.6
Node OS type and version: Ubuntu 18.04

We should be able to clear up the lease object longhorn-manager-upgrade-lock in the longhorn-system namespace as a part of uninstallation, so the NPE can be avoided.

@yasker @meldafrawi This issue is seen when longhorn v1.0.2 is upgraded to master. Raising the priority.

@khushboo-rancher I missed a few patches we need to apply on vendor changes. Will fix it soon.

@khushboo-rancher Updated vendor merged. Can you retest it?

The upgrade from v1.0.2 to master is working now.

Test steps:

Install Longhorn master
Simulate a Helm uninstallation by doing:

kubectl apply -f deploy/uninstall/uninstall.yaml.  Basic functionalities work ok.
Upgrade to Longhorn v1.0.2
Verify that the upgrade succeeds with no error. Basic functionalities work ok.

Verified with longhorn-master 11/19/2020
Validation - Pass
Longhorn v1.0.0 can be installed in a set up where longhorn v1.0.2 was installed and deleted. The lease object longhorn-manager-upgrade-lock is getting removed on uninstallation.


Disconnecting

I don't see a disconnect-azureAdAssessment cmdlet. What is the recommended method for running this against multiple tenants?

That is a good suggestion. We can look into adding a Disconnect command for consistency.
However, in the current version you should be able to re-run the Connect-AADAssessment -TenantId <TenantId> command again with a different TenantId to connect to a different tenant.


feat(vue-query): add support for infiniteQueryOptions

The goal of this PR is to support the infiniteQueryOptions utility as it already does for react:
https://tanstack.com/query/latest/docs/framework/react/reference/infiniteQueryOptions
TODO:

[x] Add tests

Hola @TkDodo When you can, could I get some feedback on this PR? Thank you so much!

It also do not exist for solid-query. Maybe it makes sense to add function type to the core package for easier reuse?

It also do not exist for solid-query. Maybe it makes sense to add function type to the core package for easier reuse?

Idk if you can share the implementation, some type for example on vue are constrained to vue types, do you have any ideas?

Probably I need to make contribution with the 95% the same copy pasted code. Because there is not actual logic - only types

Btw, in this implementation and react implementation pageParams has always unknown[] type

Btw, in this implementation and react implementation pageParams has always unknown[] type Is it desirable behvaiour?

Uhm I just followed what was being done on react

pageParams returned from useInfiniteQuery has unknown as type, yes. There isn't much need to use those during rendering and it was a quick implementation to not have to add more type parameters.

@TkDodo We already have a parameter for that. The problem that TData do not use it. Since TPageParam is declared after TData - we need to make some trick to do not make backward compatibility
UseInfiniteQueryOptions<
  TQueryFnData,
  TError,
  TData,
  TQueryFnData,
  TQueryKey,
  TPageParam
>

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 40.99%. Comparing base (93674fe) to head (3f55dbe).
Report is 129 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files

@@            Coverage Diff             @@
##             main    #7257      +/-   ##
==========================================
- Coverage   41.42%   40.99%   -0.44%
==========================================
  Files         184      183       -1
  Lines        7331     7370      +39
  Branches     1531     1534       +3
==========================================
- Hits         3037     3021      -16
- Misses       3889     3938      +49
- Partials      405      411       +6

Components
Coverage Δ

@tanstack/angular-query-devtools-experimental
∅ <ø> (∅)

@tanstack/angular-query-experimental
86.46% <0.00%> (ø)

@tanstack/eslint-plugin-query
85.29% <100.00%> (ø)

@tanstack/query-async-storage-persister
43.85% <100.00%> (-5.35%)
:arrow_down:

@tanstack/query-broadcast-client-experimental
∅ <ø> (∅)

@tanstack/query-codemods
0.00% <0.00%> (ø)

@tanstack/query-core
92.86% <79.59%> (-0.40%)
:arrow_down:

@tanstack/query-devtools
3.92% <0.00%> (-0.02%)
:arrow_down:

@tanstack/query-persist-client-core
57.73% <ø> (ø)

@tanstack/query-sync-storage-persister
82.50% <ø> (ø)

@tanstack/react-query
92.77% <100.00%> (ø)

@tanstack/react-query-devtools
10.71% <ø> (ø)

@tanstack/react-query-next-experimental
∅ <ø> (∅)

@tanstack/react-query-persist-client
100.00% <ø> (ø)

@tanstack/solid-query
79.32% <70.90%> (-2.95%)
:arrow_down:

@tanstack/solid-query-devtools
∅ <ø> (∅)

@tanstack/solid-query-persist-client
100.00% <ø> (ø)

@tanstack/svelte-query
62.68% <100.00%> (ø)

@tanstack/svelte-query-devtools
∅ <ø> (∅)

@tanstack/svelte-query-persist-client
100.00% <100.00%> (ø)

@tanstack/vue-query
71.17% <91.30%> (+0.36%)
:arrow_up:

@tanstack/vue-query-devtools
∅ <ø> (∅)


Create dedicated preamble for the pretty print site specification

Work with @MikeRalphson to create a dedicated preamble for the pretty print version of the specification which will be housed on https://spec.openapis.org/
Draft version: https://mikeralphson.github.io/OpenAPI-Specification/workflows/1.0.0.html
To resolve: hardcoding related to the OpenAPI specification
TBD: Editors section

👀 on. Happy to review or help draft.

Relevant code is here - https://github.com/OAI/OpenAPI-Specification/blob/main/scripts/md2html/md2html.js#L83-L104

@MikeRalphson any time to jam on this in the near future?


How can I read the version at runtime?

The file is stored in the repo but I can't "import" it because its not a typescript file, and its not stored locally unless its imported... How can I read it at runtime?
Perhaps the version should be a .ts file? Maybe you could generate this?
// VERSION.ts
export const VERSION = "1.0.0"

I can't think of why a simple text file would be more useful than this. In the version script instead of reading the file you could then import it with const { VERSION } = import('./VERSION.ts'). I don't think you even need the --allow-read flag for that, I'm not sure though.

Hmm, interesting point — part of my original motivation here was to avoid some complicated/opinionated system like package.json, but agreed that a text file isn't super convenient at runtime [1].
I'm leaning towards "I'd like to keep it a text file by default", especially since picking TypeScript makes it inconvenient in non-TS projects (which I actually already use this in!), but I could definitely get down with a flag like --format=ts to switch between different options.
[1]: That said, const version = await Deno.readTextFile('VERSION'); isn't that bad

I mean if someone imports my library via ESM then this version file will not necessarily be pulled down to the local file system and it certainly wouldn't be relative to the local directory.

I'm now thinking I can use the local files relative path to resolve the version file path, even when loaded via a URL and then just do Deno.readTextFile(url) ? I'm not totally sure how to get that path or if that readTextFile will work with urls but maybe it will work.

One advantage to having the version be a TypeScript file is that you can import it without having to specify any permissions on the command line.
For example, I have a tool that just transforms from standard input and writes to standard output, precisely so that it doesn't require any non-default permissions. But I'd still like to support a --version flag without duplicating my version string in code.
Consider this my +1 :)

I'm now thinking I can use the local files relative path to resolve the version file path, even when loaded via a URL and then just do Deno.readTextFile(url) ? I'm not totally sure how to get that path or if that readTextFile will work with urls but maybe it will work.

FYI @justinmchase I think this is what you're looking for:
const version = await Deno.readTextFile(new URL("VERSION", import.meta.url));

The catch, of course, is that you need either --allow-read if your module's in the file system or --allow-net when loading from deno.land.

version get was implemented!

@justinmchase If it's cool with you, I'd like to leave this one open — I think your original suggestion here (allow reading the version file without needing additional permissions, e.g. to shell out to this tool or read a file) is totally valid and doesn't exist just yet. LMK if i'm misunderstanding!

Ok yeah, I didn't properly re-read this task when I closed it. Agreed.

Hey all! Stumbled upon this and wanted to use the version number in a deno compile binary, so I whipped up a PR to add support for a VERSION.ts file. Hopefully that's a decent direction to take this in 😊  #22

I ended up making a different semver tool which can be found here https://github.com/optum/semver-cli
It solves this problem in a different way, you can configure it to have post increment hooks such that when the version changes it will also update other files. This way you can just hard code the version into your source code file and when the version changes so does the version in your source code, thus bypassing the need to worry about loading external files. Works generically for all languages and tools.

I'm going to leave this open, as: to the extent anyone wants to continue to use this tool, it's still a valid concern.
Though, yep, for posterity: semver-cli is definitely a more full-featured and regularly-maintained alternative ☝


Add the ability to right-click download images in gallerys

See e.g. here: https://twitter.com/redrawnoxen/status/965701135431618560
You can't right-click save the image as the arrows are in front (we probably need to resize them so they don't take as much space)

👍

Closing as this extension is now deprecated: https://github.com/sindresorhus/refined-twitter/commit/8dd9df749d3a4e82c95b2bd6628c8d65f0f72e6c


[MINOR] Docker push

Change Logs
Push the base docker image to apache hudi docker hub.
Impact
None.
Risk level (write none, low medium or high below)
None.
Documentation Update
Describe any necessary documentation update if there is any new feature, config, or user-facing change

The config description must be updated if new configs are added or the default value of the configs are changed
Any new feature or user-facing change requires updating the Hudi website. Please create a Jira ticket, attach the
ticket number here and follow the instruction to make
changes to the website.

Contributor's checklist

[ ] Read through contributor's guide
[ ] Change Logs and Impact were stated clearly
[ ] Adequate tests were added if applicable
[ ] CI passed

Closing this one as we have already set up tests to run on the docker image in Azure CI.


Use 4.3.0 version of System.Threading.Tasks.Extensions

Got a assert fail when I built locally. Trying it here to figure out if it's a local build thing.
cc @mikeharder  \ @davidfowl


osx - code sign failed it seems

i had delve working but the certificate expired.
So i deleted DLV from bin, and pulled the dlv source as per normal.
Then i deleted the old expired cert and make a new one with ALLOW alway for trust

gedw99-MacBook-Pro:delve apple$ CERT=dlv-cert make install
go install -ldflags="-s" github.com/derekparker/delve/cmd/dlv
codesign -s dlv-cert /Users/apple/workspace/go/bin/dlv
gedw99-MacBook-Pro:delve apple$ CERT=dlv-cert make test
go test -exec=/Users/apple/workspace/go/src/github.com/derekparker/delve/scripts/testsign -ldflags="-s" github.com/derekparker/delve/cmd/dlv github.com/derekparker/delve/config github.com/derekparker/delve/dwarf/frame github.com/derekparker/delve/dwarf/line github.com/derekparker/delve/dwarf/op github.com/derekparker/delve/dwarf/reader github.com/derekparker/delve/dwarf/util github.com/derekparker/delve/proc github.com/derekparker/delve/proc/test github.com/derekparker/delve/service github.com/derekparker/delve/service/api github.com/derekparker/delve/service/debugger github.com/derekparker/delve/service/rpc github.com/derekparker/delve/service/test github.com/derekparker/delve/terminal
?   	github.com/derekparker/delve/cmd/dlv	[no test files]
?   	github.com/derekparker/delve/config	[no test files]
ok  	github.com/derekparker/delve/dwarf/frame	0.194s
ok  	github.com/derekparker/delve/dwarf/line	0.923s
ok  	github.com/derekparker/delve/dwarf/op	0.200s
?   	github.com/derekparker/delve/dwarf/reader	[no test files]
ok  	github.com/derekparker/delve/dwarf/util	0.194s
--- FAIL: TestExit (0.49s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestHalt (0.44s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestStep (0.45s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestBreakpoint (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestBreakpointInSeperateGoRoutine (0.43s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestBreakpointWithNonExistantFunction (0.01s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestClearBreakpointBreakpoint (0.01s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestNextGeneral (0.45s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestNextConcurrent (0.47s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestNextFunctionReturn (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestNextFunctionReturnDefer (0.49s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestNextNetHTTP (1.15s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestRuntimeBreakpoint (0.37s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestFindReturnAddress (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestFindReturnAddressTopOfStackFn (0.19s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestSwitchThread (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestCGONext (0.95s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestStacktrace (0.20s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestStacktrace2 (0.40s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestStacktraceGoroutine (0.18s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestKill (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestGetG (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestContinueMulti (0.37s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestBreakpointOnFunctionEntry (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestProcessReceivesSIGCHLD (0.46s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestIssue239 (0.37s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestVariableEvaluation (0.50s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestFrameEvaluation (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestPointerSetting (0.39s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestVariableFunctionScoping (0.00s)
	proc_test.go:33: Launch(): could not fork/exec
--- FAIL: TestRecursiveStructure (0.17s)
	proc_test.go:33: Launch(): could not fork/exec
FAIL
FAIL	github.com/derekparker/delve/proc	9.185s
?   	github.com/derekparker/delve/proc/test	[no test files]
?   	github.com/derekparker/delve/service	[no test files]
?   	github.com/derekparker/delve/service/api	[no test files]
?   	github.com/derekparker/delve/service/debugger	[no test files]
?   	github.com/derekparker/delve/service/rpc	[no test files]
--- FAIL: TestRestart_afterExit (0.45s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestRestart_duringStop (0.00s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_exit (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_step (0.51s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestNextGeneral (0.43s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestNextFunctionReturn (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_breakpointInMainThread (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_breakpointInSeparateGoroutine (0.46s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_breakAtNonexistentPoint (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_clearBreakpoint (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_switchThread (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_infoLocals (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_infoArgs (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_traceContinue (0.43s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_traceContinue2 (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_FindLocations (0.48s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_EvalVariable (0.50s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_SetVariable (0.01s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestClientServer_FullStacktrace (0.25s)
	integration_test.go:46: could not launch process: could not fork/exec
--- FAIL: TestVariableEvaluation (0.01s)
	variables_test.go:84: Launch(): could not fork/exec
--- FAIL: TestMultilineVariableEvaluation (0.01s)
	variables_test.go:84: Launch(): could not fork/exec
--- FAIL: TestLocalVariables (0.01s)
	variables_test.go:84: Launch(): could not fork/exec
--- FAIL: TestEmbeddedStruct (0.49s)
	variables_test.go:84: Launch(): could not fork/exec
--- FAIL: TestComplexSetting (0.00s)
	variables_test.go:84: Launch(): could not fork/exec
--- FAIL: TestEvalExpression (0.48s)
	variables_test.go:84: Launch(): could not fork/exec
--- FAIL: TestEvalAddrAndCast (0.00s)
	variables_test.go:84: Launch(): could not fork/exec
--- FAIL: TestMapEvaluation (0.01s)
	variables_test.go:84: Launch(): could not fork/exec
--- FAIL: TestUnsafePointer (0.01s)
	variables_test.go:84: Launch(): could not fork/exec
FAIL
FAIL	github.com/derekparker/delve/service/test	4.878s
ok  	github.com/derekparker/delve/terminal	0.258s
make: *** [test] Error 1

```

Fixed !
I had forgot to allow all access on the Certs :)
gedw99-MacBook-Pro:delve apple$ CERT=dlv-cert make install
go install -ldflags="-s" github.com/derekparker/delve/cmd/dlv
codesign -s dlv-cert /Users/apple/workspace/go/bin/dlv
gedw99-MacBook-Pro:delve apple$ CERT=dlv-cert make test
go test -exec=/Users/apple/workspace/go/src/github.com/derekparker/delve/scripts/testsign -ldflags="-s" github.com/derekparker/delve/cmd/dlv github.com/derekparker/delve/config github.com/derekparker/delve/dwarf/frame github.com/derekparker/delve/dwarf/line github.com/derekparker/delve/dwarf/op github.com/derekparker/delve/dwarf/reader github.com/derekparker/delve/dwarf/util github.com/derekparker/delve/proc github.com/derekparker/delve/proc/test github.com/derekparker/delve/service github.com/derekparker/delve/service/api github.com/derekparker/delve/service/debugger github.com/derekparker/delve/service/rpc github.com/derekparker/delve/service/test github.com/derekparker/delve/terminal
?   	github.com/derekparker/delve/cmd/dlv	[no test files]
?   	github.com/derekparker/delve/config	[no test files]
ok  	github.com/derekparker/delve/dwarf/frame	0.211s
ok  	github.com/derekparker/delve/dwarf/line	0.876s
ok  	github.com/derekparker/delve/dwarf/op	0.187s
?   	github.com/derekparker/delve/dwarf/reader	[no test files]
ok  	github.com/derekparker/delve/dwarf/util	0.211s
ok  	github.com/derekparker/delve/proc	19.101s
?   	github.com/derekparker/delve/proc/test	[no test files]
?   	github.com/derekparker/delve/service	[no test files]
?   	github.com/derekparker/delve/service/api	[no test files]
?   	github.com/derekparker/delve/service/debugger	[no test files]
?   	github.com/derekparker/delve/service/rpc	[no test files]
ok  	github.com/derekparker/delve/service/test	18.392s
ok  	github.com/derekparker/delve/terminal	0.250s
gedw99-MacBook-Pro:delve apple$


Create POC doc for GitOps

Diagram out GitHub -> Keptn -> Ortelius -> ArgoCD flow

@sbtaylor15 I will take on this one.

@sachajw where is the QnA page?  Need to make a few comments.

Marking this one as complete. First edition of the diagram is here https://drive.google.com/file/d/15omqklaFTeDEAn5P0Yc8-fBsY4M21I02/view?usp=sharing