Custom Authentication Flow with SRP Password Verification

The Question
I'm looking for a best way to implement a Custom Authentication Flow which consists of two steps:

SRP Password Verification
Custom challenge (SMS code verification)

public async Task AuthenticateWithCustomAuthAndSrpAsync(string poolId, string clientId, string userName, string password)
        {
            var provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), FallbackRegionFactory.GetRegionEndpoint());
            var userPool = new CognitoUserPool(poolId, clientId, provider);
            var user = new CognitoUser(userName, clientId, userPool, provider);

            AuthFlowResponse authResponse = await user.StartWithCustomAuthAsync(new InitiateCustomAuthRequest
            {
                AuthParameters = new Dictionary<string, string>()
                {
                    {"USERNAME", userName},
                    {"SECRET_HASH", ComputeHash(userName)},
                    {"CHALLENGE_NAME", "CUSTOM_CHALLENGE"}
                },
                ClientMetadata = new Dictionary<string, string>()
            }).ConfigureAwait(false);

            var adminRespondToAuthChallengeAsync = await provider.AdminRespondToAuthChallengeAsync(
                new AdminRespondToAuthChallengeRequest
                {
                    ClientId = clientId,
                    UserPoolId = poolId,
                    ChallengeName = "PASSWORD_VERIFIER",
                    Session = authResponse.SessionID,
                    ChallengeResponses = new Dictionary<string, string>
                    {
                        {"USERNAME", userName},
                        {"CHALLENGE_NAME", "PASSWORD_VERIFIER"},
                        {"PASSWORD_CLAIM_SIGNATURE", ""}, // <== Is there a way to calculate it?
                        {"PASSWORD_CLAIM_SECRET_BLOCK", ""}, // <== Is there a way to calculate it?
                        {"TIMESTAMP", ""} // <== Is there a way to calculate it?
                    }
                });
        }

The problem is that SRP Password Verification requires next parameters: PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK and TIMESTAMP, but seems like library calculates these properties internally and there is no way to get them from the caller code. Am I missing something?

Hi @efimenkop,
Good morning.
Thanks for posting guidance question.
For CognitoUser. StartWithSrpAuthAsync(), the logic seems to automatically create RespondToAuthChallengeRequest and  responding to auth challenge. And you are right, for this scenarios, the library calculates the values for properties PASSWORD_CLAIM_SECRET_BLOCK and PASSWORD_CLAIM_SIGNATURE internally.
For your case, you could take some cue from CreateSrpPasswordVerifierAuthRequest on how the PASSWORD_CLAIM_SECRET_BLOCK and PASSWORD_CLAIM_SIGNATURE are calculated.
Thanks,
Ashish

Hello, @ashishdhingra!
Maybe it worth making CreateSrpPasswordVerifierAuthRequest public?
Otherwise I have to copy-paste big piece of library's logic.

@efimenkop Thanks for your reply. Please advise if it would be possible for you to test the extracted code for your scenario and if it works, may be submit a PR to refactor existing code as contribution.

This should not be closed @efimenkop. It is still a problem to implement Custom Flow with SRP. Even copy pasting a lot of the code still gives an error: Amazon.CognitoIdentityProvider.Model.NotAuthorizedException: "Incorrect username or password".
After 6 hours of debugging I can't find any mistakes. SRP normal flow is working as expected, custom + SRP is not.
It funny because it is even one of the scenarios described in the official documentation:
https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html#Using-SRP-password-verification-in-custom-authentication-flow
But the SDK fails to use SRP on custom authentication flows.
I get:

I came here looking for a .NET solution to integrate the email MFA I setup from this guide
https://aws.amazon.com/blogs/mobile/extending-amazon-cognito-with-email-otp-for-2fa-using-amazon-ses/
Which is very similar to the OP.
I have a solution that integrates with the above custom authentication implementation if anyone is interested.
I included a new property IsCustomAuthFlow to class InitiateSrpAuthRequest:
    /// <summary>
    /// Class containing the necessary properities to initiate SRP authentication flow
    /// </summary>
    public class InitiateSrpAuthRequest
    {
        /// <summary>
        /// The password for the corresponding CognitoUser.
        /// </summary>
        public string Password { get; set; }
        /// <summary>
        /// The password for the device associated with the corresponding CognitoUser
        /// </summary>
        public string DevicePass { get; set; }
        /// <summary>
        /// The device password verifier for the device associated with the corresponding CognitoUser
        /// </summary>
        public string DeviceVerifier { get; set; }
        /// <summary>
        /// The Device Key Group for the device associated with the corresponding CognitoUser
        /// </summary>
        public string DeviceGroupKey { get; set; }
        /// <summary>
        /// Use the custom auth flow with this SRP request
        /// </summary>
        public bool IsCustomAuthFlow { get; set; }
    }

I then modified the method StartWithSrpAuthAsync on class CognitoUser to set the AuthFlow to CUSTOM_AUTH and included an AuthParameter of CHALLENGE_NAME = SRP_A on the initiateRequest, when the new property IsCustomAuthFlow is true.
        /// <summary>
        /// Initiates the asynchronous SRP authentication flow
        /// </summary>
        /// <param name="srpRequest">InitiateSrpAuthRequest object containing the necessary parameters to
        /// create an InitiateAuthAsync API call for SRP authentication</param>
        /// <returns>Returns the AuthFlowResponse object that can be used to respond to the next challenge,
        /// if one exists</returns>
        public virtual async Task<AuthFlowResponse> StartWithSrpAuthAsync(InitiateSrpAuthRequest srpRequest)
        {
            if (srpRequest == null || string.IsNullOrEmpty(srpRequest.Password))
            {
                throw new ArgumentNullException("Password required for authentication.", "srpRequest");
            }

            Tuple<BigInteger, BigInteger> tupleAa = AuthenticationHelper.CreateAaTuple();
            InitiateAuthRequest initiateRequest = CreateSrpAuthRequest(tupleAa);

            // change this to custom
            if (srpRequest.IsCustomAuthFlow)
            {
                initiateRequest.AuthFlow = AuthFlowType.CUSTOM_AUTH;
                initiateRequest.AuthParameters.Add("CHALLENGE_NAME", "SRP_A");
            }

            InitiateAuthResponse initiateResponse = await Provider.InitiateAuthAsync(initiateRequest).ConfigureAwait(false);
            UpdateUsernameAndSecretHash(initiateResponse.ChallengeParameters);

            RespondToAuthChallengeRequest challengeRequest =
                CreateSrpPasswordVerifierAuthRequest(initiateResponse, srpRequest.Password, tupleAa);

            bool challengeResponsesValid = challengeRequest != null && challengeRequest.ChallengeResponses != null;
            bool deviceKeyValid = Device != null && !string.IsNullOrEmpty(Device.DeviceKey);

            if (challengeResponsesValid && deviceKeyValid)
            {
                challengeRequest.ChallengeResponses[CognitoConstants.ChlgParamDeviceKey] = Device.DeviceKey;
            }

            RespondToAuthChallengeResponse verifierResponse =
                await Provider.RespondToAuthChallengeAsync(challengeRequest).ConfigureAwait(false);
            var isDeviceAuthRequest = verifierResponse.AuthenticationResult == null && (!string.IsNullOrEmpty(srpRequest.DeviceGroupKey)
                || !string.IsNullOrEmpty(srpRequest.DevicePass));
            #region Device-level authentication
            if (isDeviceAuthRequest)
            {
                if (string.IsNullOrEmpty(srpRequest.DeviceGroupKey) || string.IsNullOrEmpty(srpRequest.DevicePass))
                {
                    throw new ArgumentNullException("Device Group Key and Device Pass required for authentication.", "srpRequest");
                }

                #region Device SRP Auth
                var deviceAuthRequest = CreateDeviceSrpAuthRequest(verifierResponse, tupleAa);
                var deviceAuthResponse = await Provider.RespondToAuthChallengeAsync(deviceAuthRequest).ConfigureAwait(false);
                #endregion

                #region Device Password Verifier
                var devicePasswordChallengeRequest = CreateDevicePasswordVerifierAuthRequest(deviceAuthResponse, srpRequest.DeviceGroupKey, srpRequest.DevicePass, tupleAa);
                verifierResponse = await Provider.RespondToAuthChallengeAsync(devicePasswordChallengeRequest).ConfigureAwait(false);
                #endregion

            }
            #endregion

            UpdateSessionIfAuthenticationComplete(verifierResponse.ChallengeName, verifierResponse.AuthenticationResult);

            return new AuthFlowResponse(verifierResponse.Session,
                verifierResponse.AuthenticationResult,
                verifierResponse.ChallengeName,
                verifierResponse.ChallengeParameters,
                new Dictionary<string, string>(verifierResponse.ResponseMetadata.Metadata));
        }

Inside your code you will need to respond to the custom auth with a response like the following:
var challengeResponses = new Dictionary<string, string>();
challengeResponses.Add("ANSWER", authenticationCode);
challengeResponses.Add("USERNAME", userName);
var request = new RespondToCustomChallengeRequest()
{
            ChallengeParameters = challengeResponses,
            SessionID = sessionID
};
await user.RespondToCustomAuthAsync(request).ConfigureAwait(false);


Races are unplayable slideshow unless controller vibration is disabled

I was unable to play the game at all after applying the tweaks because once a race started the game became a slide show (<1fps).  However, thanks to a comment on youtube I found out the issue is somehow related to Vibration.  If Vibration is set to 0 in the ini file to disable it, suddenly everything works perfectly.  For reference, I'm using a a Xbox One Controller connected via Bluetooth.

I have tried an 8BitDo Pro 2 (the pre-hall effect sticks version) and paired it with 8BitDo's own Wireless Adapter 2 via Bluetooth and I haven't ran into framerate problems so far. I could try some other Bluetooth adapters I have to see if I can trigger this slideshow framerate problem with other controllers.

Tried xbox one s controller with bluetooth on Win10 22h2, got same issue, unplayable sildeshow.

Known issue/duplicate of #25

I found that changing VibrationControllerId from 0 to 1 allows me to keep VibrationMode=1 (so rumble still works), but fixes the issue that kills the framerate.  I have not idea why this works, but figured I'd let ppl know about this workaround

Interesting, this improved performance for me but there was still noticeable slowdown when starting a race. I tried 0 through 4 once each, with 2 probably being the best setting. But I turned rumble off so that it runs smoothly again. Also, the rumble is far too strong on my X1X controller despite any changes made in settings.


Understanding Node.js Sequelize ORM Models

We ask that you please be patient as our team works through approving and publishing all articles/tutorials in a timely manner. Allow 1-3 days for a topic to be reviewed and/or approved - allow 3-7 days for an articles to be reviewed and/or published.
Be sure to visit our Resources Page for tools, resources, and example articles to go over.
NOTE: (Please ensure that you have only one open issue + linked pull request at a time. This will ensure that we complete the article in a timely manner from inception to publishing.)
NOTE: We tend to stray away or tend not to publish reviews/comparisons of commercial product offerings.
We're looking for the first 2-3 paragraphs of the article that appropriately summarize what your article will be about.
Proposed title of article
Understanding Node.js Sequelize ORM Models
Introduction paragraph (2-3 paragraphs):
Sequalize is an Object Relational Mapper for Node.js. This article will help you understand Sequalize models from model definition to model usage. At the end of this tutorial, you should be able to:

Define models in Sequalize
Understand different data types and use them in the model definition
Validate models
Define model associations
Generate database schema from Sequalize models

Models are the backbone of any ORM. Therefore, you must understand how to work with models extensively to realize the full benefits of ORM. Models are database-independent.
Key takeaways:

Introduction to models in Sequalize
Sequalize model definition
Sequalize data types
Sequalize model validations
Sequalize model associations

References:
Sequelize Documentation
Sequelize API Reference
Templates to use as guides

Tutorial Template

seems like a cool topic - if you havent already please review recently published Node.js articles in the EngEd library to avoid overlap and/or see what can be used as a reference. @Tsanguu approved
I think we just published an article on ORM - but it may be a different topic.
https://www.section.io/engineering-education/introduction-to-sequalize-orm-for-nodejs/

@hectorkambow  noted. I had gone through the article even before you published it. I suggested this issue with the published one in mind. The previous will be a prerequisite to this issue. There will be no overlap.

@Tsanguu just wanted to follow up on this topic as I'm clearing up the queue where possible? Can be re-opened when needed.
Of perhaps I missed the PR this is attached to?


Serve multiple ports?

Hey guys,
It is possible for Seasocks to listen and open multiple connections on more than one port? I am thinking of a scenario where we have, say a data channel on port 1234 and control channel on port 5678.
One way I thought of doing this is creating two server objects (one per channel) and having each do server.serve() on its own thread. The parent of these two threads could send data out using server.execute(connection->send) on each server object?
Is there a better way where I can call listen() and handle simultaneous connections on more than one port?
Thanks for creating a great tool!
-Chris

I haven't looked in detail, but I think the thread-per-listener approach is probably your best option. Hooking into the event loop isn't very easy (ie requires code modification) as we discussed a bit in #47 .


App Check not working with iOS App Clips

Description
We use the App Check from Firebase ("firebaseAdmin.appCheck().verifyToken" in Node SDK). But it looks like it does not work with iOS App Clips. Is this an already known bug? If yes, is there a roadmap to fix it? For our project, it would be critical for the Go/No-Go decision with Firebase. Thanks for your help.
Best regards,
Adrian
Reproducing the issue
No response
Firebase SDK Version
11.4.1
Xcode Version
14.2
Installation Method
Swift Package Manager
Firebase Product(s)
App Check
Targeted Platforms
iOS
Relevant Log Output
No response
If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet

Replace this line with the contents of your Package.resolved.

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet

Replace this line with the contents of your Podfile.lock!

Hi Adrian, this wasn't one of the known issues with App Clips so I dug into it a little bit further. Apple's App Attest documentation says:

An attestation that an App Clip generates uses the full app’s identifier, not the App Clip’s identifier.

However, App Check expects the Bundle ID of the running application (i.e., the App Clip) during validation. For example, if your app is com.foo.bar and your App Clip is com.foo.bar.clip then App Attest will generate an attestation for com.foo.bar but App Check is looking for com.foo.bar.clip (from your GoogleService-Info.plist file). Unfortunately, I don't have a quick fix but a couple potential workarounds:

Use the DeviceCheck attestation provider instead of App Attest

DeviceCheck doesn't rely on the Bundle ID and doesn't have this issue
This would involve setting up DeviceCheck (guide) and changing the App Check Provider Factory with AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory()) in Swift.

Or, use the GoogleService-Info.plist from the parent app (e.g., the one from com.foo.bar instead of com.foo.bar.clip)

This will result in a warning being presented in the debug console saying "The project's Bundle ID is inconsistent with either the Bundle ID in 'GoogleService-Info.plist', or the Bundle ID in the options if you are using a customized options..." but will allow App Check to use the App Attest provider.
One drawback that I can think of off the top of my head is that Analytics data from the App Clip will likely be mixed in with your regular app since they'd then share the same Firebase App ID from the GoogleService-Info.plist.

Hopefully I've understood the issue you're running into and that one of the workarounds will help. I was assuming you're using App Attest on iOS and guessing about the error from the NodeJS SDK since I'm not familiar with it. Let me know if I've misunderstood the problem.

Hi Andrew, thanks for the quick response. That sounds good, especially the second workaround with the "GoogleService-Info.plist from the parent app" looks interesting, we will check this one and let you know if it worked. Yes your assumptions were correct about the App Attest setup (sorry that I forgot to mention parts).
Thanks and regards,
Adrian


Contact page should have the group npub

So let’s not forget to add that. I suppose it should link to somewhere useful and not just be a string?

on it!


nixosTest: make modular

Why

Generated docs
Type checking
Overrides for interactive use
Reusable test fixtures with imports
Replace test logic with disabledModules
Work towards generalized test matrix feature (#176557)
Some other fixes

Closes #171396
What

Move testing-python.nix logic and build-vms.nix logic into modules
Rewrite the node numbering logic
Write docs

Extracted from #176557
Hydra: 4299c1749d35ab472d56174404ba420df9d3febe https://hydra.nixos.org/eval/1781169?compare=1780016
First nixos-unstable: https://hydra.nixos.org/eval/1782482
"removed" attributes

ec2: meta.broken now applies to test runner
fcitx: meta.broken now applies to test runner
gocd-agent: meta.broken now applies to test runner
hadoop: rename the attr path to include system
hocker-fetchdocker: meta.broken now applies to test runner
installed-tests.xdg-desktop-portal: meta.broken now applies to test runner
mariadb, mysql: now runs on both system types, changing the attr path
pulseaudio: now runs on both system types, changing the attr path
shadowsocks: now runs on both system types, changing the attr path
zigbee2mqtt: name has already been added in master. merge will fix this.

Things done

Built on platform(s)

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

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

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

Ofborg ran out of disk space.
@ofborg eval

Rebased. Already reviewed as part of https://github.com/NixOS/nixpkgs/pull/176557. Will merge in a couple of days to avoid more rebasing.

This broke kernel passthru tests:
$ nix-instantiate -A linux.passthru.tests --system x86_64-linux --show-trace
error: attempt to call something which is not a function but a set

       at /Users/atemu/Projects/nixpkgs/pkgs/os-specific/linux/kernel/generic.nix:217:11:

          216|       };
          217|     in [ (nixosTests.kernel-generic.testsForKernel overridableKernel) ] ++ kernelTests;
             |           ^
          218|   };

The way both nixosTests and nixos/release.nix load and transform the tests is incredibly ad hoc and fragile.
It appears that nixosTests now tries to invoke the test according what we might call the standalone import ./make-test-python.nix pattern, considering that testsForLinuxPackages appears to receive { pkgs = ...; system = ...; } as its argument. Both discoverTests and handleTest pass these arguments, but perhaps discoverTests is at fault. I really can't tell though, because of all the "legacy" that this code needs to support.
Ideally we'd standardize the solution for both the test matrix "problem" and the package testing problem in one go. That could be https://github.com/NixOS/nixpkgs/pull/176557 or something similar.


Update PatternFly to 2022.10

Description
Release notes: https://www.patternfly.org/v4/developer-resources/release-notes#2022.10-release-notes-2022-08-04
Dropdown: Deprecated isHovered prop - manually checked that we do not use this prop.
Select: Removed variant check from update logic - this fixes the issue described in https://github.com/stackrox/stackrox/pull/2475 that prevented updating beyond 2022.07.
Checklist

[ ] Investigated and inspected CI test results

Testing Performed
Manual spot check by using the app, focusing on PatternFly pages. Console warnings across pages also occur on master and are unrelated to the update.
Updated Cypress tests to use selectors that match PatternFly markup changes. (Same change as https://github.com/stackrox/stackrox/pull/2475/commits/4bf8623419905e9203dce408489e4cb778d6f09f, that was make a bit too soon in that PR.)

/retest

/retest-required


⚠ Secret Website 3 has degraded performance

In f21ee2b, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 2343 ms

Resolved: Secret Website 3 performance has improved in c81127f.


Calendar position on Bootstrap Modal not correct

Hi,
since the last update the initial calendar position is not correct so the calendar appears on the left upper corner of the page.
https://jsfiddle.net/chmln/fjmeg996/2/

This happens because the modal is initially hidden.
You can correct the behavior by setting the static option to true

Works perfectly. Thanks!


Remove moot version property from bower.json

Per bower/bower.json-spec@a325da3

" Intended to be used in the future when Bower gets a real registry"
So I would add it in the future again? Well then I can leave it as it is.
I find it very useful to see the actual version in the Bower file.


typedoc typings

Search terms

Typedoc Typings
Typedoc Declaration File

Expected Behavior
Generate docs from the cwd + typings
Actual Behavior
generates docs from the typescript typings
Steps to reproduce the bug

Have this be in you tsconfig:
  "typedocOptions": {
    "mode": "modules",
    "out": "docs",
    "includeDeclarations": true
  }

and run
typedoc typings
Environment

Typedoc version: 0.18.0
TypeScript version: 4.0.2
Node.js version: 14.2.0
OS: Windows 10 (x64)

Huh? I don't understand your issue. There isn't enough here for me to understand what you did. includeDeclarations is a dangerous option though, if you set excludeExternals you might get the behavior you are expecting.


Refactor/relationship

This pull request addresses the relationship refactoring in Issue #197.
Below is a summary of the major changes for the refactoring:

Deprecate existing relationship object
Add new related_road_events object which has attributes specific for the use cases within WZDx
Added RelatedRoadEventTypes that address various use cases within WZDx including: road event sequence, related detours/work zones, recurring work zones, and moving operations.
Updated examples to show use of new related_road_events object

A summary of the new object and enumerations include:
related_road_events property on the RoadEvent object (replaces relationship)

Property Name
Value
Description
Conformance
Notes

related_road_events
Array; RelatedRoadEvents
A list describing one or more road events which are related to this road event, such as a work zone project it is part of or another road event that occurs before or after it in sequence.
Optional

RelatedRoadEvents Object
The RelatedRoadEvents object is used to identify another road event that is related to a road event.

Property Name
Value
Description
Conformance
Notes

type
RelatedRoadEventType
The type of road event being identifed, such as another sequence of related work zones, a detour, or next road event in sequence.
Required

id
String
An identifier for the related road event by the type property.
Required

Used By

Property
Object

related_road_events
RoadEventCoreDetails

RelatedRoadEventType Enumerated Type
Describes a type of related road event, such as a work zone project, recurrent work zone, or detour-type road event.

Value
Description

first-in-sequence
The first road event in a sequence of road events that together describe a full work zone or detour

next-in-sequence
The next (subsequent) road event in a sequence of road events that together describe a full work zone or detour

first-occurrence
The first road event of the first occurrence of a recurrent work zone. End users will need to iterate using the first road event to find all relevant road events to a related work zone

next-occurrence
The first road event of the next occurrence of a recurrent work zone. End users will need to iterate using the first road event to find all relevant road events to a related work zone

related-work-zone
First road event of related work zones (i.e. not part of a sequence of road events or recurrent work zone) that are relevant to the given road event.  End users will need to iterate using the first road event to find all relevant road events to a related work zone

related-detour
First road event of related detours (i.e. not part of a sequence of road events) that are relevant to the given road event.  End users will need to iterate using the first road event to find all relevant road events to a related detour

planned-moving-operation
First road event of a related planned moving operation work zones (i.e. not part of a sequence of road events) that are relevant to the given road event.  End users will need to iterate using the first road event to find all relevant road events to a related work zone

active-moving-operation
First road event of a related active moving operation work zones (i.e. not part of a sequence of road events) that are relevant to the given road event.  End users will need to iterate using the first road event to find all relevant road events to a related work zone

Used By

Property
Object

type
RelatedRoadEvents

/spec-content/README.md needs to be updated with the new object and enumerated type.


Unable to install helm chart for cloudwatch metrics without AMP/Prometheus

Describe the bug
Following the documentation I am getting a failure for the adot collector add-on. It used to work for version 0.1.0 of the chart, but fails with all higher versions
Steps to reproduce
Follow documentation for offloading metrics to amazon cloudwatch. I can see that the instructions for the two sections are identical:
CloudWatch
CloudWatch and AMP.
What did you expect to see?
Expected an option to enable CloudWatch metrics only.
What did you see instead?
Appears that AMP exporter is active by default
adot collector daemonset failed with the following error message:
builder/exporters_builder.go:40    Exporter is starting...    {"kind": "exporter", "name": "awsprometheusremotewrite"}    │
│ Error: cannot start exporters: invalid endpoint: "http://some.url:9411/api/prom/push"                                                                         │
│ 2022/07/13 02:26:20 application run finished with error: cannot start exporters: invalid endpoint: "http://some.url:9411/api/prom/push"                       │
│ Stream closed EOF for amazon-metrics/adot-collector-daemonset-n54d9 (adot-collector-container)

Environment
EKS 1.21
Additional context
Add any other context about the problem here.

We encourage use of ADOT with EKS addons instead of this helm chart going forward

We encourage use of ADOT with EKS addons instead of this helm chart going forward

That is what we had to do eventually, but it would be nice either call out that this particular feature won't work, or deprecate the chart altogether.

Hi @shapirov103 can you please share the values.yaml that you have used to install chart?

i too didnt use a values file, i just followed documentation, my logs in cloudwatch is working but no metrics showed up on container-insights.
the ADOT addon requires cert-manager to be installed, does this mean i wouldnt be able to create eks from scratch with ADOT addon installed? it has to be an update?
can we get the documentation for this implementation updated?


Memory views

Related to #161, #630
On the lowest level, things like textures or buffers narrow down to chunks of VRAM. What user operates with is some kind of view into these chunks. For example, the same memory could be treated as a texture and a render target given the same tiling mode (compatible with rendering).
Different APIs provide different degrees of freedom w.r.t. memory views. We need to figure out the model we can expose without limiting the use cases, while adding some type safety on the way (typed views).
Here is a short recap of what different APIs expose. To be filled with your help!

OpenGL: textures and buffers are entirely unrelated things. You can't get multiple views into the same memory.

ARB_texture_buffer_object: allows viewing a buffer through a 1D texture
ARB_texture_view: allows textures to be viewed via different formats

DirectX10: there are generic resources (ID3D10Resource). One can create multiple shader views (ID3D10ShaderResourceView) as well as target views (ID3D10RenderTargetView), but the flags enabling these have to be specified upon resource creation.

DX11 also adds UAV views (ID3D11UnorderedAccessView) following the same scheme

GNM: (basically described in the beginning) one allocates memory and treats it as they wish. The compatibility of the views is partially checked by the (optional) validation layer, but the user can still screw up rather badly (by using different sizes, for example).
Vulkan: TODO

Overall, I believe DX has the most sane model of all, and we should reflect it. Shader resource views should be allowed in unlimited quantities, while the target view should be lifetime bound to the object, thus preventing two writable views from existing simultaneously.
Summoning all the collective mind of @csherratt, @cmr, @fkaa, and even @tomaka from the other side of the moon!

We can push the concept even further and treat vertex and index buffers as separate views. In a way, GL_ARRAY_BUFFER and GL_ELEMENT_ARRAY_BUFFER reflect this distinction, especially considering that GLES doesn't allow changing this bind target. Thus, in GLES, if the user requests a buffer that needs to support both views, we will return an error. It is a better error than the one we issue during rendering since it's going to happen at the initialization time of the app.

A possible API example:
let buf = factory.create(gfx::VERTEX_BUFFER | gfx::TEXTURE).unwrap();
let vertex_buf = factory.view_vertex(buf).unwrap();

This is not exactly strongly typed yet. It would be nice to get rid of the last unwrap() call by limiting the views that can/can't be create by the type system.

Unfortunately changing target of a OpenGL texture object is not possible. To emulate ARB_texture_view on lower-end hardware we could possibly keep a root struct which handles the lifetime of all the created views. Some psuedo-rusty-code:
struct RootTexture<'a> {
  views: Vec<Rc<ViewTexture>>
}

impl<'a> RootTexture {

  pub fn create_view(&self, format: Format) -> Rc<ViewTexture<'a>> {
    if (self.has_format(format)) {
      self.cache[format]
    }

    ViewTexture::new(&self)
  }

  pub fn update(&self, data: &Data) {
    for view in views {
      gl::UpdateTex(view.handle, data);
    }
  }

}

struct ViewTexture<'a> {
  parent: &RootTexture<'a>,
  handle: GLint
}

impl<'a> ViewTexture {

  pub fn update(&mut self, data: &Data) {
    parent.update(&data);
  }

}

Feels like it could work but also feels like a pretty big hack. Is it worth it? This would mean that a view doesn't share memory unless they have the same format, which kind of defeats the point. Personally I feel that it could work, since you shouldn't really be creating views left and right. Updates would still cascade through all of the views associated to a texture object.

Unfortunately changing target of a OpenGL texture object is not possible

This is not true. A 3D texture, for example, can be viewed as either a 3D target, or as one of the slices. There are more (similar) examples, which would fit the subject model.

@kvark I was talking more about this part in the docs:

void glBindTexture(GLenum target,
                   GLuint texture);

GL_INVALID_OPERATION is generated if texture was previously created with a target that doesn't match that of target.

Even if you access the 3D layer as a 2D target you'd still have to pass it as a sampler3D in a shader though, right?

@fkaa I gave the example for target views, not the shader resource views. The latter are indeed fixed by opengl up until ARB_texture_view.


question about output feature dimension

Hi, @qq456cvb ,
According to the Fig. 3 in Hengshuang's Point Transformer model, the output feature dimension of each transformer block should be different . e.g. [32, 64, 128, 256, 512]. But your implementation uses a unqiue one, e.g. 512. Any comment on this?
Thanks!

Notice that in Figure 4(a), there are two fully connected layers (fc1, fc2 in code) before/after the actual transformer. I think 32, 64, 128, 256, 512 is the dimensions before the first fully connected layer instead of the actual transformer. The dimension of the actual transformer is not given in the paper.

Notice that in Figure 4(a), there are two fully connected layers (fc1, fc2 in code) before/after the actual transformer. I think 32, 64, 128, 256, 512 is the dimensions before the first fully connected layer instead of the actual transformer. The dimension of the actual transformer is not given in the paper.

@qq456cvb Thanks a lot for your comments.

@qq456cvb Thanks a lot for your comments.


Added an animation called stretch

Added an animation called stretch (code all the way at the bottom)

Do you any preview for that animation? Any codepen link for preview?

As @WarenGonzaga noted, we need a pen with the animation so we can evaluate it, as noted on readme:

I only have two rules for submitting a pull request: match the naming convention (camelCase, categorised [fades, bounces, etc]) and let us see a demo of submitted animations in a pen. That last one is important.

Please provide any codepen preview for your animation. Sign up here if you don't have account codepen.io

Got it. Sounds great to me :)
On Fri, Feb 2, 2018 at 4:26 PM, Waren Gonzaga<EMAIL_ADDRESS>wrote:

Alright, so for now I will handle is work is it okay? I'm gonna prepare a
live version of it on codepen... and let see if it has potential... I
willing to help here... what do you think?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/daneden/animate.css/pull/765#issuecomment-362712292,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AOjCC3dGvjuwqBhiGGUHCS_s2whCmjjIks5tQ32TgaJpZM4QjPrw
.


Uni Systems - Missing targetare link

ENVIRONMENT: production
Browser: Chrome
Device: Laptop
OS: Windows 10
STEPS TO REPRODUCE:
Open the https://scrapers.peviitor.ro/src/uni/index.html in browser.
Hover over the company's logo.
There is a functioning 'Targetare' button (with link) just under the 'Careers' one.
Click on "Targetare.ro".
EXPECTED RESULTS:
The company logo is visible in the square in the middle of the page.
There is a functioning 'Targetare' button (with link) just under the 'Careers' one.
ACTUAL RESULTS:
There is no 'Targetare' button.

Verifica pe targetare.ro sa vezi daca exista.

Am verificat si exista uni trans logistics systems srl.


not work.

it is wrong.
<vue-pdf-embed :source="source1" />
vue-pdf-embed: 1.1.5
Result

Hi @chenweigh,
Could you provide more details on your environment and maybe prepare some demo?

My fault.
The installation did not work.


Move stableRemove alias to correct place for documentation

stableRemove was listed under the linearRemove documentation for some reason, even though it's aliased to remove.

Both definitions of linearRemove should also be documented together instead of one appearing under the definition of remove.

Both definitions of linearRemove should also be documented together instead of one appearing under the definition of remove.

I saw that, and wasn't sure what to do. The truth is that the first definition of linearRemove is a simple call to remove. So in essence, that form is not linear. I don't know why it's that way (perhaps linearRemove means "at worst linear" performance?)
I left it alone, because it's technically under the right docs.
Perhaps the correct solution is to put all definitions for remove and linearRemove together, and document them as one.
But this change is a simple thing that stuck out at me when I was reading the docs.


Feature request: Vanity public key

I'd like to be able to generate vanity ed25519 public keys, not just full-blown onion addresses. Is this something that's easily done with the current code base or is this project not a good fit for that?

vanity onion keys in what format? hex? base32? base64? something else?
that's not exactly problem, though, could be configurable and work..
but bigger issue is format of private keys.
tor uses expanded key format, but the most software I know uses either just seed or seed+pubkey formats.
heck, even current onionbalance for v3 addresses uses something looking like seed rather than expanded key. not totally certain this is true but it looked like that when I looked into it.
issue with that is that one cannot use any of the tricks which are implemented in current mkp224o, because seed expansion is SHA512 which isn't really reversible operation.
and that's what the most of ed25519 libraries use.
I'm not saying it couldn't be bruteforced, but it's much less fun and would need different code path than tor stuff, and would be much slower.
and also this stuff would probably need different UI..
there is a thing for just ed25519 keys: https://github.com/Yawning/horse25519
however, it uses only ref10 implementation which is slow.
but it COULD be improved upon.
other than ref10 implementations compatibility could be pulled out from mkp224o.
I think that uses expanded key format too tho.
but it's more generic base than mkp224o so I think that it'd be better starting point.
so yeah I think one would need to do different tool than mkp224o for this, rather than hacking it into mkp224o.
it could be inside mkp224o repo if reusing stuff from ed25519.h makes a lot of sense but it would be kinda separate tool anyway.
I'm not going to work on this myself because I'm sorta busy with other stuff and it's much less fun because of annoyances mentioned above.
still could maybe give some implementation tips if anyone would want to take this upon themselves.

I have a personal use-case for vanity monero keypairs, so I would be willing to work on this if I better understood the mp244o codebase. In another project, I came up with a way to abstract the filter for both monero and tor keypairs. It only required two "format-dependent" routines:
One routine to convert the filter into a "bitmask" and "filterbits". The bitmask is just a bunch of 1's that represent the bits of the key being filtered (5 bits per char for tor addresses), and the filterbits are the bits needed to recreate the filter in the address format (for tor, the inverse of crockford's base32). The keys would then be filtered by checking if ( PK && bitmask ) == filterbits.
The second routine would be to abstract the output formatting of the address from the keypair's bits. For example with tor this means formatting the tor service directory. With monero, this might be something like spitting it out in their custom base32, or working backwards to determine the seedphrase.

One routine to convert the filter into a "bitmask" and "filterbits". The bitmask is just a bunch of 1's that represent the bits of the key being filtered (5 bits per char for tor addresses), and the filterbits are the bits needed to recreate the filter in the address format (for tor, the inverse of crockford's base32). The keys would then be filtered by checking if ( PK && bitmask ) == filterbits.

we sorta have this.
the way filtering is done is currently configurable (fast uint32 vs uint64 prefix checks, or proper variable-length byte-per-byte masks), and works against raw calculated public keys without some of bits at the end & before SHA3 checksum is computed (these are computed later after keys pass filter tests).
i don't really know monero's public key format & its encoding, could you summarize that or point to relevant documentation?
so that i can know how much it's different from what we currently are doing.


Parse numbers from decimal, octal and hexadecimal number systems.

By default accepting all supported numerical systems. For specific arguments numerical system can be specified explicitly with additional wrapper class "NumericalBase. See README.md

Very cool - thanks!

🍺

Great. I could not make test cases to run on my system. Something is wrong with catch2 header file and bii seems outdated. But it’s worth adding test case if you can make it run.

On Dec 2, 2017, at 12:45 PM, Florian Rappl<EMAIL_ADDRESS>wrote:
Very cool - thanks!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

:)

On Dec 2, 2017, at 12:45 PM, Florian Rappl<EMAIL_ADDRESS>wrote:
🍺
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Yeah bii is unfortunately dead. We can, however, just switch to a fixed version of catch.


Proposal: Add KuzuDB to Nix packages

Hi, I really enjoy working with KuzuDB so far and have written a nix derivation to have kuzu_shell available in my development environment. It was no hassle at all and I think it would be great if KuzuDB could be added to Nix packages.
I could make a PR sometime in February to include KuzuDB in https://github.com/NixOS/nixpkgs. But then I'd become the maintainer there so I want to leave it to you.
Thanks for the amazing project.

Hi there, thanks a lot for your interest in Kùzu, and glad you're finding it useful. Would you happen to have a checklist of all the items that need to be completed to get it merged on the nixpkgs repo? If you were anyway planning on creating a PR, it might make more sense for you to post some sort of checklist here so that we can pick it up and submit a PR. Thanks!


use source.StatsReporter from knative.dev/eventing

Proposed Changes

:broom: we're shuffling the source.StatsReporter from knative.dev/pkg to knative.dev/eventing

Right now we setup an alias which will allow the transition to be done smoothly

Release Note

NONE

Docs

lint is fixed in #361
/lgtm
/approve


build: Enforce scalafix check in CI

Which issue does this PR close?
Closes #.
Rationale for this change
When developing #179 and CometRowToColumnar support, I noticed suspicious errors. It turns out that scalafix in the java-test action rewrites the scala source code and have conflict result with scalafmt(used by spotless). It's hard to debug such cases and quite annoying.
What changes are included in this PR?

enforce scalafix check in CI rather rewriting silently
apply scalafix:scalafix to the current codebase
refine format target in Makefile so that developers can format code by simply type: make format
add a section about code formatting before submit a PR

How are these changes tested?
Existing test and CI checks

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

Project coverage is 33.30%. Comparing base (93e81cc) to head (9b1472b).
Report is 1 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##               main     #203      +/-   ##
============================================
- Coverage     33.30%   33.30%   -0.01%
  Complexity      767      767
============================================
  Files           107      107
  Lines         35372    35375       +3
  Branches       7657     7658       +1
============================================
  Hits          11782    11782
- Misses        21144    21145       +1
- Partials       2446     2448       +2

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

Merged, thanks


Logo not loading in 'Multi-Column' example for footer

URL: https://infima.dev/docs/components/footer
The logo isn't loading and you guys may want to change the "2019" to something more dynamic in all three examples (Simple, Multi-Column and Dark) :)
PS: Logo also affects to the "Dark" section right below

Thanks for the report. The broken image looks worth fixing, but the copyright is by design, because we are only demonstrating static markup.
There are two problems here: (1) we shouldn't use src="img/fb-oss-dark.png" because that's relative to the current URL instead of relative to the root (2) the image simply doesn't exist.
@yangshun Do you have the image for fb-oss-dark.png? I only have the version meant to be used on dark backgrounds.

I don't think I ever saw a variant supposed to be displayed on light background
also received new Meta assets from Joel and there's no asset to be displayed on light background either
This one is likely the one we'll start using in the future:

FYI those are all the pngs I got from Joel:

(Also have SVG/AI)

Geez these images are legit making my browser lag...

Geez these images are legit making my browser lag...

Same here lol you guys should maybe investigate into that since those images shouldn't cause a browser to lag that much at all 🤣
btw I'm using Brave 1.38.111 Chromium: 101.0.4951.54 (official build) (64-bit)

Each of these images are ~2MB, and 29000px (!) wide, I'm not surprised
They'd better give SVGs directly...

I've collapsed the comment so we can take a breath

About fixing this issue, I will wait a while, because seems none of the other Facebook sites have changed yet (?), so I'm not sure which direction we are moving in

Alright. Thanks for taking care of that insane loading times, though quite hilarious


[SPARK-17159][STREAM] Significant speed up for running spark streaming against Object store.

What changes were proposed in this pull request?
Original work by Steve Loughran.
Based on #17745.
This is a minimal patch of changes to FileInputDStream to reduce File status requests when querying files. Each call to file status is 3+ http calls to object store. This patch eliminates the need for it, by using FileStatus objects.
This is a minor optimisation when working with filesystems, but significant when working with object stores.
How was this patch tested?
Tests included. Existing tests pass.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/2867/
Test PASSed.

Test build #95706 has started for PR 22339 at commit 2fba9af.

Test build #95706 has finished for PR 22339 at commit 2fba9af.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/95706/
Test PASSed.

Hi, @ScrapCodes . Could you do the followings?

Update the title to [SPARK-17159][SS]...
Remove Please review http://spark.apache.org/contributing.html .... from PR description
Share the numbers because the PR title has Significant speed up

Retest this please.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/3093/
Test PASSed.

Merged build finished. Test PASSed.

Test build #96047 has started for PR 22339 at commit 2fba9af.

Test build #96047 has finished for PR 22339 at commit 2fba9af.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/96047/
Test PASSed.

For numbers, while testing with object store having 50 files/dirs, without this patch it took 130 REST requests for 2 batches to complete and with this patch it took 56 rest requests. So number of rest calls are reduced, and this translates to speedup. How much speed up is dependent on number of files, but for the particular test, I have run, it was 2x.

Hi @srowen, would you like to take a look? Is there anything I can do, if this patch is missing something? I have tested it thoroughly against an object store.

Yeah I agree, I was saying I do think it will speed things up. If it's a non-trivial win it's worthwhile even if it isn't the last optimization here. Is there any downside to this?

no, no cost penalties. Slightly lower namenode load too. If you had many, many spark streaming clients scanning directories, HDFS ops teams would eventually get upset. This will postpone the day

Retest this please.

Test build #96843 has started for PR 22339 at commit 2fba9af.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/3616/
Test PASSed.

Test build #96843 has finished for PR 22339 at commit 2fba9af.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/96843/
Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/3648/
Test PASSed.

Test build #96886 has started for PR 22339 at commit dab9bf3.

Test build #96886 has finished for PR 22339 at commit dab9bf3.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/96886/
Test FAILed.

Merged build finished. Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/3649/
Test PASSed.

Test build #96887 has started for PR 22339 at commit d91c815.

Test build #96885 has finished for PR 22339 at commit 542872c.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/96885/
Test PASSed.

Test build #96887 has finished for PR 22339 at commit d91c815.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/96887/
Test PASSed.

Thank you @srowen and @steveloughran.


rancher proxy don't work as expected

Rancher versions:
rancher/rancher:stable
rancher/rancher-agent:v2.0.6
Infrastructure Stack versions:
healthcheck:
ipsec:
network-services:
scheduler:
kubernetes (if applicable): 1.10.5
Docker version: (docker version,docker info preferred)
1.13.1
Operating system and kernel: (cat /etc/os-release, uname -r preferred)
CentOS Linux release 7.5.1804 (Core)
Type/provider of hosts: (VirtualBox/Bare-metal/AWS/GCE/DO)
Bare-metal
Setup details: (single node rancher vs. HA rancher, internal DB vs. external DB)
docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -e http_proxy="http://my-proxy:8080" \
  -e https_proxy="http://my-proxy:8080" \
  -e no_proxy="localhost,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>/8,<IP_ADDRESS>/8" \
  rancher/rancher:stable

Environment Template: (Cattle/Kubernetes/Swarm/Mesos)
Kubernetes
Steps to Reproduce:
Create cluster -> add hosts -> create
Results:
Got those errors during provisioning.
2018/07/30 05:43:01 [INFO] cluster [c-lrt75] provisioning: [healthcheck] service [kube-apiserver] on host [<IP_ADDRESS>] is healthy
2018/07/30 05:43:34 [ERROR] cluster [c-lrt75] provisioning: Failed to apply the ServiceAccount needed for job execution: Post https://<IP_ADDRESS>:6443/apis/rbac.authorization.k8s.io/v1/clusterrolebindings: Forbidden
2018/07/30 05:45:17 [INFO] cluster [c-lrt75] provisioning: [authz] Creating rke-job-deployer ServiceAccount
2018/07/30 05:45:42 [ERROR] cluster [c-lrt75] provisioning: Failed to apply the ServiceAccount needed for job execution: Post https://<IP_ADDRESS>:6443/apis/rbac.authorization.k8s.io/v1/clusterrolebindings: Forbidden

If I don't set the proxy when I run rancher/rancher:stable, all works fine (catalog don't work because my servers are behind proxy).
https://rancher.com/docs/rancher/v2.x/en/installation/proxy-configuration/

The example below is based on a local network range of <IP_ADDRESS>/8

It seems that Go's http client don't support ip range based no_proxy.
https://golang.org/src/net/http/transport.go

Hi @Wing924
Can you try the following command with upper case HTTP_PROXY env, please?
docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -e HTTP_PROXY="http://<IP_ADDRESS>:3128" \
  -e HTTPS_PROXY="http://<IP_ADDRESS>:3128" \
  -e NO_PROXY="localhost,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>/8" \
  rancher/rancher:latest

Please see https://rancher.com/docs/rancher/v2.x/en/installation/proxy-configuration/

@loganhz It works! Thank you. Anyway, I expected both lower case and upper case work.


[Feature] Support logback configurable

Search before asking

[X] I had searched in the feature and found no similar feature requirement.

Description
Extract the logback configuration file into the conf file
Usage Scenario
No response
Related issues
No response
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

good job.


0.12.5 Release

@larshesel, @ioolkos ready to take off?

closes #81

closes #96

closes #95
closes #89
closes #80


Test precommit checks

No longer needed - just testing precommit checks

tide testing

No longer needed

Testing here as well -> [https://github.com/openstack-k8s-operators/test-operator/pull/154]

/hold

/lgtm

Looks like tide merged the change here -> https://github.com/openstack-k8s-operators/test-operator/pull/154

seems all good, closing this test PR


IPAM persistence deletes anything that's not a container ID on startup

This logic was added in 95cbc8940e4d1d7d2dc7ff0061ebdcad03f3e738, but without considering IDs like weave:expose which should not be deleted.
The http API does have a checkAlive flag which could be passed to the allocator and used later to avoid this.

Note that the weave script will do a 'reclaim' on these addresses under most circumstances, so this issue is more of a race - someone else could get in and allocate the address before the reclaim has finished.


proposal: Go 2: permit function assignment when parameters are assignable

In Go, it is valid to use the outputs of a function as inputs to another when there are the same number of outputs as inputs, and when each output's type is assignable to the type of the corresponding input (CASE 1):
package main

import (
	"fmt"
)

// alias for readability
type Any = interface{}

func Works(a, b Any) {
	fmt.Printf("got %T %T\n", a, b)
}

func Try() (float32, int) {
	return 1.4, 2
}

func main() {
	Works(Try())
}

Similarly, we can use the results of a function call to return from a function as long as both functions have the same number of outputs and the output of the called function is assignable to the corresponding output of the returning function (CASE 2):
package main

import (
	"fmt"
)

// alias for readability
type Any = interface{}

func Works() (Any, Any) {
	return Try()
}

func Try() (float32, int) {
	return 1.4, 2
}

func main() {
	a, b := Works()
	fmt.Printf("got %T %T\n", a, b)
}

However, it is not possible to do the following. It fails with cannot use Try (type func() (float32, int)) as type func() (interface {}, interface {}) in argument to Fails (CASE 3):
package main

import "fmt"

// alias for readability
type Any = interface{}

func Fails(try func() (Any, Any)) {
	fmt.Println(try())
}

func Try() (float32, int) {
	return 1.4, 2
}

func main() {
	Fails(Try)
}

I propose that the this third case be enabled in Go. Specifically, I propose we allow a function whose signature is func(/* ... */) (A0, A1, ...An) to be assignable to func(/* ... */) (B0, B1, ...Bn) where An is assignable to Bn for all n (and of course when the inputs are also compatible via the existing rules).
Because CASE 2 is valid, it seems like it would only be a matter of auto-generating a one-line wrapper function during the assignment. As an example, let's look at a working version of CASE 3:
package main

import "fmt"

// alias for readability
type Any = interface{}

func Fails(try func() (Any, Any)) {
	fmt.Println(try())
}

func Try() (float32, int) {
	return 1.4, 2
}

func main() {
        wrapped := func() (Any, Any) { return Try() }
	Fails(wrapped) // doesn't fail anymore
}

This would make it easier to maintain type safety in user code while still interfacing with libraries in terms of interfaces.

@mvdan If I'm reading this correctly, I think it is technically possible.  The function doesn't have many types, we're instead applying assignability conversions on the results.  The interesting aspect is that the outer function is variadic.  I think it could be done, it's just potentially confusing.

@ianlancetaylor I think you might have mis-understood the proposal. While accepting function returns in a variadic function call would also be interesting, this proposal is as follows:

Specifically, I propose we allow a function whose signature is func(/* same arguments */) (A0, A1, ...An) to be assignable to func(/* same arguments */) (B0, B1, ...Bn) where An is assignable to Bn for all n (and of course when the inputs are also compatible via the existing rules).

I think using ellipses in my original proposal was a confusing choice, so I updated the wording a bit above. It's about allowing assignment of a function with concrete returns to a type where the return values are specified by interfaces implemented by the return types of the function being assigned... if that makes sense.

Ah, sorry for misunderstanding.  In that case I agree with @mvdan: I'm not sure this is possible in general.

Agreed, that a func taking N arguments ought to be assignable to a type func(a1, a2... aN interface{}). And same for return values. That it doesn't work seems like an oversight, and not nec a Go2 feature.

@networkimprov I think you're experiencing the same misunderstanding that ian did, and I think that's my fault for being unclear.
Here's a (hopefully) better example:
var X func(int) (InterfaceType, error)

func Test(x int) (ConcreteType, error) { /* ... */ }

// currently invalid, but the proposal is to make this a valid assignment
X = Test

i.e. func(int) (Concrete, error) would be assignable to func(int) (Interface, error) as long as Concrete implements Interface

@sirkon I appreciate the thought, but I am familiar with IDEs for Go... I am less concerned with the writability of code, and more with the readability as well as the guarantees provided by being able to write my functions in terms of concrete types. @mvdan is right, the new generics proposal for Go2 does cover this need. Although I am confused why this would necessarily be a Go2 feature. As far as I can tell (which is admittedly limited), it would not prevent existing code from working as expected and it does not claim any new keywords. It might certainly be more complicated than I am imagining to implement after having looked through the compiler typecheck source code,  but it could perhaps be a special case when a function is the value being assigned/assigned to.

We're treating all language changes as Go 2 issues, backward compatible or not.

This seems related to https://golang.org/doc/faq#covariant_types .

I understood you, type T func(a1, a2... aN interface{}) is not variadic, it takes exactly N arguments, so any function taking N arguments should be assignable to a T.
I suggest adding your better example to the proposal blurb.
But a set of arguments (CASE 1&2) is not a type, whereas T is. And T does look rather generic :-)

@networkimprov no, that's not right. This has nothing to do with input parameters. I'm speaking specifically for output parameters.
If a function returns types (A, B), then the proposal is to make that assignable to a value expecting a function with return types (X, Y), provided A is assignable to X and B is assignable to Y, and of course provided the input parameters are the exact same.
@ianlancetaylor Makes sense regarding all proposed changes being go2, my misunderstanding.
I don't think this is quite covariant types since it's really not making a statement about type equivalence. I'm not suggesting that func() (A, B) should be considered the same type as func() (X, Y). Rather, that var x func() (X, Y) = func() (A, B) {/*...*/} be allowed without the incantation var x func() (X, Y) = func() (X, Y) { return (func() (A, B) {/*...*/})() } when the second form would be valid go code. Of course this would apply to pre-defined functions and not just closures like in that example, but for example interface signatures wouldn't care about this.

I'm not suggesting that func() (A, B) should be considered the same type as func() (X, Y). Rather, that var x func() (X, Y) = func() (A, B) {/*...*/} be allowed without the incantation var x func() (X, Y) = func() (X, Y) { return (func() (A, B) {/*...*/})() } when the second form would be valid go code.

Assignments in Go generally do not allocate, unless they are assignments to interface types. For that use-case, an explicit conversion seems more in line with the rest of the design of the language:
type F = func(int) (A, B)

var X F

[…]
	X = F(Test)  // Explicit conversion, but avoids boilerplate.
[…]

@bcmills I'm alright with that - explicit conversion seems like a reasonable implementation to me.

It's worth noting that if we are going to support implicit assignment for functions according to these guidelines, then we should support them for methods too.  For example
type T int
func (T) M(int) {}
type I interface {
    M(interface{})
}
// One would expect this to work if this proposal were adopted.
var x I = T(0)

And of course similarly we should be able to assign one interface type to another if the method parameters are assignment-compatible as described in this proposal.
(If we require an explicit conversion as @bcmills suggests, we could require the explicit conversion between interface types.)
This type system complexity is all designed to save people from writing one line wrapper functions.  The additional type and language complexity does not seem worth the benefit.
It may be interesting to consider that the wrapper function can be generated using generics as suggested in the current design draft.  It requires a separate wrapper function for each number of input parameters and number of result parameters, and the type arguments can not be inferred.  This would look something like the following.  It's a fair amount of boilerplate for a simple example like this, but presumably one would only be reaching for this ability when there were several similar functions.
// alias for readability
type Any = interface{}

func Fails(try func() (Any, Any)) {
	fmt.Println(try())
}

func Try() (float32, int) {
	return 1.4, 2
}

contract wrappable(t1 T1, t2 T2, t3 T3, t4 T4) {
     _  = T3(t1)
     _  = T4(t2)
}

func Wrapper(type T1, T2, T3, T4 wrappable)(f func() (T1, T2)) func() (T3, T4) {
    return func() (T3, T4) {
        r1, r2 := f()
        return T3(r1), T4(r2)
    }
}

func main() {
	Fails(Wrapper(float32, int, interface{}, interface{})(Try))
}

All in all the benefits of this proposal do not seem worth the additional language complexity.


blit is blueunderlined

We have written the needed data into your clipboard because it was too large to send. Please paste.
blit was my issue because it was blue underlined and it wouldn't let me run my program.
Please fix this bug,
thank you.

Thanks for the bug report, but unfortunately, we need some more information from you in order to triage this issue appropriately. Please follow instructions here to create a new bug with all the critical details we need for diagnosis.
Please include screenshots, logs from output > python. Please make sure that blit was installed in the environment you were using. Without logs or screenshots it is not possible to investigate issues.


If arguments are re-written before flask is loaded it sees the original arguments on windows python 2.7

Previously flask (v1.0.3) was passing sys.argv to  cli.main:
https://github.com/pallets/flask/blob/1.0.3/flask/cli.py#L889-L906
Now flask (v1.1.1) is not passing argv, to cli.main.
https://github.com/pallets/flask/blob/1.1.1/src/flask/cli.py#L965-L966
This causes it to always get args via get_os_args via click.
https://github.com/pallets/click/blob/7.0/click/core.py#L700-L704
Which is this issue in click https://github.com/pallets/click/issues/536
This basically breaks debugging (on windows with python 2.7), where the debugger re-writes sys.argv before click or flask is loaded. So, attempting to debug flask using ptvsd or pydevd results in the error message below.
Expected
>python -m ptvsd --host localhost --port 5692 -m flask run --no-debugger --no-reload --with-threads --port 5014
 * Serving Flask app "app"
 * Environment: development
 * Debug mode: on
 * Running on http://<IP_ADDRESS>:5014/ (Press CTRL+C to quit)

Actual
>python -m ptvsd --host localhost --port 5692 -m flask run --no-debugger --no-reload --with-threads --port 5014
Usage: python -m flask [OPTIONS] COMMAND [ARGS]...
Try "python -m flask --help" for help.

Error: no such option: --host

Environment

Python version: 2.7
Flask version: 1.1.1
Werkzeug version: N/A
Platform: Windows

Oops, now that I've figured out my debugger issue, it's different than the one you reported.

We can add args=sys.argv[1:] back in with a note about the Click issue so we can remove it when that's addressed.

Finally released 1.1.2 with this.


Stage Strike App: Make Stage Striking instance based

This has come up a few times when showcasing the stage strike technology for the tool and always got the question of whether or not 2 separate devices could be used to stage strike, which currently seems to be not possible. We should look to modify the stage strike tool to make it so we can have more than 1 device show and interact with the React app in sync, as if it were 2 players competing at a major across the table from each other with 2 tablets.

That would require the program itself to keep the state, which isn't all that hard tbh. It would sure be useful!

This is now a thing in the latest TSH versions!


WIP: [#119516287] Add tests for network MTU

Notice
Please don't merge straight away. I'd like to get a few opinions from the team about the code and whether we think:

this is something worth testing for future regressions
is it possible to automate this in the pipeline?

would we build and transfer the binary? how?
would we use an errand on a job that has Golang available?
how would we choose the VM it runs on?

is this worth merging before we have it automated in the pipeline?

What
Here's an overview. Please see the commits for more details:
Ginkgo suite for "run_from_vm"
Add a new test suite that will need to be run from a BOSH VM rather than a
Concourse or Diego container.
tests/run_from_vm: Requests of different sizes
We experienced a bug in CF on AWS whereby TPS was unable to query Doppler
with an Authorization header that contained a username of a specific
length.
This test reproduces the same behaviour by making HTTP or HTTPS requests
with increasingly large packet sizes near to the standard network MTU of
1500 bytes. It should prevent the same from happening again in the future
without us needing to debug the internal CF calls.
tests/run_from_vm: Check MTU of host
Test that the suite is being run from a host with a network interface
configured with an MTU of 9000~, because that is needed to exercise the bug
found by the other test in this suite.
How to review

You'll need Go, Godep, and Ginkgo installed locally.

Run the following to build the test binary:

➜  paas-cf git:(feature/119516287-mtu_test) ✗ export GOPATH=${GOPATH}:$(pwd)/tests
➜  paas-cf git:(feature/119516287-mtu_test) ✗ cd tests/src/run_from_vm
➜  run_from_vm git:(feature/119516287-mtu_test) ✗ godep restore
➜  run_from_vm git:(feature/119516287-mtu_test) ✗ ginkgo build
Compiling run_from_vm...
compiled run_from_vm.test
1. Transfer the binary to a VM such as `colocated_z1`. You might be to be creative about how you do this - I `scp`ed it to a personal VM and `wget`ed it back, but you could use SSH tunnels or S3.
1. Run the binary.
1. Confirm the host "MTU test" passes and the "request size" test fails.

## Who can review

Not @dcarley

Copying binaries onto the VMs feels a bit dirty. I wonder if this might be a good use case for the binary-buildpack - we could then run the MTU tests from within a garden container (assuming that the MTU of the container matches the MTU of it's parent VM - I don't have a deployed environment to check that on at the moment)

we could then run the MTU tests from within a garden container (assuming that the MTU of the container matches the MTU of it's parent VM - I don't have a deployed environment to check that on at the moment)

It doesn't, unfortunately. The virtual interface gets 1500.

NB: commit 88b5d1a would need to be omitted now that we've reduced the MTU of all hosts to 1500 in #301. Though I'm not 100% sure whether there's value in running this from hosts that don't have jumbo frames - whether that's ever likely to provoke a similar bug.

Although the tests are OK and nicely crafted, I doubt about the value of testing a such specific issue in a specific IaaS that is about to be fixed.
I think it is better to add a simpler test or monitoring that it checks that the solution (or workaround) is in place, in this case that the VMs will have the MTU configured properly to 1500. It would have associated the description.
Using bosh cli we could run something like: bosh vms | grep running | awk '{print $2}' | xargs -n 1 -I{} bosh ssh {} "ifconfig | grep encap:Ethernet -A 4  | sed -n 's/.*MTU:\([0-9]*\).*/\1/p'"

I think it is better to add a simpler test or monitoring that it checks that the solution (or workaround) is in place, in this case that the VMs will have the MTU configured properly to 1500. It would have associated the description.

I'm hoping that the workaround won't be in place long enough for that to matter as much.

Closing after a discussion with Henry and Piotr. I still think in principle that this would be worth testing, but it's not worth the complexity and time required to test it - which would involve transferring binaries or creating errand releases.


Add convenience methods for redirecting to another Razor Page without having to pass the full URL

e.g. RedirectToPage(pagePath: "Customers/Edit.cshtml", routeArgs: new { id = 1 })
Should be considered as part of #5921

@Eilon @rynowak pls triage and assign

3-Done?


Download button

Description
Changes proposed in this pull request:

Add download button in user preferences for downloading policies

Enabled policies and rules are downloaded in datree's Custom Rules format, so that they can either be re-uploaded in busola on another cluster or be used for validation using the datree cli

Add support for datree's Custom Rules format when loading rule sets
Fix duplicate enum values in Pod Security Standard rules

Related issue(s)
Enhancement for #2376

/retest


syngenta/pdt does not write a test for simple API with example

The following command fails to write any tests.
npx @syngenta-digital/pdt --collection-file openapi.postman_collection.json --doc-path openapi.yaml

The openapi v3 doc is from the prism-tutorial repo in step 2:
git@github.com:11sigma/prism-tutorial.git
openapi: 3.0.0
info:
  title: Flight Check-In Step 2
  version: '1.0'
servers:
  - url: 'http://localhost:3000'
paths:
  /check-in/passengers:
    get:
      summary: Your GET endpoint
      tags: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              examples:
                checked-in-passenger:
                  value:
                    barcodeData: s0m3numb3r5
                    checkedInStatus: CHECKED_IN
                    seatNumber: A3

Reproducer:
import this openapi document into postman which will create an api and a collection.  Export the collection to openapi.postman_collection.json
run the command for syngenta to create the schema validation tests.  Notice the command completes with no errors:
npx @syngenta-digital/pdt --collection-file openapi.postman_collection.json --doc-path openapi.yaml

Import the openapi.postman_collection.json file into postman and notice there are no tests created.
The following tests are what I would expect to see:
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
pm.test("Schema is valid", function() {
    const schema = {
        "type": "object",
        "properties": {
            "barcodeData": {"type": "string"},
            "checkedInStatus": {"type": "string"},
            "seatNumber": {"type": "string"}
        },
        "required": ["barcodeData", "checkedInStatus", "seatNumber"]
    }
    pm.response.to.have.jsonSchema(schema);
});

Thanks Paul, keep it up,  I don't believe that the postman/newman contract
testing is scalable without your tool.
On Fri, Oct 15, 2021 at 1:09 PM Paul Cruse III @.***>
wrote:

Closed #15
https://github.com/syngenta-digital/package-node-pdt/issues/15.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/syngenta-digital/package-node-pdt/issues/15#event-5471027926,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AU5IF6LPA3VQH7GUDRCVZOLUHBN4BANCNFSM5GAXMHCQ
.
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.


Failures for non-UTF-8 CSV files

(godmar writes):

what's your strategy of dealing with counter reports that are not UTF-8?
So far, for the random batch of JR1 reports I have, 195 parse ok with pycounter (with the patches in the gist). 328 fail to parse, the majority because the file is not UTF-8.
One strategy is to try to iconv the file before injection, which may work if the file's encoding is known.
pycounter right now seems to insist on valid UTF-8 for files ending in .csv.
What do you think the best strategy is?

UnicodeReader has support for specifying an encoding; adding an encoding argument to parse() and parse_separated() defaulting to utf-8 and passing it along is one option.
Possibly also use chardet to detect an encoding if the given encoding fails to parse (although I don't know how reliable it is at guessing the right encoding; maybe we could never just fall back to using replacement characters for things that won't parse, possibly issuing a warning)
Unless I'm missing something, COUNTER doesn't actually specify the encoding (SUSHI specifies UTF-8), so I mildly surprised I haven't been bitten by this one yet.

I took a second look. Only 41 of the remaining 265 failures are due to UnicodeDecodeErrors.
I don't expect there to be a great variety of character sets represented, really probably only ISO 8859-1 (assuming the file is not complete garbage) - perhaps we could try a 8859-1 decode fallback if utf-8 decode fails, on a field-by-field basis. If we change csvhelper like that, however, Python 3 will have to be rethought. I find it also unreasonable to expect that the user would know the encoding. chardet might be an option, I've never used it.
(I'm still looking at the other failures - many are due to Macintosh line ending (\r); conceivably we could open the file using 'rU' instead of 'rb' in Python 2.)

Yeah, https://gist.github.com/godmar/891749b267ab74d3268f makes all 41 of my decoding errors go away.

Hmm. The csv documentation says the file must be opened with the b flag on platforms where it matters, but the test suite seems to pass on Windows with the U flag instead, so... LGTM.

Ignore the 'U' part.
I've since learned that the .csv files I've been debugging with do not actually represent "real-world" files, but may or may not have been touched by humans (e.g., using Excel or Word on Windows or Mac).  So I feel much less comfortable about suggesting anything relevant to pycounter at this point :-(

(b4b8c46 takes a conservative approach of providing a way to specify the encoding you actually have; I'm taking a look at whether chardet is likely to be reliable enough to automatically guess the encoding)

Again, my apologies for confusing "real-world" JR1 with possibly tainted ones (e.g., those saved with Excel's "Save as .csv" feature that produces ANSI/ISO 8859-1/latin-1).
However, I am increasingly certain that some real-world files downloaded via vendor interface are, in fact, encoded in this way. (I've seen at least one example: Project Muse, which I know wasn't touched.)
To comment on your patch: I'm skeptical: it seems that specifying the encoding is less than useful, because of how the surrounding client side code would look. It would have to either know the encoding (which in practice isn't true (?)), or would have to catch the unicodedecode error and retry.
What are your thought on this: specify an optional "fallback_encoding" - if given, and if Unicode decoding fails, try decoding using the encoding whose value is specified.

Allowing a specified fallback_encoding (and defaulting it to latin-1, which can accept any bytes and possibly just do the wrong thing with them...) sounds attractive.

To address the risk of trying to decode what is essentially garbage, what if you left the fallback encoding default empty, but caught and reraised the UnicodeDecodeError, after printing a msg asking the user to consider a fallback encoding if they believe latin-1 is a sensible one? Might be overkill.

Maybe adding a warning when there's a fallback instead? I think in the vast majority of cases the file will actually be latin-1, or the user doesn't care that their titles are ugly since they're probably matching records on ISSN and care about the usage numbers more than the titles anyway.
(If you pass in a UTF-16 file, the decoding will work when it shouldn't, but things are going to fail fast anyway when there are no separators anywhere in the file)

(I added a warning in 5b0c2ea )


Play store images

[x] feature graphic
[x] app icon
[x] screenshots

There is "lorem ipsum" on the images 🙂

I'll do a separate PR with the updated header image for both platforms


Bugfix/home page type

 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.:x: srife sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


vim/default/javascript -- miscolour?

Noticed if/return statements for this example [ vim/default/javascript ] have foreground 130 and isn't conforming to selected scheme.

I have the same weird color 130 which always come up


Test: Dummy points make game.pbn: Four Heart basic 2/1 (Seat W, Bid 2)

@RalphLipe looks like this test somehow regressed recently. Can you take a look when you get the chance?

Failed Dummy points make game.pbn: Four Heart basic 2/1 (Seat W, Bid 2) [14 ms]
Error Message:
Assert.AreEqual failed. Expected:<4H>. Actual:<3H>.

2/1 game force changed the appropriate response from 4H to 3H for 2nd bid.  Changed test.  Now passing.

@RalphLipe thanks!


[Bug/Assistance] document on v0.2

It seems like we can't run the step by step installation and tests anymore since v0.2. For example, the requirements.txt doesn't cover the package needed by the code fschat and antropic. Any new document reference for this new version? And how can we build the docker image? thanks

@Longin-Yu

Really thanks for pointing this out! We have fixed this problem.

@Longin-Yu it seems like I also can't find the documentation that would include the docker image build python src/server/tasks/os_interaction/images.py build -c configs/tasks/os.yaml -r .  for v0.2. in addition, images.py is broken that needs a small fix to point out to useos-std or os-dev

In v0.2, the images.py file has been deprecated, and we recommend building the images directly. Another advantage of this approach is that it allows for easier bug localization in cases where issues arise due to network or environmental factors.


feat(statesync)!: replace discovery_time with max_discovery_time

if the node can't discover snapshots for 2 min
(statesync.max_discovery_time), switch to blocksync. Remove
statesync.discovery_time from the configuration. If
statesync.max_discovery_time is zero, the node will be retrying
indefinitely.
Closes https://github.com/cometbft/cometbft/issues/3878

PR checklist

[x] Tests written/updated
[x] Changelog entry added in .changelog (we use unclog to manage our changelog)
[x] Updated relevant documentation (docs/ or spec/) and code comments

I don't think statesync.discovery_time is necessary. The default 5 sec for retrying is good for most chains. Most of the timeouts like these are internal to CometBFT.

I think that the semantics of the configuration flags are different.
The original discovery_time is the minimum amount of time we wait for a good snapshot to be retrieved. Notice that we sleep for that time, except if set to 0. The point here is that we want to wait for long enough to select the best possible snapshot.
The new max_discovery_time is the maximum amount of time we wait for any snapshot, from what I understood. And we are still sleep for that amount of time, which does not make much sense to me. This means that in any circumstance, we wait for  max_discovery_time before attempting to install a snapshot.
Which is not a solution for the reported problem.

To prove my point, in the main branch:
cometbft/statesync $ go test
PASS
ok  	github.com/cometbft/cometbft/statesync	3.470s

While in this branch:
cometbft/statesync $ git switch 3878-statesync-max-discovery-tme
branch '3878-statesync-max-discovery-tme' set up to track 'origin/3878-statesync-max-discovery-tme'.
Switched to a new branch '3878-statesync-max-discovery-tme'
$ go test

I am still waiting for the output.

I don't think statesync.discovery_time is necessary. The default 5 sec for retrying is good for most chains. Most of the timeouts like these are internal to CometBFT.

You can set it to zero, which means take the first snapshot you find (no sleep).
You can be more conservative and tell state sync to wait for more than 5s in order to find a best snapshot.

In any case, if we create a max_discovery_time configuration, which is a good idea, we shouldn't sleep by that amount of time. We should only check if we still don't have a good snapshot after that duration.

I think that the semantics of the configuration flags are different.
The original discovery_time is the minimum amount of time we wait for a good snapshot to be retrieved. Notice that we sleep for that time, except if set to 0. The point here is that we want to wait for long enough to select the best possible snapshot.
The new max_discovery_time is the maximum amount of time we wait for any snapshot, from what I understood. And we are still sleep for that amount of time, which does not make much sense to me. This means that in any circumstance, we wait for max_discovery_time before attempting to install a snapshot.
Which is not a solution for the reported problem.

I don't think that's accurate.
We are still waiting for discovery_time to select the best possible snapshot. I merely removed it from the config.
The max_discovery_time, which should probably be named max_discovery_time_before_switching_to_blocksync, but it's a bit long, is the maximum time to discover any snapshot before switching to block sync. Note that before, we'd stay in limbo if no snapshots were discovered. Now, after max_discovery_time, we will switch to block sync.

I assume that this test should take 2 minutes, the maximum configured time:
$ go test -v -run TestSyncer_SyncAny_noSnapshots
=== RUN   TestSyncer_SyncAny_noSnapshots
^Csignal: interrupt
FAIL	github.com/cometbft/cometbft/statesync	236.409s

I think that this is not what is happening here.

r; echo -e 'go test ./statesync/...'; go test ./statesync/...
go test ./statesync/...
?       github.com/cometbft/cometbft/statesync/mocks    [no test files]
ok      github.com/cometbft/cometbft/statesync  3.664s

I overlooked the duration of the tests. @cason thanks for pointing that out 🙏 🥇

I've also did a quick test on a local setup with a max_discovery_time of 30 seconds and it switches to blocksync
I[2024-10-25|19:59:43.213] Starting state sync                          module=statesync
I[2024-10-25|19:59:43.213] Downloading trusted light block using options module=light
I[2024-10-25|19:59:43.215] service start                                module=p2p peer=539ffc12a0ac78970dab31ae8cdcfdd4285b2162@<IP_ADDRESS>:26656 msg="Starting Peer service" impl="Peer{MConn{<IP_ADDRESS>:26656} 539ffc12a0ac78970dab31ae8cdcfdd4285b2162 out}"
I[2024-10-25|19:59:43.215] service start                                module=p2p peer=539ffc12a0ac78970dab31ae8cdcfdd4285b2162@<IP_ADDRESS>:26656 msg="Starting MConnection service" impl=MConn{<IP_ADDRESS>:26656}
I[2024-10-25|19:59:43.227] service start                                module=state msg="Starting Pruner service" impl=Pruner
I[2024-10-25|19:59:43.227] Started node                                 module=main nodeInfo="{ProtocolVersion:{P2P:9 Block:11 App:0} DefaultNodeID:0a9c99096b50a6d72a24d5aa5286d3f7022b3555 ListenAddr:tcp://<IP_ADDRESS>:26656 Network:gen-group00-0002 Version:1.0.0-dev Channels:40202122233038606100 Moniker:validator03 Other:{TxIndex:on RPCAddress:tcp://<IP_ADDRESS>:26657}}"
I[2024-10-25|19:59:43.227] Discovering snapshots for 5s                 module=statesync
I[2024-10-25|19:59:43.227] Started pruning blocks                       module=state interval=10s
I[2024-10-25|19:59:48.231] sync any                                     module=statesync msg="Discovering snapshots for 5s"
I[2024-10-25|19:59:48.323] service start                                module=p2p peer=4fe295e4cfad69f1247ad85975c6fd87757195db@<IP_ADDRESS>:45776 msg="Starting Peer service" impl="Peer{MConn{<IP_ADDRESS>:45776} 4fe295e4cfad69f1247ad85975c6fd87757195db in}"
I[2024-10-25|19:59:48.323] service start                                module=p2p peer=4fe295e4cfad69f1247ad85975c6fd87757195db@<IP_ADDRESS>:45776 msg="Starting MConnection service" impl=MConn{<IP_ADDRESS>:45776}
I[2024-10-25|19:59:53.232] sync any                                     module=statesync msg="Discovering snapshots for 5s"
I[2024-10-25|19:59:58.233] sync any                                     module=statesync msg="Discovering snapshots for 5s"
I[2024-10-25|20:00:03.235] sync any                                     module=statesync msg="Discovering snapshots for 5s"
I[2024-10-25|20:00:08.236] sync any                                     module=statesync msg="Discovering snapshots for 5s"
I[2024-10-25|20:00:13.214] Ensure peers                                 module=pex numOutPeers=1 numInPeers=1 numDialing=0 numToDial=9
I[2024-10-25|20:00:13.215] We need more addresses. Sending pexRequest to random peer module=pex peer="Peer{MConn{<IP_ADDRESS>:26656} 539ffc12a0ac78970dab31ae8cdcfdd4285b2162 out}"
I[2024-10-25|20:00:13.215] No addresses to dial. Falling back to seeds  module=pex
E[2024-10-25|20:00:13.236] State sync failed                            module=statesync err="no suitable snapshots found"
I[2024-10-25|20:00:13.236] service start                                module=blocksync msg="Starting BlockPool service" impl=BlockPool```


[RESTEASY-1687] Adding small section on Spring Boot starter

@fabiocarvalho777 FYI . Any comment, let me know.

It looks good to me, thanks!!
I just made one small comment, but that is in the WildFly section.

@fabiocarvalho777 ok, I've merged this. I'm not seeing your comment related to WildFly, though.


Cannot submit form to 3rd party host url when using useSubmit

What version of Remix are you using?
1.7.0
Steps to Reproduce
If my host is example.com and I want to submit a form to another host, let's say foobar.com and I write the following code:
const formData = new FormData(event.currentTarget);
submit(formData, {
    action: "https://foobar.com/v1/order",
    method: "post",
});

Expected Behavior
The form should be submitted to foobar.com
Actual Behavior
Form is submitting to the same host, i.e example.com
If I use the browser default form: <form action ="https://foobar.com/v1/order" method="post"></form> it works. But I need to do fetch some additional data before submitting, so I want to use useSubmit.

I think this is where it happens:
https://github.com/remix-run/remix/blob/3832d457b34d7a62633bf86a2606971263e710cb/packages/remix-react/components.tsx#L1256

Also, note that if your external API returns data, it must be in JSON format, as that's what Remix expects. And if it returns a redirect response, it will most likely trigger a full page refresh. Remix sends a special status/header for redirects initiated by client-side fetch.

Did this get implemented? I'm using remix version 1.10 and if I try to use an external URL as the action of a form it appends the URL to the routes URL... eg.  action="https://foobar.com/v1/order" renders as action="myCurrentInternalURL/https://foobar.com/v1/order"

Same here, I had to use the fetch webapi to handle this case :(

This feels more like a feature request than a bug as the Remix hooks are intended to work against known Remix endpoints.  They do things such as append ?_data and ?index, as well as look for responses with specific headers, etc.  I think your best bet here is to just use the native form submit event and make your own fetch call.

@brophdawg11 If the only way is to use a fetch call, then how will the page work if JavaScript is disabled?

But I need to do fetch some additional data before submitting, so I want to use useSubmit.

This also will not work with javascript disabled 😉 . Maybe you want to just use <form>?

Oops, my bad, I totally missed that 😅. Thanks for mentioning it.

Kinda seems weird that you guys just wont add this and override actions. Any serious folks have separate backend url. Not sure why you guys are going out of your way to patch the origin and then not even provide a way out.


How to setup this with Home Assistant Docker?

Hi,
I'm using the latest version of Home Assistant via Docker. I have it setup so that it will update everytime there is a new release via Watchtower. A new Docker container is created, but all configs still work as they are kept locally.
Is it possible to install this on a Docker container, without loosing it everytime Home Assistant is updated and a new container is created?
Thank you!

CustomUI files are kept in the config directory, so if the update doesn't touch it - CustomUI should be safe too.

Since there seems to be no AIs for me / code issues - closing this issue.

But what about the paths, maybe you could add some more info in the install doc for docker?


Is ROCK-PCA still supported ?

Your problem
I work with a non-linear, stationary 3D dataset. I am interested in extracting its main spatio-temporal  modes to corroborate data analysis and showcase the benefits of using a mode-extraction method, in order to guide and streamline data analysis for future use.
I chose ROCK-PCA because it seemed to be the most adapted to my dataset (surface velocities of ice).
I implemented a version of ROCK-PCA adapted from [https://github.com/DiegoBueso/ROCK-PCA/tree/master/python_code] which gave me an output I could analyze for my research, and I coupled it with a short notebook using xeofs to compare several EOF-based methods (including out-of-package ROCK-PCA).
I thought ROCK-PCA was implemented in xeofs but the excerpts of code I found ([(https://github.com/xarray-contrib/xeofs/commit/0ba0660fa4f2396dc537888c80be5352dedaebc4)]) seem to not exist anymore ? I also saw the reference to its original paper in the README, and in the xeofs paper it says that you were working on it.
Is the ROCK-PCA method implemented in xeofs ?
Declaration

[x] I have consulted the documentation but could not find a solution.

Desktop (please complete the following information):

OS: [e.g. Ubuntu]
xeofs version [e.g. 3.0.0]

I initially tried to implement ROCK-PCA and included it (I think prior to version 2). However, I noticed the results seemed somehow off in that I couldn’t quite reconstruct the original data from the decomposition. Plus, I found the Promax rotation part pretty tricky to wrap my head around. So, I set it aside and haven’t had the chance to revisit it. To avoid sharing code that might be incorrect, I decided to temporarily remove it from the API. This isn’t to say the method itself is flawed, just that my implementation didn’t work out. If you’ve managed to get ROCK-PCA up and running, I’d love to see it integrated here! I will try to tackle it myself again when I have more time, but that won't be within the rest of this year unfortunately.

I kind of took it at face-value because the output it was giving me made physical sense and although the ranking of modes was different than REOF and CEOF, it was still looking fairly similar.  But I haven't dived into the rotation.. Thanks for your answer though ! I hope to see it one day, it's super promising !