[$500] Bank account - Error flickers when trying to add bank account after deleting previous one

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

Version Number: v1.4.44-0
Reproducible in staging?: Y
Reproducible in production?: N
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Logs: https://stackoverflow.com/c/expensify/questions/4856
Issue reported by: Applause-Internal Team
Action Performed:
Pre-requisite: the user must be logged in and have created a workspace.

Go to Workspace > Bank account.
Using Connect online with Plaid, select Chase and complete the add BA flow.
After BA has been added, disconnect the BA.
Again, using Connect online with Plaid, select Regions and try to add the BA.
On the account confirmation screen, click on "Confirm" button.
Verify an error flickers and the user can not proceed with the flow.
Exit the add BA modal.
Go to Workspace > Bank account.
Verify the new BA appears as connected.

Expected Result:
There should be any issue on the flow when trying to add the new BA.
Actual Result:
When trying to confirm the bank account, an error flickers and the user is not able to proceed with the flow. Also, if the user returns to the add BA modal, the new account seems to be connected.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
https://github.com/Expensify/App/assets/115492554/b1bc9943-0468-4c94-be78-f6e14574b56b

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

Upwork Job URL: https://www.upwork.com/jobs/~01bcfec6134c6b50b2
Upwork Job ID:<PHONE_NUMBER>527470592
Last Price Increase: 2024-02-27

hm, that's very strange.
Also, in the first flow, you connected through plaid but you had to fill everything again.

We just reviewed the bank account flow recently on https://github.com/Expensify/App/pull/34498

Also @izarutskaya can you please confirm this is not happening in production?

I wonder if the whole flow is failing because of the issue with the Radiobutton described on #37290

@danieldoglas let me check

let me check

@danieldoglas I tested ZhenjaHorbach's proposal, and the issue with RadioButtons disappears when we "modify the useEffect to only set a new value if it exists." However, the issue with the "add bank account flow" persists.

Please review the response when calling `ConnectBankAccountWithPlaid` in step 5:

Is there a missing _ separating reimbursementAccount from the id?
Continuing to press Confirm results in the observed issue:

Consecutive responses to `ConnectBankAccountWithPlaid` call in step 5:

I will further investigate. Additionally, along with the mentioned issue, I suspect it could be related to how we manage/clean Onyx. If, for some reason, BA registration is unsuccessful and there's an opportunity to redo it, calling RestartBankAccountSetup also exhibits the same issue.

Is there a missing _ separating reimbursementAccount from the id?

I think we should have added, but looking into the backend and the app code, it was prepared to not have the _ so we should be all good here.
Can you also send me the requestIDs for those responses? That way I can check the logs on my side.

I think we should have added, but looking into the backend and the app code, it was prepared to not have the _ so we should be all good here.

humm ... I see

Can you also send me the requestIDs

Yes :D Give me a moment...

I think we should have added, but looking into the backend and the app code, it was prepared to not have the _ so we should be all good here.

humm ... I see

Can you also send me the requestIDs

First/Successful `ConnectBankAccountWithPlaid` response:

{
    "onyxData": [
        {
            "onyxMethod": "merge",
            "key": "reimbursementAccount",
            "value": {
                "achData": {
                    "routingNumber": "011401533",
                    "accountNumber": "XXXXXXXXXXXX1111",
                    "addressName": "XXXXXXXXXXXX1111",
                    "isSavings": true,
                    "bankAccountID": 3953947,
                    "created": "2024-02-27 23:51:20",
                    "state": "SETUP",
                    "bankName": "Regions Bank",
                    "country": "US",
                    "currency": "USD",
                    "enableCardAfterVerified": true,
                    "fieldsType": "local",
                    "hasFullSSN": false,
                    "mask": "1111",
                    "plaidAccountID": "oVG1eVgQgLfa5ZbGavVRiMm8qwEJk6foLDkdr",
                    "policyID": "C2D04064D2525A53",
                    "setupType": "plaid",
                    "verifications": [],
                    "currentStep": "RequestorStep"
                },
                "errors": null
            }
        },
        {
            "onyxMethod": "merge",
            "key": "reimbursementAccountC2D04064D2525A53",
            "value": {
                "achData": {
                    "routingNumber": "011401533",
                    "accountNumber": "XXXXXXXXXXXX1111",
                    "addressName": "XXXXXXXXXXXX1111",
                    "isSavings": true,
                    "bankAccountID": 3953947,
                    "created": "2024-02-27 23:51:20",
                    "state": "SETUP",
                    "bankName": "Regions Bank",
                    "country": "US",
                    "currency": "USD",
                    "enableCardAfterVerified": true,
                    "fieldsType": "local",
                    "hasFullSSN": false,
                    "mask": "1111",
                    "plaidAccountID": "oVG1eVgQgLfa5ZbGavVRiMm8qwEJk6foLDkdr",
                    "policyID": "C2D04064D2525A53",
                    "setupType": "plaid",
                    "verifications": [],
                    "currentStep": "RequestorStep"
                },
                "errors": null
            }
        },
        {
            "onyxMethod": "set",
            "key": "onfidoToken",
            "value": ""
        },
        {
            "key": "reimbursementAccount",
            "onyxMethod": "merge",
            "value": {
                "achData": {
                    "accountNumber": "XXXXXXXXXXXX1111",
                    "addressName": "XXXXXXXXXXXX1111",
                    "bankAccountID": 3953947,
                    "bankName": "Regions Bank",
                    "country": "US",
                    "created": "2024-02-27 23:51:20",
                    "currency": "USD",
                    "enableCardAfterVerified": true,
                    "fieldsType": "local",
                    "hasFullSSN": false,
                    "isSavings": true,
                    "mask": "1111",
                    "plaidAccountID": "oVG1eVgQgLfa5ZbGavVRiMm8qwEJk6foLDkdr",
                    "policyID": "C2D04064D2525A53",
                    "routingNumber": "011401533",
                    "setupType": "plaid",
                    "state": "SETUP",
                    "verifications": []
                }
            }
        },
        {
            "key": "reimbursementAccountC2D04064D2525A53",
            "onyxMethod": "merge",
            "value": {
                "achData": {
                    "accountNumber": "XXXXXXXXXXXX1111",
                    "addressName": "XXXXXXXXXXXX1111",
                    "bankAccountID": 3953947,
                    "bankName": "Regions Bank",
                    "country": "US",
                    "created": "2024-02-27 23:51:20",
                    "currency": "USD",
                    "enableCardAfterVerified": true,
                    "fieldsType": "local",
                    "hasFullSSN": false,
                    "isSavings": true,
                    "mask": "1111",
                    "plaidAccountID": "oVG1eVgQgLfa5ZbGavVRiMm8qwEJk6foLDkdr",
                    "policyID": "C2D04064D2525A53",
                    "routingNumber": "011401533",
                    "setupType": "plaid",
                    "state": "SETUP",
                    "verifications": []
                }
            }
        }
    ],
    "jsonCode": 200,
    "requestID": "85c455d219243553-CNF",
    "previousUpdateID": 138593653,
    "lastUpdateID": 138757556
}

`RestartBankAccountSetup`

{
    "jsonCode": 200,
    "requestID": "85c47d65f8a83559-CNF",
    "onyxData": [
        {
            "key": "report_8080116427258102",
            "onyxMethod": "merge",
            "value": {
                "lastReadTime": "2024-02-28 00:18:22.037"
            }
        },
        {
            "key": "report_8080116427258102",
            "onyxMethod": "merge",
            "value": {
                "lastActorAccountID": 16460731,
                "lastMentionedTime": null,
                "lastMessageText": "updated the default business bank account to \"None\"",
                "lastReadTime": "2024-02-28 00:18:22.037",
                "lastVisibleActionCreated": "2024-02-28 00:18:22.037",
                "maxSequenceNumber": null,
                "reportID": "8080116427258102"
            }
        },
        {
            "key": "reportActions_8080116427258102",
            "onyxMethod": "merge",
            "shouldNotify": true,
            "value": {
                "1265675800217017416": {
                    "actionName": "POLICYCHANGELOG_UPDATE_ACH_ACCOUNT",
                    "actorAccountID": 16460731,
                    "automatic": false,
                    "avatar": "https:\/\/d2k5nsl2zxldvw.cloudfront.net\/images\/avatars\/default-avatar_20.png",
                    "created": "2024-02-28 00:18:22.037",
                    "isAttachment": false,
                    "lastModified": "2024-02-28 00:18:22.037",
                    "message": [
                        {
                            "html": "updated the default business bank account to \"None\"",
                            "isDeletedParentAction": false,
                            "isEdited": false,
                            "reactions": [],
                            "text": "updated the default business bank account to \"None\"",
                            "type": "COMMENT",
                            "whisperedTo": []
                        }
                    ],
                    "originalMessage": {
                        "bankAccountName": "",
                        "lastModified": "2024-02-28 00:18:22.037",
                        "maskedBankAccountNumber": ""
                    },
                    "person": [
                        {
                            "style": "strong",
                            "text": "Bruno Rocha",
                            "type": "TEXT"
                        }
                    ],
                    "previousReportActionID": "3512067784918861444",
                    "reportActionID": "1265675800217017416",
                    "reportActionTimestamp":<PHONE_NUMBER>037,
                    "sequenceNumber": null,
                    "shouldShow": true,
                    "timestamp":<PHONE_NUMBER>,
                    "whisperedToAccountIDs": []
                }
            }
        }
    ],
    "previousUpdateID": 138790143,
    "lastUpdateID": 138790448
}

First after restart `ConnectBankAccountWithPlaid` response:

{
    "onyxData": [
        {
            "onyxMethod": "merge",
            "key": "reimbursementAccount",
            "value": {
                "achData": {
                    "routingNumber": "011401533",
                    "accountNumber": "XXXXXXXXXXXX1111",
                    "addressName": "Alberta Bobbeth Charleson",
                    "isSavings": true,
                    "bankAccountID": 3953947,
                    "created": "2024-02-27 23:51:20",
                    "state": "VERIFYING",
                    "acceptTerms": true,
                    "addressCity": "Anchorage",
                    "addressState": "AK",
                    "addressStreet": "123 Place Street",
                    "addressZipCode": "99504",
                    "bankName": "Regions Bank",
                    "beneficialOwners": [],
                    "certifyTrueInformation": true,
                    "companyName": "Alberta Bobbeth Charleson",
                    "companyPhone": "4404521379",
                    "companyTaxID": "123456789",
                    "country": "US",
                    "currency": "USD",
                    "dateSigned": "2024-02-28 00:17:55",
                    "dob": "2006-02-02",
                    "enableCardAfterVerified": true,
                    "fieldsType": "local",
                    "firstName": "Alberta",
                    "hasFullSSN": true,
                    "hasNoConnectionToCannabis": true,
                    "incorporationDate": "2024-02-01",
                    "incorporationState": "AK",
                    "incorporationType": "LLC",
                    "industryCode": "623110",
                    "isAuthorizedToUseBankAccount": true,
                    "isControllingOfficer": false,
                    "isOnfidoSetupComplete": true,
                    "lastName": "Charleson",
                    "lastUpdate": "2024-02-28 00:18:22",
                    "mask": "1111",
                    "ownsMoreThan25Percent": false,
                    "plaidAccountID": "zPRaBWlPPRtk77rEBnqVtPmAzDGaLBtlNEVE7",
                    "previousState": 2,
                    "requestorAddressCity": "Anchorage",
                    "requestorAddressState": "AK",
                    "requestorAddressStreet": "123 Place Street",
                    "requestorAddressZipCode": "99504",
                    "setupType": "plaid",
                    "ssnLast4": "3333",
                    "verifications": {
                        "blackListed": {
                            "isBankAccountCopy": false,
                            "isBlackListedAddress": false,
                            "isBlackListedName": false,
                            "isBlackListedUser": false,
                            "isFlagged": false
                        }
                    },
                    "website": "https:\/\/g.com",
                    "currentStep": "RequestorStep"
                },
                "errors": null
            }
        },
        {
            "onyxMethod": "merge",
            "key": "reimbursementAccountC2D04064D2525A53",
            "value": {
                "achData": {
                    "routingNumber": "011401533",
                    "accountNumber": "XXXXXXXXXXXX1111",
                    "addressName": "Alberta Bobbeth Charleson",
                    "isSavings": true,
                    "bankAccountID": 3953947,
                    "created": "2024-02-27 23:51:20",
                    "state": "VERIFYING",
                    "acceptTerms": true,
                    "addressCity": "Anchorage",
                    "addressState": "AK",
                    "addressStreet": "123 Place Street",
                    "addressZipCode": "99504",
                    "bankName": "Regions Bank",
                    "beneficialOwners": [],
                    "certifyTrueInformation": true,
                    "companyName": "Alberta Bobbeth Charleson",
                    "companyPhone": "4404521379",
                    "companyTaxID": "123456789",
                    "country": "US",
                    "currency": "USD",
                    "dateSigned": "2024-02-28 00:17:55",
                    "dob": "2006-02-02",
                    "enableCardAfterVerified": true,
                    "fieldsType": "local",
                    "firstName": "Alberta",
                    "hasFullSSN": true,
                    "hasNoConnectionToCannabis": true,
                    "incorporationDate": "2024-02-01",
                    "incorporationState": "AK",
                    "incorporationType": "LLC",
                    "industryCode": "623110",
                    "isAuthorizedToUseBankAccount": true,
                    "isControllingOfficer": false,
                    "isOnfidoSetupComplete": true,
                    "lastName": "Charleson",
                    "lastUpdate": "2024-02-28 00:18:22",
                    "mask": "1111",
                    "ownsMoreThan25Percent": false,
                    "plaidAccountID": "zPRaBWlPPRtk77rEBnqVtPmAzDGaLBtlNEVE7",
                    "previousState": 2,
                    "requestorAddressCity": "Anchorage",
                    "requestorAddressState": "AK",
                    "requestorAddressStreet": "123 Place Street",
                    "requestorAddressZipCode": "99504",
                    "setupType": "plaid",
                    "ssnLast4": "3333",
                    "verifications": {
                        "blackListed": {
                            "isBankAccountCopy": false,
                            "isBlackListedAddress": false,
                            "isBlackListedName": false,
                            "isBlackListedUser": false,
                            "isFlagged": false
                        }
                    },
                    "website": "https:\/\/g.com",
                    "currentStep": "RequestorStep"
                },
                "errors": null
            }
        },
        {
            "onyxMethod": "set",
            "key": "onfidoToken",
            "value": ""
        },
        {
            "key": "reimbursementAccount",
            "onyxMethod": "set",
            "value": {
                "acceptTerms": true,
                "accountNumber": "XXXXXXXXXXXX1111",
                "addressCity": "Anchorage",
                "addressName": "Alberta Bobbeth Charleson",
                "addressState": "AK",
                "addressStreet": "123 Place Street",
                "addressZipCode": "99504",
                "bankAccountID": 3953947,
                "bankName": "Regions Bank",
                "beneficialOwners": [],
                "certifyTrueInformation": true,
                "companyName": "Alberta Bobbeth Charleson",
                "companyPhone": "4404521379",
                "companyTaxID": "123456789",
                "country": "US",
                "created": "2024-02-27 23:51:20",
                "currency": "USD",
                "currentStep": "RequestorStep",
                "dateSigned": "2024-02-28 00:17:55",
                "dob": "2006-02-02",
                "enableCardAfterVerified": true,
                "fieldsType": "local",
                "firstName": "Alberta",
                "hasFullSSN": true,
                "hasNoConnectionToCannabis": true,
                "incorporationDate": "2024-02-01",
                "incorporationState": "AK",
                "incorporationType": "LLC",
                "industryCode": "623110",
                "isAuthorizedToUseBankAccount": true,
                "isControllingOfficer": false,
                "isOnfidoSetupComplete": true,
                "isSavings": true,
                "lastName": "Charleson",
                "lastUpdate": "2024-02-28 00:18:22",
                "mask": "1111",
                "ownsMoreThan25Percent": false,
                "plaidAccountID": "vNKzgbgrPdF3Llx1D6NkFz4g5LplQJCqDgvRG",
                "policyID": "C2D04064D2525A53",
                "previousState": 2,
                "requestorAddressCity": "Anchorage",
                "requestorAddressState": "AK",
                "requestorAddressStreet": "123 Place Street",
                "requestorAddressZipCode": "99504",
                "routingNumber": "011401533",
                "setupType": "plaid",
                "ssnLast4": "3333",
                "state": "VERIFYING",
                "verifications": {
                    "blackListed": {
                        "isBankAccountCopy": false,
                        "isBlackListedAddress": false,
                        "isBlackListedName": false,
                        "isBlackListedUser": false,
                        "isFlagged": false
                    }
                },
                "website": "https:\/\/g.com"
            }
        },
        {
            "key": "reimbursementAccountC2D04064D2525A53",
            "onyxMethod": "set",
            "value": {
                "acceptTerms": true,
                "accountNumber": "XXXXXXXXXXXX1111",
                "addressCity": "Anchorage",
                "addressName": "Alberta Bobbeth Charleson",
                "addressState": "AK",
                "addressStreet": "123 Place Street",
                "addressZipCode": "99504",
                "bankAccountID": 3953947,
                "bankName": "Regions Bank",
                "beneficialOwners": [],
                "certifyTrueInformation": true,
                "companyName": "Alberta Bobbeth Charleson",
                "companyPhone": "4404521379",
                "companyTaxID": "123456789",
                "country": "US",
                "created": "2024-02-27 23:51:20",
                "currency": "USD",
                "currentStep": "RequestorStep",
                "dateSigned": "2024-02-28 00:17:55",
                "dob": "2006-02-02",
                "enableCardAfterVerified": true,
                "fieldsType": "local",
                "firstName": "Alberta",
                "hasFullSSN": true,
                "hasNoConnectionToCannabis": true,
                "incorporationDate": "2024-02-01",
                "incorporationState": "AK",
                "incorporationType": "LLC",
                "industryCode": "623110",
                "isAuthorizedToUseBankAccount": true,
                "isControllingOfficer": false,
                "isOnfidoSetupComplete": true,
                "isSavings": true,
                "lastName": "Charleson",
                "lastUpdate": "2024-02-28 00:18:22",
                "mask": "1111",
                "ownsMoreThan25Percent": false,
                "plaidAccountID": "vNKzgbgrPdF3Llx1D6NkFz4g5LplQJCqDgvRG",
                "policyID": "C2D04064D2525A53",
                "previousState": 2,
                "requestorAddressCity": "Anchorage",
                "requestorAddressState": "AK",
                "requestorAddressStreet": "123 Place Street",
                "requestorAddressZipCode": "99504",
                "routingNumber": "011401533",
                "setupType": "plaid",
                "ssnLast4": "3333",
                "state": "VERIFYING",
                "verifications": {
                    "blackListed": {
                        "isBankAccountCopy": false,
                        "isBlackListedAddress": false,
                        "isBlackListedName": false,
                        "isBlackListedUser": false,
                        "isFlagged": false
                    }
                },
                "website": "https:\/\/g.com"
            }
        },
        {
            "key": "reimbursementAccountDraft",
            "onyxMethod": "set",
            "value": null
        },
        {
            "key": "reimbursementAccountC2D04064D2525A53Draft",
            "onyxMethod": "set",
            "value": null
        },
        {
            "key": "onfidoApplicantID",
            "onyxMethod": "set",
            "value": null
        },
        {
            "key": "onfidoToken",
            "onyxMethod": "set",
            "value": null
        },
        {
            "key": "plaidData",
            "onyxMethod": "set",
            "value": null
        },
        {
            "key": "plaidLinkToken",
            "onyxMethod": "set",
            "value": null
        },
        {
            "key": "reimbursementAccount",
            "onyxMethod": "merge",
            "value": {
                "achData": {
                    "acceptTerms": true,
                    "accountNumber": "XXXXXXXXXXXX1111",
                    "addressCity": "Anchorage",
                    "addressName": "Alberta Bobbeth Charleson",
                    "addressState": "AK",
                    "addressStreet": "123 Place Street",
                    "addressZipCode": "99504",
                    "bankAccountID": 3953947,
                    "bankName": "Regions Bank",
                    "beneficialOwners": [],
                    "certifyTrueInformation": true,
                    "companyName": "Alberta Bobbeth Charleson",
                    "companyPhone": "4404521379",
                    "companyTaxID": "123456789",
                    "country": "US",
                    "created": "2024-02-27 23:51:20",
                    "currency": "USD",
                    "dateSigned": "2024-02-28 00:17:55",
                    "dob": "2006-02-02",
                    "enableCardAfterVerified": true,
                    "fieldsType": "local",
                    "firstName": "Alberta",
                    "hasFullSSN": true,
                    "hasNoConnectionToCannabis": true,
                    "incorporationDate": "2024-02-01",
                    "incorporationState": "AK",
                    "incorporationType": "LLC",
                    "industryCode": "623110",
                    "isAuthorizedToUseBankAccount": true,
                    "isControllingOfficer": false,
                    "isOnfidoSetupComplete": true,
                    "isSavings": true,
                    "lastName": "Charleson",
                    "lastUpdate": "2024-02-28 00:18:22",
                    "mask": "1111",
                    "ownsMoreThan25Percent": false,
                    "plaidAccountID": "zPRaBWlPPRtk77rEBnqVtPmAzDGaLBtlNEVE7",
                    "previousState": 2,
                    "requestorAddressCity": "Anchorage",
                    "requestorAddressState": "AK",
                    "requestorAddressStreet": "123 Place Street",
                    "requestorAddressZipCode": "99504",
                    "routingNumber": "011401533",
                    "setupType": "plaid",
                    "ssnLast4": "3333",
                    "state": "VERIFYING",
                    "verifications": {
                        "blackListed": {
                            "isBankAccountCopy": false,
                            "isBlackListedAddress": false,
                            "isBlackListedName": false,
                            "isBlackListedUser": false,
                            "isFlagged": false
                        }
                    },
                    "website": "https:\/\/g.com"
                }
            }
        },
        {
            "key": "reimbursementAccountC2D04064D2525A53",
            "onyxMethod": "merge",
            "value": {
                "achData": {
                    "acceptTerms": true,
                    "accountNumber": "XXXXXXXXXXXX1111",
                    "addressCity": "Anchorage",
                    "addressName": "Alberta Bobbeth Charleson",
                    "addressState": "AK",
                    "addressStreet": "123 Place Street",
                    "addressZipCode": "99504",
                    "bankAccountID": 3953947,
                    "bankName": "Regions Bank",
                    "beneficialOwners": [],
                    "certifyTrueInformation": true,
                    "companyName": "Alberta Bobbeth Charleson",
                    "companyPhone": "4404521379",
                    "companyTaxID": "123456789",
                    "country": "US",
                    "created": "2024-02-27 23:51:20",
                    "currency": "USD",
                    "dateSigned": "2024-02-28 00:17:55",
                    "dob": "2006-02-02",
                    "enableCardAfterVerified": true,
                    "fieldsType": "local",
                    "firstName": "Alberta",
                    "hasFullSSN": true,
                    "hasNoConnectionToCannabis": true,
                    "incorporationDate": "2024-02-01",
                    "incorporationState": "AK",
                    "incorporationType": "LLC",
                    "industryCode": "623110",
                    "isAuthorizedToUseBankAccount": true,
                    "isControllingOfficer": false,
                    "isOnfidoSetupComplete": true,
                    "isSavings": true,
                    "lastName": "Charleson",
                    "lastUpdate": "2024-02-28 00:18:22",
                    "mask": "1111",
                    "ownsMoreThan25Percent": false,
                    "plaidAccountID": "zPRaBWlPPRtk77rEBnqVtPmAzDGaLBtlNEVE7",
                    "previousState": 2,
                    "requestorAddressCity": "Anchorage",
                    "requestorAddressState": "AK",
                    "requestorAddressStreet": "123 Place Street",
                    "requestorAddressZipCode": "99504",
                    "routingNumber": "011401533",
                    "setupType": "plaid",
                    "ssnLast4": "3333",
                    "state": "VERIFYING",
                    "verifications": {
                        "blackListed": {
                            "isBankAccountCopy": false,
                            "isBlackListedAddress": false,
                            "isBlackListedName": false,
                            "isBlackListedUser": false,
                            "isFlagged": false
                        }
                    },
                    "website": "https:\/\/g.com"
                }
            }
        }
    ],
    "jsonCode": 200,
    "requestID": "85c480f6380c3553-CNF",
    "previousUpdateID": 138790448,
    "lastUpdateID": 138793030
}

Sequential/Failure`ConnectBankAccountWithPlaid` response:

{
    "code": 666,
    "jsonCode": 666,
    "type": "Expensify\\Libs\\Error\\ExpError",
    "UUID": "fc38abb3-e3d1-4abd-b6fd-4e05be7a751b",
    "message": "An unexpected error occurred while trying to add your bank account via Plaid.",
    "title": "",
    "data": {
        "onyxData": [
            {
                "onyxMethod": "merge",
                "key": "reimbursementAccountC2D04064D2525A53",
                "value": {
                    "errors": {
                        "1709079671718244": "An unexpected error occurred while trying to add your bank account via Plaid."
                    }
                }
            },
            {
                "onyxMethod": "merge",
                "key": "reimbursementAccount",
                "value": {
                    "errors": {
                        "1709079671718251": "An unexpected error occurred while trying to add your bank account via Plaid."
                    }
                }
            }
        ]
    },
    "htmlMessage": "",
    "onyxData": [
        {
            "onyxMethod": "merge",
            "key": "reimbursementAccountC2D04064D2525A53",
            "value": {
                "errors": {
                    "1709079671718244": "An unexpected error occurred while trying to add your bank account via Plaid."
                }
            }
        },
        {
            "onyxMethod": "merge",
            "key": "reimbursementAccount",
            "value": {
                "errors": {
                    "1709079671718251": "An unexpected error occurred while trying to add your bank account via Plaid."
                }
            }
        }
    ],
    "requestID": "85c481893ed73553-CNF"
}

@brunovjk I can see in the logs that the issue on the failure request is that plaidAccessToken is being sent as empty string when you resend the request. So probably we're erasing it in the frontend code - that should help you find out what's happening.

Awesome! Thank you @danieldoglas!! Im on it!

Whoops, sorry got my issues mixed up. I believe this is still a blocker.

I reverted this PR and was unable to reproduce the issue again. Can anyone confirm for me? Thanks.

Sorry, I updated my comment above with the correct PR link

I reverted this PR and was unable to reproduce the issue. Can anyone confirm please? Thanks. I continue working on a solution, any help is welcome :D

I've added the retest tag

Issue is reproducible during KI retests.

Will take a look myself, to see if I see any

This will be a BE PR, no need for contributor plus

@nkuoch no payment is due on this one, right?  Can this be closed now?


-fix broken link in lifecycle doc

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

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

Checklist:

[ ] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

That is the fastest reaction to a mobile community comment ever!!! 😃  Thanks!!


Development libraries.

I would like to discuss a bit the libraries used for testing and development, starting by the ones marked by this line.

cb-http-client
Are we gonna use blockchain explorers after all?
I thought we will query the network directly (using WebRTC in the browser)?

I think the path to pursue here is to abstract the persistence layer by way of the connection object. In doing so, the users can choose what backend they prefer. I very much like the route that you've been pursuing with spv-mode, but I would like to preserve the option for users to query a blockchain explorer as well. We can remove those dependencies for now though if they're in your way.

@aynik - Is it your expectation that a client can spool up via a web browser, and connect to a public bitcoind server, or would you expect that the bitcoind server is running on the site that is hosting the static pages?

I think browsers that support WebRTC can use the network as it is to pull data (I guess SPV is a bit more trustworthy than block explorers) but when is not available the best would be to use existing explorers, instead of providing a btcd server side which cannot be scrutinized and isn't even open to custom usage (like explorers are).


REFramework is currently initialising... - Infinite.

Hi, playing RE2 and was trying to install REFramework. However, the box in the corner just tells me REFramework is initialising without change. I can't hide the window or manipulate it, or use any of the features.
I've tried the latest version as of this report, and older versions going back, to no avail.

Note, I'm using the correct Non-RT version.


fixed the build error

resolves #160
the fn test_zero_allowance() was defined twice in the tests.rs file and this is one of the main contributors to the build error

@Ugo-X please see build error messages

@Julian-dev28
just fixed it

Amazing!


clarify dev communication

[ ] @ mention @luizirber @camillescott @mr-c or @ctb for code review
[ ] @ mention for followups

Working on it.


[RESTEASY-2609] 4.5.4-SNAPSHOT -> 4.5.4.Final

The failures come from timeout tests in the MicroProfile REST Client TCK. I was able to configure the timeout and get the tests to pass on my home machine.


-log_to_file redirects bazel's stderr in addition to ibazel's

I want to avoid the spam that ibazel outputs and it looked like -log_to_file is supposed to do that, except that it doesn't include stderr from bazel which I still want to get.
In particular log_to_file doesn't document that it redirects bazel's stderr as well, and if that is intentional seems like it offers very little/nothing over doing the redirection in the shell.

-log_to_file is a testing internal that is used in the e2e tests. It's existence is an implementation detail of the e2e testing.
Could you help me understand why you want to completely silence bazel output? I believe that would prevent there from being any usable UI to tell you what happened. What do I not understand?

I don't want to silence bazel, I want to silence ibazel. The majority of the lines that it outputs are not useful to me if it is working. They would be great for filing a bug report, but thats not the case most of the time.
All of the below are examples of where ibazel writes stuff that is not useful to me as someone who wants the output of bazel.
https://github.com/bazelbuild/bazel-watcher/blob/f09ef4ab16970522868f40aa7ef83c7946d22922/ibazel/ibazel.go#L258
https://github.com/bazelbuild/bazel-watcher/blob/f09ef4ab16970522868f40aa7ef83c7946d22922/ibazel/ibazel.go#L287
https://github.com/bazelbuild/bazel-watcher/blob/f09ef4ab16970522868f40aa7ef83c7946d22922/ibazel/ibazel.go#L289
https://github.com/bazelbuild/bazel-watcher/blob/f09ef4ab16970522868f40aa7ef83c7946d22922/ibazel/ibazel.go#L483

I don't have access to iblaze currently but my recollection is that it is much less verbose.
Here is the output from ibazel when a BUILD file changes when running ibazel test //libraries:all
State: WAIT
State: WAIT
State: WAIT
Build graph changed: "/Users/endobson/proj/racket/yaspl2/libraries/BUILD". Requerying...
State: DEBOUNCE_QUERY
State: DEBOUNCE_QUERY
State: DEBOUNCE_QUERY
State: DEBOUNCE_QUERY
State: QUERY
Querying for BUILD files...
Error watching file /Users/endobson/proj/racket/yaspl2/tools/defaults/BUILD
Error: lstat /Users/endobson/proj/racket/yaspl2/tools/defaults/BUILD: no such file or directory
Watching: 10 files
Querying for source files...
Watching: 134 files
State: RUN
Testing //libraries:all

Removing the state lines:
Build graph changed: "/Users/endobson/proj/racket/yaspl2/libraries/BUILD". Requerying...
Querying for BUILD files...
Error watching file /Users/endobson/proj/racket/yaspl2/tools/defaults/BUILD
Error: lstat /Users/endobson/proj/racket/yaspl2/tools/defaults/BUILD: no such file or directory
Watching: 10 files
Querying for source files...
Watching: 134 files
Testing //libraries:all

I think the "watching N files" is not useful to the user. It doesn't seem very actionable/informative to me, and I don't see a scenario where it's something I want to know.
The errors for the non existent file would be reasonable if those file were actual dependencies, so I don't think that ibazel should likely do anything about them (https://github.com/bazelbuild/bazel/issues/5052).
I don't think that the "Querying for ___ files" is useful as that is going to happen every time the build graph changes, and so is encompassed by the "Build graph changed "...". Requerying ..."line.
So my suggestion is to remove all of the 4 log lines I mentioned above. That would make it similar to the case when just a file is changed.

I think the "watching N files" is not useful to the user. It doesn't seem very actionable/informative to me, and I don't see a scenario where it's something I want to know.

In my experience, both from watching people use the tool and doing it myself, it is helpful for detecting NFS detaches and broken build rules where the srcs has been wiped and you're not actually watching any files.

I don't think that the "Querying for ___ files" is useful as that is going to happen every time the build graph changes, and so is encompassed by the "Build graph changed "...". Requerying ..."line.

When the program is starting up, without the "Querying for ___ files" line, the program would be completely silent and give you no notice that it is doing anything at all, let alone that it is doing something that can take north of 30 seconds in complex build graphs. That feels like a terrible user experience to me. How do you think we should approach that other than to tell the user that it is doing stuff?

The logging system has been rewritten and this is probably fixed now. Please reopen if there are more things you'd like


Update Percolate to unmarshal response into a valid struct

Currently, the existing Match struct does not comply
with json returned from a percolate query.
This fixes that.
Example percolate response as of ES 1.6.0:
{"took":9,"_shards":{"total":3,"successful":3,"failed":0},"total":3,
"matches":[{"_index":"test-geoevents-20150706-115234","_id":"nyc,West Village"},{"_index":"test-geoevents-20150706-115234","_id":"nyc,Manhattan"},{"_index":"test-geoevents-20150706-115234","_id":"nyc,Greenwich Village"}]}

Can you include some tests to vice this in @dimroc ?

Hi @weberr13,
I've added tests to cover both RegisterPercolate and Percolate. In my initial commit, I never actually used RegisterPercolate because my percolators were registered by an external system. Writing out the tests forced me to use it and after skimming through it, I'm pretty sure the original RegisterPercolate never worked for newer versions of ES.
Also, running the tests with loaddata true errors out for me:
go test -v -host <IP_ADDRESS>:9200 -loaddata
... successful tests...

13:22:31 coretest_test.go:63: loading test data
13:22:31 coretest_test.go:142: Not 200! 500 ""
exit status 1

Running tests without loaddata also errors with the first being:
...
118 total assertions

--- FAIL: TestBulkIndexerBasic (5.02s)
	assert.go:15: /Users/dimroc/go_workspace/src/github.com/dimroc/elastigo/lib/corebulk_test.go:98
	assert.go:36: !  Failure
	assert.go:38: !  - Should not have any errors 1
--- FAIL: TestBulkDelete (0.01s)
	assert.go:15: /Users/dimroc/go_workspace/src/github.com/dimroc/elastigo/lib/corebulk_test.go:217
	assert.go:36: !  Failure
	assert.go:38: !  - Should have sent '{"delete":{"_index":"fake","_type":"fake_type","_id":"1","refresh":true}}
		' but actually sent ''

Regardless, I've written my tests to be self-contained. If there are any issues with them, please let me know!

Also note that my tests are modeled directly off of the ES sample usage:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-percolate.html#_sample_usage

This is great, thanks for this.  Matching the sample usage is perfect.


Editor crash when using EditorNavigationMeshGenerator::bake(Ref, Node*)

Godot version:
3.2.dev.custom_build. 02319dceb
OS/device including version:
Ubuntu 19.04
Issue description:
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x43f60) [0x7f38ada95f60] (??:0)
[2] EditorNode::progress_add_task(String const&, String const&, int, bool) (/home/rafal/Pulpit/godot/editor/editor_node.cpp:3540)
[3] EditorProgress::EditorProgress(String const&, String const&, int, bool) (/home/rafal/Pulpit/godot/./editor/editor_node.h:856)
[4] EditorNavigationMeshGenerator::bake(Ref<NavigationMesh>, Node*) (/home/rafal/Pulpit/godot/modules/recast/navigation_mesh_generator.cpp:419 (discriminator 3))
[5] MethodBind2<Ref<NavigationMesh>, Node*>::call(Object*, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/./core/method_bind.gen.inc:1523 (discriminator 19))
[6] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/core/object.cpp:940 (discriminator 1))
[7] Variant::call_ptr(StringName const&, Variant const**, int, Variant*, Variant::CallError&) (/home/rafal/Pulpit/godot/core/variant_call.cpp:1073 (discriminator 1))
[8] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Variant::CallError&, GDScriptFunction::CallState*) (/home/rafal/Pulpit/godot/modules/gdscript/gdscript_function.cpp:1086)
[9] GDScriptInstance::call_multilevel(StringName const&, Variant const**, int) (/home/rafal/Pulpit/godot/modules/gdscript/gdscript.cpp:1192)
[10] Node::_notification(int) (/home/rafal/Pulpit/godot/scene/main/node.cpp:58)
[11] Node::_notificationv(int, bool) (/home/rafal/Pulpit/godot/./scene/main/node.h:46 (discriminator 14))
[12] CanvasItem::_notificationv(int, bool) (/home/rafal/Pulpit/godot/./scene/2d/canvas_item.h:166 (discriminator 3))
[13] Node2D::_notificationv(int, bool) (/home/rafal/Pulpit/godot/./scene/2d/node_2d.h:38 (discriminator 3))
[14] Object::notification(int, bool) (/home/rafal/Pulpit/godot/core/object.cpp:952)
[15] SceneTree::_notify_group_pause(StringName const&, int) (/home/rafal/Pulpit/godot/scene/main/scene_tree.cpp:975)
[16] SceneTree::idle(float) (/home/rafal/Pulpit/godot/scene/main/scene_tree.cpp:522 (discriminator 3))
[17] Main::iteration() (/home/rafal/Pulpit/godot/main/main.cpp:1922)
[18] OS_X11::run() (/home/rafal/Pulpit/godot/platform/x11/os_x11.cpp:3163)
[19] /usr/bin/godot(main+0xdf) [0x1390871] (/home/rafal/Pulpit/godot/platform/x11/godot_x11.cpp:56)
[20] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7f38ada78b6b] (??:0)
[21] /usr/bin/godot(_start+0x2a) [0x13906da] (??:?)

Steps to reproduce:

Run minimal project and wait

Minimal reproduction project:
https://github.com/qarmin/The-worst-Godot-test-project/
commit 9f18c417a39afc63083eb555a99f612f3071a56a
ZIP - https://github.com/qarmin/The-worst-Godot-test-project/archive/9f18c417a39afc63083eb555a99f612f3071a56a.zip

This was most likely resolved by #34776, closing. See https://github.com/godotengine/godot/issues/17885#issuecomment-596490309 if you need a solution in Godot 3.2.

@Calinou Trying EditorNavigationMeshGenerator to bake NavMesh in script at runtime but getting the below error, using 3.3.2 (stable) Mono 64-bit (tried with both C# and GDScript). Is this something that is supposed to be resolved by #34776 but was overlooked? Or am I missing something?
ERROR: bake: Invoking EditorNavigationMeshGenerator::bake(...) in-game is not supported in Godot 3.2 or below. Aborting bake...    At: modules/recast/navigation_mesh_generator.cpp:437


Links under Getting Started, on homepage,  yields 404

Closing. I hope/believe this was fixed as part of the website migration to Laika, when I was able to finally re-enable link checking! :tada:


LoadingBuffer Required to account for sceneLoadDelay on client side

when a game starts, the scene and environment is loaded by all clients at different speeds.
because it is imperative that they do not miss the first server tick, there should be a message the clients can send to the server to imply that they have finished loading and are ready to receive data.
once all clients have sent their LoadingProcessFinished message the server can broadcast either a message telling all clients that the loading phase is over (OnLoadPhaseComplete?) or simply send the first server tick with initial entity data.

https://github.com/BigETI/ElectrodZMultiplayer/pull/18


是否能够支持针对环境的查询权限

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
目前公司是将测试环境的查看以及修复发布权限开放给开发人员，而生产环境的权限都只开放给运维人员，开发人员无权查看，
但是apollo上配置的项的人只有开发人员了解，开发人员了解这个配置可能会影响哪些核心业务，故需要让开发人员知道生产环境的配置是怎么样的。
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

如果不开启配置查看权限，开发人员是可以看到生产环境的配置的。


[0.7.x] BZ1192831: User with no privileges for Repository can view and modify assets in that Repository

See https://bugzilla.redhat.com/show_bug.cgi?id=1192831. This BZ is a blocker.
This is the corollary for https://github.com/uberfire/uberfire-extensions/pull/142

DO NOT MERGE YET - FINAL TESTING IN PROGRESS

https://github.com/uberfire/uberfire-extensions/commit/2dcc4714af3dd689c93609c8415710243fbea80a


containers: replace docker.io hub with quay.io hub

Signed-off-by: Fernando Fernandez Mancera<EMAIL_ADDRESS>

Coverage remained the same at ?% when pulling 9cf4c02c212c21f4ed6badd17e481d81db9a7609 on ffmancera:quay_hub into 1d4de185abd33dd5dfe938bc22f5b2c41290cf29 on nmstate:master.

It seems that Travis is currently rebuilding the container image only iff /packaging is not changed, therefore this PR is not properly tested at the moment. This needs to be fixed before this PR can be merged.


filtering with >, <, >=, <=, etc.

Hi there,
Still loving this library. Super useful and working well.
In the filters area you have this comment:
"TODO: lt, gt, lte, gte, like, ilike, contains, icontains"
Is that something you're likely to consider adding? Those would be useful to have available.
Thanks in advance,
Matt

Yes, this is easily extensible at https://github.com/IlyaSemenov/objection-graphql-resolver/blob/fea85fbb580ce4113fdd0626820ecb6956ddd11f/src/filter.ts#L60 by analogy. If you have some spare time for the PR I'd gladly merge it.


Fix specific port mapping documentation

Fixed documentation for inspect specific port mapping, the example wasn't working before. Got error Template parsing error: template: :1: unexpected "}" in operand because of extra ( at the start.

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "jhuiting-fix-inspect-port-mapping" git@github.com:jhuiting/docker.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.

@jhuiting the PR should be open against master :ang

@jhuiting looks like something went wrong here; could you open a new pull request? (I couldn't find your commit here, otherwise I could've carried it for you)
I'll close this PR because it's not in a mergable state, but looking forward to a new PR 👍


Output different folders with tsdx and tsconfig settings

@agilgur5  Thanks for answering that. I found another issue relating to changing the output folder
I modify both the rollup output param and the tsconfig.json outDir and declarationDir to a parent folder of my project that is used for debugging my app that consumes the bundled output.
tsconfig.json
"compilerOptions": {
     "baseUrl": "./src",
      "outDir": "../../my-app/src/@scope/shared",
      "declarationDir": "../../my-app/src/@scope/shared"
      "allowJs": true,
      "alwaysStrict": true,
      "declaration": true,
      "esModuleInterop": true,
      "forceConsistentCasingInFileNames": true,
      "importHelpers": true,
      "jsx": "react",
      "lib": ["dom", "esnext"],
      "module": "esnext",
      "moduleResolution": "node",
      "noFallthroughCasesInSwitch": true,
      "noImplicitThis": true,
      "strictFunctionTypes": true,
      "strictPropertyInitialization": true,
      "strict": true,
      "allowSyntheticDefaultImports": true,
      "noUnusedParameters": false,
      "noUnusedLocals": false,
      "strictNullChecks": true,
      "noImplicitAny": false,
      "noEmit": true,
      "target": "es5",
      "sourceMap": true,
      "downlevelIteration": true
    }

tsdx.config.js

module.exports = {
  rollup(config, options) {
    return {
      ...config,
      // https://github.com/formium/tsdx/issues/213#issuecomment-540126058
      output: {
        ...config.output,
        // dir: path.join(__dirname, '../../my-app/src/@scope'),
        file: `../../my-app/src/@scope/shared/${path.basename(file)}`
      }
    }
    }
  }
};

The resulting run of tsdx build gives me the bundled esm/cjs for both development/production .js builds with the relevant typings, however I still have a dist folder under my scoped rollup project with the entry index.js file.
I attached a few pics to demonstrate the issue.
// current tsdx/rollup project with a single index.js under `shared/dist folder

'use strict'

if (process.env.NODE_ENV === 'production') {
  module.exports = require('./shared.cjs.production.min.js')
} else {
  module.exports = require('./shared.cjs.development.js')
}

// The other project that consumes the bundled output

Originally posted by @alonfai in https://github.com/formium/tsdx/issues/790#issuecomment-671178335

Please don't remove issue templates, they are there for a reason. As I said in your other issue, this is another duplicate, this time of https://github.com/formium/tsdx/issues/351#issuecomment-657284291 . Please search the issues and read through docs before submitting issues.

Also `outDir` is not currently supported by TSDX


unpin numpy

[x] follow-up to #7415

It seems in a previous PR I "temporarily" pinned numpy to get CI to pass, but then forgot to unpin later and merged it as-is. As a result, we have not been running the main CI with numpy>=1.24 ever since, even though now numpy=1.25 has been around for a while.

The doctests CI fails because unstacking a int array uses np.full_like to create a integer array but fills it with nan (the result of dtypes.get_fill_value(dtype) for int dtypes). Newer numpy versions complain about this by emitting a warning, which then gets converted to an error.
https://github.com/pydata/xarray/blob/eceec5f7bbbe93b2f24f49af6361a135ae72e2e4/xarray/core/variable.py#L1870-L1880
In this particular case, the fill value itself will never appear in the unstacked array, so we could just use np.empty_like instead of np.full_like (not sure what to do for sparse, but maybe we don't need to do anything?).

Unrelated, but noticed again:
Seeing that new Mypy versions create problems maybe we should pin the Mypy version and set up an updater action with a PR?

Seeing that new Mypy versions create problems maybe we should pin the Mypy version

We can do that, but note that the only error that's new is
xarray/core/dataset.py:503: Definition of "__eq__" in base class "DatasetOpsMixin" is incompatible with definition in base class "Mapping"  [misc]

the other ones appear to be numpy:
xarray/tests/test_groupby.py:731: error: Argument 1 to "groupby" of "Dataset" has incompatible type "ndarray[Any, dtype[signedinteger[Any]]]"; expected "Hashable | DataArray | IndexVariable"  [arg-type]
xarray/tests/test_groupby.py:731: note: Following member(s) of "ndarray[Any, dtype[signedinteger[Any]]]" have conflicts:
xarray/tests/test_groupby.py:731: note:     __hash__: expected "Callable[[], int]", got "None"
xarray/tests/test_coding_strings.py:36: error: Unused "type: ignore" comment  [unused-ignore]

Any idea how to fix those?

I don't think those are numpys fault.
We just have to add ndarray to groupbys argument Type list (I think there is already a DataArray Compatible definition somewhere, maybe that works).
The Hashable None error usually disappears magically when you fix the other errors.

We just have to add ndarray to groupbys argument Type list

There's a explicit check that raises a TypeError, so ignoring the (intentionally) wrong typing in the test seems appropriate?

We just have to add ndarray to groupbys argument Type list

There's a explicit check that raises a TypeError, so ignoring the (intentionally) wrong typing in the test seems appropriate? See ca245d64c53a558d75a28705cb958248ece5a52a

Yes sry. Saw that too late. You are totally correct

hah, yeah, I also didn't see your edit soon enough.
In any case, that leaves us with the __eq__ error that is new in mypy=1.5

I barely know what I'm doing when it comes to typing, but from what I can tell the reason is a typeshed update in mypy combined with OVERRIDE_TYPESHED in xarray.util.generate_ops not having any effect.

once tests pass this should be ready for a final review.


Can not leave the default setting for Extractor Setting of type file

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/1541
Originally created by @iroussos on 2020-01-08 17:14:04

With the introduction of the file uploading feature, we can upload files directly from the Meltano UI configuration modal, which is great.
A small issue with that implementation is that users that already have the file in the correct directory can not set the path without uploading the file again.
Example: When using tap-csv I have uploaded both the csv files and the files-def.json in the extract/ folder of a project.
Reasons:

I am already uploading the CSV files, I just uploaded the other file too while I was going through the process (that’s what happened to me)
I already have the files there or I am running locally and just copied the file

The problem? Even though the file is there, I can not finish setting up the extractor without re-uploading it:

The save option is disabled and the moment I click on the input box, the file uploader pops up.

View 5 previous comments from the original issue on GitLab


adds methods to create delegated credentials and builder

adds a toBuilder() method which creates a mutable version of the credential
object preloaded with all values from the credential.
adds a createDelegated(String user) method which allows creation of
a credential with correct user delegation from an existing credential

the ci build seems to be broken (and fails with some android error message).

@jadekler ping

This client library is supported but in maintenance mode only, unfortunately. We are mostly in a bug-fixing, security-patching mode. Furthermore, this library is currently frozen while we clean up some of the internals and prepare for a release (hopefully making future releases easier). I'll keep this PR open and we'll circle back to this when we're done.

@jadekler the bothering lack of any ETA means this could take a very long time?

"we'll circle back to this when we're done." @jadekler @chingor13 any estimation when might that happen?

This feature is currently available in the newer google-auth-library-java (com.google.auth:google-auth-library-oauth2-http). It's weird that there are 2 implementations for service accounts (and application default credentials) and we'd like to consolidate into 1 if possible.
The GoogleCredentials provided from the google-auth-library-java will work the the google-http-java-client (the underlying transport), but there's not great documentation on how to do it. It's likely that we'll create a guide for using those credentials and deprecated the ones here, rather than adding more features to the implementation here. This is only in the proposal stage and we're thinking about what changes need to be made to get these libraries where we want them.

Verified that these commits rebased pass CI.


Task1: Initializing the working environment

Added functions for working with graphs

Added tests

Console application implemented

Added launch of tests to workflows

Waiting for an ability to request review


Can we have a --verbose flag for diagnosing performance problems?

Is your feature request related to a problem? Please describe.
pip-audit will finish in a few seconds but pip-audit -r requirement.txt hangs forever. If I interrupt it, sometimes it is in the middle of trying to upgrade pip, sometimes it is in the middle of trying to POST something via requests (as inferred from the call stack at point of killing the process)
Describe the solution you'd like
I'd like pip-audit to not hang on windows 10, when using python 3.9, pipenv or pipx, when on corporate VPN, with shell of git-bash or cmd.exe... but I can't send my laptop to y'all to diagnose what's up so I don't really expect a bug report to get any attention.
So I'd like a --verbose flag so I can diagnose what is happening and where the code is hanging (is the company's net-nanny banning the domain of something because it is uncategorized, who knows? is it hitting a free service and getting rate limited? Is it calling safety without an API key like pipenv used to?)
Describe alternatives you've considered
Forking the project, but that takes a lot of time.
Additional context
None

Hi @matthewdeanmartin, thanks for the feature request!
I think we can add this (and make it additive like pip's --verbose flag).
In the short term, you can also set PIP_AUDIT_LOGLEVEL=debug before running the command to get some additional output.

Yeah, making --verbose additive to bump the loglevel should be straightforward. In the meantime, PIP_AUDIT_LOGLEVEL=debug is indeed the best way to do it 🙂


[tool_crash] ArgumentError: Invalid argument(s): Cannot find executable for /Users/muhammadrizwan/flutter/bin/cache/artifacts/engine/android-arm64-release/darwin-x64/gen_snapshot.

Command
flutter --quiet assemble --depfile /Users/muhammadrizwan/Flutter Projects/truckoom_freelance/build/app/intermediates/flutter/release/flutter_build.d --output /Users/muhammadrizwan/Flutter Projects/truckoom_freelance/build/app/intermediates/flutter/release -dTargetFile=/Users/muhammadrizwan/Flutter Projects/truckoom_freelance/lib/main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true --DartDefines=flutter.inspector.structuredErrors%3Dtrue android_aot_bundle_release_android-arm64

Steps to Reproduce

...
...
...

Logs
ArgumentError: Invalid argument(s): Cannot find executable for /Users/muhammadrizwan/flutter/bin/cache/artifacts/engine/android-arm64-release/darwin-x64/gen_snapshot.
#0      _getExecutable (package:process/src/interface/local_process_manager.dart:124:5)
#1      LocalProcessManager.start (package:process/src/interface/local_process_manager.dart:40:30)
#2      ErrorHandlingProcessManager.start.<anonymous closure> (package:flutter_tools/src/base/error_handling_io.dart:638:33)
#3      _run (package:flutter_tools/src/base/error_handling_io.dart:532:20)
#4      ErrorHandlingProcessManager.start (package:flutter_tools/src/base/error_handling_io.dart:638:12)
#5      _DefaultProcessUtils.start (package:flutter_tools/src/base/process.dart:472:28)
#6      _DefaultProcessUtils.stream (package:flutter_tools/src/base/process.dart:491:35)
#7      GenSnapshot.run (package:flutter_tools/src/base/build.dart:73:26)
#8      AOTSnapshotter.build (package:flutter_tools/src/base/build.dart:194:56)
#9      AndroidAot.build (package:flutter_tools/src/build_system/targets/android.dart:232:52)
#10     _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:796:27)
<asynchronous suspension>
#11     Future.wait.<anonymous closure> (dart:async/future.dart)
<asynchronous suspension>
#12     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:734:32)
<asynchronous suspension>
#13     FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:563:16)
<asynchronous suspension>
#14     AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:220:32)
<asynchronous suspension>
#15     FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:1157:12)
<asynchronous suspension>
#16     FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1009:27)
<asynchronous suspension>
#17     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)

[✓] Flutter (Channel stable, 2.0.4, on macOS 11.4 20F71 darwin-x64, locale en-GB)
    • Flutter version 2.0.4 at /Users/muhammadrizwan/flutter
    • Framework revision b1395592de (3 months ago), 2021-04-01 14:25:01 -0700
    • Engine revision 2dce47073a
    • Dart version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/muhammadrizwan/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.57.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (2 available)
    • RMX2020 (mobile) • TSI7FM4T4DBMAQEE • android-arm64  • Android 10 (API 29)
    • Chrome (web)     • chrome           • web-javascript • Google Chrome 91.0.4472.114

• No issues found!

Flutter Application Metadata
Type: app
Version: 1.7.3+73
Material: true
Android X: false
Module: false
Plugin: false
Android package: null
iOS bundle identifier: null
Creation channel: stable
Creation framework version: f30b7f4db93ee747cd727df747941a28ead25ff5
Plugins
cloud_firestore-0.12.11
connectivity-2.0.2
connectivity_for_web-0.3.1+4
connectivity_macos-0.1.0+7
device_info-0.4.2+10
esys_flutter_share-1.0.2
ext_storage-1.0.3
firebase_analytics-5.0.16
firebase_analytics_web-0.1.1
firebase_auth-0.14.0+9
firebase_core-0.4.5
firebase_core_web-0.1.1+2
firebase_messaging-6.0.16
flutter_absolute_path-1.0.6
flutter_downloader-1.5.2
flutter_local_notifications-4.0.1+2
flutter_native_image-0.0.5+3
flutter_plugin_android_lifecycle-1.0.11
fluttertoastalert-1.0.3
geocoder-0.2.1
geolocator-4.0.3
google_api_availability-2.0.4
google_maps_flutter-0.5.33
image_picker-0.6.7+21
location-3.0.2
location_permissions-2.0.5
location_web-1.0.0
multi_image_picker-4.7.14
path_provider-1.6.27
path_provider_linux-0.0.1+2
path_provider_macos-0.0.4+8
path_provider_windows-0.0.4+3
permission-0.1.7
permission_handler-4.4.0
shared_preferences-0.5.12+4
shared_preferences_linux-0.0.2+4
shared_preferences_macos-0.0.1+11
shared_preferences_web-0.1.2+7
shared_preferences_windows-0.0.1+3
url_launcher-5.7.10
url_launcher_linux-0.0.1+4
url_launcher_macos-0.0.1+9
url_launcher_web-0.1.5+3
url_launcher_windows-0.0.1+3

@muhammadrizwaan
This issue was fixed as part of https://github.com/flutter/flutter/issues/68475.
I recommend you to upgrade to latest stable (2.2.3) or latest master and try again to see it work properly.
Closing as this is already fixed. If after upgrading to latest versions, you still see the issue, write in comments and I'll reopen.


Generated styles missing some properties

The generated file ios/RCTMGL-v10/RCTMGLStyle is missing the following properties:
FillExtrusionLayer
- fillExtrusionEdgeRadius
- fillExtrusionAmbientOcclusionIntensity
- fillExtrusionAmbientOcclusionIntensityTransition
- fillExtrusionAmbientOcclusionRadius
- fillExtrusionAmbientOcclusionRadiusTransition

Atmosphere
- colorTransition
- highColorTransition
- spaceColorTransition
- horizonBlendTransition
- starIntensityTransition

I followed the autogenerate code around for a while, but I'm ultimately not sure what to update. @mfazekas any pointers?

The generated file ios/RCTMGL-v10/RCTMGLStyle is missing the following properties:
FillExtrusionLayer
- fillExtrusionEdgeRadius
- fillExtrusionAmbientOcclusionIntensity
- fillExtrusionAmbientOcclusionIntensityTransition
- fillExtrusionAmbientOcclusionRadius
- fillExtrusionAmbientOcclusionRadiusTransition

Atmosphere
- colorTransition
- highColorTransition
- spaceColorTransition
- horizonBlendTransition
- starIntensityTransition

I followed the autogenerate code around for a while, but I'm ultimately not sure what to update. @mfazekas any pointers?

yarn fetch:style:spec
yarn generate

But we rely on https://raw.githubusercontent.com/mapbox/mapbox-gl-js/master/src/style-spec/reference/v8.json to contain those and I don't see fillExtrusionEdgeRadius in the one we have in the repo, but I see in the current so fetch:style:spec might solve it

After a bunch of reinstalling and Ruby version madness, all of the other properties are there except fillExtrusionEdgeRadius, which is still missing from FillExtrusionLayer.swift. Can you verify that doesn't happen for you?

Oh no way - so it wasn't that FillExtrusionLayer.swift was erroneously missing fillExtrusionEdgeRadius - the issue was that I had a cached (?!) version of RCTMGLStyle.swift that was mistakenly calling layer.setFillExtrusionEdgeRadius! Well, it's working now.

@mfazekas Ok the issue seemed to be that I had
// myProject/ios/Podfile
$RNMapboxMapsVersion = '~> 10.6.1'

in my local project's Podfile, while the file rnmapbox-maps.podspec, which autogenerate.js reads, had the default iOS version set to
//<EMAIL_ADDRESS>rnMapboxMapsDefaultMapboxVersion = '~> 10.7.0'

It seems like all of the generated class definitions were getting installed based on 10.6.1 during pod install, so they did not have transitions properties. But autogenerate.js was reading version 10.7.0 and therefore creating set*Transitiion functions in RCTMGLStyle.swift, which referenced non-existent properties.
Changing my project's $RNMapboxMapsVersion to match 10.7.0 fixed it.
This is a bug, no? Seems to me that the generate script should take the enclosing project's SDK version into account - so perhaps documentation generation should run on commits, but code generation should probably happen during installation.
(For the record, I was referencing a local installation, e..g npm i ../rnmapbox, but I don't think that should matter?)

This is a bug, no? Seems to me that the generate script should take the enclosing project's SDK version into account - so perhaps documentation generation should run on commits, but code generation should probably happen during installation.

So currently we generate code for the default version of mapbox dep (1.7.0 currently). This has the downside that if someone want's to use an earlier version with style changes they have to use something like patch-package to achieve that.
I assume we could generate code at pod install time on iOS, and probably we can solve that with gradle too.
But I think that can have issue too. Like they set to RNMapboxMapsVersion=2.0 but we don't support some of the new naming conventions/types introduced in that lib, then the generated code will not compile.
I think in docs we should discourage people from setting RNMapboxMapsVersion unless they really need that. Also we can issue warning if RNMapboxMapsVersion set to lower than default.
But I assume for most cases this issue can happen if someone sets RNMapboxMapsVersion to consume a new version of the lib, then they upgrade the js lib and suddenly new version becomes old version.. Like default is 1.5.0, but they set RNMapboxMapsVersion to 1.6.0 to use the latest & greatest native libs. But then they upgrade the @rnmapbox/maps pkg and that now default to 1.7.0 with code generated for that. And I assume $RNMapboxMapsVersion=1.6.0 downgrade from 1.7.0 is no longer intentional, just they forgot to change it with the pkg upgrade.

For now I've documented that we don't recommend people adjusting version unless they know what they are doing.
We could issue a warning if user set the version to lower than what we were building for, but it's a low priority task ATM.


pre-sve [TC-MF-1.21][TC-MF-1.22]

TC-MF-1.21 and 1.22 step#5:
Not able to commission the 5th fabric for both tests. supported-fabrics parameter is 5, and I was able to commission 4 fabrics and open the 5th commissioning window without an error, but commissioning the 5th fabric failed.
The errors are either:
CHIP Error 0x00000003: Incorrect state
or
CHIP Error 0x00000032: Timeout
the logs are all below:
TC-MF-1.21.txt
TC-MF-1.21-DUT.txt
TC-MF-1.22.txt
TC-MF-1.22-DUT.txt
test Platform:
EFR32 as DUT
Lighting-app

TC-MF-1.22-DUT.txt is an empty file, so not much to say about that one....

OK, so in the 1.22 DUT log I see:
00> <info  > [DL] advertising srp service: 376851A89CC29C75._matterc._udp
00> <info  > [DL] removing srp service: 1A461415045D135D._matterc._udp
00> <info  > [ZCL] Commissioning window is now open
...
00> <error > [DL] OnSrpClientNotification: Timed out waiting on server response
00> <error > [DL] OnSrpClientNotification: Timed out waiting on server response
00> <error > [DL] OnSrpClientNotification: Timed out waiting on server response
00> <error > [DL] OnSrpClientNotification: Timed out waiting on server response
00> <error > [DL] OnSrpClientNotification: Timed out waiting on server response
00> <error > [DL] OnSrpClientNotification: Timed out waiting on server response
00> <error > [DL] OnSrpClientNotification: Timed out waiting on server response
00> <error > [DL] OnSrpClientNotification: Timed out waiting on server response

and again the TH log does not show 376851A89CC29C75 anywhere.  So seems like the same issue...

If you get "Timed out waiting on server response" error, it's worth checking OTBR logs as well. In our testing we only encountered "Parsing operation failed" error when sending big SRP updates. https://github.com/project-chip/connectedhomeip/pull/19803, merged yesterday, should reduce the size of our SRP updates, and https://github.com/openthread/openthread/pull/7776 in OpenThread should help process big SRP updates anyway.


Docs test

A test that makes sure that any non-underscored MD file in the Docs/ folder, has a corresponding link in the sidebar
This will do nothing for coverage but will help ensure CI will fail if someone makes the mistake of updating docs and not the site navigation.

^ Good reusable test for all projects with docsify

thanks to @kevinvangelder for helping with windows here.  This is a good reusable test on any project we do with docsify.
Maybe even a good test to add to gluegun?


Add serialization and deserialization for InputMap and ActionState

What problem does this solve?
Save and load my input map settings to a file.
What solution would you like?
Implement Serialize and Deserialize for the InputMap type.

Blocked by serialization impls in PetitSet and on Gamepad.

Actually, blocked on serialization impls for all of the button types and PetitSet.

Blocked on https://github.com/bevyengine/bevy/issues/3794


Failed to update user

Describe the problem
When I try to invite another user on the admin panel, I get an error message "Failed to update user". I have of course entered real data.

Can it be that it is because the user has already registered with this email? In the docs it says that you can only invite unregistered users. If this is the case, is there a way to invite this user anyway?

Hey @0PandaDEV.
That's not possible because if a user exists, this means that they have an account, and NetBird only supports one account/network per user.
However, we could modify it manually for your case. Please ping us via Slack.

When I invite a user, it brings them to a sign up page. And when I make an account for the user and try to invite a user, it errors out. Makes no sense

It says:
The invited users will receive an email invitation that they have to confirm. After logging in to the system, they will join your network automatically.

And when I try to "log in" as that user it throws an error...

It says:
The invited users will receive an email invitation that they have to confirm. After logging in to the system, they will join your network automatically.

And when I try to "log in" as that user it throws an error...

@dillfrescott could you share the error?


Enrichers are not thread-safe

The enrichers provided by ClientInfo are not thread-safe. This is a problem when concurrent tasks are trying to log inside the scope of a request. For example in the following situation:
var httpClient = _httpClientFactory.CreateClient(HttpClientName);

var task1 = Task.Run(async () =>
{
    var response = await httpClient.GetAsync("/api/call1");
    return await response.Content.ReadAsStringAsync();
});

var task2 = Task.Run(async () =>
{
    var response = await httpClient.GetAsync($"/api/call2");
    return await response.Content.ReadAsStringAsync();
});

await Task.WhenAll(task1, task2);

Because the HttpClients are logging they both use a logger that is trying to enrich the event with some client info (e.g. using ClientIpEnricher). If the property (e.g. Serilog_ClientIp) is not yet available on the HttpContext.Items then both instances will try to write it concurrently, which may cause various exceptions to be thrown depending on when and how the conflicting access occurs.
In theory this problem should only occur if the property isn't already on the HttpContext.Items during the concurrent phase. In other words, if the first logs of the request are written in a concurrent situation then it might occur. This means a workaround fix would be to write a log message before going concurrent (e.g. with _logger.Information("workaround fix") before the tasks in the snippet above). In my own tests this indeed seems to work.
I think there is an (implicit) expectation that Serilog enrichers are thread-safe (as mentioned here: https://github.com/serilog/serilog/issues/1144) so that's why I report this as a bug.

I'm not sure if it going to happen because HttpContext in ASP.NET Core is not a singleton and for each request, a new instance of HttpContext will be populated and the value of httpContext.Items[IpAddressItemKey] should be the same for all requests (after first initialization).

It happens inside the same request context. The code I posted should be understood as being inside of an ASP.NET action (e.g. async Task<IActionResult> Get(). It's the two concurrent GetAsyncs of the HttpClient that cause the logger to be concurrently accessed and, through the enricher, the HttpContext.Items is concurrently accessed as well (because both these calls occur in the same request context). The problem occurs because this items dictionary is not thread safe.

It seems the main purpose of using HttpContext.Items is to cache the LogEventProperty. I think it might be worth looking into MemoryCache for this instead, because it serves the same purpose and also provides thread safety. As a cache key you could use the request ID plus the item key.

Maybe the problem is easier to understand if I simplify the example a bit:
public async Task<IActionResult> Get()
{
   // Here _logger is a logger enriched with the ClientIpEnricher

    var task1 = Task.Run(() =>
    {
        _logger.Information("Log message one");
    });

    var task2 = Task.Run(() =>
    {
        _logger.Information("Log message two");
    });

    await Task.WhenAll(task1, task2);
    return Ok();
}

The above code creates a situation where logger is being called in a multi-threaded way which in the ClientIpEnricher can result in a race condition on the HttpContext, where the same item is added more than once. Both tasks share the same HttpContext because they are being performed as part of the same request to the ASP.NET application (i.e. the enclosing Get method).
HttpClient is just what triggered this behavior in my code, because it also uses the enriched logger. But I realize it makes it less obvious what is going on.
I've noticed at least two kinds of exceptions that can be thrown:
Exception System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
   at System.Collections.Generic.Dictionary`2.FindValue(TKey key)
   at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
   at Microsoft.AspNetCore.Http.ItemsDictionary.System.Collections.Generic.IDictionary<System.Object,System.Object>.get_Item(Object key)
   at Serilog.Enrichers.ClientAgentEnricher.Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
   at Serilog.Core.Enrichers.SafeAggregateEnricher.Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory) caught while enriching Serilog.Events.LogEvent with Serilog.Enrichers.ClientAgentEnricher.

And:
Exception System.ArgumentException: An item with the same key has already been added. Key: Serilog_ClientIp
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at Serilog.Enrichers.ClientIpEnricher.Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
   at Serilog.Core.Enrichers.SafeAggregateEnricher.Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory) caught while enriching Serilog.Events.LogEvent with Serilog.Enrichers.ClientIpEnricher.

@basvd You are correct. I'm afraid theoretically this is a bug, when the first log of the request happens in some concurrent tasks. But I'm wondering if you have ever get this bug in a real-case scenario? Have you seen this bug in production?
The workaround that you have suggested (to have a log before concurrent tasks) would almost always happens since the ASP.Net Core itself have some logs. Unless they are disabled which I guess are rarely the case!
@mo-esmp To fix this bug I guess we could put a lock on httpContext in the Enrich method. But I don't think it would worth the effort and I'm not sure how much it would hurt the performance. I believe the worst case scenario is that the first log of the concurrent tasks won't have the client info :thinking: and Again this would only happen if there is no log before the concurrent tasks which almost never happen because the logs of the framework itself.

It seems the main purpose of using HttpContext.Items is to cache the LogEventProperty. I think it might be worth looking into MemoryCache for this instead, because it serves the same purpose and also provides thread safety. As a cache key you could use the request ID plus the item key.

Yes, the purpose of the PR was to reduce the LogEventProperty allocations, but right now I think storing it anywhere beside HttpContext bring more complexity. The HttpContext.Items would be cleared after the request is finished, but anything beside that needs to be time-dependent which I don't feel good about it. I suggest to leave this as it is.

@Kahbazi I have indeed seen this bug in real application code. The example that I describe in my original post is based on that scenario. Apparently no log is written before the controller action is called and so the running tasks will be the first to write a log, but I do agree that it is unlikely (me and my team have built an entire application with this enricher without ever running into the issue).
I understand the possible solutions are not ideal in terms of complexity. The workaround/solution in application code is quite simple: Just log something before doing anything multi-threaded. And I'm fine with that.
If I can think of a non-complex alternative to using the HttpContext I will consider making a pull request.

Changing code at line 53 would fix the problem, however, any suggestion to do it in a more performant way?
lock(locker)
{
    if (httpContext.Items[IpAddressItemKey] is LogEventProperty logEventProperty)
        return;

    var ipAddressProperty = new LogEventProperty(IpAddressPropertyName, new ScalarValue(ipAddress));
    httpContext.Items.Add(IpAddressItemKey, ipAddressProperty);
    logEvent.AddPropertyIfAbsent(ipAddressProperty);
}

I just realized that another solution (for projects using Serilog.AspNetCore) is to use its EnrichtDiagnosticContext to add the ClientIp and ClientAgent event properties. This is an alternative to using the ClientInfo enrichers entirely. The properties will be created by a middleware (which avoids the multi-thread problem) and set once on the diagnostic context, which effectively caches them.
Just posting this here for anyone who runs into the issue looking for solutions:
app.UseSerilogRequestLogging(options =>
{
    options.EnrichDiagnosticContext = (diagnosticContext, httpContext) =>
    {
        diagnosticContext.Set("ClientIp", httpContext.Connection.RemoteIpAddress);
        diagnosticContext.Set("ClientAgent", httpContext.Request.Headers.UserAgent);
    };
});

Note that if you use ForwardedHeadersMiddleware that you register this before the request logging so that the RemoteIpAddress can be set properly.

I think with the above code then installing this package pointless.

Couldn't this be solved with static AsyncLocal storage instead of storing it on the HttpContext.Items?
HttpContextAccessor uses AsyncLocal internally, so they would follow each other either way.


support for running in the browser

I'm currently using this in the browser with webpack. However when compiling the assets I get the warning that the the module fs cannot be found. Used in lib/stringify/source-map-support.js. This is an irrelevant error for me as I'm not using the source maps.
It would be great if there was a browser compatible version available that simply left out the source map support.

In PostCSS I made browser build by Browserify and then use this check.

@ai the "this check" link is broken. Can you fix the link by using the canonical url?

@kumarharsh https://github.com/postcss/postcss/blob/master/lib/previous-map.es6#L85

Github pro tip: Press y to change the URL to the latest commit, so the link works in the future as well. For @ai’s link above: https://github.com/postcss/postcss/blob/0accf88f55c8b08b478f2a3439d157b116d69774/lib/previous-map.es6#L85

I'm no longer in need of this.