Setup Kanban Board

Hello!
Team: @Danfall369  / @smunoz1988
Group project: set up your Kanban board
https://github.com/smunoz1988/recipe-on-rails/projects/1

Hi @smunoz1988 and @Danfall369
Your project is complete! There is nothing else to say other than... it's time to merge it :shipit:
Congratulations! 🎉

Highlights

[x] Good project organization ✔
[x] Nice use of Kanban features ✔
[x] Kudus on meeting the requirements suggested  ✔

Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you take them into account as they can make your code better. Some of them were simply missed by the previous reviewer and addressing them will really improve your application.
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.
As described in the Code reviews limits policy you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


[Distribution Build Break] Related to JvmInstallationMetadata

Plugins are seeing error messages when building because of missing GlobalBuildInfoPlugin.
Reproduce with

git checkout https://github.com/opensearch-project/opensearch-build && cd opensearch-build
./build.sh manifests/1.3.0/opensearch-1.3.0.yml

Error message
+ ./gradlew assemble --no-daemon --refresh-dependencies -DskipTests=true -Dopensearch.version=1.3.0 -Dbuild.snapshot=false -x ktlint
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/6.6.1/userguide/gradle_daemon.html.
Daemon will be stopped at the end of the build stopping after processing

FAILURE: Build failed with an exception.

* Where:
Build file '/tmp/tmpdxxyybez/alerting/alerting/build.gradle' line: 34

* What went wrong:
A problem occurred evaluating project ':alerting'.
> Failed to apply plugin class 'org.opensearch.gradle.info.GlobalBuildInfoPlugin'.
   > Could not create plugin of type 'GlobalBuildInfoPlugin'.
      > Could not generate a decorated class for type GlobalBuildInfoPlugin.
         > org/gradle/internal/jvm/inspection/JvmInstallationMetadata

@reta Can you look into this, it might be related to recent changes you made

Looks like job-scheduler is failing to build because of changes in core.
A problem occurred evaluating root project 'opensearch-job-scheduler'.
> Failed to apply plugin class 'org.opensearch.gradle.info.GlobalBuildInfoPlugin'.
   > Could not create plugin of type 'GlobalBuildInfoPlugin'.
      > Could not generate a decorated class for type GlobalBuildInfoPlugin.
         > org/gradle/internal/jvm/inspection/JvmInstallationMetadata

The signature of GlobalBuildInfoPlugin changed with migration to Gradle 7.
Plugins should must upgrade to Gradle 7 to solve this, very likely this will impact all plugins.
Ref: https://github.com/opensearch-project/OpenSearch/commit/93bd32b14270be0da8a6b5eef8eeabfce7eb2b58#diff-9f9d91bba5c4d429a0d[…]3a40789ce3dd5c7bfc2f2R84

@peternied @saratvemulapalli yes, we have discussed that under https://github.com/opensearch-project/OpenSearch/pull/1630, the issues for all plugins are created https://github.com/opensearch-project/opensearch-plugins/issues/107 and will be fixed shortly, it is difficult to support 6.x and 7.x at the same for OpenSearch builds

@saratvemulapalli @reta
If this is a breaking change that breaks all plugins because of a change in core for the build tooling.. then perhaps we should revert the upgrade to Gradle 7 for now and introduce it in 2.0 instead of 1.3 where it might be more appropriate to introduce such a change.
@dblock @elfisher ^

@dbbaughe we have touched on that here https://github.com/opensearch-project/OpenSearch/pull/1630, the migration for plugins is (sadly) breaking but easy to address. The issue is two fold: because of the OpenSearch usage of old Gradle, plugin developers cannot use the never Gradle as well.

@reta It doesn't matter if it's easy. It's breaking. If this isn't some critical security fix for our build tooling that requires us to bump the Gradle version then we shouldn't be introducing this bump into a minor release as it appears to break plugin builds. I'm not fully aware of the context of this change, so please feel free to add additional context here, but from the looks of it so far this should be reverted from 1.3 and kept only in 2.0 with additional steps for plugin developers in the 2.0 release notes to bump to a min version of Gradle 7 when migrating to 2.0.

@dbbaughe sure, revert is easy, just please note that we are not talking just about 1.3 here but the whole 1.x line. We'll stuck with old Gradle for ages, anyway I would certainly let @dblock to make the call

1.3 is not shipping tomorrow and there's plenty of time to upgrade tooling - I didn't feel like we needed to consider that as a "breaking change" - why do you feel otherwise @dbbaughe?

@dblock just to clarify on "breaking change" - the plugin authors would need to update to Gradle 7 as well in order to build their plugins against 1.3.0-SNAPSHOT. The reason for that is OpenSearch tooling, specifically, org.opensearch.gradle.info.GlobalBuildInfoPlugin, that was using incubating Gradle 6.x APIs (thanks @dlvenable), wiped out in Gradle 7. Most (if not all) plugin use OpenSearch tooling, so @dbbaughe is right from this perspective - it is "breaking change", it was known and discussed here https://github.com/opensearch-project/OpenSearch/pull/1622. Please let me know if more context or details are needed, thank you.

Can I have some hands on whether this should be reverted from 1.x, and we'd rather defer the gradle upgrading work to 2.0?

@dblock basically we have the following pros / cons:

revert change for 1.x

plugins are not affected for 1.x line

plugin authors are constrained to use Gradle 6, no matter they would prefer to use Gradle 7+
plugin authors would have to migrate to Gradle 7+ in order to support 2.0+ (so this change is inevitable in long run)
keeping the change for 1.x

absorb one time cost of migration
plugins could use same build tooling 1.x and 2.0+

plugins builds are affected for 1.x line and will fail

The two major features of Gradle 7, official JDK 17 support and Scala 3, may not be very important in the context of OpenSearch ecosystem right now.

I thought about this more and I think we should stick to our commitment for broad backwards compatibility in the case of the tooling. I'm inclined to revert this change on 1.x. @reta if you agree care to PR the change(s)?

@dblock sure, no objections, on it

https://github.com/opensearch-project/OpenSearch/pull/1657 reverted from 1.3


WIP: skeleton code for saving compressed features to disk

Initial idea on how to save the compressed features to disk. Haven't worked out all the details yet, so not sure if it'll work out, please let me know what you think.
@RAMitchell @sriramch @trivialfis

The prototype looks good to me.  Just note that, if you think the existing structure is not suitable or too complex, you can roll out your own.  I don't understand how the current external memory works anyway.

i'm also curious as to how and where these transformed (compressed) pages are going to be used? is this going to be used during binning, used in lieu of the compressed bins (which is where the biggest gpu memory consumption is) etc.? it may be prohibitively expensive if we are bringing in these pages into gpu during tree construction batch by batch to compute the feature quantile bin the feature belongs to, even if we do this only when external memory is enabled.

My current plan is in Transformer::Init(DMatrix* dmat) we'll loop through the dmatrix once to generate the quantiles and keep them in memory. Then the DMatrix::GetTransformedBatches() will loop through the row batches, compress each batch via Transformer::Transform(batch), and write the compressed features to disk. During tree construction, the compressed features will be streamed back to GPU.
Yes it'll probably be very slow, but I think it's a necessary waypoint towards the full solution. We can then look at overlapping data copying and computation, importance sampling etc.

would it be easier (and possibly quicker) to assess the impact of streaming these into gpu in batchwise fashion like this, or to even assess if such a thing is possible for tree construction, without doing this dmatrix refactoring first? the compressed feature bins for the entire data is in gpu today. it should be possible to copy them to host memory and to bring them in batches - right?

@sriramch if you have some time to run the experiment, that would be great!
I'm not really refactoring dmatrix; it's more leveraging the existing code to make it possible to support external memory mode on gpus. I'll keep pursuing this to see where that leads us.

@rongou Take a look at https://xgboost.readthedocs.io/en/latest/contribute.html#running-formatting-checks-locally to run formatting checks locally.

The transformer class looks like the visitor design pattern. I like this idea.
What I don't understand is how the transformer class can deal with compressed matrix representations using integer features. It seems to only be able to transform a SparsePage into another SparsePage, which is strictly a CSR (or CSC if transposed) floating point format.

Yeah I think we need to have different types of SparsePages. I have some idea to make this work, will send out an update.

I think I have a path forward now. Closing this and will send a separate PR.


Meaning of the term API in the operationId context.

In the context of an operationId. the spec says:

The id [operationId] MUST be unique among all operations described in the API

What is the definition of API in this context?
Does it mean all operations defined in the same file?
All operations used by an application?
Did I just miss the definition or should this be clarified?

That's a fair question and needs to be clarified.
The 'basic' limitation would be within the same Swagger description. The real challenge is how it would behave when referencing external files.

If I understand this correctly, the operationId currently has to be unique for each API endpoint an application provides. If it provides multiple API endpoints, the operationId is only required to be unique per API endpoint.
Currently I use Swagger Springfox/Codegen to generate code and I get one API class for each controller class (tag). IMHO in fact, it would be totally sufficient to demand that the operationId is unique per RequestMapping path/tag/controller/API class.
What the current interpretation of the specification leads to is that the operationId is suffixed with numbers to guarantee its uniqueness.
Request Paths:
/pet/find
/category/find
/person/find
Generated API definition (provided by Swagger Springfox):
"/pet/find": operationId: findUsingGET
"/category/find": operationId: findUsingGET_1
"/person/find": operationId: findUsingGET_2
The generated code using Swagger Codegen then looks like this:
PetAPI.findUsingGET()
CategoryAPI.findUsingGET_1()
PersonAPI.findUsingGET_2()
So in fact, although IMHO it would be totally sufficient to scope the uniqueness of the operationId per tag/API class, it is now suffixed and generates hardly understandable client code with lots of suffixes.
The current solution to this is to use nicknames for the operations and name them uniquely:
"/pet/find": operationId: pet_findUsingGET
"/category/find": operationId: category_findUsingGET
"/person/find": operationId: person_findUsingGET
This solution is unsatisfying so far that it adds a scoping to methods that are already scoped:
PetAPI.pet_findUsingGET()
CategoryAPI.category_findUsingGET()
PersonAPI.person_findUsingGET()
Wouldn't it be sufficient to demand that the operationId is unique per tag it is associated to (or per Request Path)?

I personally think the operationId has its use (unique identifier for operations). However, I think it is being misused in many cases.
One tool that is misusing it is the codegen. It uses the operationId for method name and uses the tag(s) for classname. The method names do not need to be unique across all classes. This becomes especially awkward when the operationId is generated from existing code (like Java) where methods do not need to be unique across all classes. Perfectly reasonable looking Java code is incorrect because methods names are now suddenly unique across classes.
For codegen it would be nice if we could just specify what the classname and methodname should be, separate from the operationId.
For Swagger-UI the operationId is correctly used IMO. It isn't being shown as a kind of 'short name'. It is actually a unique identifier just to reference a specific operation. The operation can be referenced using the # in the URL and (from what I gathered) is used internally to reference JS/HTML elements.
A UUID in this case makes perfect sense and seems more stable than a user-defined Id that needs to look good in order to use it as a method name.

Besides codegen and apigee SmartDocs, which tools actually use the operationId?
We started with title case and spaces between words in the operationId for SmartDocs rendering which uses the operationId for titles. Now it seems the spaces may cause trouble in other tools. According to the OpenAPI Spec definition of the operationId ' .. it is RECOMMENDED to follow common programming naming conventions'.
Now I am wondering if we should convert the operationId to Camel Case or hyphenated words?  The operationId is being ignored by our current rendering. The summary and description are being used.
What is the best practice for the operationId?

What we are doing is create operationIds from classname and method name. For instance something like: UserController.byId. That way it is unique and human-readable. However, when we're passing the specs to a codegen, then we're transforming the specs so that the tag of the operation becomes User and the operationId becomes byId.
This results in general use we have a valid specification. For codegen we have an invalid specification (byId is not unique), but it will at least work for the codegen.
I wouldn't call it 'best practice', but it is how we're coping with this issue.

The issue I am seeing is auto-generated operationIds is that in its attempt to enforce uniqueness the generator produces random permutations of the ids. So, for example, for a given method, say, in a class UserController.updateUser() the generator produces either updateUser or updateUser_1, etc each time the generator is run. Clearly, this non-deterministic behavior is a bug. A trivial fix is to generate those IDs using fully qualified class name + method.

The issue I am seeing is auto-generated operationIds is that in its attempt to enforce uniqueness the generator produces random permutations of the ids. So, for example, for a given method, say, in a class UserController.updateUser() the generator produces either updateUser or updateUser_1, etc each time the generator is run. Clearly, this non-deterministic behavior is a bug. A trivial fix is to generate those IDs using fully qualified class name + method.

Fixed by #3823 and #3906


Sprint 1 - Neil Chandra Soft Skills Review

Learning Habits Table
Review criteria in habits.  In this review, pairs should rate each other base on their experience with the person on the line item.
Rank to Ratio, rank is an integer
1 = .55
2 = .75
3 = .85
4 = .90
4+Mastered-Y = .95

Skill
Mastered (Y/N)
Rank (1-4)
Ratio
Notes

Attendance
[Y ]
4+
0.95

Work Habits
[Y ]
4+
0.95

Behavior
[Y ]
4+
0.95

Timeliness
[Y ]
4+
0.95

Tech Sense
[N ]
3
0.85

Tech Talk
[Y ]
4+
0.95

Tech Growth
[N ]
4
0.90

Advocacy
[Y ]
4+
0.95

Comm & Collab
[Y ]
4+
0.95

Integrity
[Y ]
4+
0.95

Organized
[N ]
4
0.90

Total

10.25

Average

0.93

Hi Neil, you were a great partner for this Sprint #1. I liked your approach and you mostly had great soft skills
Two things that went well:
Attendance and behavior in class were very respectful and not distracting.
Your code and approach was very integrous, you were not just copying from ChatGPT.
Two things to improve:
Improve tech sense significantly (understand how things work by researching on your own)
Improve overall organization and try to gain more tech growth!

I think everything of yours is great and you deserve a good grade because I always see you working hard in class and getting all your work done. One thing you could improve is your organization on your website to maybe put all your links at the top or in the top middle, overall great job!


Add test root readonly

This implements the root_readonly_true validation in https://github.com/youki-dev/youki/issues/361

@YJDoc2 HI, I've fixed the code according to the comments. Could you please check the code?

@YJDoc2 Thank you for review and comment! I fixed code, Could you please check the code?

@YJDoc2 Ping!

@YJDoc2 Thank you for review and comments. I've fixed the code. Could you please check the code?

@sat0ken , can you merge/rebase the latest main? the test_inside_container function has changed, so this will error if merged in current state. Apart from that this is good to go, so once that is done I'll merge.
Thanks for all the efforts, and apologies for so many back-and-forths :)

@YJDoc2

can you merge/rebase the latest main?
Sure ! I worked it. Is this ok?

https://github.com/youki-dev/youki/pull/2976/commits/397a8c5532f083d5dacf40a8a1c3b29fcfd62231


NTRN-442 proposal tests extension

The idea is simple: add some checks that proposals we pass via integration tests properly change network state, not only return no error.
I also tried to add check for non-admin proposal submission but failed. The main reason is that @cosmos-client we importing has no adminmodule due the obvious reasons. Some ugly hacks like force adding of adminmodule to our Proto-generated file is also don't work because of name shadowing (adminmodule exists in cosmos namespace and we already importing cosmos from @cosmos-client)
TASK

TESTRRUN

https://github.com/neutron-org/neutron-tests/actions/runs/4774150024/jobs/8534378707

and please update description on dao helper funcs:


Epic: Provide mechanism to inject custom generators

Epic
We want users to be able to define their own custom generators.  Eg if one of the banks wants their own special generator for valid bank account ids they should be able to implement an interface and inject their class into our code at runtime and reference it in the profile.json.  Created task #1430 for this
Need to:

Work out how we can use and integrate custom generators into the profile.json and the code - see how our other generators (eg ISIN) are used in the code and what needed ot be implemented so can get an idea of how custom generators can get integrated - may need to refactor ISIN etc so they all use a common approach and integrate into the code in same way
Define an interface that the custom generator needs to implement - i believe there could be a few methods need to implement - eg there could be a "negation" method we need to provide
work out how to inject a class/jar at runtime into our data helix code and how we can get hold of the class) - Clement has thought about this for the profiler so talk to him about how he envisioned injecting plug-in classifiers to the profiler
define an example custom generator and make sure can inject it and use it

replace with a milestone (7) so closing


refactor(dredge-route, dredge-types)!: add res.up() to dredge-route

removes res.next() and res.end() from dredge-route

#37  👈 (View in Graphite)
main

This stack of pull requests is managed by Graphite. Learn more about stacking.


Improve account structure page

Context
We've had questions from service teams about how to set up their services in Pay.
Changes proposed in this pull request
Rejig the content to help avoid confusion about team members having access to different services.
Guidance to review
Please check if factually correct.

Hi @miriamalice - I've rethought this following our chat last week. I think there's still wider work we need to do on the page as a whole, but do you think this small change might help - where I've added (or technically moved) content about what need account type 1 meets? This means that every account type has a description of how it relates to user accounts.


Feature/nearby transit

iOS Platform Components

@TomasSkar what tasks remain for this PR to be considered done?

@TomasSkar what tasks remain for this PR to be considered done?


found character that cannot start any token

Command:
cook.exe -start first,second -end 2020,2021 start:end
or cook.exe first,second:2020,2021
Outputs:
error: yaml: line 4: found character that cannot start any tokenfirst2020
first2021
second2020
second2021

Did you set the environment variable COOK

I am not doing custom settings...
Should this work out of the box like version 1.0?

If you set the environment variable and do not restart the device,
the variables will not be applied.
You must restart the device
This worked for me

Pointed the COOK var to the folder (restarted and try), then to the exe file (restart and try), finally to the .yaml file and it never worked as intended...
Will test on another computer, but for now had to add 2 lines of code (i am not a Go programmer so did the best i could).
Added to the code something like this "If there isn't a COOK env var then set the binary path as the variable".

@giteshnxtlvl Hi, can you add that behavior to the code?
"If there isn't a COOK env var then set the running binary path as the variable"
so it can run right out of the box too.
Thanks.

Hi @RomelSan
Just delete the env varibale COOK and cook.exe will work fine, without need of cook.yaml file.
I mentioned this in Readme before but rn it isn't there, so I will add this again.
@alanEG
You can just restart the terminal instead of PC to get modified env variables.
Use cmder terminal it is better.
For customization

Create empty file cook.yaml
Set env variable COOK=pathofthisfile
Restart terminal and run cook -config

@giteshnxtlvl I think i found the bug.
cook.exe alone won't work

You have a tab in line 49, it should be spaces.
Compiled and tested like that and it worked.

Yes, I checked it, it's a bug. Thanks for reporting @RomelSan.
Will fix this in a minute.

Bug Fixed


Add help text to be read out before reading out the version number

Summary of the Pull Request
What is this about?
Currently on using the screen reader, when we navigate to the version link, it reads out only the number and not the word version. This PR ensures that the keyword version is read out as well before reading out the version number to give a visually impaired user more context.
PR Checklist

[x] Applies to #7066
[x] CLA signed. If not, go over here and sign the CLA
[x] Tests added/passed
[ ] Requires documentation to be updated
[ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

Info on Pull Request
What does this include?
Adds the version keyword to be read out along with the version number.
Validation Steps Performed
How does someone test & validate?
Use windows narrator to read out each element and ensure that the keyword version is read out.

@alekhyareddy28 when I use Caps+R in Narrator to read out the whole page, it reads Version Version Link 0.23.1 (because of the Version: text before the link). Is there any way we can avoid this?

@alekhyareddy28 when I use Caps+R in Narrator to read out the whole page, it reads Version Version Link 0.23.1 (because of the Version: text before the link). Is there any way we can avoid this?

@arjunbalgovind Afaik, there isn't. The reason being that we want version to also be read out when we go to the link. The accessible name of the link cannot be changed as it is internally set to say v0.23.0, as it is using a textblock control and the text is set to be the accessible name automatically for some controls and textblock is one of them. Therefore, we need to set the accessible name version within the grouping which is the stack panel here so that the word version is read out.
When you press Win+R all the controls are read even if they're not user interactive. So as you said the text Version is read followed by the full accessible name of the hyperlink control which is version v0.23.0. Hence there would vbe the word version repeated but I think this is expected as we cannot change the accesible name of the hyperlink control to behave differently when we read the entire page vs when we read only the control. You can see this happening in a lot of other places as well, one such place is the settings theme in the same general setttings page. It says settings theme (text) and again says settings theme grouping because it reads out the text that's there followed by the accessible name which is also settings theme. So I think it is expected bahavior.
This is what I think but if you have any other thoughts or ideas on how we can remove this redundancy please feel free to share and I could try and implement it that way.


Clicking the palette scrollbar shouldn't trigger a mousedown event

Fixes #104.  Bind events separately for .droplet-palette-header and .droplet-palette-scroller-stuffing so clicking the palette scrollbar doesn't trigger the callback.

lgtm


Support Avalonia

Would be nice if you ReoGrid could support Avalonia for multi platform UI. I know MAUI is on it's way but it won't support Linux for a while and from what I can see it's primary goal is store App like apps not full desktop applications like  Avalonia so it might be worth a look.

@cordasfilip Thanks! Very helpful information!

@jingwood From what I can see this should be possible and wouldn't require that much work since your engine seams really flexible already. And I feel like nice UI controls like this would contribute to Avalonia. I am willing to help as much as I can but honestly I can't say I am an expert in the Avalonia platform.


Adds cookie- / privacy-policy consent support

Contributes to #1636
Features:

Displays a modal dialog that is centered in the page (works well on desktop and mobile).
The only way to dismiss the dialog is by clicking the "accept" button (the green check mark). So, the site cannot be used without a consent.
Tab-focus goes to the accept button.

A first attempt at addressing GDPR requirements. If there is general agreement on moving forward with this I'll make some followup changes such as (most items, other than the first, are mainly a note-to-self):

Only enabling this for production builds. WDYT?
Moving the currently hard-coded styling into our SCSS files, and
Switch to using FA 6 icon names.
I might also propose this as an upstream change to Docsy.

Preview:

Any page from the preview server, such as:

Homepage: https://deploy-preview-1653--opentelemetry.netlify.app
Docs page, e.g.: https://deploy-preview-1653--opentelemetry.netlify.app/docs/instrumentation/go/
Blog page, e.g.: https://deploy-preview-1653--opentelemetry.netlify.app/blog/2022/demo-announcement/

You can reset the cookie through you browser settings, but also through the JS console using the following commands:Cookies.get('linux-foundation-org-cookie-consent')
Cookies.set('linux-foundation-org-cookie-consent', '')

Or from, say, Chrome DevTools >> Application >> Storage >> Cookies.

/cc @caniszczyk @austinlparker @cartermp

Thanks for creating this @chalin! I see some discussion here and at #1636, should we have it here or there?
A few thoughts:
(question) the only cookie I see is the google analytics cookie. Besides google analytics we are using otel itself for tracking. As far as I see it from other websites there needs(?) to be an option to not allow those cookies (and probably also to disable GA & otel tracking). Actually if I remember correctly there's a requirement to have "Opt-In" being the default.
(nice-to-have) Related: I saw some websites recently to start respecting the "Do-Not-Track" header being set, so if we provide a way to disable cookies/tracking, this would be a feature lots of people appreciate.
(nice-to-have) I like the way how the cncf.io solves it having it in the bottom right corner. Is it possible to have it that way? It's getting less into the way of the users.

Sure, let's move this broad "how to" discussion to the main issue. See my response here: https://github.com/open-telemetry/opentelemetry.io/issues/1636#issuecomment-1224013483.

My main issue with this implementation is:

So, the site cannot be used without a consent.

I'd rather we "lose" views in GA than actually lose people because they couldn't decline.

As mentioned in the SIG meeting, this is still on my radar, but it seems like we might need to have a broader discussion first?

As mentioned in the SIG meeting, this is still on my radar, but it seems like we might need to have a broader discussion first?

Yes:
I agree with @cartermp (I'd rather we "lose" views in GA than actually lose people because they couldn't decline.), but right now we have nothing at all, and since CNCF/LF "force" us to use google analytics, I would say the solution with only the accept button is better than nothing.


EscapeAnalysis cleanup and add utilities [nearly NFC]

This is the first in a series of patches that reworks
EscapeAnalysis. For this patch, I extracted every change that does not
introduce new features, rewrite logic, or appear to change
functionality.
These cleanups were done in preparation for:
- adding a graph representation for reference counted objects

- rewriting parts to the query logic

- ...which then allows the analysis to safely assume that all
  exclusive arguments are unique

- ...which then allows more aggressive optimization of local variables
  that don't escape

There are two possible functional changes:

getUnderlyingAddressRoot in InstructionUtils now sees through OSSA
instructions: begin_borrow and copy_value

The getPointerBase helper in EscapeAnalysis now sees through all of
these reference and pointer casts:

case ValueKind::UncheckedRefCastInst:
case ValueKind::ConvertFunctionInst:
case ValueKind::UpcastInst:
case ValueKind::InitExistentialRefInst:
case ValueKind::OpenExistentialRefInst:
case ValueKind::RawPointerToRefInst:
case ValueKind::RefToRawPointerInst:
case ValueKind::RefToBridgeObjectInst:
case ValueKind::BridgeObjectToRefInst:
case ValueKind::UncheckedAddrCastInst:
case ValueKind::UnconditionalCheckedCastInst:
case ValueKind::RefTo##Name##Inst:
case ValueKind::Name##ToRefInst:

This coalesces a whole bunch of nodes together that were just there
because of casts. The existing code was already doing this for one
level of casts, but there was a bug that prevented it from happening
transitively. So, in theory, anything that breaks with this fix could
also break without this fix, but may not have been exposed. The fact
that this analysis coalesces address-to-reference casts at all is what
caused me to spent vast amounts of time debugging any time I tried to
force some structure on the graph via assertions. If it is done at
all, it should be done everywhere consistently to expose issues as
early as possible.

Here is a description of the changes in diff order. If something in
the diff is not listed here, then the code probably just moved around
in the file:
Rename isNotAliasedIndirectParameter to
isExclusiveIndirectParameter. The argument may be aliased in the
caller's scope and it's contents may have already escaped.
Add comments to SILType APIs (isTrivial, isReferenceCounted) that give
answers about the AST type which don't really make sense for address
SILTypes.
Add comments about CGNode's 'Value' field. I spent lots of time
attempting to tighten this down with asserts, but it's only possible
for non-content nodes. For content nodes, the node's value is highly
unpredictable and basically nonsense but needed for debugging.
Add comments about not assuming that the content nodes pointsTo edge
represents physical indirection. This matters when reasoning about
aliasing and it's a tempting assumption to make.
Add a CGNode::mergeProperties placeholder for adding node properties.
Factor out a CGNode::canAddDeferred helper for use later.
Rename setPointsTo to setPointsToEdge because it actually creates
an edge rather than just setting pointsTo.
Add CGNode::getValue() and related helpers to help maintain invariants.
Factor out a markEscaping helper.
Clean up the escapesInsideFunction helper.
Add node visitor helpers: visitSuccessors, visitDefers. This made is
much easier to prototype utilities.
Add comments to clarify the pointsTo invariant. In particular, an
entire defer web may have a null pointsTo for a while.
Add an activeWorklist to avoid nasty bugs when composing multiple
helpers that each use the worklist.
Remove the EA argument from getNode. I ended up needing access to
the EA context from the ConnectionGraph many times during
prototyping and passing this was all the getNode calls was very
silly.
Add graph visitor helpers: backwardTraverse, forwardTraverseDefer,
forwardTraversePointsToEdges, and mayReach for ease in developing new
logic and utilities.
Add isExclusiveArgument helper and distinguish exclusive arguments
from local objects. Confusing these properties could lead to scary
bugs. For example, unlike a local object, an exclusive argument's
contents may still escape even when the content's connection graph
node is non-escaping!
Add isUniquelyIdentified helper when we want to treat exclusive
arguments and local objects uniformly.
getUnderlyingAddressRoot now looks through OSSA instructions.
Rename getAccessedMemory to getDirectlyAccessedMemory with
comments. This is another dangerous API because it assumes the memory
access to a given address won't touch memory represented by different
graph nodes, but graph edges don't necessarily represent physical
indirection. Further clarify this issue in comments in
AliasAnalysis.cpp.
Factor out a 'findRecursiveRefType' helper from the old
'mayContainReference' for checking whether types may or must contain
references. Support both kinds of queries so the analysis can be
certain when a pointer's content is a physical heap object.
Factor out 'getPointerBase' and 'getPointerRoot' helpers that follow
address projections within what EscapeAnalysis will consider a single
node.
Create a CGNodeWorklist abstraction to safely formalize the worklist
mechanism that's used all over the place. In one place, there were
even two separate independent lists used independently (nodes added to
one list could appear to be in the other list).
The CGNodeMap abstraction did not significantly change, it was just moved.
Added 'dumpCG' for dumping .dot files making it possible to remote debug.
Added '-escapes-enable-graphwriter' option to dump .dot files, since
they are so much more useful than the textual dump of the connection
graph, which lacks node identity!

@eeckstein if you skim the diff side-by-side with the commit message, it should be quick to review.  But if anything gets confusing just stop and ask me.

@swift-ci test

@swift-ci benchmark

@swift-ci test source compatibility

@eeckstein Actually, there is one important functional change that fell out of
the cleanup. (If all tests pass, I'l fix the commit message,
otherwise, I'll remove the change, and debug it separately).
The functional change is that getPointerBase now sees through all of
these reference and pointer casts:

case ValueKind::UncheckedRefCastInst:
case ValueKind::ConvertFunctionInst:
case ValueKind::UpcastInst:
case ValueKind::InitExistentialRefInst:
case ValueKind::OpenExistentialRefInst:
case ValueKind::RawPointerToRefInst:
case ValueKind::RefToRawPointerInst:
case ValueKind::RefToBridgeObjectInst:
case ValueKind::BridgeObjectToRefInst:
case ValueKind::UncheckedAddrCastInst:
case ValueKind::UnconditionalCheckedCastInst:
case ValueKind::RefTo##Name##Inst:
case ValueKind::Name##ToRefInst:

This coalesces a whole bunch of nodes together that were just there
because of casts. The existing code was already doing this for one
level of casts, but there was a bug that prevented it from happening
transitively. So, in theory, anything that breaks with this fix could
also break without this fix, but may not have been exposed. The fact
that this analysis coalesces address-to-reference casts at all is what
caused me to spent vast amounts of time debugging any time I tried to
force some structure on the graph via assertions. If it is done at
all, it should be done everywhere consistently to expose issues as
early as possible.

Performance: -O

Regression
OLD
NEW
DELTA
RATIO

UTF8Decode_InitFromData_ascii_as_ascii
642
720
+12.1%
0.89x (?)

FloatingPointPrinting_Float_description_small
5616
6264
+11.5%
0.90x

StringComparison_fastPrenormal
1000
1080
+8.0%
0.93x

Improvement
OLD
NEW
DELTA
RATIO

LazilyFilteredArrayContains
35400
30100
-15.0%
1.18x

FlattenListLoop
4453
4098
-8.0%
1.09x (?)

RemoveWhereSwapInts
65
60
-7.7%
1.08x

DataSetCountSmall
148
137
-7.4%
1.08x (?)

MapReduceAnyCollection
398
369
-7.3%
1.08x (?)

Set.isDisjoint.Seq.Box.Empty
145
135
-6.9%
1.07x (?)

Set.isDisjoint.Seq.Int.Empty
90
84
-6.7%
1.07x

Set.isSuperset.Seq.Empty.Int
91
85
-6.6%
1.07x (?)

Set.isSubset.Int.Empty
91
85
-6.6%
1.07x (?)

Set.isStrictSubset.Int.Empty
91
85
-6.6%
1.07x (?)

ArrayLiteral2
137
128
-6.6%
1.07x (?)

Code size: -O
Performance: -Osize

Regression
OLD
NEW
DELTA
RATIO

FloatingPointPrinting_Float_description_small
5616
6264
+11.5%
0.90x

Improvement
OLD
NEW
DELTA
RATIO

RemoveWhereMoveInts
37
34
-8.1%
1.09x (?)

Array2D
7520
6928
-7.9%
1.09x (?)

RemoveWhereSwapInts
67
62
-7.5%
1.08x

DataSetCountSmall
151
140
-7.3%
1.08x (?)

FlattenListLoop
5313
4944
-6.9%
1.07x (?)

MapReduceAnyCollection
434
405
-6.7%
1.07x (?)

Set.isDisjoint.Seq.Int.Empty
90
84
-6.7%
1.07x (?)

Set.isSuperset.Seq.Empty.Int
90
84
-6.7%
1.07x (?)

Set.isStrictSubset.Int.Empty
91
85
-6.6%
1.07x (?)

Code size: -Osize
Performance: -Onone

Regression
OLD
NEW
DELTA
RATIO

ObjectiveCBridgeStubFromNSDateRef
4370
4850
+11.0%
0.90x (?)

NormalizedIterator_ascii
461
501
+8.7%
0.92x (?)

Improvement
OLD
NEW
DELTA
RATIO

ArrayOfGenericPOD2
1434
1324
-7.7%
1.08x (?)

ArrayOfPOD
1123
1038
-7.6%
1.08x (?)

Code size: -swiftlibs

How to read the data
The tables contain differences in performance which are larger than 8% and
differences in code size which are larger than 1%.
If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.
Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@swift-ci smoke test

@swift-ci smoke test

We should not coalesce address-to-reference casts in favour of keeping this nice invariants in the graph to distinguish between "object" and "address" nodes (as we talked some time ago).
(Something for a follow-up PR).

@eeckstein I can't really say whether we lose important information in practice when we treat "interesting" casts as unknown pointers. It looked like PointerToAddress and AddressToPointer were important, and I felt that if we handle those we should continue to handle the rest. I'm afraid that if we stop recognizing local ArrayBuffers, we might miss some optimization. Who knows where else it might be important in the future.
I should have tried to eliminate cast handling first before adding information about heap objects to avoid time debugging issues where they kept breaking my verification. But now I have an implementation that supports the casts. The implementation isn't any more complicated, I just wasn't able to add as much self-checking. I want to make sure the changes I already have that may make some queries more conservative don't regress performance before adding other potential regressions on top of it.

@swift-ci smoke test

@swift-ci smoke test

@atrick We can still handle most of the casts, like pointer_to_address and address_to_pointer. Only ref_to_raw_pointer/raw_pointer_to_ref is problematic.
raw_pointer_to_ref is only used for the hack wit empty array/dictionary storage. But here we don't care, because those empty storage objects "escape" anyway.
ref_to_raw_pointer is used for array capacity computation. Not handling it could have an impact, but it would be easy to workaround (in case we see a problem).

@eeckstein I have a few other EscapeAnalysis PRs to get through, then I can try removing support for merging address and ref type nodes. It's only useful if I can actually assert that we never mix address and ref types, but then I'm worried that assert will trigger in some rare situation we don't have tests for. It's hard for me to prove to myself that all possibilities are covered. For example:

bridge object casts: I guess we don't need to worry about this because the only non-address SILTypes that EA considers an "address" is RawPointer, and it never looks through any RawPointer casts.
unchecked_addr_cast: the content of one side of the cast could be RawPointer and the content of the other side could be a reference... so what happens when those content nodes are merged?


test(threading): Add spec for ThreadPoolExecutor

ThreadPoolExecutor also obeys hub propagation, but there wasn't a spec for it. This PR adds a bit more coverage.

will fix the 2.7 stuff

alright that works too

@sl0thentr0py I keep playing whack-a-mole with old Python versions 😅 I copy-pasted from other specs for now, but some stuff is still failing. What's the right way to do things like import concurrent? Should I do it inside the spec instead of top-of-file?

pushed fix, we always do an except ImportError see last commit

waddafaq, looking

obviously it works on my machine

@antonpirker whatever you did, it seems like it worked? Was the test failure just a weird flake of some kind?

@sl0thentr0py @antonpirker what do you think, is this PR good to merge? Is it even worth it?

Hey @gggritso
Sorry for the late reply, I was on vacation.
More coverage is always good, so I will merge this.

@antonpirker awesome, thanks!


Develop

This pull request includes several changes to the ooodev package, focusing on updating the version and improving the handling of JSON files within documents. The most important changes include ensuring that the folder exists before performing file operations and updating the version information.
Version Updates:

ooodev/__init__.py: Updated the version from 0.49.0 to 0.49.1.
pyproject.toml: Updated the version from 0.49.0 to 0.49.1.
docs/version/version_hist.rst: Added version 0.49.1 with a note about the minor update to ooodev.io.json.doc_json_file.DocJsonFile.

JSON File Handling Improvements:

ooodev/io/json/doc_json_file.py: Added _ensure_folder_exists method to ensure that the folder exists before writing JSON files. [1] [2]
ooodev/io/json/doc_json_file.py: Modified read_json to raise a FileNotFoundError if the folder does not exist.
ooodev/io/json/doc_json_file.py: Modified file_exist to return False if the folder does not exist.


Make cmake configure step fail explicitly if compiler version is not supported

Currently, cmake does not fail completely when gcc 4.4.x is used, it will still generate (a non-functional) set of makefiles. We should explicitly bail out for unsupported (too old) compilers.

CMake Error at cmake/HPX_Message.cmake:43 (message):
ERROR: HPX needs support for C++11 range-based for-loop

The recently required C++11 features make GCC4.4 be rejected with a fatal error (lack of range-based for-loop)

Thanks - I forgot to mention, the problem happens with the V0.9.10 release.


font and Cors

I would like to upload a font to google storage. It works well with wp-statless and custom fonts.
The font file is blocked by the Cors policy in the page header (@ font-face {font-family: XXX; src: url (xxx) ...).
I then modified the configuration of my bucket => https://cloud.google.com/storage/docs/configuring-cors.
with "origin": ["*"] but is it possible to set the current domain because my policy is paid?
Google_Service_Storage_Bucket-> setCors (..).

@mjezegou plugin does not allow managing CORS configuration remotely, for now. You need to set CORS manually as described in docs you sent https://cloud.google.com/storage/docs/configuring-cors


Add hexchat snap

added hexchat to snappy playpen

This change is

hexchat/README.md, line 1 [r1] (raw file):

# $PROJECT hexchat

Maybe "hextchat snap" instead?

Comments from Reviewable

hexchat/snapcraft.yaml, line 4 [r1] (raw file):

version: 0.1
summary: IRC client for X based on X-Chat 2
description: HexChat is a graphical IRC client with a GTK+ GUI. Features include Python and Perl scripting support, a plugin API, multiple server/channel windows, spell checking, multiple authentication methods including SASL, and customizable notifications. For more information on IRC, see http://irchelp.org/.

You can use something like this to wrap the lines at 80 chars:
description: |
  HexChat is a graphical IRC client with a GTK+ GUI. Features include Python
  and Perl scripting support, a plugin API, multiple server/channel windows,
  spell checking, multiple authentication methods including SASL, and
  customizable notifications. For more information on IRC, see
  http://irchelp.org/.

---

*Comments from [Reviewable](https://reviewable.io:443/reviews/ubuntu/snappy-playpen/171)*
<!-- Sent from Reviewable.io -->

hexchat/snapcraft.yaml, line 13 [r1] (raw file):

        build-packages:
            - hexchat-common

Is this really required for building?

Comments from Reviewable

hexchat/snapcraft.yaml, line 14 [r1] (raw file):

        build-packages:
            - hexchat-common
            - libc6

Are you sure not the relevant lib*-dev packages are needed?

Comments from Reviewable

snap-template/README.md, line 0 [r1] (raw file):
Why is this deleted?

Comments from Reviewable

snap-template/snapcraft.yaml, line 0 [r1] (raw file):
Why is this deleted?

Comments from Reviewable

hexchat/snapcraft.yaml, line 14 [r1] (raw file):
Previously, dholbach (Daniel Holbach) wrote…
> Are you sure not the relevant `lib*-dev` packages are needed?

https://travis-ci.org/ubuntu/snappy-playpen/builds/144407862 fails too. It will at least need `intltool` to pass this particular issue. Maybe take a look `apt-cache showsrc hexchat` to get an idea what it requires in Ubuntu to build?

Comments from Reviewable

hexchat/snapcraft.yaml, line 14 [r1] (raw file):
Previously, dholbach (Daniel Holbach) wrote…
> https://travis-ci.org/ubuntu/snappy-playpen/builds/144407862 fails too. It will at least need `intltool` to pass this particular issue. Maybe take a look `apt-cache showsrc hexchat` to get an idea what it requires in Ubuntu to build?

Maybe add `imagemagick, intltool, libcanberra-dev, libdbus-glib-1-dev, libglib2.0-dev, libgtk2.0-dev, libnotify-dev, libpci-dev, libperl-dev, libproxy-dev, libssl-dev, libtool, python-dev`?

Comments from Reviewable

Thanks for the review :) I've fixed several things, I hope it looks better now.

hexchat/snapcraft.yaml, line 17 [r4] (raw file):

            - liblua5.3-dev
            - libluajit-5.1-dev
            - debhelper

debhelper won't be needed.

Comments from Reviewable

hexchat/snapcraft.yaml, line 4 [r1] (raw file):
Previously, dholbach (Daniel Holbach) wrote…
> You can use something like this to wrap the lines at 80 chars:
> ```
> description: |
>   HexChat is a graphical IRC client with a GTK+ GUI. Features include Python
>   and Perl scripting support, a plugin API, multiple server/channel windows,
>   spell checking, multiple authentication methods including SASL, and
>   customizable notifications. For more information on IRC, see
>   http://irchelp.org/.

Wrapping would look nicer, but not a big issue.

Comments from Reviewable

snap-template/README.md, line  [r1] (raw file):
Previously, dholbach (Daniel Holbach) wrote…
> Why is this deleted?

It'd be nice if this could be re-added.

Comments from Reviewable

snap-template/snapcraft.yaml, line  [r1] (raw file):
Previously, dholbach (Daniel Holbach) wrote…
> Why is this deleted?

It'd be nice if this could be re-added.

Comments from Reviewable

Could you change the indent from four (4) spaces to two (2) spaces please?

Hm... the snap does not work for me:
$ hexchat

(process:19463): Gtk-WARNING **: Locale not supported by C library.
	Using the fallback 'C' locale.
 I can't work out how you are setting up the environment with just calling the binary and without a launcher.

I've submitted a PR with some small changes, as once I got the app to launch, it wouldn't connect to the IRC servers: https://github.com/hikiko/snappy-playpen/pull/1
Also, it would be good to add an icon and a desktop file under the setup/gui directory (you can have a look at the other examples in the playpen to see how it's done).

Thanks for adding the desktop launcher. I'm not sure if you saw the PR against your branch mentioned above, but at least on my case, I had to add the network-bind plug for hexchat to connect to IRC servers. It might be worth double-checking that.

hexchat/snapcraft.yaml, line 3 [r5] (raw file):
Previously, hikiko (Eleni Maria S.) wrote…
> That's the short description that is returned by apt-cache search hexchat.

I think it's fine.

Comments from Reviewable

hexchat/snapcraft.yaml, line 2 [r5] (raw file):
Previously, tsimonq2 (Simon Quigley) wrote…
> version: "0.1"

Not a blocker.

Comments from Reviewable

@hikiko I think that unless you specify the snap in the snapcraft.yaml file, it should be HexChat, not Hexchat, hexchat, or HEXCHAT. That's the branding on their website.

hexchat/snapcraft.yaml, line 36 [r13] (raw file):
Previously, tsimonq2 (Simon Quigley) wrote…
> from what I've seen, the `apps:` tag usually goes above the `parts:` tag

It doesn't matter.

Comments from Reviewable

Comments from Reviewable

Reviewed 4 of 4 files at r1, 2 of 2 files at r2, 1 of 1 files at r4, 2 of 3 files at r5, 2 of 2 files at r7, 1 of 1 files at r8, 1 of 1 files at r12, 2 of 3 files at r13, 2 of 2 files at r17.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Purge

.purge <number> removes last <number> messages.
For mods only.

I do not think it is a good idea.

This may cause an accidental removal of messages - what if you miscount or make an error? What if somebody posts relevant message just a second before you purge the mesages?
I don't think it goes with our principles to make an uncensored server. This will make deleting messages for mods easier with less thinking what should and what should not be allowed.

And still my concerns from previous message apply. Maybe it will be usefull someday, but I am worried that now it will make more harm than good.

Also, when banned, we can choose to remove their messages.

Yes this seems far better


feat: capture console from across the app

Description
Added an override function that captures console logs from the functions/ moustache bindings and stores them in the redux store.
Note: have added functionality to remove functions from the objects to prevent issues with passing the data to promise resolutions.
Fixes #14454
Type of change

New feature (non-breaking change which adds functionality)

Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

/ok-to-test sha=3def7b4

Changed the base branch to a feature branch so that the rest of the dependent PRs can be shown in a DP.

Logs once triggered don't register again on the debugger, i.e. new timeline and/or grouping does not happen
After observing above scenario, add a new trigger to generate console log and observe that these newly added logs don't appear on the debugger

Issue - Console Logs default filter is not getting updated when moving from JSob1 to JSobj2


[ldd-img] exposure_duration_count needs to be a float

For the helicopter, they get fractional values for exposure counts (which are NOT seconds - they're still engineering units, thus "count" - the value is converted to seconds also for exposure_duration).  But the data type for exposure_duration_count is integer.  We need to expand it to be float.

updated to ASCII_Real to v1860_release  (for Mars2020 helicopter)


Name changes for GrandPa and Beefy notifications protocols

polkadot companion: paritytech/polkadot#4519
cumulus companion: paritytech/cumulus#870
First commit still uses static protocol name, but removes paritytech.
Following commits add support for building dynamic protocol name using /<genesis-hash> prefix. /<fork-id> is also appended to the prefix if the chain has forked.
Introduces fork_id in the substrate ChainSpec definition.
Fixes https://github.com/paritytech/substrate/issues/7252
Fixes https://github.com/paritytech/grandpa-bridge-gadget/issues/240
Related to https://github.com/paritytech/substrate/issues/7746

I think that the protocolId should not be re-purposed as a "hard fork identifier". We should instead introduce a new optional field in the chain spec and deprecate protocolId.
The reasons are:

We've written documentation and guides about this protocolId, and the new role of this hard fork identifier is different enough that it would just be confusing (example

Most chains will never encounter any hard fork, and I don't see why you'd need to use both the genesis hash plus an arbitrary string, rather than just the genesis hash. So the default value for this new hard fork identifier should be None, meaning it's not used. And we would like all existing chains (assuming they're not a hard fork) to switch to this default value rather than keep their existing protocolId.

A minor unrelated point is that I think it should be /<hash>/<id> and not /<id>/<hash>
It is possible to have multiple ids with the same hash, but (normally) never multiple hashes with the same id.

@tomaka were you thinking something like this: https://github.com/paritytech/substrate/pull/10463/commits/d4b616a95c0715f5021334ea086255ad6808fc47 ?

Yes!

Could you please not force push? I was in the middle of reviewing and this ruins review in progress.

:+1: This looks good to me from a networking perspective, but I don't know what others think of the changes in bin/* and in Grandpa & Beefy.

+1 This looks good to me from a networking perspective, but I don't know what others think of the changes in bin/* and in Grandpa & Beefy.

pinging @andresilva and @tomusdrw for grandpa and beefy respectively

@tomaka you have a stale change requested status/blocker on this PR. Please re-review.

bot merge

bot merge

bot merge

bot merge

bot merge

Anything parachain teams needs to be aware of about this? Will this cause any compatibility issues?

Anything parachain teams needs to be aware of about this? Will this cause any compatibility issues? Looks like this only touches Grandpa/Beefy which only exists on relaychain so there should be no effect on parachain? It does introduce a fork id but it should be fully backward compatible if we just leave it to none?

Nothing changes for parachains. You just use None for fork_id.
And the code is also backwards compatible for the relay chain.


WIP: Fix tlmgr

Right now tlmgr does not run for me on either Mac or Linux. Given this is the way one installs packages, this seems like a pretty important thing to fix. This PR will attempt to demonstrate the problem and try to fix it.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

The more I think about it the more I think this should not actually be fixed here, but would supply a separate package that makes this work. Just like one can install pip, we should try making tlmgr something users must install separately. Given many package managers repackage stuff from TeX and do not use tlmgr, we should probably take this attitude too. Though I think it is nice to provide the end-user this option if they are feeling brave and need something fast.


Geo raster validation error message is missing spaces

Trying to use an improperly formatted file as a geographic raster results in a multi-sentence error message that is missing spaces.  "Geo raster file type file validation failed.File is not a zip file"
Test Environment
Video

Closing justification:

GUI design has changed in this regard. The pop up menu item no longer exists.


[mungegithub] Enable the retest request without issue report complainer

@brendandburns likely to push it live tomorrow...

I went through today and deleted all of the 'bad' retest request comments. (Without removing LGTM)


Keep "chr" notation

Hi, I get an error when running fragCounter: Presegmenting at  NA  bp scale  and it stops.
My BAMs/CRAMs have the chromosomes with the "chr" notation. The problem is in this piece of code, within the correctcov_stub() function:
map = gr.sub(map)  # <- removes the "chr" even if the original map object has that notation
gc  = gr.sub(gc)   # <- removes the "chr" even if the original gc object has that notation

gc.str  = gr.string(gc)  ## without "chr"
map.str = gr.string(map) ## without "chr"
cov.str = gr.string(cov) ## has "chr"

Then:
all.str = intersect(intersect(map.str, cov.str), gc.str)  obviously results in character(0) and therefore also the other objects are empty:
>   map = map[match(all.str, map.str)]
>   cov = cov[match(all.str, cov.str)]
>   gc  = gc[match(all.str, gc.str)]

> map
GRanges object with 0 ranges and 1 metadata column:
   seqnames    ranges strand |     score
      <Rle> <IRanges>  <Rle> | <numeric>
  -------
  seqinfo: 24 sequences from an unspecified genome

> cov
GRanges object with 0 ranges and 1 metadata column:
   seqnames    ranges strand |     score
      <Rle> <IRanges>  <Rle> | <numeric>
  -------
  seqinfo: 3366 sequences from an unspecified genome

> gc
GRanges object with 0 ranges and 1 metadata column:
   seqnames    ranges strand |     score
      <Rle> <IRanges>  <Rle> | <numeric>
  -------
  seqinfo: 455 sequences from an unspecified genome

Removing the "chr" also from the cov object (in correctcov_stub()) solves the issue:
map = gr.sub(map)
gc  = gr.sub(gc)
cov = gr.sub(cov)  # Remove "chr"

but it would be nice to be able to choose whether to keep or not the "chr" notation. Thank you in advance.

Hi, thanks for pointing out this issue! I pushed a fix to the dev branch: https://github.com/mskilab/fragCounter/tree/dev
If running from command line, you should be able to retain the chr prefix using the flag --chr.sub FALSE. If you have a chance to give it a try please let us know how it goes!

Hello @zining01,
I recently attempted using fragCounter on an hg38 aligned BAM while use the --chrsub FALSE parameter. While there were not issues in execution, I did notice my cov.rds and cov.corrected.bw both lack the 'chr' prefix.
I started to work back through the code based on the final conditional at line 665:
  if (has.chr && !chr.sub) { cov = gUtils::gr.chr(cov) }

Everything seems to checkout but then I noticed in the frag executable, that the new parameter --chrsub is not assigned when passed to the fragCounter() function:
out = fragCounter(bam = opt$bam, cov = opt$cov, window = opt$window, gc.rds.dir = opt$gcmapdir, map.rds.dir = opt$gcmapdir, minmapq = opt$minmapq, paired = opt$paired, outdir = opt$outdir, exome = opt$exome, use.skel = opt$use.skel, skeleton = opt$skeleton, opt$chrsub)

I think the parameter should work fine but given the default of this being #' @param chr.sub boolean if TRUE, remove 'chr' prefix on seqnames. default TRUE  in the source of fragCounter(), the user-provided value was ignored.
I can give it a test to be sure. What do you think?
Patrick

Hi Patrick,
I think you're right - sorry about the oversight and thanks for helping us debug. I updated the frag executable on the dev branch again... please let me know if this fixes your issue!

Hello Zi-Ning,
Thank you for getting to this so quickly.
I can confirm the changes worked. Both the output RDS and bigWig file have the appropriate 'chr' notation in the output when providing --chrsub FALSE argument from the command line.
Thanks again,
Patrick

Great, thanks again for your help with this.

Thank you Zi-Ning!


[KeyVault] BREAKING CHANGE: Support soft-delete feature for managed-HSM. keyvault delete --hsm-name will soft delete not permanently delete a MHSM.

Description

This PR supports the soft-delete feature for managed-HSM
The new added commands and parameters include

az keyvault show-deleted command
--resource-type hsm parameter for command az keyvault list-deleted
--hsm-name parameter for command az keyvault purge

The following command's behavior changes

az keyvault delete --hsm-name

It soft deletes a mhsm not permanently delete it. For permanently delete casse we provide the command az keyvault purge --hsm-name.
Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

this is not a CLI interface breaking, but service behavior change, right?

this is not a CLI interface breaking, but service behavior change, right?

Yes, this is a service side breaking change.

/azp run

It soft deletes a mhsm not permanently delete it.

It is not a correct English sentence.


Determine the sign of a function over a given interval

See the idea from @arjunnarayanan here.
related: - https://discourse.julialang.org/t/how-can-i-check-if-a-function-is-always-positive/48405

enclose(f, X, algorithm) > 0 ?
maybe have an application showing that the package can be used for this? The sign check is used internally by branch and bound, so it's a little like inception (the movie)

Yes, I think we could have this as an example in the docs.

@lucaferranti the application I needed it for was an implementation of this paper to construct quadrature rules on implicitly defined domains.
I have a basic 2D implementation in my repo here https://github.com/ArjunNarayanan/ImplicitDomainQuadrature


Simple Query by Example with null should work as it does in AQL queries

null is defined to be the absence of the attribute in AQL. This is a very handy thing in a schema free environment and querying for the absence or existence (indepdendent of the value) of an attribute is a very useful thing.
@kaerus-component reported to me that using the null value in a simple query doesn't work as I described above. IMHO that is a bug.

Meanwhile simple queries wrap AQL. The described missbehaviour has been fixed - closing.
ArangoDB 3.0 RC2 is available for download: https://www.arangodb.com/download-preview/


Remove obsolete semicolon

We can't merge PRs into the release branch unfortunately, so you'd need to rebase it against the main branch. Alternatively we can just remove the semicolon ourselves, but also happy to merge the PR if you would like the credit :)


Add getDepth, getTransactions, getTx & getOpenOrders to client

Add 4 additional functions to the client pursuant to the API documentation.
getDepth - Retrieves the depth for a given market pair eg. RUNE-A1F_BNB (https://docs.binance.org/api-reference/dex-api/paths.html#apiv1depth)
getOpenOrders - Retrieves the current open orders for the address. (https://docs.binance.org/api-reference/dex-api/paths.html#apiv1ordersopen)
getTransactions - Retrieves the transaction history for an address. (https://docs.binance.org/api-reference/dex-api/paths.html#apiv1transactions)
getTx - Retrieves the transaction details for a specific hash. (https://docs.binance.org/api-reference/dex-api/paths.html#apiv1txhash)
Nb. The getTransactions function is a basic implementation which only supports address and offset params, and thus doesn't provide additional params including startTime, endTime etc.

Thanks!


Unknown write_verilog_testbench command in the OpenFPGA flow

Hello!
While running the run-task command, with OpenFPGA framework for SOFA_CHD and SOFA_HD, I encountered an error from an unknown command: write_verilog_testbench. Please, find the details below.
Done with OpenFPGA revision df67a947 (2022-01-21), same behavior with the f72bf4b (2022-01-28)
End of openfpgashell.log error report for SOFA_CHD (full log attached here: SOFA_CHD_openfpgashell.log)
Command line to execute: write_verilog_testbench     --file ./SRC     --reference_benchmark_file_path top_output_verilog.v     --print_top_testbench     --print_preconfig_top_testbench     --print_simulation_ini ./SimulationDeck/simulation_deck.ini     --explicit_port_mapping
Try to call a command 'write_verilog_testbench' which is not defined!
Fatal error occurred!
OpenFPGA Abort

End of openfpgashell.log error report for SOFA_HD (full log attached here: SOFA_HD_openfpgashell.log)
Command line to execute: write_verilog_testbench     --file ./SRC     --reference_benchmark_file_path top_output_verilog.v     --print_top_testbench     --print_preconfig_top_testbench     --print_simulation_ini ./SimulationDeck/simulation_deck.ini     --explicit_port_mapping
Try to call a command 'write_verilog_testbench' which is not defined!
Fatal error occurred!
OpenFPGA Abort

Can you help me find out what could be the cause?
Thanks!

Now fixed with the pull request #134


Build(deps): Bump moment-timezone from 0.5.42 to 0.5.43 (#4775)

Pull request opened by the merge tool on behalf of #4775

Merged in e4a07d36e7ff0b6a459d8f954beeea7503fcb513


I can't upload an image in any PageData..

Describe your problem:
First of all, I would like to congratulate you. Flet_Navigator is an excellent product and very easy to use. I just made software for a client using it, and the usability and performance really captivated me.
Now, I have a problem... I need to upload an image using "assets" and I can't...
I set the asset path, but when I try to load an image on a specific PageData or on the main page (ft.page) the image does not appear.
Reproducing the problem:
This code bellow is what I need. I´m not using Flet_Navigatot in it .It's just to you understand the requirement.
import flet as ft
from pathlib import Path
assets=f'{Path(file).parent}\atelier-costura'
logo=f'\manual\logo-4.jpg'
print(dir)
def main(page: ft.Page):
page.title = "Images Example"
page.theme_mode = ft.ThemeMode.LIGHT
page.padding = 50
page.update()
img = ft.Image(
    src=logo,
    width=80,
    height=80,
    fit=ft.ImageFit.COVER,
    border_radius=1,
)
texto=ft.Text('Atelier Tesoura Mágica',font_family='tahoma',size=20,color=ft.colors.PINK, )

cabecalho=ft.ResponsiveRow([ft.Column(col={"xs":4,"sm": 3, "md":2 , "xl":1},controls=[img]),
                            ft.Column(col={"xs":8,"sm": 6, "md": 5, "xl": 4},controls=[texto]),
                            ],
                           vertical_alignment=ft.CrossAxisAlignment.CENTER,alignment='left')
page.add(cabecalho)

page.update()

ft.app(target=main, view=ft.AppView.WEB_BROWSER,assets_dir=assets)
Media (optional):
Screenshot or video..
flet_navigator version, flet version, OS:
Name: flet_navigator
Version: 2.6.5
Name: flet
Version: 0.21.1
Windows 10
Additional:
...

Thank you, I'm glad you like my project! Also thanks for reporting issue!

I have checked that there are no conflicts between FletNavigator and Flet Assets, so there are no problems. Probably you're misspelled path to logo, also could you provide more information? Is there any errors? Can I see full code?
P.S You're not adding img control to page in your code example, maybe there is an issue?

I'm going to test an example using Flet_Navigator.
I don't send my software script, because it has 1900  code lines...

Ok, it worked fine. Now I'll have to find out what is going on with my script.
thanks for your help.

I am glad you had your issue fixed! Can I close this issue?


add tests for py3 ascii decode

https://github.com/20c/vaping/pull/58

fixed in fcaaf07
test was already catching the ascii decode issue, fcaaf07 fixes the underlying cause


Connection error: Connection Refused: not authorised x509 over mosquitto to DPS

I am trying to do the individual enrollment on my DPS using the mosquitto_pub. I use x509 self signed certs for authentication.
But failing to connect and register the device on dps.
Below is my cli.
mosquitto_pub -d -h DemoRegistrationDPS.azure-devices-provisioning.net -p 8883 --cafile /home/ubuntu/RND/edge/azure-connect/certs/BaltimoreCyberTrustRoot.crt.pem --cert ./certs/pkjtestdev07-full-chain.cert.pem --key ./certs/pkjtestdev08.key.pem -i mqttpkj -u "0ne002137FF/registrations/pkjtestdev07/api-version=2019-03-31"  -t "$dps/registrations/PUT/iotdps-register/?$rid=1" -m "{"registrationId":"pkjtestdev07"}" --tls-version t
lsv1.2 -V mqttv311
Throws
Client mqttpkj sending CONNECT
Client mqttpkj received CONNACK (5)
Connection error: Connection Refused: not authorised.
Client mqttpkj sending DISCONNECT
Any idea how to resolve this issue?.

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

ID: a024c68b-7199-1729-12dc-75a98e7de730
Version Independent ID: 7b4a2cda-929a-58fe-1700-c27ce3f0619e
Content: Understand Azure IoT Device Provisioning Service MQTT support
Content Source: articles/iot-dps/iot-dps-mqtt-support.md
Service: iot-dps
GitHub Login: @rajeevmv
Microsoft Alias: ravokkar

Hello @PradeepKiruvale Could you please let us know the MS Document/Tutorial which you have referred? I have to add the metadata to this issue. Thanks for your understanding.

I did refer to this https://docs.microsoft.com/en-us/azure/iot-dps/iot-dps-mqtt-support#connecting-to-dps

Hello @PradeepKiruvale I don't think creating enrollment via MQTT is possible, may I know what is your use case? With MQTT broker you can create DPS provisioning, but I have to double check if we can do enrollment or not via MQTT.
FYI,
Enrollment creation is the First Step. [happens in the back-end-one time]
Device provisioning is the second step.[by each device]
Please also read on this Stackoverflow response [by Steve Busby] which may shed some light on your scenario.
I will double-check this with my team and get back as soon as possible.

@SatishBoddu-MSFT Thanks for your reply. I could enroll (Used REST API) and Registered(using DPS-MQTT) the device now. Please let me know is it possible to enroll also using mqtt

Hello @PradeepKiruvale Thanks for the update! I will close this case for now. I will let you know here, once I get confirmation from my team on this topic.
If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.
Please also do visit Microsoft Q&A the home for technical questions and answers at Microsoft.

Hello @PradeepKiruvale I have a confirmation from my team.
“You can’t “create enrollments” (a back-end operation) over MQTT or mosquitto_pub.  That’s reserved for REST APIs or our SDKs.   You can, however, register a device (a “device-side” operation) to an existing enrollment over MQTT/mosquitto_pub,”
The similar or related StackOverflow thread I think you have already got it resolved from Steve Busy's help.
I hope this helps, please let us know if we are good to close this issue?

Thanks Satish for the clarifications.


Consolidate inconsistent CMake option names

This is in response to #1430: Inconsistent CMake option names

This is a breaking change. The ML needs to get notified before merging those changes. In addition, after merging, we need to adapt our automated buildbots to reflect those changes.


⚠ Processors has degraded performance

In 7e59842, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 46 ms

Resolved: Processors performance has improved in 7fbf22f.


Add no-base-to-string rule to both frontend and backend

Closes: RHOAIENG-508
Description
This PR aims to apply no-base-to-string rule to both frontend and backend.
How Has This Been Tested?
Run npm run test
Test Impact

Request review criteria:

Self checklist (all need to be checked):

[x] The developer has manually tested the changes and verified that the changes work
[x] Commits have been squashed into descriptive, self-contained units of work (e.g. 'WIP' and 'Implements feedback' style messages have been removed)
[x] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[ ] The developer has added tests or explained why testing cannot be added (unit tests & storybook for related changes)

If you have UI changes:

[ ] Included any necessary screenshots or gifs if it was a UI change.
[ ] Included tags to the UX team if it was a UI/UX change (find relevant UX in the SMEs section).

After the PR is posted & before it merges:

[ ] The developer has tested their solution on a cluster by using the image produced by the PR to main

/retest

/retest

/retest

/lgtm
/approve

/retest

/lgtm


Tuple2 map and mapSecond

Hi, I'm curious about why map and mapSecond behave exactly the same (according to docs). Shouldn't map allow users to change the type of both values in Tuple2?
I'm currently using version 0.0.12

Hi @evandrmb
The map method is an override of Functor2, this means that the type signature of the method is expected to be the same. For this reason, map is allowed to update only one value.
Nonetheless, I added a mapBoth method for this purpose.
Thanks for the feedback 👍


Handle nullable in parser.parseType

Please do not update the README or Change Log, we will do this when we merge your PR.
This PR (delete as applicable)

Fixes missing type script return type null

Describe the changes below:
Nullable flag was ignored, which makes all functions that can return null not containing the type for it.
This adds the null return type, to all such functions.
This is an issue, because ts doesn't know the function can return null, which can easily lead to bugs.
Please Note
This will make all ts based projects to fail type check, if there is no null check, when using functions that can return null.
Example
before:
/**
 * Retrieves a Scene.
 * @param key The Scene to retrieve.
 */
getScene(key: string | Phaser.Scene): Phaser.Scene;

after:
/**
 * Retrieves a Scene.
 * @param key The Scene to retrieve.
 */
getScene(key: string | Phaser.Scene): Phaser.Scene | null;

Please can you remove all files from the PR other than Parser.ts as the rest are build files, thanks.


Replaced "no enough" with "not enough" and other small typos.

Did a global search for "no enough" to fix all instances (3) of this typo. Did some additional editing in one case to clarify language.

@teachrdan thanks for the PR. May you do it against "develop" branch? We use master only for releasing. Thanks.

I tried to submit this pull request to orientdb/develop. Did I apply it to the master branch by accident?

Yes, can you do that against develop?


kmsg.NewListGroupsRequest returns duplicates of consumer groups

I have 3 different kafka clusters and I noticed that on one of them I get duplicates of consumer groups in the reply.
Does anyone know what could be causing that?
package main

import (
	"context"
	"fmt"
	"time"

	"github.com/twmb/franz-go/pkg/kgo"
	"github.com/twmb/franz-go/pkg/kmsg"
	"github.com/twmb/franz-go/pkg/kversion"
)

func main() {
	seeds := []string{"<IP_ADDRESS>:9092"}
	client, err := kgo.NewClient(
		kgo.SeedBrokers(seeds...),

		kgo.MaxVersions(kversion.V2_4_0()),
	)
	if err != nil {
		panic(err)
	}
	defer client.Close()

	ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
	defer cancel()

	{
		req := kmsg.NewListGroupsRequest()

		res, err := req.RequestWith(ctx, client)
		if err != nil {
			panic(err)
		}

		groupIDs := make([]string, len(res.Groups))
		for i, group := range res.Groups {
			groupIDs[i] = group.Group
			fmt.Printf("%+v\n",group.Group)
		}
	}
}

What are the debug logs? Also what's the difference if you use RequestSharded?

@twmb Could you please advise how to use RequestSharded and enable debug logs in this case?
If by the debug logs you meant how I discovered the issue then I just saved an output to a file (thousands of consumer groups) and run
cat log.txt | sort | uniq -c | sort -rn

If I run this program against a cluster, I don't receive duplicate groups.
Debug logs for this case can be easily printed with kgo.WithLogger(kgo.BasicLogger(os.Stderr, kgo.LogLevelDebug, nil)).
For each resp in RequestSharded, print the groups from Resp.(*kmsg.ListGroupsResponse) (so long as the .Err field is non-nil.

First of all please bare in mind I'm not experienced Go developer. Because I couldn't find any documentation about this library I tried to use examples and the code from kminion but without success (have no idea how to use RequestSharded properly) This is what I tried:
	{
		req := kmsg.NewListGroupsRequest()
		// req := kmsg.NewDescribeGroupsRequest()

		res := client.RequestSharded(ctx, &req)

		for _, kresp := range res {
			res := kresp.Resp.(*kmsg.DescribeGroupsResponse)
			fmt.Printf("%+v\n",res)
		}

	}

If I use kmsg.NewDescribeGroupsRequest() I get:
&{Version:5 ThrottleMillis:0 Groups:[] UnknownTags:{keyvals:map[]}}
If use kmsg.NewListGroupsRequest() I get:
panic: interface conversion: kmsg.Response is *kmsg.ListGroupsResponse, not *kmsg.DescribeGroupsResponse

goroutine 1 [running]:

Let me start from the beginning. The problem originates from kminion which I tried to deploy to my environment. Unfortunately the exporter didn't work with one of my clusters and didn't generate any metrics. No errors on stdout (debug: info or debug) only http 500 code as a response along with thousands messages like:
* collected metric "kafka_minion_kafka_consumer_group_info" { label:{name:"coordinator_id" value:"0"} label:{name:"group_id" value:"prod-application_addr"} label:{name:"protocol" value:"cooperative-sticky"} label:{name:"protocol_type" value:"consumer"} label:{name:"state" value:"Stable"} gauge:{value:1}} was collected before with the same name and label values
I started analysing the kminion source code and realised that for some reason my one kafka cluster through this library reports duplicates of consumer groups .This is why I decided to create a simple script using franz-go lib and compare it with simple python script:
#!/usr/bin/env python3

from kafka import KafkaAdminClient
client = KafkaAdminClient(bootstrap_servers="<IP_ADDRESS>:9092")
for group in client.list_consumer_groups():
    print(group[0])

The above script for all my clusters reports uniq consumer group names.
I did also a small change to kminion in file promeheus/collect_consumer_groups.go which seems to solve my problem

More details about the kafka cluster I experience the issue:
Env: k8s
Kafka: kafka:2.13-2.6.1
Number of brokers: 12
Number of Consumer Groups: few thousands

The kmsg package is largely autogenerated and isn't recommended to be used directly -- it's a bit more advanced. If you're trying to reproduce what you're seeing in kminion, yes you'll probably need to use kmsg. If you just want to list groups, you can use kadm.ListGroups, although this automatically deduplicates if there are any duplicates.

The reason you're not getting duplicates (if there are duplicates) in the Python code is because the Python code also automatically deduplicates,
https://github.com/dpkp/kafka-python/blob/a33fcf4d22bdf34e9660e394a7a6f84225411325/kafka/admin/client.py#L1166C19-L1174
note that consumer_groups is a set.
What I'd like you to do is:
shards := cl.RequestSharded(context.Background, kmsg.NewPtrListGroupsRequest())
for _, shard := range shards {
    if shard.Err != nil {
        fmt.Printf("unable to request node %d: %v\n", shard.Meta.NodeID, shard.Err)
        continue
    }
    resp := shard.Resp.(*kmsg.ListGroupsResponse)
    var groups []string
    for _, group := range resp.Groups {
        groups = append(groups, group.Group)
    }
    fmt.Printf("node %d req err: %v, groups: %v\n", shard.Meta.NodeID, resp.ErrorCode, groups)
}

(also kminion was written before kadm existed and kminion should be migrated to kadm, but that's a different prioritization conversation)

Does it mean that there is a bug in kminion or I have some issue inside of my kafka cluster?

I wonder if you ran into the problem that the set in the Python code is specifically solving: a race with a coordinator change can cause a group two be on two brokers at almost the same time.

If I analyse correctly the data with duplicates I get then it looks like:

Some Consumer Groups are reported 2 or 3 times from the the same broker only. For instance: consumer_group_1 was reporter 3 times from a given broker_1.
Some Consumer Groups are reported once.
Seems like all brokers (in this case 12) are reporting some Cosumer Groups multiple time. It's not like one broker is affected.

(1) and (3) shouldn't be the case unless there's a bug in the broker or the client.

Can we consider that the kminion's behavior I'm experiencing is a bug?

Yes but there isn't currently enough info to debug it. Is there any way to reproduce this reliably, on a cluster I can spin up on my laptop?

Closing, let me know if this can be reproduced


fix: If the load balancing service does not have the annotation kube-…

If the load balancing service does not have the annotation kube-vip.io/loadbalancerips, it will always be in a pending state
If the service lacks the annotation kube-vip.io/loadbalancerips, it will return null
https://github.com/kube-vip/kube-vip-cloud-provider/blob/main/pkg/provider/loadBalancer.go#L181
The netip.ParseAddr method will return 'unable to parse IP'.

Thanks for the fix
/lgtm


Caching API calls on server?

Hello @DreaMinder ,
Not a issue here but I'm trying to find a way to avoid hammering my server API during static build. I have a website with 60+ pages and my builds partially fail because of multiple error 500. Some of the pages make multiple API calls.
async asyncData({ $axios, $payloadURL, route, store }) {
   if (process.static && process.client && $payloadURL) {
     return await $axios.$get($payloadURL(route))
   }

   if (store.state.marquee.length <= 0) {
     const { marquee } = await wpFetch('common')
     store.dispatch('LOAD_MARQUEE', marquee)
   }

   const { homepage } = await wpFetch('pages')
   const posts = await wpFetch('posts')

   return {
     ...homepage,
     agenda: await wpFetch('agenda'),
     articles: getArticles(posts, 5, true),
     frames: getFrames(posts, 1, true),
   }
 },

I searched for way to solve this, including in this topic but it's not working in static SSR mode. I tried the payload method too : it reduces my API calls during build but actually calls APIs again during client navigation so it isn't much of solution either.
Do you have your own method to approach to solve this or/and would you consider adding this as a feature to your module?

Hello @LeoSeyers
You could reduce concurrency and set greater interval to avoid 500 errors, as a simple solution: https://nuxtjs.org/api/configuration-generate/#interval.
The right way to solve this issue is to use payload method you referred to. I use it with payload-extractor and it works very well.
If you are seeing requests to your server during client-side navigation, then something is wrong with your code. Can you share asyncData code including build-time-payload implementation?
Also, I must warn you that store.dispatch('LOAD_MARQUEE', marquee) is not compatible with nuxt-payload-extractor, you must return all data that is specific to a page from asyncData.

Hello @DreaMinder
Thanks for your quick answser!
I didn't know about  the interval property, before the payload implementation I was actually fetching all APIs from the NuxtServerInit hook but I realized it wasn't the right way to do. At least using a delay function with axios module helped mitigate the issue but I wasn't really satisfied with my code.
I also now realize I'm now fetching data with a wpFetch function which is not using nuxt-axios so I may have to fix that to expect the interval to be properly working.
About the Vuex store thing, indeed I saw the caveats, it's actually code from the old implementation but thank you for the reminder, I will use the proper NuxtServerInit  to do that.
So about the requests during client-side navigation I was quite confused too, since I was following Markus's post step by step. Here are samples of the payload implantation ( before using the payload extractor module).
Page component :
 async asyncData ({ store, payload }) {

      if (payload) {
        const { agenda, articles, frames, page, marquee } = payload
        store.dispatch('LOAD_MARQUEE', payload)
        return {
          ...page,
          agenda,
          articles,
          frames
         }
      }

        const { homepage } = await wpFetch('pages')
        const posts = await wpFetch('posts')

        if (store.state.marquee.length <= 0) {
          const { marquee } = await wpFetch('common')
          store.dispatch('LOAD_MARQUEE', marquee)
        }

        return {
          ...homepage,
          agenda: await wpFetch('agenda'),
          articles: getArticles( posts, 5, true),
          frames: getFrames( posts, 1, true),
         }
    },

And the nuxt.config.js
 axios: {
      retry: {
        retries: 3,
        retryDelay: exponentialDelay,
      },
    },

 generate: {
      async routes() {
        const [ pages, posts, agenda, common, eyes, glasses ] = await Promise.all([
          wpFetch('pages'),
          wpFetch('posts'),
          wpFetch('agenda'),
          wpFetch('common'),
          wpFetch('eyes'),
          wpFetch('glasses'),
        ])

        const { marquee } = common

        return [
          {
            route: '/',
            payload: {
              page: pages.homepage,
              agenda,
              articles: getArticles(posts, 5, true),
              frames: getFrames(posts, 1, true),
              marquee,
            },
          },
       // + other static pages and dynamic routes
       ]
    }

I also now realize I'm now fetching data with a wpFetch function which is not using nuxt-axios so I may have to fix that to expect the interval to be properly working.

I don't think that your network-layer implementation affects interval setting. Just set the interval to 100 and concurrency to 1 - it should resolve the issue.
For the code you shared - it looks like the first example you showed before only has payload-extractor code and the second one only has buildtime-payload code. Those are not the same things, you need to use both of them at the same time. Something like this:
async asyncData({ $axios, $payloadURL, route, store, payload }) {
   if (process.static && process.client && $payloadURL) {
     return await $axios.$get($payloadURL(route))
   }

      if (payload) {
        const { agenda, articles, frames, page, marquee } = payload
        store.dispatch('LOAD_MARQUEE', payload)
        return {
          ...page,
          agenda,
          articles,
          frames
         }
      }

        const { homepage } = await wpFetch('pages')
        const posts = await wpFetch('posts')

        if (store.state.marquee.length <= 0) {
          const { marquee } = await wpFetch('common')
          store.dispatch('LOAD_MARQUEE', marquee)
        }

        return {
          ...homepage,
          agenda: await wpFetch('agenda'),
          articles: getArticles( posts, 5, true),
          frames: getFrames( posts, 1, true),
         }
    },

@DreaMinder
Ok, it's now clearer in my head, thanks for your insights I'm gonna try that and let you know if this works properly.
Can you confirm though that without the payload-extractor module, if I use a payload implementation (code samples from  my second post / Markus ) it should obviously use payload during build time but actually not using this payload during page hydratation / client navigation? This is the part I'm the most confused with right now.

You are right, ctx.payload will only work during nuxt generate. And without payload-extractor user will still have API-requests on client-side navigation.

@DreaMinder
Just pushed the new implementation to production, it works like a charm.
Build time has been reduced by roughly a 33% compared to first implementation.
Thanks for your time, much appreciated. This payload story is so counter-intuitive as first where you would expect a full-static website but it's not.
Have a good day
leo

I'm glad you figured it out. I hope native full-static implementation will remove any confusion about payloads, it should be soon.


[Twitter Usage Guidelines]  Draft

Based on nice exchange today https://github.com/eclipse/microprofile-marketing/issues/475#issuecomment-818202193, it is time for a form documented wiki where the usage of Media is stated and adjusted as we more forward welcoming new Contributors.
To start, draft is hereTwitter usage guidelines
The document is public, @TetianaFTV and @debbiehoffman both of you have access to contribute in Twitter. It would be great for you to review and improve the document. Thank you!

@aeiras, let's clarify, your point here is that instead of just direct posting from MicroProfile Twitter account some prepared text, we need to follow the next steps

a contributor of the article should post a tweet from personal account with MP tag
MicroProfile will reshare that personal post
do I understand you correctly?

If so, I think here we need to prepare a guide not on the Twitter handling but on the blog posts contributions in general (from submitting to sharing).
As I've mentioned in the thread with Emily, I couldn't find any written rules on how to submit or who should approve the articles (maybe there is such document then please share it here). Soon there will be the same approval questions with these articles from Manish, so we need to come up with the process.

Thank you @TetianaFTV for beating me rasing this issue! I think we need to define a process because I don't think we have a formal process to follow.

I have raised this issue to formally document the blog publishing process.

let's add the link to current guide here to keep all related info in the ticket
https://github.com/microprofile/wpsite

You two could rule the world! :)

Tetiana and Emily,
Have we concluded the Q&A on contributing to social media tools?
If yes, this document will be converted into a Mktg Wiki document https://docs.google.com/document/d/1O-p8HJxs13WEZs8Sl2NNrLuh4ofRngV_EKMDJJYa91g/edit

From my side no edits to the social media handling guide, so seems it can be converted to wiki.

Agreed with @TetianaFTV ! Putting this doc in the wiki is good, as this is a process that will guide others in the future.

Thanks you two!
wiki created from old wiki bare version that linked to the document https://github.com/eclipse/microprofile-marketing/wiki/Code-of-Conduct-Standards-for-Social-Media-Contribution
Show and tell on next mktg call.


[Bug] Gitea Actions - Job if statements are ignored

Description
General
Hi,
I found that the jobs.<jobid>.if property does not work with Gitea Actions.
(Side Note: The steps if does work)
I had a look inside the docs and there I only found that jobs.<jobid>.continue-on-error is not supported but I did not found something for the if property.
Is this feature supported (So a bug) or is this ignored as well (then maybe this can be added in the docs)?
Reproduction
System

Host Machine

Debian GNU/Linux 10 (buster)
Docker Swarm (Server Version: 23.0.1)
Gitea and Act Runner Hosted as Docker Swarm Stack

Gitea 1.20.0+rc0 ( Docker Image: gitea/gitea:latest )
Act Runner v0.2.3 ( Docker Image: gitea/act_runner:latest )

Workflow
File: .gitea/workflows/bug.yml
name: Reproduction of "jobs.<jobid>.if" bug
on: push

jobs:
    failing:
        runs-on: ubuntu-latest
        steps:
            - name: Let the job fail
              run: exit 1

    report:
        runs-on: ubuntu-latest
        needs: failing
        if: ${{ failure() }}
        steps:
            - name: Execute
              run: echo This should run...

Gitea Version
1.20.0+rc0
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots

Git Version
No response
Operating System
Debian GNU/Linux 10 (buster) - Docker Image: gitea/gitea:latest & gitea/act_runner:latest
How are you running Gitea?

Host Machine

Debian GNU/Linux 10 (buster)
Docker Swarm (Server Version: 23.0.1)

Docker Stack Compose File:
version: "3"

networks:
  gitea:

volumes:
  data:
  runner_data:

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__security__SECRET_KEY=<SECRET>
      - GITEA__security__INTERNAL_TOKEN=<TOKEN>
      - GITEA__service__DISABLE_REGISTRATION=true
      - GITEA__server__LFS_START_SERVER=true
      - GITEA__server__START_SSH_SERVER=true
      - GITEA__server__SSH_PORT=222
      - GITEA__server__SSH_LISTEN_PORT=222
      - GITEA__server__SSH_DOMAIN=<DOMAIN>
      - GITEA__actions__ENABLED=true
    restart: always
    networks:
      - gitea
    volumes:
      - data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "8081:3000"
      - "222:222"

  runner:
    image: gitea/act_runner:latest
    environment:
      CONFIG_FILE: /config.yaml
      GITEA_INSTANCE_URL: https://<DOMAIN>
      GITEA_RUNNER_REGISTRATION_TOKEN: <REG_TOKEN>
      GITEA_RUNNER_NAME: "Gitea Runner"
    volumes:
      - runner_data:/data
      - /docker/configs/gitea_runner/config.yaml:/config.yaml
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "8088:8088"

I applied a config file to the Act Runner to fix the actions/cache Action like mentioned in the Gitea Docs.
It only includes the cache properties.
Database
SQLite

I'm also having this issue. My guess is that the needs have a higher priority than if or that the gitea actions terminate when the workflow encounters an error in the execution of the workflow.When all I know is that job.if is working properly.

I'm running into this as well

Related to #27906 which has been solved in #29464 but if I read it correctly, it checks for literally always() as a string instead of evaluating it. If you have for example always() && true it doesn't work. Shoud I open another issue?

https://docs.github.com/en/actions/learn-github-actions/expressions#status-check-functions

https://docs.github.com/en/actions/learn-github-actions/expressions#status-check-functions

Can you elaborate? I've read it but I don't get what you mean. Thanks

https://docs.github.com/en/actions/learn-github-actions/expressions#status-check-functions

Can you elaborate? I've read it but I don't get what you mean. Thanks

As a reference Gitea can follow.

Related to #27906 which has been solved in #29464 but if I read it correctly, it checks for literally always() as a string instead of evaluating it. If you have for example always() && true it doesn't work. Shoud I open another issue?

Indeed. #29464 can only handle a single always() function. always() always returns true so it's not necessary to use it with other conditions. However, for other status check functions, we need a better solution.

Maybe we can use https://github.com/expr-lang/expr to evaluate the express.

Up

@lunny could the lack of support for if: beyond a literal always() please be documented in https://docs.gitea.com/usage/actions/comparison#missing-features or https://docs.gitea.com/usage/actions/comparison#unsupported-workflows-syntax?
Currently, that page does not mention this lack at all.

Reopen as this bug has not been fixed yet


Add environement colour for foreground text in statusbar.

The default 30m just doesn't look good on my light colour scheme and I thought it would be nice to have this as an option. Line 173 looks like black magic to me so I don't know how you'd want to implement this.

Done :+1: (FFF_COL5)


Split InsertSetAddItemsToken

Fixes #2500.
Ref #2428

Pull Request Test Coverage Report for Build 8320

83 of 96 (86.46%)  changed or added relevant lines in 12 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage increased (+0.5%) to 60.388%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/token/generator/InsertSetAddGeneratedKeyTokenGenerator.java
12
13
92.31%

sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/placeholder/InsertSetAddGeneratedKeyPlaceholder.java
5
7
71.43%

sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriter.java
13
17
76.47%

sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/sql/statement/AbstractSQLStatement.java
0
6
0.0%

Files with Coverage Reduction
New Missed Lines
%

sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/filler/encrypt/dml/insert/EncryptInsertValuesFiller.java
1
0.0%

Totals

Change from base Build 8319:
0.5%

Covered Lines:
8243

Relevant Lines:
13650

💛  - Coveralls


Does anyone have experience with switching jQuery for Cash in Zurb Foundation?

Hi, I really like Cash and we're thinking of switching over to it from jQuery. However we use the Zurb Foundation framework which requires jQuery.
Does someone have experience with switching from jQuery to Cash in Foundation? I'll try it myself but maybe someone has already gone through this path before.

I'm closing this as it's not really an issue. If people who have been notified by the creation of this issue would like to respond they will be free to do so. Perhaps StackOverflow might be a better place for asking such questions.
In the meantime I'd recommend you reading our migration guide.

Hi @Revisor , did you have an luck doing this?


Vectorized versions of get_real, get_imag

We should consider adding the following family of signatures:
get_real(complex_matrix) => matrix, get_imag(complex_matrix) => matrix,  etc (same idea for complex_vector, complex_row_vector).
The type promotion exposed in stanc3 shouldn't make it strictly necessary to expose functions like to_complex(matrix, matrix) => complex_matrix but these may also be useful.

+1 to adding these functions.  And yes, it looks like we can wrap  Eigen::real() and Eigen::imag().