Frequent hangs when editing code in Rider

Rider 2022 (both 2022.1.2 and 2022.2 RC) hangs while one edits PowerShell code (plugin 2.0.10).
No need to run the code, just edit it.
https://youtrack.jetbrains.com/issue/IDEA-298925/ shows a stack trace.

Could you please attach a sample code here which reproduces this for you? Thank you.

Please also make sure the IDE directories (system and config) are excluded from the Windows firewall or antivirus scan.

I had the issue on Friday. I continued working on the file with the PowerShell ISE. When going back to Rider on Tuesday (Monday is a national holiday in Switzerland), I did not have the slowdown issue. I will try with other files and will go back to Friday's version.

Get-AssociatedWorkItems.zip
This is the file I was working on. The version of the day where I was having the issue. But I can no longer reproduce it.

This issue still occurs for me. IDE directories are excluded from windows firewall. For some reason it consistently hangs while typing Register-PackageSource. The code example below already causes the issue for me personally.
function Test-LaggingCode {
    param ()
    begin {}
    process {
        # Having the plugin do its magic while typing the line below will cause the editor to lag and/or freeze all together.
        Register-PackageSource -Name $feedKey -Location $feedValue -ProviderName $providerName -ConfigFile $configFileLocation -SkipValidate;

    }
    end {}
}

Export-ModuleMember -Function Test-LaggingCode;

My rider version is 2022.3.2 Powershell plugin version 2.0.10.
I also came across this while skipping through the idea.log.
2023-02-08 08:30:21,405 [  43639]   WARN - #c.i.c.d.i.AnnotationHolderImpl - 'AnnotationHolder.createInfoAnnotation()' method (the call to which was found in class com.intellij.plugin.powershell.lang.PowerShellAnnotator) is slow, non-incremental and thus can cause unexpected behaviour (e.g. annoying blinking), is deprecated and will be removed soon. Please use `newAnnotation(...).create()` instead [Plugin: com.intellij.plugin.adernov.powershell]
com.intellij.diagnostic.PluginException: 'AnnotationHolder.createInfoAnnotation()' method (the call to which was found in class com.intellij.plugin.powershell.lang.PowerShellAnnotator) is slow, non-incremental and thus can cause unexpected behaviour (e.g. annoying blinking), is deprecated and will be removed soon. Please use `newAnnotation(...).create()` instead [Plugin: com.intellij.plugin.adernov.powershell]
	at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:23)
	at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:92)
	at com.intellij.codeInsight.daemon.impl.AnnotationHolderImpl.doCreateAnnotation(AnnotationHolderImpl.java:191)
	at com.intellij.codeInsight.daemon.impl.AnnotationHolderImpl.createInfoAnnotation(AnnotationHolderImpl.java:126)
	at com.intellij.plugin.powershell.lang.PowerShellAnnotator.createInfoAnnotation(PowerShellAnnotator.kt:70)
	at com.intellij.plugin.powershell.lang.PowerShellAnnotator.annotateMemberAccess(PowerShellAnnotator.kt:58)
	at com.intellij.plugin.powershell.lang.PowerShellAnnotator.annotate(PowerShellAnnotator.kt:26)
	at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.runAnnotators(DefaultHighlightVisitor.java:131)
	at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.visit(DefaultHighlightVisitor.java:108)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.runVisitors(GeneralHighlightingPass.java:344)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.lambda$collectHighlights$7(GeneralHighlightingPass.java:283)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:304)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.lambda$analyzeByVisitors$8(GeneralHighlightingPass.java:307)
	at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.analyze(DefaultHighlightVisitor.java:93)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:307)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectHighlights(GeneralHighlightingPass.java:274)
	at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectInformationWithProgress(GeneralHighlightingPass.java:222)
	at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:97)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:57)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$1(PassExecutorService.java:379)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1111)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:371)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:370)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:346)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:173)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:182)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:344)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:181)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: com.intellij.util.IncorrectOperationException: 'AnnotationHolder.createInfoAnnotation()' method (the call to which was found in class com.intellij.plugin.powershell.lang.PowerShellAnnotator) is slow, non-incremental and thus can cause unexpected behaviour (e.g. annoying blinking), is deprecated and will be removed soon. Please use `newAnnotation(...).create()` instead
	... 36 more

#150 fixes both available stacks with freezes (and other potential problems). To my surprise, it turns out that the LSP client implementation we were using was doing blocking IO under the covers; this is no longer an issue.
The warning from @joshmar's comment is already reported as #86 and fixed.


Don't highlight code-blocks with class lang-none.

Basically, this is a way of dealing sensibly with systems that correctly
allow users to mark the language of a code block as "lang-[whatever]",
but are overly aggressive in automatically adding the "prettyprint"
class to code blocks.

How does this differ from nocode?

:+1: lang-none option might be useful to show error log or console output in code documentation. Any issue prior to merge the request?

ping?


Update Ubuntu installation doc

Package names have changed very slightly recently, but enough to let the old instructions fail
Remove reference to extremely old Ubuntu 9.10, no one should use this at this point
Remove reference to testing being done with MPICH preferentially

Note: /usr/bin/easy_install is missing in Ubuntu 18.04.
Maybe we should use sudo python -m easy_install mpi4py instead of sudo easy_install mpi4py?
This works for me.

I am ok with this, maybe add a note for older versions along the lines:
AMUSE can also be installed on older versions (up to 10.04), although in that case the package names may be slightly different.

I'll add something along those lines.
Note though that older versions of Ubuntu are not supported by Ubuntu after a very short time (normal releases) or a few years (LTS releases).
This means that installing prerequisites on those releases is a much greater effort, as the normal channels will no longer be available.
So I would suggest we do the same and not support old releases except those still supported by Ubuntu.

I have an old version of ubuntu, and all seems fine here. So I would be happier if we still have the copy+paste line for 10 < ubuntu < 18. (So for example, when we needed to did this the first time we made the 9.04 paragraph)

Not sure which old version you use, but in my experience it requires a lot of work to keep an unsupported version working - at least changing the apt sources etc.
Anyway, I have no problem keeping old instructions around other than that displaying everything makes things less clear.
This is something we should address, but this is probably not the right pull request for that.
I'll re-add the 'old versions' section for this one.

see #448


[Feature Request]

Hi Team,
My suggestion is, google card slider (carousel) should be available in material2 with draggable functionality .
Thanks

Please use the issue template.
Please use the search function preventing duplicate entries (see #5671, #5693, #1081).
There will be no carousel component, as stated by @jelbourn in #5671 :

We have no plans to add any kind of carousel component.

Any draggable functionality for an object???

Closing re everything @donroyco said


Newsweek Replica Using Bootstrap

✔ Use semantic HTML 👍
✔ Use Bootstrap CSS classes wherever it is possible 💪
✔ HTML and CSS validators 💯

Pull request currently under review by Michgolden Ukeje (TSE).
Kindly exercise patience 👋

☑ Enable stickler in the repository. 👌
☑ Refactor the CSS file to remove the !important tags that existed 💪
☑ Refactor inline styles that exist in your HTML ✍

Hello Martin Cervantes Palomo, I'm Sarah, your reviewer for this PR 👩🚀
First of all great job with your attention to detail, it's really nice how you added the navbar search detail on desktop screens and the text over the images🌟
There are a couple of issues you need to fix before going to the next project, remember this project needs to be extra closer to the original since Bootstrap is already taking care of the responsiveness and most of the positioning, so keep calm and code on 💪

Required Changes 🏗 👷♀

[ ] Before the 'In the Magazine' section there should be no extra spaces from the above sections. This is easily fixable by setting a max-height together with overflow scroll or even a position sticky if you want a challenge.
Compare the space above the section in your clone and in the original project:

[ ] The 'In the Magazine' first article image is taller than the following ones. Compare below how your clone looks and how it looks in the original and make it look the same:

[ ] Mind the font-weight of the section titles, 'World', 'US', etc, they should be bolder. Tip: you can use Bootstrap to change text weight too.

[ ] Make sure your navbar if fixed at the top of the page, it should be visible when scrolling down.

[ ] Remember to keep using semantic HTML. Use section tags for sections and article tags for articles. You can read this if you need a refresher on semantic HTML.

Kindly fix the REQUIRED issues and send another code review request.
Cheers and Happy coding!👏👏👏
Code review by Sarah Uryelah Silva Chamorro
(Feel free to contact me on slack by the handle of  sarah if you have any additional question)

✔  Position sticky to reduce extra space before magazine section
✔ Magazine' first article image is taller than the following ones
✔ Change font-weight using bootstrap class (title, categories, title section, etc)
✔ Make navbar fixed

Project Approved! :ok_hand:
Well done, @mcervantes71! Let's get this merged. :tada:
Goodluck with your next projects and happy coding!


Redeclare OPTARG for valid long option without argument

This PR redeclares OPTARG when getopts_long encounters a valid long option without a required argument (e.g. foo --alpha).
I believe this matches the behavior of the builtin getopts command for valid short options without an argument (e.g. foo -a) if you compare both with declare -p OPTARG in the while loop.

Absolutely! We should definitely include this – thank you so much for the PR!
It’s also a fantastic idea to use declare instead of just echoing the values. I’ve updated all the tests to do just that but changed the target branch on your PR to a feature branch to keep all the related changes grouped together.


Update available SKUs for CognitiveServices->Text Analytics

According to https://docs.microsoft.com/en-us/azure/cognitive-services/text-analytics/how-tos/text-analytics-how-to-call-api?tabs=synchronous#change-your-pricing-tier we now only have S sku.
The REST API specs need to be updated.
https://github.com/Azure/azure-rest-api-specs/blob/master/specification/cognitiveservices/resource-manager/Microsoft.CognitiveServices/stable/2017-04-18/examples/CheckSkuAvailability.json
https://github.com/Azure/azure-rest-api-specs/blob/master/specification/cognitiveservices/resource-manager/Microsoft.CognitiveServices/stable/2017-04-18/examples/GetSkus.json
azsdke2e
azsdke2e2

@yangyuan could you help take a look or help route to the correct people to help on this? thanks in advance!

Service team here - ACK

This issue is resolved now, the PR fixing the SKU is now merged.


Does terminal possible to support win 10 1803 or previous version?

Support win10 1803

Local compilation

This has been answered in a number of places.


Adding chacuo.net and affiliated 027168.com domain

From  http://24mail.chacuo.net/enus

Temporary box,Temporary mail,temporary email, mail 24 hours
Fill in the email, don't want to use your real email address? Then use 24mail.chacuo.net temporary box. Do not need to register, mailbox lasts for 24 hours, more than ten minutes (10 minutes) mailbox maintained longer, can set the mail any name, mailbox replaced at any time.

Looks like both domains are in the latest version already.  Thanks.


next-drupal-basic-starter get 400 bad request

According quick start, I was working decouple Drupal with Nextjs and JSONAPI, and stuck.
pages/index.tsx (43:16) @ async getStaticProps

41 |   context
42 | ): Promise<GetStaticPropsResult<IndexPageProps>> {
> 43 |   const nodes = await getResourceCollectionFromContext<DrupalNode[]>(
   |                ^
44 |     'node--article',
45 |     context,
46 |     {

And I try to find error on next-drupal, I found that 'src/utils.ts::getJsonApiIndex' will check the response of http://example.com/jsonapi and it prints 400 bad request. Detail is "The following query parameters violate the JSON:API spec: 'q'."
I also checked  http://example.com/jsonapi/node/article and http://example.com/jsonapi/node/article/{id} looks good.
I have no idea how to fix it, need help please.

Hmm what are you running your Drupal site on? Valet? ddev?

Laravel Valet 2.18.4

Yeah I'm on Laravel Valet and I've definitely seen this. Can you try updating Valet and check? It looks like there was a fix committed recenlty: https://github.com/laravel/valet/pull/1218

I upgrade valet to 3.1.3, and rebuild drupal, it works. thanks!
Is there has preview before submit add-content form?

@EustaceCheng You mean when editing content? Right now you can save and preview draft. The native Drupal preview is not supported yet but we are looking into it here #132

Thanks for your reply.

@shadcn I also ran into this issue and updating laravel to 3.1.3 fixed it for me too.
As I was experiencing this error I was wishing for a common "gotchas" section in the tutorial. And IMO this issue would be a nice addition (or maybe there are not so many valet users out there?). In any case, it would have saved me a few hours of digging around. 😉


DataType 'returns' is Potentially Misleading

While discussing some details yesterday over another project, it came up that the form of writing a DataType rule could mislead new users into thinking it returns a primitive type, rather than the DataType itself. I believe this goes against the notion of having a low barrier to entry for newcomers, as it could confuse and frustrate them.
For example, the following produces a value of the type SomeDataType, but is in itself a subtype of string. To make this work, we write 'returns' like so.
SomeDataType returns string: ID

For somebody unfamiliar with Langium, they may come to believe that SomeDataType actually returns string, given the literal wording. This is further reinforced by our consistent usage of 'returns' elsewhere for parser rules & terminals, where this is always the case.
My suggestion is that we at least consider whether we should:

use a different keyword than returns to signify a subtyping relationship (although internally we just use a type alias).
allow dropping returns type, and being able to infer the super type from utilized keywords, terminal rules, and data type rules
utilize highlighting to distinguish between DataType and ParserRules (this is present in Xtext)

Couldn't agree with you more, as a new user, it took me an hour to figure this out.
But I still don't quite get the difference between types and rules.

@luan-xiaokun thanks for chiming in! It's of particular interest to make sure that new users are able to pick up Langium quite easily 🙂 . We will also be updating our documentation to hopefully make this clearer going forward as well.
If you haven't read it yet, we do have an entry on Semantic Model Inference that goes more into how Types can declared, or inferred from rules. That may help clear up the difference between the two.

@montymxb I don't get the problem. Isn't the type of ID in your example above exactly string?

@spoenemann the type of ID is string in this case. The problem is we useSomeDataType as a new type, and it's not the same as string (even though internally this is a type alias to string). This effectively creates a subtype, but the wording here seems to suggests it's just a string, which does not reflect this relationship.
It's also confounded by the fact the keyword returns has a different meaning on where we use it (Parser rules vs. DataType rules). It makes sense for the former case, because we're returning a value of that type, but in the 2nd case it's not the same.

Ok so you mean something like this?
// Declared
type SomeDataType = 'a' | 'b' | 'c'
SomeDataType returns SomeDataType: 'a' | 'b' | 'c';

// Inferred
SomeDataType returns string: 'a' | 'b' | 'c';

The declared variant looks good to me. The inferred variant is indeed a bit different from the other usages of returns. But it's not wrong: the value returned by the data type rule is a string. The inferrer only creates a subtype of string when the value is an alternative of string literals. This does not apply to this declaration, for example:
SomeDataType returns string: 'a' | 'b' | ID;

Of course the relationship between grammar declaration and generated TypeScript declarations is more hidden if you use inference. But that's why we introduced type declarations in the grammar. Those who prefer things to be explicit can simply choose the variant at the beginning of my post.

@montymxb Thank you for your advice, the document is very helpful to me, I'm using langium to implement a vscode extension for a modeling language of our own design

Following up, we had some internal discussions last week about this. We haven't 100% decided this, but we're leaning towards keeping the returns syntax for DataTypes, but making sure the DataType correctly returns the declared type (removing the notion of a sub-type here). This would remove the ambiguity reported here about what is actually returned, and keeps some other parts of Langium working nicely as well.


ubuntu:16.06 -> new msodbc driver={ODBC Driver 17 for SQL Server} => fail to restart

I did a sudo apt update; sudo apt upgrade and I got a new msodbcsql driver:
v13 was out and in with v17:
Our test containers have the following mssql config:
RUN /usr/bin/curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
    /usr/bin/curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssqlrelease.list && \
    apt-get update && \
    ACCEPT_EULA=Y apt-get install msodbcsql mssql-tools unixodbc-dev -y && \

$ dpkg-query -l | grep msodbcsql
ii  msodbcsql                         <IP_ADDRESS>-1                                 amd64        ODBC Driver for Microsoft(R) SQL Server(R)
$ dpkg-query -L msodbcsql | grep .ini
/opt/microsoft/msodbcsql/etc/odbcinst.ini
$ cat /opt/microsoft/msodbcsql/etc/odbcinst.ini
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-17.0.so.1.1

But when the system came up again, pyodbc complained missing driver, This is naturally because the
the version number is in the driver, so it was only to change it in my connectors *ini file:
driver = {ODBC Driver 13 for SQL Server}
But my question is how can I prevent this from happening in production next time
MS decides to upgrade their driver?
Thanks

One solution would be to maintain a dev/test box, perform routine updates there to catch any issues, and then update the production machine only after you're satisfied that the updates won't break anything.
You could also put a "hold" on the current driver version so apt upgrade won't upgrade it automatically (details here):
sudo apt-mark hold msodbcsql mssql-tools

Thanks Gord, I my case I install from scratch so I have no version to keep, but I found a
similar solution:
Today v<IP_ADDRESS>-1 was revoked, so it failed again. do not know why because it worked fine for me, but I looked at whats out there:
https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/mssql-tools/
https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql/

I just changed my build container to use the latest versions still there, so now it wont be affected
if it changes.
RUN /usr/bin/curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
    /usr/bin/curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssqlrelease.list && \
    apt-get update && \
    ACCEPT_EULA=Y apt-get install msodbcsql=<IP_ADDRESS>-1 mssql-tools=<IP_ADDRESS>-1 unixodbc-dev -y && \

Microsoft has re-released v17 under a different name so existing v13 installs ("msodbcsql") will not get clobbered by the v17 version ("msodbcsql17").


Tree view item description hover sometimes renders under tree view item button tooltip

Originally reported by @gregvanl
Overlapping hovers of the GitHub Repository Remote Explorer view looks odd.

I was able to reproduce this exactly once with the GitHub Codespaces remote explorer view's Connect to Codespace item button.

I'm not sure why it sometimes shows both, but I'm guessing the hover service just misses an event for reasons and then we get the button hover. One simple fix would be to just move to custom hover for these.

We want to move towards all custom hovers, so the fix here is to move the tooltip on the action to use the custom hover as well. @sbatten are you the right person for the action list, can you forward on if not?

yea I can own it

I think this may be good with @benibenj adopting custom hover everywhere

Yes, the custom hover adoption fixes these issues


Epic request: TDD framework for Typescript and Visual Studio Tool Connection.

Hi,
May be you plan to do something like TDD framework for solely Typescript? It would be really great.
P.S. Please, do not point me to the Jasmin(qUnit) + Chutzpah for Visual Studio. This one is clumsy and buggy for a code written in TS. May be because of really Rapid Development in Typescript. Sorry, nothing personal.

I'm not an expert in TDD or JavaScript testing frameworks, but I recently read some compelling arguments for tape, mainly focused on its simplicity for compared to mocha. I haven't had time to play with it much but there are solid .d.ts files available.
Regarding your request, it would seem to be in conflict with the one of core goals of TypeScript: to leverage support JavaScript tooling, patterns, libraries, and frameworks but not to provide a standard library of any kind. For example, TypeScript does not come bundled with a promise polyfill to support its async implementation. It is a language, and in my opinion an excellent one, but it is not a platform.

Yeah! Why would not TypeScript team also develop:

a package manager
a dependency injection framework
an ORM framework
a fast canvas rendering library
and, hell, a good minifier

all in TypeScript for TypeScript! Huh?

As others have pointed out (or implied), it is inconsistent with the design goals of TypeScript.
Because TypeScript is always transpiled code, it wouldn't make sense to run your tests in TypeScript but rather transpile both your source and your tests and run them in an environment that you intent to support.
Intern 4 will be written TypeScript and coupled with something that maps back coverage to the original files, you can get an understanding of what you are actually testing and covering.  For Dojo 2, we currently write all our source code and tests in TypeScript and do our coverage analysis against the source files.

But running tests in Jasmine + Chutzpah makes my code buggy.
And consequently, I cannot use it normally.
And, consequently, I am writing non-testable code.
I dislike to write it without TDD (code first). And I am a TDD-infected person :) .
That's a reason of this Epic Request.

Your reasons are understood, but it is not something the TypeScript team will deliver for you...  Wanting something and getting something are two different things.

@alerya Are you saying that the frameworks you mention are giving you issues when you use them with TypeScript? Or do you just want to find a better testing framework.
If the latter, there are other test frameworks out there you may find more reliable/usable.
If the former, perhaps the .d.ts files are poorly written or maintained. As @kitsonk said, the JavaScript produced by the TypeScript compiler is ultimately what runs.
If you are having trouble finding a reliable/simple test framework, you could go back to basics, temporarily, to validate certain assumptions. E.g.
testing/assert.ts
export const areAqual = <T>(actual: T, expected: T) => actual === expected;

export const isTrue = (expression: boolean | (() => boolean)) =>
    typeof expression === "function"
        ? expression()
        : expression;

export const isFalse = (expression : boolean | (() => boolean)) => !isTrue(expression);

export default isTrue

Good point, aluanhaddad. I am agreed. But what about Tooling in VS ?
For example a connector to Test Explorer?
And... you know, I wan't everybody invents its own wheel. Why not to do something special for Typescript, not for JS. May be I am little bad in my language I meant my purpose is Typescript and not Javascript (with its various undoubtable great ES3,4,5,6,7,8,9 and so on). Mainly, TS declared as OOP style of life, so we need all modern tools for this paradigm we have in other OOP languages.
If it is impossible, then we write untestable code in TS. It disappoints me and turns me back to JS horror kingdom.

Toolingwise, Visual Studio has an integrated task runner for gulp and grunt, which prints to a dedicated window. I while ago, I made a request/suggestion to @madskristensen to support exporting the output to VS error/warnings/messages window, I believe something like this may be in the works, but I'm not sure about Test Explorer. Integration could definitely be improved.
As to your point about OOP, this is also not a goal of TypeScript beyond supporting the OOP patterns that exist JavaScript.
I have to frankly say that I reject the notion that OOP is more testable. Also, there is a very strong trend across most mainstream languages (C++, C#, Java) to incorporate functional programming patterns. JavaScript has long had strong support for functional programming techniques, and TypeScript's type system expresses these very well.

Don't let classes in TypeScript, which are simply ES6 classes with a little extra sugar for initializing properties, give you the impression that it they add Java style OOP to JavaScript. They are all just functions.

Sure I understand what is JS :)
Simply wanna have a set of standartized tools make us all to code the same way and tied to solely Typiscript.

It sounds like you want better tools. I'm definitely with you on that. I assume by "us all", you mean you and your team, and consistency within a team is critical. However, a mistake some of us make when learning TypeScript or ECMAScript 6+ is trying to forget about or not learning about ECMAScript 5 (by the way, TypeScript is a great way to learn that as well because of the tooling it provides.
Either way, the function I use most often when writing in any of these languages/dialects is probably Array.prototype.map as in
[0, 1, 2, 3].map(Math.sqrt);

I don't really know how to crystallize better my thougths. Simply I wanna a have handy tool for TDD infected people who can share their experience and may be write books about TDD in TS (and infect other, yeah). Right now we have a tool for JS, but in this case TS seems not necessary. And as you saw before people wanna have not only it (see aleksey-bykov's post).

I believe @aleksey-bykov was being sarcastic, but I am not sure.
The larger point is there is no such thing as TypeScript without JavaScript.
Testing is infinitely important, and TDD has a lot of merits, but these ideas are orthogonal to the language in which you are writing. The fact that they grew up with in the Java Community is inconsequential. Rober C. Martin a father and outspoken advocate of TDD, has been suggesting that people use Clojure. Clojure is a dialect of lisp.

It's safe to assume aleksey is being sarcastic until proven otherwise :heart:
If you're able to do TDD in JS, you can do it in TS too. There are tons of JS TDD tools and frameworks that work excellently with TS, of course. If none of them are suitable for you, we're certainly not going to be able to deliver one that is.


chore: Migrate datacatalog synth.py to bazel

The changes in grpc stubs are caused by the gRPC upgrade from 1.10 (more than a year old) to 1.27 (same version which is used as runtime dependency)

@chingor13 PTAL


proposal: Go 2: leaking argument qualifier

Hi,
This proposal presents the simple idea of transfering comment like "Implementations must not retain p." from interfaces like io.Reader, io.Writer and similar to the appropriate type qualifier.
The reason for doing so is that comments can not give the Go compiler any knowledge of how argument is being used inside the interface implementation, thus compiler could only "give up" and move argument to the heap, leading to probably unneccessary memory allocations.
Example. Suppose we have some interface like this:
// Implementations must not retain p.
type Reader interface {
    Read(p []byte) (int, error)
}

When some implementation of Reader is used, and some user code calls it as an interface method,
func main() {
    var r Reader = rand.New(...)
    p := make([]byte, 4)
    r.Read(p)
}

we got something like this from escape anlysis about the argument p:
proposal.go:10:11: make([]byte, 4) escapes to heap
proposal.go:10:11:     from p (assigned) at proposal.go:10:4
proposal.go:10:11:     from r.Read(p) (parameter to indirect call) at proposal.go:11:8

The idea is pretty straightforward:
type Reader interface {
    Read(p leaking []byte) (int, error)
}

Or:
type Reader interface {
    @p leaking
    Read(p []byte) (int, error)
}

Or whatever other syntax representation. That is, the idea is not in the syntax which always very controversial, but in the benefits which this qualification may give us.
With leaking (just to name it somehow) type qualifier compiler will able to do two things: first is to prepare escape analysis with little more additional knowledge (and not move leaking objects to heap); second is to restrict use of implementations that try to retain leaking arguments somewhere.
Bonus: Cases with variadic functions may also be optimized. E.g.:
type Calculator interface {
    Sum(ns ...int) int
}

func doStuff(c Calculator) {
    ...
    c.Sum(1,2,3) // [1,2,3] Will not be allocated on heap if leaky qualifier existed.
}

Sergey.

While syntax is not that important, seeing how now most annotations in Go are done using magic comments, perhaps the syntax could be
type Reader interface {
    // go:leaking(p)
    Read(p []byte) (int, error)
}

Like this, Go compilers that don't understand how to handle this feature will ignore it.

If I'm reading this correctly, the leaking qualifier means that the parameter does not leak.  That seems like a confusing nomenclature.

https://dave.cheney.net/2018/01/08/gos-hidden-pragmas
Apperently there is already the //go:noescape magic comment pragma. How is this idea different from that?

@beoran I think its the same, except the thing, that it could not be applied (I think so?) to the interface methods.
@ianlancetaylor any better naming are welcome =) Like @beoran suggested noescape could be better I think.

The go:noescape directive, documented at https://golang.org/cmd/compile, can only be applied to a func definition with no body, or in other words a function implemented in assembler.  It tells the Go compiler that the assembler code does not save its pointer arguments in any way, and as such the values passed to it do not escape.  The Go compiler will never see this code, so it's reasonable to have some way to tell it what is happening.
That is quite different from what is being proposed here, which is attempting to describe code written in Go, not code written in assembler.  I'm not saying that we can't do this, but it's really completely different from go:noescape.

If you flag an argument as "leaking", the compiler would need to carry that through the rest of the code to make sure it isn't (say) assigned to a variable which is placed in a slice which is pointed to by a struct which is retained. At that point, it seems like you're asking for something like the Rust borrow checker in Go?

@lpar It could be named like "Rust's borrow checker in Go" or just "Go's advanced escape analysis". What would need the compiler to carry except the interface implementation? I mean, if interface implementation does not pass "not escaping/leaking" argument to the interface without such qualifier, nor to the non-interface function where the argument could escape (which current escape analysis already doing) and does not save this argument in heap-based data structures, then such implementation is compatible for such interface?

If we add this type qualifier, then presumably the compiler will follow it.  That means if a method with a non-leaking parameter does accidentally leak it, the program has a serious bug that will lead to memory corruption.

@ianlancetaylor how could we pass non compatible implementation of an interface to the method expecting it? I mean, if concrete type X is passed (or assigned) as interface Y, compiler must check the compatibility, including arguments qualifier restrictions. Thus, X could not accidentally leak its argument.

It seems to me that this proposal confuses two different (albeit intertwined) ideas:

Escape information annotation for function parameters
Usage "protocol" information

Comments such as "Implementations must not retain p." are the latter (2): What the annotation says is that independent of the actual implementation (i.e., generated code by the compiler, not the source code implementation of the method), a concrete method Read implementing the respective interface method Read must not retain p because the caller may re-use the p slice. If Read held on to p, the p contents may be changed.
Note that this is independent of escape information. Yes, it's true that if myRead held on to p, then it escaped. But one could imagine a hypothetical super smart compiler that could analyze the life time of p across call sites and decide that it's ok to allocate p's underlying array on the stack.
On the other hand, if this proposal is about (1), then we would have to annotate all Read methods that can possibly implement the interface's Read method with the same annotation, so that the compiler can verify that the concrete Read methods satisfy the no-escape criteria for the respectively marked parameters. We must do this because these methods may be compiled separately and independently from the interface, and don't necessarily know that they will be used with the interface. But the real problem with such an annotation is that a compiler's escape analysis may or may not be able to prove that an accordingly marked parameter doesn't escape. Given:
func (*T) Read(p noescape []byte) (int, error) {
   ...
}

where p is marked to not escape (or leak), the compiler will need to check that this is indeed the case. But depending on the specific code in the method body, it may not be able to do so. Thus, whether this piece of code compiles or not isn't just specified by the language, but the the specifics of the implementation, which may change over time. Or it so severely restricts what can be done with such parameters in the code that it becomes cumbersome to use, and complicated to explain in the spec. We probably don't want that; this seems more like the approach taken in Rust than in Go.
(The existing annotations go:noescape we have for assembly methods rely on the programmer telling the truth about the assembly code - but since we're dealing with assembly code at this point, the compiler is at the mercy of the programmer anyway. We don't want to extend this into pure Go code.)
In summary, I don't think we want to pursue this: As explained above, if this proposal is about 1), whether code is valid or not becomes implementation dependent, not spec specified. If this proposal is about 2) we're opening Pandorra's box: There's much more one might want to express in "usage protocols" for function and method calls. I don't think we want to go there.

PS: I should add that in the case of (2) it will also be tricky for a compiler to decide whether a certain property (such as "noescape") is satisfied in general, same as for (1).

how could we pass non compatible implementation of an interface to the method expecting it?

You can use a type assertion on an interface value, so you can get a value of an interface type without having any knowledge of the dynamic type.

Ah, I see, what (2) boils down to is "Contract based programming" like exists in Ada 2012. But, are we sure Go doesn't need that? With the discussion on Generics, "contracts" were suggested to verify the qualities of the type that is used to parameterize a generic type. Now imagine that in stead of just using contracts for generics, contracts could become a first class construct in Go, usable for all sorts of compile time or run time checking... think of the possibilities. :stars:
Maybe something like Read(p []byte) (int, error) range {  i, e := Read(p); i >= 0 && contract(p, "notRetained")  } , abusing the range keyword for a contract specification.
If we had something like first class contracts, I would say that the range types I was proposing before could simply reuse those contracts. Something like type Weekday = int range { Weekday > 0 && Weekday < 8 }

While there may be interesting ideas to explore in this area, we aren't going to adopt this specific proposal.


Provider

Implement most functionality of gettextCatalog as a provider. This allows clients to inject gettextCatalogProvider into the config phase of Angular's lifecycle.

Will this be merged at some point? I need to translate some data I pass to the UI Router which is initialized in the config phase.

I'd be interested in the status of this issue too. Came here from https://github.com/rubenv/angular-gettext/issues/138

I hope this PR is merged after resolving conflicts.

+1
This is indeed a welcome enhancement.

Interesting...I was just about implementing this just because of the same reason as @smehrbrodt pointed. @rubenv Any plans on merging this in the near future?
@gabegorelick does this PR needs more than a rebase?

+1 - Also need this for translating URLs defined in the config stage and would love this to be merged

+1 is there a reason this hasn't been merged yet?

+1 - Need to translate intercepted server responses


chore: Use poetry for dependency management

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

Project coverage is 100.00%. Comparing base (7d8dd4d) to head (2dd5039).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #17   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            5         5
  Lines          161       161
=========================================
  Hits           161       161

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


RuntimeError("Only one call can be registered at a time") with RBO

Steps to reproduce

install nevergrad-0.2.0
initialize a RBO optimizer with small budget (I used 10 in this case)
run optimization

note that this happens randomly so sometimes I run and get no errors

Observed Results
Traceback (most recent call last):
  File ".\mnist.py", line 51, in <module>
    recommendation = optimizer.optimize(ifunc)
  File "C:\Users\robert\AppData\Local\Programs\Python\Python36\lib\site-packages\nevergrad\optimization\base.py", line 402, in optimize
    self.tell(x, job.result())
  File "C:\Users\robert\AppData\Local\Programs\Python\Python36\lib\site-packages\nevergrad\optimization\base.py", line 244, in tell
    self._internal_tell_candidate(candidate, value)
  File "C:\Users\robert\AppData\Local\Programs\Python\Python36\lib\site-packages\nevergrad\optimization\base.py", line 328, in _internal_tell_candidate
    self._internal_tell(candidate.data, value)
  File "C:\Users\robert\AppData\Local\Programs\Python\Python36\lib\site-packages\nevergrad\optimization\optimizerlib.py", line 1025, in _internal_tell
    self._fake_function.register(y, -value)  # minimizing
  File "C:\Users\robert\AppData\Local\Programs\Python\Python36\lib\site-packages\nevergrad\optimization\optimizerlib.py", line 967, in register
    raise RuntimeError("Only one call can be registered at a time")

Expected Results
There should be no errors running the optimization
Relevant Code
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

from nevergrad.optimization import optimizerlib
from nevergrad import instrumentation as instru
from nevergrad.optimization import base

X, y = load_digits(return_X_y=True)
Xtrain, XTest, yTrain, yTest = train_test_split(X, y, random_state=42)

print('training with {} examples, testing with {}'.format(len(Xtrain), len(XTest)))

def train_and_score(args):
  if args['C_in'] > 0:
      model = SVC(C=args['C_in'], kernel=args['kernel_in'], degree=args['degree_in'])
      model.fit(Xtrain, yTrain)
      res = model.score(XTest, yTest)
  else:
      res = 1000

  if res > 0.98 and res < 1:
      print('args: {}'.format(args), end=', ')
      print('res: {}'.format(res))
  return -res

def train_and_score_wrapper(C_in, kernel_in, degree_in):
  return train_and_score({'C_in':C_in, 'kernel_in':kernel_in, 'degree_in':degree_in})

kernel_in = instru.variables.SoftmaxCategorical(['linear', 'poly', 'rbf', 'sigmoid'])
C_in = instru.variables.Gaussian(mean=1, std=2)
degree_in = instru.variables.OrderedDiscrete(list(range(1, 10)))
ifunc = instru.InstrumentedFunction(train_and_score_wrapper, C_in, kernel_in, degree_in)

optimizer = optimizerlib.RBO(instrumentation=ifunc.dimension, budget=10, num_workers=1)
recommendation = optimizer.optimize(ifunc)
print(recommendation)

This might be properly reproducible by adding:
import numpy as np
np.random.seed(1)

to the above mentioned code

Hi,
Thanks for pointing out and for the details. This is indeed completely unexpected.
I will try to understand and fix this asap but am quite busy for the following week :s Don't hesitate to propose a fix if you were able to solve it ;)

This error is pretty weird, since the underlying BO algorithms seems to ask twice for the same point, which should not happen in my understanding. I implemented a fix to prevent nevergrad from raising an error in this case.
On a side note, I think using SoftmaxCategorical with BO is a bit dangerous here since BO assumes the function is deterministic, while SoftmaxCategorical adds some randomness to the evaluation since the parameters are sampled randomly. I asked confirmation to my colleage who is more knowledgeable than me about it (see #185)

This should now be solved (though in a hacky way), please reopen this task or another if you still encounter any issue ;) and be careful with BO when using SoftmaxCategorical, it may indeed lead to very bad results :s

Alright .. thanks a lot for solving the problem and the hints too :)

This error is pretty weird, since the underlying BO algorithms seems to ask twice for the same point, which should not happen in my understanding. I implemented a fix to prevent nevergrad from raising an error in this case.
On a side note, I think using SoftmaxCategorical with BO is a bit dangerous here since BO assumes the function is deterministic, while SoftmaxCategorical adds some randomness to the evaluation since the parameters are sampled randomly. I asked confirmation to my colleage who is more knowledgeable than me about it (see #185)

I don't know the specific implementation but upon trying to debug the issue I noticed that the suggested candidate data change but the args stay the same ... so maybe the instrumentation is the issue here

Depending on your instrumentation, same args for different data can be normal (when mapping a continuous variable to a discrete one with SoftmaxCategorical or OrderedDiscrete) and different args can also come from the same data (SoftmaxCategorical is stochastic).
Concerning the interface with bayes_opt we'll discuss in #189 ;)


[SPARK-27460][TESTS][FollowUp] Add HiveClientVersions to parallel test suite list

What changes were proposed in this pull request?
The test time of HiveClientVersions is around 3.5 minutes.
This PR is to add it into the parallel test suite list. To make sure there is no colliding warehouse location,  change the default test table to external table with temporary table location.
How was this patch tested?
Unit test

Test build #104703 has started for PR 24404 at commit a031c47.

@cloud-fan

Merged build finished. Test PASSed.

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

Merged build finished. Test PASSed.

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

Test build #104704 has started for PR 24404 at commit dd57470.

From https://github.com/apache/spark/pull/24373#issuecomment-484531859 we can see that the tests become stable after the changes in this PR.
I will trigger more rounds of concurrent Jenkins tests in this PR.

Test build #4748 has started for PR 24404 at commit dd57470.

Test build #4749 has started for PR 24404 at commit dd57470.

Test build #4750 has started for PR 24404 at commit dd57470.

Test build #4751 has started for PR 24404 at commit dd57470.

Test build #4752 has started for PR 24404 at commit dd57470.

Test build #104703 has finished for PR 24404 at commit a031c47.

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

Merged build finished. Test PASSed.

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

Test build #4751 has finished for PR 24404 at commit dd57470.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #4752 has finished for PR 24404 at commit dd57470.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #4750 has finished for PR 24404 at commit dd57470.

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

Test build #4749 has finished for PR 24404 at commit dd57470.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #4753 has started for PR 24404 at commit dd57470.

Test build #4754 has started for PR 24404 at commit dd57470.

Test build #4755 has started for PR 24404 at commit dd57470.

Test build #104704 has finished for PR 24404 at commit dd57470.

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

Merged build finished. Test PASSed.

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

Test build #4748 has finished for PR 24404 at commit dd57470.

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

Test build #4755 has finished for PR 24404 at commit dd57470.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #4754 has finished for PR 24404 at commit dd57470.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #4753 has finished for PR 24404 at commit dd57470.

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


Cannot trigger a Scene by its Name

Describe the bug
Cannot trigger a Scene by its Name. It works fine with Scene ID, though
Flow to Reproduce
[{"id":"26a702cc.3d5aee","type":"inject","z":"8ad6993b.ba0b08","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":480,"y":680,"wires":[["875ee88b.f7a178"]]},{"id":"875ee88b.f7a178","type":"hue-scene","z":"8ad6993b.ba0b08","name":"Concentrate office","bridge":"d3bca4c8.c0b2e8","sceneid":"Concentrate","groupid":"1","skipevents":false,"x":710,"y":680,"wires":[["a2ed4006.8707f"]]},{"id":"a2ed4006.8707f","type":"hue-group","z":"8ad6993b.ba0b08","name":"Office","bridge":"d3bca4c8.c0b2e8","groupid":"1","colornamer":true,"skipevents":false,"x":910,"y":680,"wires":[[]]},{"id":"d3bca4c8.c0b2e8","type":"hue-bridge","z":"","name":"Philips hue","bridge":"##","key":"xyz","interval":"3000","disableupdates":false}]

Expected behavior
According to the documentation, it should be possible to trigger a Scene using it's name, not necessarily it's ID. I have a lot of room, all with the same built in Scenes (same names) and I would like to keep things generic... AKA being able to trigger "Concentrate" on the kitchen, as well as the Office, without having to find out the respective Scene Ids.
Please complete the following information:

NodeRED version: v1.0.5
Device running NodeRED: hass.io on NUC

Thanks for this hint! It should work again with the latest version v2.7.0

Thanks for this. It seems like you might be picking up the first scene that you can find with this name without checking if actually is associated with the right light/room.
Is there any way to do this?
I have scenes with the same names in multiple rooms and this doesn't work.
Thanks

In this case you also need to pass the correct group ID of the room.
Sorry, it’s not possible to automatically find the correct scene on a room, if the scenes name is not unique. A workaround would be to rename the scenes with unique names. This would work without having to pass an additional group ID.

Hi, thanks for your response.
Unless I am missing something, I'm already passing a groupId in the incoming messgae. (see example below). My payload is this: {"scene":"Concentrate","group":1}, where there is a valid Scene called "Concentrate" in the room with Id of 1.
[{"id":"c4cf0097.a86b2","type":"hue-scene","z":"8ad6993b.ba0b08","name":"Office","bridge":"d3bca4c8.c0b2e8","sceneid":"","groupid":"","skipevents":false,"x":1290,"y":1780,"wires":[[]]},{"id":"65fd26c4.abcf68","type":"inject","z":"8ad6993b.ba0b08","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":780,"y":1780,"wires":[["924fd1bc.bf8d"]]},{"id":"924fd1bc.bf8d","type":"change","z":"8ad6993b.ba0b08","name":"Set payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"scene\":\"Concentrate\",\"group\":1}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":990,"y":1780,"wires":[["c4cf0097.a86b2"]]},{"id":"d3bca4c8.c0b2e8","type":"hue-bridge","z":"","name":"Philips hue","bridge":"<IP_ADDRESS>","key":"oY2jNLXyPDG3AFdbNUgxadwiGfK4LgOJbkal45ek","interval":"3000","disableupdates":false}]

But I could see that the message coming out of my "Scene" node contained a SceneID which was for another Scene named "Concentrate" but belonging to a different room...
Do I need to pass a group ID somewhere else to help with that?
I guess the idea behind using the same name is that it would keep things very straight forward to build a flow where all my room are being set to their "Early Evening" scene, say (whatever that means to that room) instead of having to set the Lounge to "Lounge Early Evening", etc...

For know, I have worked around this byt building up a list of my groups (including there scenes) in the global data context. I then swap out my Human friendly name with the right ID (the one that I know actually belongs to the right group)
But it would be good if this was done for us.


odb: SITE statement is allowed in both tech and library LEF

I tried importing the sky130 PDK with separate openroad -tech and openroad -library commands, but it failed because the tech LEF has a SITE statement, and odb assumes it can only appear in a library LEF. The spec suggests it is allowed in both tech and library LEF.
Not a high priority, since ORFS and Openlane create a merged LEF and load it in one go.

@osamahammad21 not urgent as Anton notes but good for a background task.

@maliberty In the current model, the site ownership belongs to dbLib. Should it be moved to dbTech?

@antonblanchard what did you mean by "openroad -tech" and "openroad -library"?  The openroad executable does not take those command line options?  In general ORFS does load in two steps:
read_lef $::env(TECH_LEF)
read_lef $::env(SC_LEF)

@maliberty I think he means read_lef -tech/-lib

@antonblanchard if you do
read_lef -tech -library sky130_fd_sc_hd.tlef
read_lef -library sky130_fd_sc_hd_merged.lef

it works as does:
read_lef sky130_fd_sc_hd.tlef
read_lef sky130_fd_sc_hd_merged.lef

only
read_lef -tech sky130_fd_sc_hd.tlef
read_lef -library sky130_fd_sc_hd_merged.lef

fails.   In ORFS we don't use either -tech or -library and I don't really think they are very useful.  I'd rather just deprecate them unless you see a use case where it matters.

In ORFS we don't use either -tech or -library and I don't really think they are very useful. I'd rather just deprecate them unless you see a use case where it matters.

(Going through some of my older bugs). I agree with deprecating the options, I don't see much point in them.

@maliberty
With read_lef I'm not getting any switch for -tech or -library. Can we close this as resolved?

I see the switches still exist in the code so I'm not sure what "I'm not getting any switch" means.


A few comments from Robert

Is there any documentation for the SPERR C++ api?  Is it intended to be public or private?
I develop LibPressio a compressor lossy compressor adapter library.  For now, I've made a adapter for the C api for SPERR using the examples and documentation, but looking through some of  the other documentation for your CLI leaves me thinking that the C++ api does a lot more.  I want comparisons with your library to be as fair as possible.
I've also forked your project to make a few improvements to make it more amenable to be built via Spack a package manager that has gained popularity in the high performance computing community (and relevant here, the recommended way to install LibPressio).  I'm open to better defaults if you have suggestions.  I can also contribute this back if it is desired.
One specific aspect that wasn't clear was what is a reasonable default for qlevel.  I saw this https://github.com/shaomeng/SPERR/wiki/CLI:-Exploring-Compression-Parameters-Using-probe_3d and https://github.com/shaomeng/SPERR/wiki/CLI:-Understanding-Quantization-Level-q but was looking for a programatic way to get this information from C/C++.
Lastly, does this code only support non-square and cube data volumes?  This isn't a huge issue for me, but I couldn't use it with the hurricane dataset (500x500x100) from SDRBench with any value of qlev that I tried.

Hi Robert, thank you very much for your thoughtful comment! I'll clarify some of them in this thread and will open separate issues for specific requests!

Is there any documentation for the SPERR C++ api? Is it intended to be public or private?

Yes, there are C++ classes that are public and supposed to be used in C++ projects. I don't have them documented yet, but it's a good suggestion and I've noted it in issue #141.

I develop LibPressio a compressor lossy compressor adapter library. For now, I've made a adapter for the C api for SPERR using the examples and documentation, but looking through some of the other documentation for your CLI leaves me thinking that the C++ api does a lot more. I want comparisons with your library to be as fair as possible.

Good deal! Glad to have it in! I'm definitely happy to look at it together (after the C++ documentation probably) to make sure the integration is done in the best approach!

I've also forked your project to make a few improvements to make it more amenable to be built via Spack a package manager that has gained popularity in the high performance computing community (and relevant here, the recommended way to install LibPressio). I'm open to better defaults if you have suggestions. I can also contribute this back if it is desired.

That's also an awesome improvement! If you don't mind, could you submit a PR to this repo?

One specific aspect that wasn't clear was what is a reasonable default for qlevel. I saw this https://github.com/shaomeng/SPERR/wiki/CLI:-Exploring-Compression-Parameters-Using-probe_3d and https://github.com/shaomeng/SPERR/wiki/CLI:-Understanding-Quantization-Level-q but was looking for a programatic way to get this information from C/C++.

It's right that the selection of q is kinda awkward right now. The good news is, I'm also experimenting some programmatic methods and I'm fairly confident that some of these approaches would work. So I think for now it really does require trial-and-error from the user, but hopefully it'll change in the order of 2-3 months.

Lastly, does this code only support non-square and cube data volumes? This isn't a huge issue for me, but I couldn't use it with the hurricane dataset (500x500x100) from SDRBench with any value of qlev that I tried.

It should work. If you could let me know the particular variable that you tested, then I can look into it!

Hi @robertu94 , I've completed my work of "automatic quantization level selection," so now you only need to provide the program a desired PSNR or PWE (point-wise error) value. Do you want to give it a try?
Also, I'm wondering if there's any update on your work to integrate SPERR to LibPressio and Spack? Are there any roadblocks that I can help or things I can clarify?
Thanks!

I just tired this new version, and it is substantially easier to use; thanks!
W.R.T. LibPressio integration: Because SPERR is GPL licensed, and I need to maintain a BSD license for LibPressio, the integration into LibPressio is https://github.com/robertu94/libpressio-sperr which is then loadable via the 3rd party loader in the "libpressio-meta" library that way people who need to avoid the GPL and don't use SPERR can.
As for Spack integration, SPERR can be used via the libpressio cli distributed via spack like so
git clone https://github.com/robertu94/spack_packages robertu94_packages
spack repo add ./robertu94_packages
spack install libpressio-tools ^ sperr
spack load libpressio-tools ^ sperr
pressio -i ~/git/datasets/hurricane/100x500x500/CLOUDf48.bin.f32 -d 500 -d 500 -d 100 -t float -b compressor=sperr -o abs=1e-6  -o sperr:chunks=100 -o sperr:chunks=100 -o sperr:chunks=100 -m time -m size -M all

If chunks are not specified, I default to 256x256x256 which is what your example did.  I added a note to the builtin documentation that this value should be tuned to match some factor of the dataset and effects runtime.

@shaomeng are you sure you want a GPL license for SPERR? You might want to consult NCAR's recommendations for open source licenses here.


Now working with up-to-date versions of vis

In the bower.json 4.2.0 is specified, but the one included in the bower_components folder is actually 3.12.  It works with 3.12 but if using 4.2.0 (or the latest 4.15) the chart does not show.

Strange - I'm actually using the latest Vis from a few weeks ago in my project. Can you provide more information.

Well - simple steps to show the issue:

Do a fresh clone: git clone https://github.com/visjs/angular-visjs
Open index.html in browser - working!
Do: bower update
Open index.html - not working!

The bower dependency is on vis 4.2.0 but the vis version in the repo is 3.12.0.
I have tried both 4.2.0 and latest 4.15.0 and I simply can't make it work with newer versions than 3.12.0.

Ok - I dug into this a bit further.  The 4 steps mentioned in the previous post are still valid - the example asis will only work with the old 3.12.0 vis.  However, that is because of the option: " showCustomTime: true," in the app.js.  Removing that and the example work up to<EMAIL_ADDRESS> BUT - vis @4.13 and<EMAIL_ADDRESS>still fails.

I have long been ignoring the requirement of vis 4.2.0 without problems.  For me it stopped working with 4.13, and continues to not work up to 4.15.  Not working means:

The timeline is invisible.
The data is loaded into the dom.
The outer vis-timeline tag has full width but a height of only 20px, and it overlaps upwards into the previous elements, even though it doesn't seem to have any css attributes, like location or top.

It's 1st child  which contains everything is also full width but its height is only 2px.

It turns out what I say may be a Vis issue: https://github.com/almende/vis/issues/1697

As requested by Jos in the above vis issue I created: http://jsbin.com/kotenu/edit?html,js,output
If you change it to load vis 4.12 you see a timeline.

I confirm this to be fixed in 4.16.0 :+1:

@cdjackson it would be great if you could update the dependency to the latest version of vis.js (4.16.1 at this moment)

Is anyone still having problems with this?


HDDS-7104. Remove WARNINGs while running ozone fs/CLI commands.

What changes were proposed in this pull request?
warning messages should be removed from console logs. We can do this by suppressing the respective messages in the log4j.properties file.
for i in $(seq 1 6)

do
/opt/cloudera/parcels/CDH/bin/ozone fs -copyFromLocal /tmp/5GB ofs://ozone1/vol2/buck1/key$i
done

22/02/14 12:17:23 WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-xceiverclientmetrics.properties,hadoop-metrics2.properties
22/02/14 12:17:24 INFO impl.MetricsSystemImpl: Scheduled Metric snapshot period at 10 second(s).
22/02/14 12:17:24 INFO impl.MetricsSystemImpl: XceiverClientMetrics metrics system started
22/02/14 12:17:24 INFO metrics.MetricRegistries: Loaded MetricRegistries class org.apache.ratis.metrics.impl.MetricRegistriesImpl
22/02/14 12:20:28 WARN io.KeyOutputStream: Encountered exception java.io.IOException: Unexpected Storage Container Exception: java.util.concurrent.CompletionException: Failed to write chunk<PHONE_NUMBER>23200001_chunk_1 into block conID: 1 locID:<PHONE_NUMBER>23200001 bcsId: 0 on the pipeline Pipeline[ Id: c665901b-87bf-4943-8ec6-da745db56901, Nodes: c221dcbd-398c-4e76-ab13-dcde074041ae{ip: <IP_ADDRESS>, host: quasar-usholy-5.quasar-usholy.root.hwx.site, ports: [REPLICATION=9886, RATIS=9858, RATIS_ADMIN=9857, RATIS_SERVER=9856, STANDALONE=9859], networkLocation: /default, certSerialId: null, persistedOpState: IN_SERVICE, persistedOpStateExpiryEpochSec: 0}c9da661f-99ae-4de3-8eb8-306763283723{ip: <IP_ADDRESS>, host: quasar-usholy-6.quasar-usholy.root.hwx.site, ports: [REPLICATION=9886, RATIS=9858, RATIS_ADMIN=9857, RATIS_SERVER=9856, STANDALONE=9859], networkLocation: /default, certSerialId: null, persistedOpState: IN_SERVICE, persistedOpStateExpiryEpochSec: 0}69a59a13-75d6-4cde-8cb3-5713ae9de7cd{ip: <IP_ADDRESS>, host: quasar-usholy-2.quasar-usholy.root.hwx.site, ports: [REPLICATION=9886, RATIS=9858, RATIS_ADMIN=9857, RATIS_SERVER=9856, STANDALONE=9859], networkLocation: /default, certSerialId: null, persistedOpState: IN_SERVICE, persistedOpStateExpiryEpochSec: 0}, ReplicationConfig: RATIS/THREE, State:OPEN, leaderId:c9da661f-99ae-4de3-8eb8-306763283723, CreationTimestamp2022-02-14T05:43:11.228Z[UTC]]. The last committed block length is 0, uncommitted data length is 33554432 retry count 0

What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-7104
How was this patch tested?
Tested it out on the local cluster, the messages will get suppressed

@ChenSammi @siddhantsangwan can you help review this !!

Thanks @ArafatKhan2198 , can you tried other fs/CLI commands, to see if their WARNING messages are resolved by this PR?

Thanks @ArafatKhan2198 , can you tried other fs/CLI commands, to see if their WARNING messages are resolved by this PR?

I have tested out most of the FileSystem commands out there and none of them give out the suppressed warnings :-

Creating Volumes
Creating FSO and OBS buckets
Creating directories inside buckets
Listing the buckets
Creating keys inside buckets
Move Commands on keys
Deleting a key
Deleting a Bucket
Deleting a Volume

@ArafatKhan2198 ozone-shell-log4j.properties does not need to be changed. I think logging to a file is enough to avoid annoying users with useless warnings.
However, we need to configure ozone fs command to use ozone-shell-log4j.properties:
https://github.com/apache/ozone/blob/5f84fd1c9f35d82f2558b9c05dbe9c4d0b252900/hadoop-ozone/dist/src/shell/ozone/ozone#L188-L191
similar to how it's done for ozone sh:
https://github.com/apache/ozone/blob/5f84fd1c9f35d82f2558b9c05dbe9c4d0b252900/hadoop-ozone/dist/src/shell/ozone/ozone#L149-L154
See also #3706 for an improvement being done for ozone sh to allow custom log filenames.

Yes I am testing it out now, Ill be updating the patch soon with the changes


controller: Print error for duplicate modules

You can't use the same name twice inside the module lists
E.g.
modules-left = a b c
modules-center = a
modules-right = b

would print an error.
We only print an error for now because we don't want to break existing
configs. But in the future this should be properly enforced.
This is in preparation for fixing #1172, because I plan on making modules uniquely identifiable by their name.

Should we fix #412 before merging this?
Since we deprecate using two time the same module, I think we need to promote an alternative which is not copy/paste.

I don't think so. We only prohibit having the exact same module in the bar multiple times. I don't think anyone even has that in their config since they will display the exact same thing. You can still have the same module type multiple times.

Should we fix #412 before merging this?
Since we deprecate using two time the same module, I think we need to promote an alternative which is not copy/paste.

I don't think so. We only prohibit having the exact same module in the bar multiple times. I don't think anyone even has that in their config since they will display the exact same thing. You can still have the same module type multiple times.

Indeed that's true.


support TNS URL of oracle plugin

Coverage increased (+0.2%) to 22.76% when pulling<PHONE_NUMBER>e96f695b4c58f3ebc02a8eb4ca6adb on ascrutae:feature/support-oracle-tns-url into 730c43d50188e7c51313819b901f292636b08db4 on OpenSkywalking:master.

Coverage increased (+0.2%) to 22.76% when pulling 02877d4bbc0fb8064dfb2d359e4fc86023690e26 on ascrutae:feature/support-oracle-tns-url into 730c43d50188e7c51313819b901f292636b08db4 on OpenSkywalking:master.


fix: prevent race condition between transformRequest and optimizeDeps (fix #6508)

Description
Fixes #6508
The idea behind this PR is to prevent further transformations of a module in the case the deps optimizer has been run after reading the module's source code but before reading the source maps. It is useless to continue transformations as running the optimizer will invalidate all the modules in the end. This should prevent the race condition described in the linked issue and fix irrelevant Failed to load source map for .vite/chunk-AJFLDE.js warnings that are caused by that race condition.
Additional context
The transformRequest function can be invoked:

By making a direct HTTP request to a module. In this case, the change will cause the server to return 404 for the module if the optimizer has been run in the mentioned circumstances. The module will be transformed normally after a full reload that the optimizer will cause eventually.
By the importAnalysis plugin during the pre-transformation of the module's imports. In this case, the module will be just skipped until a full reload that the optimizer will cause eventually.

What is the purpose of this pull request?

[x] Bug fix

Before submitting the PR, please make sure you do the following

[x] Read the Contributing Guidelines.
[x] Read the Pull Request Guidelines and follow the Commit Convention.
[x] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
[ ] Ideally, include relevant tests that fail without this PR but pass with it.

Closed as the issue was already fixed in a different PR.


Allow convert datatype layer contextual menu to operate on images.

🚀 Feature
The viewer tutorial says:

Convert datatype - converts an Image or Labels layer into int8, int16, int32, int64, uint8, uint16, uint32, or uint64 data types. The initial data type is the data type of the data itself.

This makes sense and is a useful thing to be able to do from the GUI, but it is not possible -- only labels layers can have their datatype converted.
Motivation
Plugins or other operations may result in a layer that is tricky to write out, see: https://forum.image.sc/t/i-cant-save-file-in-any-format
Pitch
Enable the contextual menu to work on image layers just like labels.
Alternatives
Update the documentation to clearly state that coverting datatypes is for labels only.
Additional context

Thanks for checking @dalthviz
So the issue here isn't a GUI but actual functionality.
So we should patch the docs and then this issue can be clarified as a feature request to add conversions for images.


Bump version to 2.0.3

Version in ps_categorytree.php already update

Questions
Answers

Description?
Version in ps_categorytree.php already update

Type?
improvement

BC breaks?
no

Deprecations?
no

Fixed ticket?
No

How to test?

🍬


Has the CosineStrategy been deleted?

Has the CosineStrategy been deleted?

@1933211129 No it's there, just make sure to install the library with [cosine] tag.


feat: add Into for Address and ContractId fn arguments

closes: https://github.com/FuelLabs/fuels-rs/issues/962
Our FunctionGenerator now generates impl Into<Bech32Address> and impl Into<Bech32ContractId> instead of Address and ContractId.
This is reflected on all contract methods, predicate encode functions, and script main functions.
Checklist

[x] I have linked to any relevant issues.
[x] I have added necessary labels.
[x] I have done my best to ensure that my PR adheres to the Fuel Labs Code Review Standards.
[x] I have requested a review from the relevant team or maintainers.

I feel like this would enable the user to pass in an Address to a method that normally only accepts ContractId without being explicit about it, and this is not something we want. It needs to be explicit, because the difference between Address and ContractId is fundamental and can lead to a loss of fund IIUC. Am I getting this wrong?

You are right. Normally it would not be a problem to have a impl Into<ContractId> as I would imagine that into would be implemented only types that make sense. However, we will get into implementations for conversion between Address and ContractId and then we do not have type safety anymore.
The only other thing that comes to mind is to have methods accept Bech32Address and Bech32ContractId. However, this solution is not as ergonomic as impl Into<ContractId> as you would have to turn a already existing ContractID into Bech32ContractId
@FuelLabs/sdk-rust what are you thoughts on this? I am leaning towards leaving it as it is and closing this PR.

I feel like this would enable the user to pass in an Address to a method that normally only accepts ContractId without being explicit about it, and this is not something we want. It needs to be explicit, because the difference between Address and ContractId is fundamental and can lead to a loss of fund IIUC. Am I getting this wrong?

You are right. Normally it would not be a problem to have a impl Into<ContractId> as I would imagine that into would be implemented only for types that make sense. However, we will get into implementations for conversion between Address and ContractId and then we do not have type safety anymore.
The only other thing that comes to mind is to have methods accept Bech32Address and Bech32ContractId. However, this solution is not as ergonomic as impl Into<ContractId> as you would have to turn an already existing ContractID into Bech32ContractId (same applies to Address)
@FuelLabs/sdk-rust what are you thoughts on this? I am leaning towards leaving it as is and closing this PR.

What about replacing the usages of Address with impl Into<Bech32Address> in the generated fn bindings?
So you can then give both an Address and its bech32 equivalent. Same for the ContractIds.
You'd retain type safety since neither Address  satisfies impl Into<Bech32ContractId> nor does ContractId satisfy impl Into<Bech32Address>.
You'd still have pure addresses nested in generated structs and enums, since using impl there would cause generic headaches.

I would like the Into<Bech32Address> and Into<Bech32ContractId>, sending something to a Bech32Address vs its corresponding Address doesn't work I think. If they are not functionaly equivalent, I'm for keeping type safety above all, otherwise users would probably shoot themselves in the foot.
But it does ask the question of why we are bothering users with implementation details of exposing the Bech32 format at all, IMO we should discuss around how to abstract this away.

What about replacing the usages of Address with impl Into<Bech32Address> in the generated fn bindings?
So you can then give both an Address and its bech32 equivalent. Same for the ContractIds.
You'd retain type safety since neither Address satisfies impl Into<Bech32ContractId> nor does ContractId satisfy impl Into<Bech32Address>.
You'd still have pure addresses nested in generated structs and enums, since using impl there would cause generic headaches.

This is a great idea! :heart:  I did a quick first implementation and it works as expected. We retain the type safety as you said.
@iqdecay you said:  but sending something to a Bech32Address vs its corresponding Address doesn't work I think.
We turn it back to an Address under the hood so everything works the same. The interface is just a bit nicer as you can give either a Address or an Bech32Address

What I meant is I think that rather than changing this implementation detail, we should re-explore why we are exposing two types of addresses at all. Fixing this seems like a bandaid to the more general problem of exposing two types of addresses instead of handling them both under the hood. This particular fix is moreover not the one requested by user (because the one requested by users is a gateway to a footgun), so we don't actuallly need to do it IMO.

I agree but what you say is above this request. The user wanted a nice UI where he can give either Address or Bech32Address (same for ContractId) to contract methods. This PR makes that possible without loosing type safety. So until we have an unified Address and ContractId IMO it makes sense to have this.

Ah yes you're right mb

Thank you hal3e, very cool

Could we not determine if it's a contract or address at run-time and avoid casting it altogether?
Casting it only at runtime for the pieces that must know

If I give you an address 0x123....789, and I say to send it 10 ETH, is it fair to say you could get an error depending on if it's a contractId or an address, so you would need to ask me a follow-up, is it an address or a contract. Well a multisig is a contract, but I could see someone making that mistake.
It seems like we're building a 'gotcha' into the sway stack that could be avoided entirely if we just abstract all of this into a run-time check (if possible, if not possible currently then add a flag to each address?)

This is a good argument I agree, but this is not the right place to discuss it, https://github.com/FuelLabs/sway/issues/4569. This design decision is not ours, and even if we wanted we cannot change it, it's in Sway.

This is a good argument I agree, but this is not the right place to discuss it, this issue is. This design decision is not ours, and even if we wanted we cannot change it, it's in Sway.

This development would be superfluous if we did a run-time check (eliminating Address and ContractId distinction), so It does feel like a decent place to discuss


Lightmap display in GLES3 is broken when Generate Atlas is enabled in BakedLightmap

Godot version
3.5.beta (c42e9bd58)
This issue does not occur in 3.4.stable.
System information
Fedora 34, GeForce GTX 1080 (NVIDIA 470.74)
Issue description
Lightmap display in GLES3 is broken when Generate Atlas is enabled in BakedLightmap:

No errors appear in the console. Lightmap baking works as expected, since a EXR texture with lightmap data is generated when lightmaps are baked with Generate Atlas enabled (Spatial.exr in the MRP). When Generate Atlas is disabled and lightmaps are baked again, lightmaps display correctly (baked as Cube.exr in the MRP):

This issue does not affect GLES2 which doesn't support lightmap atlases.
Steps to reproduce

Create a mesh in Blender and export it as glTF (required for UV mapping).
Configure the bake mode in the glTF's import options to Gen Lightmaps and click Reimport.
Add a BakedLightmap node.
Add an OmniLight with bake mode set to All (Direct + Indirect). This makes the issue more visible than the default Indirect bake mode.

Minimal reproduction project
test_lightmap_atlas.zip

I bisected the regression to commit 4c710780d49f850261cf7cb3ca361002e635e592. cc @RandomShaper

Fixed by #55676.


Disable Splitter Bar

Hello, i just want to split the layout and disable the separator, there should be a line in between but it should not be a re sizable pane how i can do that ?

Hi,
For your use case, if you have no plan of supporting resizing, I'd suggest not use the splitter layout at all. A flex layout and a border should do the trick.

Closing due to no further response.

You could override the style with something like:
.splitter-disabled.splitter-layout.splitter-layout-vertical > .layout-splitter {
height: 1px;
cursor: pointer;
}
and then use:

See Issue #26


Create arraylist_to_array.md

Added java one-liner markdown for converting any typed ArrayList to Array.

Thank you sir, deployed here: https://onelinerhub.com/java/arraylist_to_array


Fixes travis FBO tests

The current FBO tests were calling render() function, but Fbo.draw() was already working. In addition, the render() output potentally the window output to the Fbo, which screw it in the end.
Just fbo.draw() and check the content works as intented.

I close this pull request, because @tito asked me to move this work into pull request #6148, so we can have this fix and the pep8 fixes I made in there together


CB-11007 CCM Enabled Icon is not show in UI for CCMV2 Environments.

UI and CDP CLI consider an environment is CCM Enabled only when TunnelValue is CCM.
Since Environment is CCM enabled even when CCMV2 is used internally, Environment Api Tunnel response needs to be initialized as CCM. (Customer Facing CDP CLI only has enableTunnel(False\True), internal ccmv1, ccmv2 protocols are not exposed to customers.

See detailed description in the commit message.

this doesn't look like a good idea. I mean we are saying about an env it's using CCMv1 when it's actually using v2. This should be a UI change

this doesn't look like a good idea. I mean we are saying about an env it's using CCMv1 when it's actually using v2. This should be a UI change

Ok.


Render footnotes and citations via pandoc

Attempt to implement support for pandoc by default, without causing conflicts with other markup renderers. Added a test for the new filter, and everything seems fine.
Note: I removed support for BibTeX pages from this PR, since that's separate functionality that should have its own PR.

An even stronger implementation would of course allow using pandoc to render any of the formats it supports.. :)

Implemented your suggestions. Thanks again! 👍

@bartkamphorst, do you think this is ready to merge? Also understand if you think it's too hacky (given the overrides and the need for an extra filter).

Refactored so that, if the wiki is non-bare, pandoc will simply be passed the path of the relevant bibfiles in the repo (rather than copying its contents to a tempfile).

:+1:

I think this is an excellent addition in terms of functionality, and I think you've implemented it clearly and cleanly. With regard to the additional Filter though, couldn't we remove the Filter from the filter_chain if we know that it won't be used (either because it is disabled, or because certain requirements are not met)?

Thanks!

couldn't we remove the Filter from the filter_chain if we know that it won't be used (either because it is disabled, or because certain requirements are not met)?

Could do that here?

Could do that here?

Exactly, comparable to how it is done with Emoji filter.

Something like this then? :)

Yes, makes more sense not to run through any filter when it is not being used.

All lights green 👍

I hope this is the right place to ask: Is there a way to make a hacky version of this within a config.rb file (i.e. basically copying pandoc_bib.rb and adding the filter) or should I wait for gollum 5?

If you want it right away I think your best bet is to cherry pick this commit and merge it into your version of gollum. The PR is fairly self contained so you should be able to get it to work. No warrantee and no support though. :)


vc: Use map to represent ignoredMounts

We can use map from Source to Mount as ignoredMounts representation.
Inner loop in kataAgent#removeIgnoredOCIMount is removed.
Fixes #2299
Signed-off-by: Ted Yu<EMAIL_ADDRESS>

/test

@bergwolf
Can you retrigger jenkins-ci-vsocks ?
Thanks

20:19:47 W1202 04:19:47.080212    5630 removeetcdmember.go:61] [reset] failed to remove etcd member: error syncing endpoints with etc: etcdclient: no available endpoints

I don't think the above was related to my PR.

@jodh-intel @grahamwhaley
Can you re-trigger tests ?
Thanks

I've nudged both ARM and vsocks CIs to rebuild on the Jenkins UI.

@jodh-intel @grahamwhaley
All tests passed.


Merge pull request #108

r? @chandraprakash
(maidsafe_highfive has picked a reviewer for you, use r? to override)


Fix deprecated api link

Fixes https://github.com/kiali/kiali/issues/3026
Kiali API is not public and that link is wrong, there is no expectation to have it back in the kiali site, so, better to remove this annotation from the operator.
Please, @jmazzitelli let me know if it looks good for you.
@hhovsepy this is a very small fix but I haven't completely checked if there is nothing broken, specifically when browing the Kiali workload/service from Kiali itself.

Interestingly, those annotations are in the kiali-server helm chart's service yaml but not the deployment yaml. So we need to rip this out in another PR: https://github.com/kiali/helm-charts/blob/master/kiali-server/templates/service.yaml#L13-L14

Thanks for the review @jmazzitelli, yes, I was unsure if we need them in the helm, I'll prepare a separated PR for that


docs: add doc for preset utility functions

Summary

Closes #4433
Test plan

Green CI
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information
N/A

Pull Request Test Coverage Report for Build<PHONE_NUMBER>9
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 95.265%

Totals

Change from base Build<PHONE_NUMBER>8:
0.0%

Covered Lines:
4759

Relevant Lines:
4937

💛  - Coveralls


Write blog post about newest paper

Since nobody really reads papers any more, we should write some light bedtime reading alternatives.

Approached some portals

Wrote text

Published text on web portals X [sic], Y, and Z


Feature request:  cupyx.scipy.sparse.linalg.eigsh

I am not sure if there has already been an alternative method to implement Lanczos algorithm.

This is done in #4138.


[FLINK-32881][checkpoint] Support triggering savepoint in detach mode for CLI and dumping all pending savepoint ids by rest api

What is the purpose of the change
Support triggering savepoint in detach mode for CLI to avoid a timeout when the state of the job is enormous.
(For example: This pull request makes task deployment go through the blob server, rather than through RPC. That way we avoid re-transferring them on each deployment (during recovery).)
Brief change log
(for example:)

The TaskInfo is stored in the blob store on job creation time as a persistent artifact
Deployments RPC transmits only the blob storage reference
TaskManagers retrieve the TaskInfo from the blob cache

Trigger a detach savepoint in CLI, and return the savepoint id (generated by client) immediately.
Verifying this change
Please make sure both new and modified tests in this PR follows the conventions defined in our code quality guide: https://flink.apache.org/contributing/code-style-and-quality-common.html#testing
(Please pick either of the following options)
This change added tests and can be verified as follows:
-Added test that validates that detach savepoint can be triggered successfully.
CliFrontendSavepointTest.testTriggerDetachSavepointSuccess
(example:)

Added integration tests for end-to-end deployment with large payloads (100MB)
Extended integration test for recovery after master (JobManager) failure
Added test that validates that TaskInfo is transferred only once across recoveries
Manually verified the change by running a 4 node cluster with 2 JobManagers and 4 TaskManagers, a stateful streaming program, and killing one JobManager and two TaskManagers during the execution, verifying that recovery happens correctly.

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (yes / no / don't know)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (yes)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (yes)
If yes, how is the feature documented? (not documented)

@flinkbot run azure

@flinkbot run azure

@masteryhx
Many thanks for your comment~
Here are my requirements:

support triggering savepoint in detached mode, so the cli process can return quickly and will not occupy the resource for a long time;
get the status of detach savepoint information through platform, that is whether the detach savepoint has been made successfully, or failed, or producing at the time.

To your question:
With non-detach savepoint, we could know whether this savepoint has been successfully triggered and made from the CLI output, but in detach mode, if we just change code in flink-clients, that is, just send the request and return, we could not know whether the savepoint triggered this time is in which status from the current REST API, at least we need to know the savepoint id, in this case, we could use api "/jobs/:jobid/checkpoints/details/:checkpointid" to get the savepoint status.
But in this case, the client needs to wait for the savepoint id msg from jm, that makes the client needs to wait for a while.
So in this pr, I support triggering savepoint in detach mode as following:

client generates a savepoint-id, which is produced by RandomUUID, and when triggering savepoint in detach mode, this info will put into the request body;
when jm receives the request, it will check the savepoint-id info, if this field is set, it will directly use this as the savepoint id instead of generating a id like savepoint-xxxxxx.

In this way, client does not need to wait for any message, it triggers the detach savepoint and generates a savepoint id, then its job is finished. If we want to know the status of the detach savepoint, we could use the dump-pending-savepoint api and get all savepoint ids, then compare the savepoint id generated by client.
Hope to get your suggestion, thank you~

@xiangforever2014
Thanks for the detailed clarification.
I think remaining too many mapping info in CheckpointCoordinator is not necessary which brings too much unnecessary code path just for sepreated savepoint info.
I think the core problem is that current savepoint in detached mode lacks some returned infos to further lookup such as checkpoint id or savepoint id, right ?
BTW, This problem also exists in manual checkpoint, so I'd suggest to consider them together.
Current REST API could use trigger id to see the status of savepoint which should also work for CLI.
So if you pass or generate a trigger id and print it in CLI when detached mode, you could also use it to check the status of savepoint, right ?

@flinkbot run azure

@masteryhx Many thanks for your suggestion, and I have followed your advice to simplify the code.
I have tested in my local machine, when triggering a detached savepoint, the CLI will return with a trigger id immediately, and I could use the trigger id to get the status of the savepoint by REST API /jobs/:jobid/savepoints/:triggerid .
Triggering a savepoint vs. Triggering a detached savepoint:

Triggering a savepoint: from the picture, we could see that the CLI should wait for the savepoint to be finished, and it is very easy to cause a CLI timeout when the state of the job is huge.

Triggering a detached savepoint: the CLI returned with the trigger id immediately, and we could get the status of the savepoint by REST API.

when the savepoint has not finished, we get

once the savepoint finished, we get

@masteryhx hope to get your reply, many thanks~

@masteryhx Many thanks for your insightful comments, I have updated the code according to the comments, PTAL, thanks again bro~

@masteryhx kindly remind, hope to get your reply, many thanks~

@masteryhx kindly remind, hope to get your reply, many thanks~

Seems there are some conflicts.
Could you rebase the master and resolve them at first ?

@masteryhx Hello, I have rebased the code to the master, PTAL~

@masteryhx Kindly remind, hope to get your reply, many thanks ^_^

Hi @xiangforever2014 @masteryhx sorry for jumping in... And I'm wondering if we could use the capital '-D' for short option? Or I suggest we do not leave any short option for this, only using '-detach'. WDYT?
I agree we could adjust these CLI options in 2.0.

Hi @xiangforever2014 @masteryhx sorry for jumping in... And I'm wondering if we could use the capital '-D' for short option? Or I suggest we do not leave any short option for this, only using '-detach'. WDYT?
And I agree we could adjust all these CLI options in 2.0.

Thanks for your comment~
But I wonder that is there any problem in current implementation? Or why we need to change it to "-D" or "-detach"?
Hope to get your suggestion~

@masteryhx Hello, I have updated the code according to your comment, PTAL~
Here are the test results:

trigger the normal savepoint, the client gets a timeout exception:

trigger the detached savepoint, the client returns the trigger id immediately, and we could monitor the status of the savepoint by rest api:

trigger the stop-with-savepoint, the client also gets a timeout exception, and the job will be stopped after the savepoint finished:

trigger the stop-with-detached-savepoint, the client also returns the trigger id immediately, and we could get the status of the savepoint by rest api through the trigger id, after the savepoint finished, the job will be stopped too:

Hi @xiangforever2014 @masteryhx sorry for jumping in... And I'm wondering if we could use the capital '-D' for short option? Or I suggest we do not leave any short option for this, only using '-detach'. WDYT?
And I agree we could adjust all these CLI options in 2.0.

Thanks for your comment~ But I wonder that is there any problem in current implementation? Or why we need to change it to "-D" or "-detach"? Hope to get your suggestion~

Hi @xiangforever2014 . Short commands are designed to be readable or easy for users to remember. It can be omitted if there is no suitable abbreviation. The '-dcp' is not that easy to remember or understand, user may not know what it stands for. WDYT?

Hi @xiangforever2014 @masteryhx sorry for jumping in... And I'm wondering if we could use the capital '-D' for short option? Or I suggest we do not leave any short option for this, only using '-detach'. WDYT?
And I agree we could adjust all these CLI options in 2.0.

Thanks for your comment~ But I wonder that is there any problem in current implementation? Or why we need to change it to "-D" or "-detach"? Hope to get your suggestion~

Hi @xiangforever2014 . Short commands are designed to be readable or easy for users to remember. It can be omitted if there is no suitable abbreviation. The '-dcp' is not that easy to remember or understand, user may not know what it stands for. WDYT?

Thanks for your suggestion, and I think that's indeed more friendly to users, I have followed your suggestion and use '-detach' for the detached mode~

@masteryhx @Zakelly Following your constructive comments, I have rearranged the commits and rebased to the master branch, please have a look, many thanks~

Hi @xiangforever2014 @masteryhx sorry for jumping in... And I'm wondering if we could use the capital '-D' for short option? Or I suggest we do not leave any short option for this, only using '-detach'. WDYT?
And I agree we could adjust all these CLI options in 2.0.

Thanks for your comment~ But I wonder that is there any problem in current implementation? Or why we need to change it to "-D" or "-detach"? Hope to get your suggestion~

Hi @xiangforever2014 . Short commands are designed to be readable or easy for users to remember. It can be omitted if there is no suitable abbreviation. The '-dcp' is not that easy to remember or understand, user may not know what it stands for. WDYT?

Thanks for your suggestion, and I think that's indeed more friendly to users, I have followed your suggestion and use '-detach' for the detached mode~

That's cool. +1 from my side.

@masteryhx @Zakelly Following your constructive comments, I have rearranged the commits and rebased to the master branch, please have a look, many thanks~

Thanks for the update.
I saw some minor comments haven't been resolved.
Do you have any other concern ? We could discuss in every comment.

@masteryhx  Hello, the CI is succeed, thank you~

@masteryhx kindly remind~


Google Assistant Relay addon support

When using TTS from Google, anything that is currently playing on Google devices will be stopped and not resumed after the text notification.
Goal is to use Assistant Relay Add-On to prevent this.
This requires a lot of tinkering since it is not drop in replacement.
Broadcast normally sends message to all Google devices and this needs to be preventing by adding broadcast to "name of the device" before message itself.
Also, this integration can be used to trigger commands on Google Devices via Google Assistant.

Unfortunately, this is still in tinkering/testing phase. Reason is not simple, but not getting updated in last year or so doesn't help.
Also, since I'll be migrating it to Docker version, for now this is on hold.

Ok - I'm having problem with this Docker/Add-on - reason why I still haven't migrated to it is that I don't feel that this addon has enough of support and maintenance - latest release was really a long time ago.
I'm not convinced that this is best way to move forward although it should be better option for TTS notifications.
New release has been in works for close to a year and changes are far apart.
Last thing that I really don't like is moving support for this from Discord to Facebook (???!) - don't use it and forcing support to got to Facebook for any product for me is showstopper.

Development of this Add-On and component has stopped and that's why it will be removed from my setup.
TBH I had high hopes for it and tests did go really well. As it is using system broadcast function, resume on media play was possible.


Hide console output

I'm using deno-open in scripts and I don't like the output that is generated in the index.ts:
console.log("Running command");
console.log(command, ...cliArguments);

Can this lib provide a flag for silent mode or can this be removed altogether?

@martin-braun Hello, thanks for opening this issue... Those logs are not supposed to be there and are now removed in<EMAIL_ADDRESS>import { open } from<EMAIL_ADDRESS>


Create fu.txt

@trungdang0593 The domain registrant for fu.edu.vn is Trương Đan Huy (Truong Dan Huy). This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.