[$2000] Incorrect parsing on formatted text after URL inside link

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

Action Performed:

Open New Expensify on iOS/Android/desktop
Start a chat
Send this message : [click google.com *here*](google.com)
Notice the hyperlink line under * here * changes after a few seconds

Expected Result :
The word * here * should be bold and hyperlinked
Actual Result :
The word * here * is bold, but the hyperlink is removed after a few second
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

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

[X] Android / native
[X] Android / Chrome
[X] iOS / native
[X ] iOS / Safari
[x] MacOS / Chrome / Safari
[X] MacOS / Desktop

Version Number: 1.3.4-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43996225/233531590-9d1b2cb9-1410-456b-b304-72199d68d9f7.mp4
https://user-images.githubusercontent.com/43996225/233531605-ed52e669-ce0f-4641-a3c7-bcda26be8365.mp4
Expensify/Expensify Issue URL:
Issue reported by: @kerupuksambel
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1681939793066839
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01501b1626b65fa2ee
Upwork Job ID:<PHONE_NUMBER>656465920
Last Price Increase: 2023-05-01

Triggered auto assignment to @Christinadobrzyn (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

@Christinadobrzyn Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

Sorry, I was testing this on Friday but forgot to leave a note. I am able to replicate this on all platforms.
might be related to - https://github.com/Expensify/App/issues/17665 but I don't think so.
Adding External label.

Job added to Upwork: https://www.upwork.com/jobs/~01501b1626b65fa2ee

Current assignee @Christinadobrzyn is eligible for the External assigner, not assigning anyone new.

Triggered auto assignment to Contributor-plus team member for initial proposal review - @mananjadhav (External)

Proposal
Please re-state the problem that we are trying to solve in this issue.
Incorrect parsing on formatted text after URL inside link, like link below
[click google.com *here*](google.com)

What is the root cause of that problem?
From frontend, the input link
[click google.com *here*](google.com)

is translated into following html
click google.com here

through method getParsedComment which calls method ExpensiMark.replace. The above link html has an anchor tag inside the outer anchor tag, which is invalid because Nested links are illegal. The backend has some logic to fix the invalid html and return following html to frontend
click google.com here

Let's dig how the above invalid nested links are created from frontend.
First, we apply markdown-link-to-html rule to the input
[click google.com *here*](google.com)

and output following html converting bold syntax of the link text at the same time inside method modifyTextForUrlLinks
click google.com here

Second, the autolink-to-html rule is unexpectedly applied to the output anchor tag above.
So the root cause is that the regex
const regex = new RegExp(
    `(?![^<]*>|[^<>]*<\\/)([_*~]*?)${URL_REGEX}\\1(?![^<]*(<\\/pre>|<\\/code>))`,
    'gi',
);

of autolink-to-html rule matches link inside the text of anchor tag, like
click google.com here

We have two negative lookahead groups, the starting group (?![^<]*>|[^<>]*<\/) and the ending group (?![^<]*(<\/pre>|<\/code>)), that possibly skip to match the url google.com inside the anchor tag.
Let's have a look at the starting negative lookahead group.
The starting negative lookahead group (?![^<]*>|[^<>]*<\/) of autolink-to-html regex doesn't skip to match string
google.com here

Both alternatives, [^<]*> and [^<>]*<\/, don't match the above string.
The first alternative [^<]*>  doesn't match the string because google.com is not wrapped by < and >.
The second alternative [^<>]*<\/ doesn't match the string because string  google.com <s is not ended with </.
Below picture includes several test cases of the starting negative lookahead group

Then let's check the ending negative lookahead group (?![^<]*(<\/pre>|<\/code>)). The ending negative lookahead group also doesn't match string
 here

So, both the starting and the ending negative lookahead group can't skip to match the url google.com inside the anchor tag.
What changes do you think we should make in order to solve the problem?
To fix this issue, we can improve the ending negative lookahead group (?![^<]*(<\/pre>|<\/code>)) of autolink-to-html regex to skip  ,  and  tags inside the  tag. So we need to let it skip the match if the substring(after the captured url) includes ,  and  tags and ends with ,
 or  tags. The new ending negative lookahead group can be
(?!([^<]*<\/?(strong|em|del)>)*[^<]*(<\/pre>|<\/code>|<\/a>))

The capturing group ([^<]*<\/?(strong|em|del)>)* captures , , and  tags. So the new ending negative lookahead group can skip to match string
google.com here

Below picture includes several test cases of the new ending negative lookahead group

The new regex of autolink-to-html will be
`(?![^<]*>|[^<>]*<\\/)([_*~]*?)${URL_REGEX}\\1(?!([^<]*<\\/?(strong|em|del)>)*[^<]*(<\\/pre>|<\\/code>|<\\/a>))`,

What alternative solutions did you explore? (Optional)
To fix this issue, we can also improve the starting negative lookahead group (?![^<]*>|[^<>]*<\/) of autolink-to-html regex to skip  ,  and  tags inside the  tag. So we need to improve the second alternative  [^<>]*<\/ to let it match string includes ,  and  tags and ends with . The new second alternative can be
([^<>]*<\/?(strong|em|del)>)*[^<>]*<\/a>

The capturing group ([^<>]*<\/?(strong|em|del)>)* captures , , and  tags. So the new second alternative of the negative lookahead group can skip to match string
google.com here

The new regex of autolink-to-html will be
`(?![^<]*>|([^<>]*<\\/?(strong|em|del)>)*[^<>]*<\\/a>)([_*~]*?)${URL_REGEX}\\3(?![^<]*(<\\/pre>|<\\/code>))`

While this solution will also need to adjust the index of match[i] in method modifyTextForUrlLinks because the starting negative lookahead group adds two new capturing groups.

Triggered auto assignment to @tylerkaraszewski (External), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

@Christinadobrzyn I am going to unassign myself. Can you please reapply the label to assign someone else?

Triggered auto assignment to Contributor-plus team member for initial proposal review - @s77rt (External)

Current assignee @tylerkaraszewski is eligible for the External assigner, not assigning anyone new.

:wave:
@eh2077 I see you have a proposal already, please allow me some time I will review asap.

@eh2077 Thanks for the proposal. Your RCA is about right. However the proposed fix is not exactly what we are looking for here. Can we make the fix more generic? I'm thinking of two possible solutions:

Extend the negative lookahead to take into account other tags
Rearrange how rules are called

I would really prefer solution 2, this will make the input that goes to autolink rule look like that:
click google.com *here*

And we would not have to modify the autolink regex.

Current behaviour:

Parse link
Parse bold, italic, strikethrough
Parse autolink
Parse bold, italic, strikethrough

step 3 fails because of step 2
Suggested behaviour:

Parse link
Parse autolink
Parse bold, italic, strikethrough

or any alternatives as long as the bold, italic, strikethrough are parsed once.

You can view the other side of the RCA as link rule "corrupting" the input for autolink.

@s77rt Thanks for your thorough review!

Extend the negative lookahead to take into account other tags

While I think I have take all possible tags into account because when parsing autolink, we only possibly have tags, like
, , , ,  and  according to the applied rules.

Rearrange how rules are called

That's a great point. I'll check if the regex rules of ['italic', 'bold', 'strikethrough'] can all work properly in the parsing order you suggested.

@s77rt I tried to parse bold, italic, strikethrough both before and after the parsing of link and autolink. Both tries failed several test cases. I think the main reason to parse link and autolink before bold, italic, strikethrough is that characters like _, *, and ~, are all legal in url and they'll mess up parsing link and autolink if parsed before url.
If not parsing bold, italic, strikethrough when parsing link here, then we can parse them in the order you suggested

Parse link
Parse autolink
Parse bold, italic, strikethrough

and get following failing tests

To fix those failed tests, I think we need to improve regex rules of bold, italic, strikethrough. Hmm, it looks a little bit tricky to fix them all.

@eh2077 Yeah the idea is to parse bold, italic, strikethrough after anchor tag is formed and not before. There is also an idea of doing this:

Parse link -> Parse autolink inside that link -> Parse bold, italic, strikethrough
Parse autolink -> Parse bold, italic, strikethrough

Not sure this is the optimal way of doing it, but it may lead to more ideas

Not overdue. Working on proposals...

Upwork job price has been updated to $2000

Proposal
Please re-state the problem that we are trying to solve in this issue.
The hyperlink line under * here * changes after a few seconds, when inserting the message: [click google.com *here*](google.com)
What is the root cause of that problem?
Nested formatting can be a problem when working with regular expressions because it can interfere with the patterns being matched. In this case, if the autolink regex matches a piece of text that already contains formatting tags (e.g. strong, em, del), the resulting HTML may be incorrect or invalid. This is because the autolink replacement function is adding its own formatting tags around the matched text, which may conflict with the existing tags.
What changes do you think we should make in order to solve the problem?
We can change the rule ordering.
Current behaviour:

Parse link
Parse autolink
Parse bold, italic, strikethrough

Suggested behaviour:

Parse link
Parse bold, italic, strikethrough
Parse autolink

Having the rules in this order an then calling replaceAll('', '').replaceAll('', '').replaceAll('', '').replaceAll('', '').replaceAll('', '').replaceAll('', '') in the autolink replacement function, ensures that the resulting HTML will be valid and display correctly.
What alternative solutions did you explore? (Optional)
Negative lookbehind assertion (?<!) to ensure that the formatting characters are not preceded by a closing  tag.

@WikusKriek Thanks for the proposal. Your RCA is a little unclear / incomplete. Can you please elaborate?

This is because the autolink replacement function is adding its own formatting tags around the matched text

This is not necessary a problem, we still need to parse bold, italic, strikethrough rules within matched the autolink text.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Incorrect parsing on formatted text after URL inside link.
What is the root cause of that problem?
the 'autolink' process modifyTextForUrlLinks work in loop to match all auto links in the text, but there is no case to prevent matching nested auto links or to prevent replace them.
while (match !== null) {
    // do replace here
    ...
    // Now we move to the next match that the js regex found in the text
    match = regex.exec(textToCheck);
}

// for example for loop result
// text >>> [click google.com *here*](google.com)
// loop 1 >> click google.com here
// loop 2 >> click google.com here

What changes do you think we should make in order to solve the problem?
prevent replace nested auto links.
// add this line here above if (abort) {} else {}

if (replacedText.lastIndexOf(' replacedText.lastIndexOf(' Parse autolink inside that link -> Parse bold, italic, strikethrough
Parse autolink -> Parse bold, italic, strikethrough

Not sure this is the optimal way of doing it, but it may lead to more ideas

@s77rt I spent a bit more time on researching this. Here is the update
I think we don't need to parse autolink inside a link because nested links are illegal, see this SO discussion.
So the parsing steps should be

Parse link -> Parse bold, italic, strikethrough
Parse autolink -> Parse bold, italic, strikethrough

which is same with the current implementation. I did try to get this issue fixed with the idea of rearranging the order of parsing but no luck without making changes to existing regex rules.

@ahmedGaber93 Thanks for the proposal. Your RCA is correct, but I think the suggested fix can be improved, can we move that check into the regex so the text won't even match? I think we can achieve that using lookbehind but it has poor support on iOS Safari so let's try to avoid that.

@s77rt I think what you're looking for here is my original proposal https://github.com/Expensify/App/issues/17772#issuecomment-1520699876. Is it?

@eh2077 I didn't mean to parse nested links. I meant to execute the rule autolink inside the matched text of link before applying the bold, italic, strikethrough. If we do that the match will fail and we won't parse nested links, and that's the goal.

@s77rt Thanks for the explanation.

We still have two approach I suppose:

Change autolink regex not to match nested links (links that are already inside an anchor tag)

Yes, I agree with it and I proposed a solution in my proposal.

Change order of rules so the autolink will simply not match the nested links (this requires to change when to apply bold, italic, strikethrough rules - they must be applied after autolink)

I also have researched this potential solution and I found that we'll need to change regex rules of bold, italic and strikethrough to get things worked. I updated in the comment and you might check it if you occasionally missed that comment.

@s77rt

can we move that check into the regex so the text won't even match? I think we can achieve that using lookbehind but it has poor support on iOS Safari.

I think disable matching nested auto links will have a high level of complexity.
In the below case, we can use similar behavior to simulate lookbehind.
[click google.com *here*](google.com)
click google.com here

But we need to cover these cases also, not only the case above.
// change *here* position.
[click *here* google.com  *here* ](google.com)
click here google.com here

// put link in bold * google.com *.
[click * google.com * here ](google.com)
click  google.com

use nested strong en del

// nested strong en del
[click *_~here~_* google.com *_~here~_* ](google.com)
click here google.com here

// before and after auto link
google.com [click google.com *here*](google.com) google.com

and rich text like this
[click ~here~ *_~here~_* *_~google.com~_* click google.com othertext *here* *_here_* othertext *_~here~_* othertext](google.com)

  click
  here
  here
  google.com // nested autolink
  click
  google.com  // nested autolink
  othertext
  here
  here
  othertext
  here
  othertext

@eh2077

I think what you're looking for here is my original proposal https://github.com/Expensify/App/issues/17772#issuecomment-1520699876. Is it?

Not exactly. Your proposal is based on other tags (del, em, etc.). I'm looking for a regex that is based on the anchor tag only i.e. do not match urls inside anchor tags.

@ahmedGaber93 Thanks for the follow up. I'm not totally opposed on achieving that using string operations, similarly on how we are doing it on excluding email addresses. However your solution will abort all following urls if any nested url is matched (and aborted), example: [click google.com *here*](google.com) github.com.

@eh2077

I think what you're looking for here is my original proposal #17772 (comment). Is it?

Not exactly. Your proposal is based on other tags (del, em, etc.). I'm looking for a regex that is based on the anchor tag only i.e. do not match urls inside anchor tags.

Hi @s77rt , in the solution part, I said

To fix this issue, we can improve the ending negative lookahead group (?![^<]*(<\/pre>|<\/code>)) of autolink-to-html regex to skip  ,  and  tags inside the  tag. So we need to let it skip the match if the substring(after the captured url) includes ,  and  tags and ends with ,
 or  tags. The new ending negative lookahead group can be (?!([^<]*<\/?(strong|em|del)>)*[^<]*(<\/pre>|<\/code>|<\/a>))

I think my solution does add a negative lookahead group based on the anchor tag(parsed by previous link rule) only. The new ending negative lookahead group I proposed is to skip matching url inside anchor tags. Note that based on the current parsing order, the anchor tag matched in the parsing autolink is possible to contain  ,  and  tags inside it. There's possible to have a more optimistic regex but I think I did come up the kind of solution in my proposal.
I'm sorry to restate my proposal again but I'm just worried about we're missing some context of my original proposal because we discussed much about the other possible solution and you maybe multi-threading on many issues😄.

@s77rt

I'm not totally opposed on achieving that using string operations, similarly on how we are doing it on excluding email addresses. However your solution will abort all following urls if any nested url is matched (and aborted), example: click google.com here github.com.

My fix using isNested will not abort any of the following urls. But using the way of excluding email addresses will do, this because we use abort inside loop, and when is set to true inside loop in the first time, it will still true for all next times in loop, see code below.
let abort = false; // variable scope out of while
let i = 0;
while (i < 5) {
    // we need to abort fist time only
    // but because abort default value out of while scope if it set to true in first time, it still true for all next times inside loop
    if (i === 0){
        abort = true;
    }

    if(abort) console.log(i);
    i ++;
}

//log result 0 1 2 3 4

regarding the code above, excluding email addresses behavior may have an issue, if we type<EMAIL_ADDRESS>google.com google.com the first part with @ will set abort = true; and all the next auto links will abort.
The fix should be.
while () {
    abort = false; // <<<<<<<<<<<< default value should be set inside the loop to reset every time loop
    if (some case){
        abort = true;
    }
}

But this out of the issue scope, and may need more investigation and more tests, so I will report it in slack, and for this issue we can use different case like my proposal isNested instead of abort.

while () {
    // isNested will define again every time inside the loop
    const isNested = replacedText.lastIndexOf(' replacedText.lastIndexOf('');
    if (abort || isNested) {
        abort = true;
    }
}

https://user-images.githubusercontent.com/41129870/235879919-cb6e63ad-7c90-42f5-8eaa-093993246adc.mov

@eh2077 Your regex does the following: Do not match urls if they are next to strong, em or del tags. This is really not self-explanatory and may feel like a workaround.
What I'm looking for (as a regex solution) is: Do not match urls if they are inside a tags. This is self-explanatory that we are not looking to match urls inside other urls (prevent nested parsing)

@eh2077 Your regex does the following: Do not match urls if they are next to strong, em or del tags. This is really not self-explanatory and may feel like a workaround.
What I'm looking for (as a regex solution) is: Do not match urls if they are inside a tags. This is self-explanatory that we are not looking to match urls inside other urls (prevent nested parsing)

@s77rt Thanks for the comment. But sorry, I don't think you understand the new ending negative lookahead regex I proposed very well. The new negative lookahead regex (?!([^<]*<\/?(strong|em|del)>)*[^<]*(<\/pre>|<\/code>|<\/a>)) added the alternative <\/a> in the last group to skip the match if it's inside the an anchor tag. And I explained about why need to handle/skip strong, em or del tags in the last comment

Note that based on the current parsing order, the anchor tag matched in the parsing autolink is possible to contain  ,  and  tags inside it.

You can check my original proposal for the detail explanation of the new ending negative lookahead regex.

@ahmedGaber93 Right, my bad. That would work, but let's try to fix that at a higher level by not matching the text in the first place.

@eh2077 I understood that. I just feel the dependency of specifying the tags in the regex is not a very good thing. For instance that regex won't work correctly with inline code tag since it's missing in the regex, and we may encounter similar bugs for new tags.

BTW the regex fails for many tags and not just the anchor tag, e.g.
google.com here
 this will wrongly match google.com for autolink but this case will never occur since the input will never have parsed bold, italic, strikethrough rules. That's why I'm pushing for the re-arrangement solution.

BTW the regex fails for many tags and not just the anchor tag, e.g.
google.com here
 this will wrongly match google.com for autolink but this case will never occur since the input will never have parsed bold, italic, strikethrough rules. That's why I'm pushing for the re-arrangement solution.

No, it won't because here inside
 tag is escaped before processing.

Not because  it's escaped but because it never arrives at this state, it will arrive as an input as '''google *here*''' and not '''google here'''

Not because it's escaped but because it never arrives at this state, it will arrive as an input as '''google *here*''' and not '''google here'''

Sorry I don't think we support the use case you mentioned above. AFAIK, we don't parse strong, del, strikethrough inside the codefence(aka pre tag in html).

Oops a bad example :sweat_smile:

@eh2077 I have pointed a failing case already
[click test.com `here`](google.com) github.com

This can be fixed easily but shows the downside of the tags dependency. Can we improve the regex not to relay on such tags?

@s77rt

but let's try to fix that at a higher level by not matching the text in the first place.

yes, I already try it before writing my proposal, but I can't find any regexp can support all cases below like abort or isNested
[click google.com *here*](google.com)
[click google.com *here*](google.com) google.com
google.com [click google.com *here*](google.com)
[click google.com *here*](google.com) [click google.com *here*](google.com)
[click google.com *here*](google.com) google.com [click google.com *here*](google.com)
[click *_~here~_* google.com *_~here~_* ](google.com)
[click ~here~ *_~here~_* *_~google.com~_* click google.com othertext *here* *_here_* othertext *_~here~_* othertext](google.com)

@ahmedGaber93 Thanks! I think @eh2077 proposed regex solution can handle those cases as well. Both solutions are acceptable. I think I'm more inclined towards the regex solution since it prevent us from matching the text in the first place rather than matching it then ignoring.

What I'm looking for (as a regex solution) is: Do not match urls if they are inside a tags. This is self-explanatory that we are not looking to match urls inside other urls (prevent nested parsing)

@s77rt I just figured out a new negative lookahead regex that follows this idea. The new regex is (?!((?:(?!<a).)+)?<\/a>|[^<]*(<\/pre>|<\/code>)). There're two alternative groups of the outer negative lookahead group, ((?:(?!<a).)+)?<\/a> and [^<]*(<\/pre>|<\/code>).
The first alternative group ((?:(?!<a).)+)?<\/a> is what you expected I think. See below picture about the test cases and regex explanation

@eh2077 Cool! That's what I'm looking for.
So the idea is basically to not match urls if they are followed by  (because we assume those are nested) with the exception if there is another open <a tag (to be sure the matched close tag include the url). Would that be about right?
Can you please compile more tests for that? (and send regex101 url)

@s77rt Great to hear that!

So the idea is basically to not match urls if they are followed by  (because we assume those are nested) with the exception if there is another open <a tag (to be sure the matched close tag include the url). Would that be about right?

Yes, the idea is to check text after the matched url

If we find substring <a before substring , then we assume that the matched url is not nested
If we find substring  before substring <a, then we assume that the matched url is nested and skip this match

The regex101.com does't support sharing by url but you can use below regex
/test\.com(?!((?:(?!<a).)+)?<\/a>|[^<]*(<\/pre>|<\/code>))/gi

and text to test
click test.com
click test.com</a

click test.com here
click test.com here</a

click test.com here
click test.com here</a

click test.com here
click test.com here</a

click test.com click test.com here
click test.com click test.com here</a

@eh2077 Thank you! I would love to get the regex a little bit simplified (in the 2nd negative lookahead) but this is not a blocker.
:ribbon: :eyes: :ribbon: C+ reviewed
cc @tylerkaraszewski

I agree that this is not the most straightforward regex but I think it's the best option we have so I say we should accept @eh2077's proposal.

We have a proposal. @tylerkaraszewski Can you please assign @eh2077

Ah, it looks like I prepared the PR a little bit earlier😄. The PR https://github.com/Expensify/expensify-common/pull/529 for expensify-common is ready for review. Please help to review it at your convenience, thanks!
cc @s77rt @tylerkaraszewski

Not overdue. We have a PR for expensify-common https://github.com/Expensify/expensify-common/pull/529

@s77rt @tylerkaraszewski The PR https://github.com/Expensify/App/pull/18697 to update expensify-common is ready for review. Please help to review it at your convenience, thanks!

It's merged, Melvin.

The PR that introduced the bug has been identified: This seems to be a bug since day one. I found this PR that seems to party (unintentionally?) fix the nested links issue.
The offending PR has been commented on: n/a
A discussion in #expensify-bugs has been started: https://expensify.slack.com/archives/C049HHMV9SM/p1684151092856929
Determine if we should create a regression test for this bug: No, we have automated tests for this.

No regressions so paying this out.
Speed bonus applies.
Paid everyone
Closed Upwork job
Closing this as complete (since no regression test)


error while copy large file

Preflight Checklist

[X] I have installed the latest version of Storage Explorer.
[X] I have checked existing resources, including the troubleshooting guide and the release notes.
[X] I have searched for similar issues.

Storage Explorer Version
1.19
Regression From
No response
Architecture
x64
Storage Explorer Build Number
No response
Platform
Windows
OS Version
No response
Bug Description
Getting some error while copying .5TB sql server .bak file from storage explorer to data lake gen2.
UnexpectedCancel (used SAS, discovery completed)
2022/11/14 19:12:00 ERR: [P#0-T#0] UPLOADFAILED: \?\UNC\amlin.com\it\DBBackups_DBA_D1\D1_Restores\PPM Backup\PPM\PPM_FULL_01_of_16.bak : 403 : 403 Forbidden. When Staging block. X-Ms-Request-Id:
Dst: https://msalake.blob.core.windows.net/ppdbcopy/backup/PPM_FULL_01_of_16.bak?se=2022-12-14T18%3A15%3A29Z&sig=-REDACTED-&sp=rwl&sr=c&sv=2021-08-06
2022/11/14 19:12:00 JobID=b4bec8a2-dc23-aa4b-4a06-8616df7b4b0c canceled
2022/11/14 19:12:01 PERF: primary performance constraint is Disk. States: X:  0, O:  0, M:  0, L:  0, R:  0, D:  1, W:  0, F:  0, B:  0, E:  0, T:  1, GRs: 11
2022/11/14 19:12:01 16.5 %, 0 Done, 0 Failed, 1 Pending, 0 Skipped, 1 Total, 2-sec Throughput (Mb/s): 294.7905 (Disk may be limiting speed)
2022/11/14 19:12:02 ==> REQUEST/RESPONSE (Try=1/675.6881ms, OpTime=675.6881ms) -- RESPONSE SUCCESSFULLY RECEIVED
GET https://msalake.blob.core.windows.net/ppdbcopy/backup/PPM_FULL_01_of_16.bak?blocklisttype=all&comp=blocklist&se=2022-12-14T18%3A15%3A29Z&sig=-REDACTED-&sp=rwl&sr=c&sv=2021-08-06&timeout=31
X-Ms-Request-Id: [2ea474e3-001e-0037-145c-f82581000000]
2022/11/14 19:12:02 ==> REQUEST/RESPONSE (Try=1/12.0049ms, OpTime=13.0064ms) -- RESPONSE STATUS CODE ERROR
DELETE https://msalake.blob.core.windows.net/ppdbcopy/backup/PPM_FULL_01_of_16.bak?se=2022-12-14T18%3A15%3A29Z&sig=-REDACTED-&sp=rwl&sr=c&sv=2021-08-06&timeout=30
User-Agent: [Microsoft Azure Storage Explorer, 1.26.1, win32, azcopy-node/2.7.1-rc.1 (win32)  AzCopy/10.16.0 Azure-Storage/0.15 (go1.17.9; Windows_NT)]
X-Ms-Client-Request-Id: [dfb3f101-7e7b-4666-506a-8346c497f87a]
X-Ms-Version: [2020-10-02]
RESPONSE Status: 403 This request is not authorized to perform this operation using this permission.
Content-Length: [279]
Content-Type: [application/xml]
Date: [Mon, 14 Nov 2022 19:12:02 GMT]
Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
X-Ms-Client-Request-Id: [dfb3f101-7e7b-4666-506a-8346c497f87a]
X-Ms-Error-Code: [AuthorizationPermissionMismatch]
X-Ms-Request-Id: [2ea47743-001e-0037-395c-f82581000000]
X-Ms-Version: [2020-10-02]
Response Details: AuthorizationPermissionMismatchThis request is not authorized to perform this operation using this permission.
2022/11/14 19:12:02 JobID=b4bec8a2-dc23-aa4b-4a06-8616df7b4b0c, Part#=0, TransfersDone=1 of 1
2022/11/14 19:12:02 all parts of entire Job b4bec8a2-dc23-aa4b-4a06-8616df7b4b0c successfully completed, cancelled or paused
2022/11/14 19:12:02 all parts of entire Job b4bec8a2-dc23-aa4b-4a06-8616df7b4b0c successfully cancelled
2022/11/14 19:12:02 is part of Job which 1 total number of parts done
2022/11/14 19:12:03 PERF: primary performance constraint is Unknown. States: X:  0, O:  0, M:  0, L:  0, R:  0, D:  0, W:  0, F:  0, B:  0, E:  0, T:  0, GRs: 11
2022/11/14 19:12:03 0.0 %, 0 Done, 1 Failed, 0 Pending, 0 Skipped, 1 Total,
Steps to Reproduce
connect to azure data lake, create new folder ans use storage explorer to copy
Actual Experience
error while copying
Expected Experience
No response
Additional Context
No response

@kuldeepmalhotra123 how did you connect to your two containers? Did you attach each of them? Or for one/both of them, did you sign-in, and then go into a subscription?

via storage explorer. The files are at my machine, they are .5TB each.
On Mon, 21 Nov 2022 at 18:24, Matthew Rayermann @.***>
wrote:

@kuldeepmalhotra123 https://github.com/kuldeepmalhotra123 how did you
connect to your two containers? Did you attach each of them? Or for
one/both of them, did you sign-in, and then go into a subscription?
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/AzureStorageExplorer/issues/6276#issuecomment-1322476084,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUPFXSBYDKYIH4SCWGFA5KTWJO44LANCNFSM6AAAAAASAF4PHM
.
You are receiving this because you were mentioned.Message ID:
@.***>

Yes, I know you are using Storage Explorer. But how did you connect Storage Explorer to the destination container?

Did you choose the first option I marked in red, or the second?
Also, any chance something else is writing to the destination blob at the same time? Is there already a blob at the destination? E.g., as part of this upload are you overwriting existing data?

I am using first option and there is no existing data.

On Nov 21, 2022 at 6:46 PM,  <Matthew Rayermann @.***)>  wrote:
Yes, I know you are using Storage Explorer. But how did you connect Storage Explorer to the destination container?
(https://user-images.githubusercontent.com/21112697/203135096-ff3e1c00-b1b6-4489-b912-f6bde9b1ae3a.png)
Did you choose the first option I marked in red, or the second?
Also, any chance something else is writing to the destination blob at the same time? Is there already a blob at the destination? E.g., as part of this upload are you overwriting existing data?
—
Reply to this email directly,   view it on GitHub (https://github.com/microsoft/AzureStorageExplorer/issues/6276#issuecomment-1322499038), or   unsubscribe (https://github.com/notifications/unsubscribe-auth/AUPFXSGNQSE24OZBDXP6D3TWJO7O7ANCNFSM6AAAAAASAF4PHM).
You are receiving this because you were mentioned.Message ID:  @.***>

@kuldeepmalhotra123 can you:

Try again in Storage Explorer, and if it fails...
Click "copy azcopy command to clipboard"
Paste and save that somewhere
Download AzCopy: https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10
Run the command yourself via the command line
See if AzCopy spits out any other errors?
Regardless of step 6, if running on the command line also fails, please go to <your user directory>/.azcopy, find the newest log file, and share with us here.

Unfortunately we are stumped right now.

Closing due to lack of response. If you are still encountering this problem and need help, we recommend opening an Azure support ticket via the Azure portal.


absolute positioning

position:absolute doesn't seem to be supported.
-Add a test page that shows this
-Implement
https://developer.mozilla.org/en-US/docs/Web/CSS/position#absolute
tldr for a short version:
-take box out of flow
-move box to top left of nearest fixed/absolute/relative positioned ancestor
-move box according to top/left.

@alfattack can you see if this is feasible?

PR here


Popup a window on clicking a project under project tab

On clicking on any project under Project Tab i want that a window should pop up which consist of :

Project Name
Project Description
Project Links
Language Used

hey, @0xPrateek can u assign me this issue?

I am assigning you this issue. I hope you are clear about what we want to be done. Please make sure to update your work after getting assigned so that we can confirm that you are working on it.

@0xPrateek sure

@0xPrateek plz assign this issue to someone else

Okay..!


[studio] chore: clear-all button placement update

@r4zendev, I totally forgot about this PR! This was meant to be closed. Sorry I made you waste your time on this:(


Discussion: How do we build a manifest for the SEGA Model 3 emulator Supermodel (uses random string for builds)?

Here's an example of a download URL: https://supermodel3.com/Files/Git_Snapshots/Supermodel_0.3a-git-a60f998_Win64.zip
So the a60f998 portion is what changes with each release to another random string.
The repository itself has nice dated releases, that part should be easy to figure out - the random string is the issue.
I wonder if what's used in this manifest would work?

git-(?'hash'[\da-z]+)_Win64.zip
This should produce a hash capture group for use in the manifest.

Great start!
Now the question, how do we specify a regex that covers both the date in the repository - as well as the hash of the download?

That's a good question. I'm not sure.
I've tried -(?'hash'[\da-z]+)_Win64\X*?(?'date'[\d\-]{10}) which should work.
But, it comes with multiple matches and scoop doesn't understand the \X.
I don't know how to make it work right now.
Also you will need to use https://supermodel3.com/Files/Git_Snapshots/?C=M;O=D for the checkver URL. I don't know what the default sorting is on the page, but it is not by date.

Ah, so even if the date is specified, it doesn't matter because it's out of order; Scoop needs everything to fall in place sorted and doesn't "count up the date"?

Yes, if I remember correctly checkver.ps1 picks up the first (or it might be last) regex match for determining if an update is available.
I'm also taking a shot at setting up a github actions flow for compiling supermodel, but I can't get the windows builds to work, mingw and make can't find SDL. Maybe the repo owners would be willing to take a look at it? Would definitely be better than the python script right now used to push new builds to the website. https://github.com/trzy/Supermodel/blob/master/Scripts/supermodel_build_bot.py

Created a post over on their repo.


Mei data in all clusters

Problem
Have some sample manufacturer specific attributes and commands in Mode select cluster in all-clusters-app
Fixes #16886
Testing
Codegen looks like it generated extra attributes and commands.

Extending attributes "works" as long as you then don't try to use cluster-objects generated bits for them, which don't exist without regenerating app-common.  That means no using the typeinfo.  And the attributes better not have structs in them.
And if you regenerate app-common, extending commands works too.


Change author's name in PyLadies South Florida entry

@InessaPawson, I wondered what you think about changing the author in the PyLadies SoFlo entry to "PyLadies South Florida" instead (we have it similar with PyLadies London and PyLadies Bengaluru. We can add a new separate entry for you as well, if you want ☺)
It currently looks like this:

https://botsin.space/@pyladies_bot/111294420672346089
Let me know what you think ☺ I'm happy to make a PR with suggestions for the change.

Sounds good to me, @cosimameyer!
No need for an additional entry. Thank you for spreading the word about the work of PyLadies!

Thanks so much for the quick feedback 🙌 I'll take care of the changes and send you the PR for review ☺


snarkos: 2.2.4 -> 2.2.7

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/AleoHQ/snarkOS/releases.
meta.description for snarkos is: A Decentralized Operating System for Zero-Knowledge Applications
meta.homepage for snarkos is: https://snarkos.org
Updates performed

Rust version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.2.7 with grep in /nix/store/dx0czdxxd8c3fp9y1m3p8lhlf3545lyi-snarkos-2.2.7
found 2.2.7 in filename of file in /nix/store/dx0czdxxd8c3fp9y1m3p8lhlf3545lyi-snarkos-2.2.7

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
snarkos

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/dx0czdxxd8c3fp9y1m3p8lhlf3545lyi-snarkos-2.2.7 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A snarkos https://github.com/r-ryantm/nixpkgs/archive/f4df6bd43f9a5c6a1bbe60b1671dff496c5714ce.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/f4df6bd43f9a5c6a1bbe60b1671dff496c5714ce#snarkos

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/dx0czdxxd8c3fp9y1m3p8lhlf3545lyi-snarkos-2.2.7
ls -la /nix/store/dx0czdxxd8c3fp9y1m3p8lhlf3545lyi-snarkos-2.2.7/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

snarkos

Maintainer pings
cc @happysalada for testing.

Result of nixpkgs-review pr 276278 run on x86_64-linux 1

1 package built:

snarkos


Fix wrong example in PATCH_SIZE

Change one of duplicated function to bar() from foo() in example
ISSUE=none

@hyungheo any update? If you don't want to continue this work, I'll close this.

DONE
It has been updated

@hyungheo You have to update PR commit description as well?

DONE
Comment of PR has been  also updated


File Browser hides behind the editor

During open a file or save as the file browser hides behind the editor (lost focus), only showing vscode file open is ready.
My system Ubuntu 20.04 LTS

Merging to https://github.com/microsoft/vscode/issues/146422


Fixing right click bug

Thanks for finding this bug and proposing a solution.  I borrowed from your ideas for the fix in version 0.1.7.


Convert OpenSimplexNoise to FastNoiseLite

This PR adds the conversion of:

OpenSimplexNoise to FastNoiseLite
Noise property octaves to fractal_octaves.

Thanks!

What about other properties like period, persistence, lacunarity?

What about other properties like period, persistence, lacunarity?

period and persistence do not exist anymore. Therefore it is not easy to convert them.
We can consider converting lacunarity. As far as I can tell, it works the same, just got renamed to fractal_lacunarity.

Cherry-picked for 4.0.1.

backport to 3.5 please :-)


[BUG] ImportError after clean install and first run

I am on an M1 Mac and I can't run iopaint.

I ran pip install iopaint successfully
When I run iopaint start --model=lama --device=cpu --port=8080 I get this error:
ImportError: dlopen(/opt/anaconda3/lib/python3.12/site-packages/PIL/_imaging.cpython-312-darwin.so, 0x0002): symbol not found in flat namespace '_opj_encoder_set_extra_options'

Complete install and error log: install_error_log.txt

It should be related to the Python version; please try using 3.10.


Chromium/Chrome compatibility

Works smoothly on Firefox, but not on Chrome and Chromium.
Nice project!

Which version of Chrome? I'm getting reports of it working well in Chrome but not Firefox. Haha!

:smile:
I am on Chromium Version 39.0.2171.65 Ubuntu 14.10 (64-bit).  But it has the same behavior on Chrome, same platform.

Seconded, Chrome 41.0.2272.17 beta (64-bit) Mac Yosemite
Here's an example:
http://gfycat.com/MajesticTightAntipodesgreenparakeet

Seems like it's not performing nicely on Chrome. Will need to analyze in detail.

Does not work "smoothly" on iOS here.

Any news about this bug?
I found the problem on Chrome (v41) on OSX and Windows and Firefox on OSX.
Firefox on Windows and Safari on OSX are ok.

Hi guys. Try this version: https://github.com/Bounz/Parallax-Scroll/commit/4a860de8fc3ca9850f0958457f970c251a144d80


BL-588 Feature/schema cleanup update

Description

Removed MentorIntake and Resource from schema.py
Removed updated_at field in Mentor, Mentee, MentorUpdate, and MenteeUpdate
Changed 'heard_about' in Mentee and MenteeUpdate to 'referred_by' to match Mentor collection.

Type of change

[x] New feature

Checklist:

[x] My code follows PEP8 style guide
[x] I have removed unnecessary print statements from my code
[x] I have made corresponding changes to the documentation if necessary
[x] My changes generate no errors
[x] No commented-out code
[x] Size of pull request kept to a minimum
[x] Pull request description clearly describes changes made & motivations for said changes

Loom'd

for Lo! a loom was loomed
https://www.loom.com/share/238fb935763247a8a7e6d183c475178f

Always love to see simplification of the schema! Changing to "referred by" sounds and looks much better. Nice!


Fail msetnx if passed arguments are empty

Resolves #151

Hello!  Let me know if there's more I can do here.  I ran into this discrepancy in our production code and noticed the fix to the mocking library was pretty straightforward.

Thanks much @skwong2


Bug in NLL with odd number of inputs

If I try to train the NLL with a odd number of input variables I get the following error:

RuntimeError                              Traceback (most recent call last)
<ipython-input-22-47d2a454fcfa> in <module>
----> 1 nll.train(inputs=x_torch[:, :-1],
      2           gradients=df_torch[:, :-1],
      3           interactive=False)

~\anaconda3\lib\site-packages\athena_mathlab-0.1.2-py3.8.egg\athena\nll.py in train(self, inputs, gradients, outputs, interactive, target_loss, optim_args, scheduler_args)
    124             optimizer.zero_grad()
    125             mapped_inputs = self.forward(inputs)
--> 126             loss = self.forward.customized_loss(inputs, mapped_inputs,
    127                                                 gradients)
    128

~\anaconda3\lib\site-packages\athena_mathlab-0.1.2-py3.8.egg\athena\nll.py in customized_loss(self, inputs, mapped_inputs, gradients)
    457         JJJ = torch.div(Jacob, JJ2.expand(-1, -1, 2 * self.n_params))
    458         ex_data = torch.unsqueeze(gradients, 2)
--> 459         loss_weights = torch.clone(torch.squeeze(torch.matmul(JJJ, ex_data),
    460                                                  2))
    461         # anisotropy weigths

RuntimeError: Expected batch2_sizes[0] == bs && batch2_sizes[1] == contraction_size to be true, but got false.  (Could this error message be improved?  If so, please report an enhancement request to PyTorch.)

Looking at the code, the class ForwardNet in the nll module doesn't seem to handle this case at all.
For example in line 344 of nll.py you split the inputs in groups of size n_inputs // 2 and then take the first two components of this split
bb = torch.split(inputs, self.n_params, dim=1)
vars()['var0_y'] = torch.clone(bb[0])
vars()['var0_z'] = torch.clone(bb[1])

in this way if the number of inputs is odd you are removing the last one.

Dear @laurabalasso, thank you for reporting this behaviour, we should put a warning.
Nonetheless, it is expected since NLL needs an even number of input parameters by construction (look at the figures in the reference paper, for example). We do not know if a generalization is possible with this kind of NN architecture.

Let us know if this works for your test problem.
Best,
Marco


feat(STADTPULS-639): Implement list display of sensors

This PR implements the denser, sensors list as follow:

Very nice. That was pretty quick. 🚀
Some things I noticed:

user names should be left aligned to their column
What happens with very long usernames?
in the screenshot on (done in staging env) the first row has a different offset then the following due to long descriptions and what not
The animation for the hover highlight could be quicker. So only one is highlighted at the time
The small chart has a small line at the end
should there be a chart when there are no values?
The value above the chart is the last value right? On first glance I thought it was the number of records.
Icon and username a center aligned / icon and category are top aligned

Not sure if intended: I think the sensor names (leftmost) are too big. I would reduce their size quite a bit to the size of the rest of the text in the row. It could still be bold

.

Thx @ff6347 and @Esshahn a lot for your review! Good points!

user names should be left aligned to their column

AND

in the screenshot on (done in staging env) the first row has a different offset then the following due to long descriptions and what not

This only happens in extreme cases in order to maximize the number of displayed characters (Here it's the long aaaaaa word). In 99% of the cases, this doesn't happen.

What happens with very long usernames?

You can see this case using the storybook story. It looks like this:
https://user-images.githubusercontent.com/2759340/148385543-d0fcabc2-0697-46f3-a174-70715751ed9a.mov

The animation for the hover highlight could be quicker. So only one is highlighted at the time

I'm not sure what you mean. I don't see multiple things highlighted at once when hovering. Could you please clarify? Thx

The small chart has a small line at the end

This is intended. This shows that the value displayed in the top right corner relates to the last value in the chart.

should there be a chart when there are no values?

Hmm.. I think both is ok. It visually shows that there isn't any data. There also is the text "Keine Daten". I'm ok with both.

The value above the chart is the last value right? On first glance I thought it was the number of records.

The gray line is supposed to help with that. But maybe this isn't enough. Any suggestion on how to solve this?

Icon and username a center aligned / icon and category are top aligned

True! Good catch!

Not sure if intended: I think the sensor names (leftmost) are too big. I would reduce their size quite a bit to the size of the rest of the text in the row. It could still be bold

I have reduced the font size

I'm not sure what you mean. I don't see multiple things highlighted at once when hovering. Could you please clarify? Thx

I mean the reaction time of the hover effect is very slow if I move over the rows. See the gif

This only happens in extreme cases in order to maximize the number of displayed characters (Here it's the long aaaaaa word). In 99% of the cases, this doesn't happen.

Can you try it with real german text. Since german tends to have way longer words then english

I mean the reaction time of the hover effect is very slow if I move over the rows

I completely removed the transition. It was configured to last only 150ms, which rather indicate some inefficiency on the performance side of things. I think without animation it looks just snappy and sharp.

Can you try it with real german text. Since german tends to have way longer words than English

I did. You can test the behavior yourself in the storybook. Here is a video:
https://user-images.githubusercontent.com/2759340/148405192-99791a4d-d7fc-44cc-975d-afb24287f0d1.mov

This is really nice! The look of the new page is much better than the previous one and I like your implementation as well.
Also, the previous discussions resulted in good improvements - I have nothing to add.

Thx! Glad you like it! :)

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


SSO not working with self-signed certificate

Describe the bug
When trying to login to Opensearch Dashboards, dashboard is not loading, with an "The page isnt working, <kibana/os-dash>.internal.lan redirected too many times" error. Using truststore configured in Opensearch.yml.
When the truststore is provided as runtime parameter (not an Opensearch.yml ssl configuration), SSO from OS-Dash to Opensearch works as expected.
To Reproduce
Steps to reproduce the behavior:

Set up a truststore, truststore.jks - with the local root and intermediate CA's in it.
Reference truststore.jks in the plugins.security.ssl.transport.truststore_filepath and plugins.security.ssl.http.truststore_filepath Opensearch.yml configuration.
Attempt SSO from Opensearch Dashboards; redirect URL from OS-Dash to SSO (keycloak) is ok; do a Keycloak login, the connect provider calls back Opensearch using the redirect url that has been set up in OS-Dash; the OIDC role and profile is ok.
The getting a continuous stream of console log messages in OS-Dash:

log   [11:10:16.305] [error][data][opensearch] [ConnectionError]: connect ECONNREFUSED ossearch.internal.lan:9200
log   [11:10:16.728] [error][data][opensearch] [ConnectionError]: connect ECONNREFUSED ossearch.internal.lan:9200
...

Expected behavior
With a valid redirect url, JWT response with valid key, Opensearch can run [keybyoidc] JwtVerifier on the key returned in the JWT token.
Plugins
Unmodified Opensearch 1.2.0 docker install, apart from configuration files.
Screenshots
Host/Environment (please complete the following information):

OS: Gentoo
Version latest

Additional context
NOTE 1: Error in the Opensearch
[2022-01-15T11:06:31,459][DEBUG][c.a.d.a.h.j.k.SelfRefreshingKeySet] [ossearch.internal.lan] performRefresh(pNYNaCIKS5HmZcc8zs-TMtjPnC_cY04BVbJ5amioNhI)
[2022-01-15T11:06:31,459][INFO ][c.a.d.a.h.j.k.SelfRefreshingKeySet] [ossearch.internal.lan] Performing refresh 1
[2022-01-15T11:06:31,614][INFO ][c.a.d.a.h.j.AbstractHTTPJwtAuthenticator] [ossearch.internal.lan] com.amazon.dlic.auth.http.jwt.keybyoidc.AuthenticatorUnavailableException: Authentication backend failed
[2022-01-15T11:06:31,614][WARN ][o.o.s.h.HTTPBasicAuthenticator] [ossearch.internal.lan] No 'Basic Authorization' header, send 401 and 'WWW-Authenticate Basic'
[2022-01-15T11:06:31,615][WARN ][o.o.s.a.BackendRegistry  ] [ossearch.internal.lan] Authentication finally failed for null from <IP_ADDRESS>:45846
[2022-01-15T11:06:31,614][WARN ][c.a.d.a.h.j.k.SelfRefreshingKeySet] [ossearch.internal.lan] KeySetProvider threw error
com.amazon.dlic.auth.http.jwt.keybyoidc.AuthenticatorUnavailableException: Error while getting https://sso.internal.lan/auth/realms/master/.well-known/openid-configuration: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at com.amazon.dlic.auth.http.jwt.keybyoidc.KeySetRetriever.getJwksUri(KeySetRetriever.java:149) ~[opensearch-security-<IP_ADDRESS>.jar:<IP_ADDRESS>]
	at com.amazon.dlic.auth.http.jwt.keybyoidc.KeySetRetriever.get(KeySetRetriever.java:70) ~[opensearch-security-<IP_ADDRESS>.jar:<IP_ADDRESS>]
	at com.amazon.dlic.auth.http.jwt.keybyoidc.SelfRefreshingKeySet$1.run(SelfRefreshingKeySet.java:214) [opensearch-security-<IP_ADDRESS>.jar:<IP_ADDRESS>]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]
	at java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

NOTE 2: verifying truststore on the broken instance (the one with above error); mounting SSLPoke and using truststore.jks:
 $> docker exec -it es /bin/bash -c 'java -Djavax.net.ssl.trustStore=/usr/share/opensearch/config/truststore.jks -jar /tmp/utils/SSLPoke-1.0.jar "sso.internal.lan" 9200'
Successfully connected
 $>

NOTE 3: Successful SSO, only change being introduction of javax.net.ssl.trustStore in JAVA OPTS:
docker run  -e OPENSEARCH_JAVA_OPTS="-Djavax.net.ssl.trustStore=/usr/share/opensearch/config/truststore.jks" opensearchproject/opensearch:1.2.0

@damobrisbane this doesn't look like a bug but security plugin misconfiguration. Could you open a new case in the OpenSearch Forum (https://discuss.opendistrocommunity.dev/c/security/3)?
Please share the forum case link here.

Thanks @pawelw1 - https://discuss.opendistrocommunity.dev/t/os-dashboards-login-redirecting-when-using-keycloak-and-self-signed-certs/8349

Thanks @pawelw1 and @damobrisbane . Closing this in favor of the forum post linked.