Button widget should provide enable/disable properties instead of setting onpressed to null

Steps to Reproduce
I want disable button first, then process logic, then enable button at last.
My logic is : first set onpressed to null to  disable button, then do some async operation, at last set onpressed to origin to enable button.
My purpose is to avoid user tapping the button many times when processing async operation.
But got errors:
Unhandled Exception: setState() called after dispose(): _LoginPageState#e0856(lifecycle state: defunct, not mounted)
Codes Steps :
Widget _buildButton(BuildContext context) {
    return OutlineButton(
      child: Text('Login'),
      onPressed: _enableButton
          ? () async {
              if (!_formKey.currentState.validate()) return;

              setState(() {
                _enableButton = false;
              });

              await doLogin(context);

              setState(() {
                _enableButton = true;
              });
            }
          : null,
    );
  }

But got errors:
[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: setState() called after dispose(): _LoginPageState#e0856(lifecycle state: defunct, not mounted)
This error happens if you call setState() on a State object for a widget that no longer appears in the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error can occur when code calls setState() from a timer or an animation callback.
The preferred solution is to cancel the timer or stop listening to the animation in the dispose() callback. Another solution is to check the "mounted" property of this object before calling setState() to ensure the object is still in the tree.
This error might indicate a memory leak if setState() is being called because another object is retaining a reference to this State object after it has been removed from the tree. To avoid memory leaks, consider breaking the reference to this object during dispose().
#0      State.setState.<anonymous closure> (package:flutter/src/widgets/framew<…>

Is there any way to enable/disable button directly?
like this:
OutlineButton(
child:Text('button here'),
onPressed:(){},
enabled:true,
)

Logs

Analyzing app_travel...
No issues found! (ran in 1.7s)

No issues found!

You can create a bool _isEnabled variable and pass it to your button's enabled parameter. When you want to enable/disable the button, just call setState and change _isEnabled value.

You can create a bool _isEnabled variable and pass it to your button's enabled parameter. When you want to enable/disable the button, just call setState and change _isEnabled value.

_enableButton is the bool variable . And I setState to change the value .
  var _enableButton;

  @override
  void initState() {
    _enableButton = true;

    super.initState();
  }

And button widget has no param named enabled.
The named parameter 'enabled' isn't defined.
Try correcting the name to an existing named parameter, or defining a new parameter with this name.d

Maybe OutilneButton doesn't have the enabled property. Therefore, if you want to disable the button, onPressed value must be set to null.

Maybe OutilneButton doesn't have the enabled property. Therefore, if you want to disable the button, onPressed value must be set to null.

Yes, I set the onPress to null.
My logic is : first disable button, then do some async operation, at last enable button.
My purpose is to avoid user tapping the button many times when processing async operation.
But got errors:
Unhandled Exception: setState() called after dispose(): _LoginPageState#e0856(lifecycle state: defunct, not mounted)

Try using onPressed: () => _enableButton ? ...

Got the solution:
Another solution is to check the "mounted" property of this object before calling setState() to ensure the object is still in the tree.

codes is here:
if (mounted) {
  setState(() {
    _enableButton = true;
  });
}

But, the flutter framework should provide enable/disable properties.
The purpose is to prevent many times tapping the button, especially when doing async operations.
Setting onpressed to null will make problems easily.

I think the point here is that using onPressed: null to disable a button is a hack. The functionality is not declarative, nor universal for all widgets.
There should be a widget (like Disable) that wraps the button (or any other widget) and disables the clicks.
Another problem with null is that Flutter Lint raises a warning https://dart-lang.github.io/linter/lints/avoid_returning_null_for_void.html if a function returns null to disable the button.

I came here to say I absolutely hate that this is how it works. Makes your code messy with the ternary statement to disable the button. And then its inconsistent with other widgets that DO have enabled as a parameter, like Checkbox.


Enable bazel remote disk caching

This improvment should speed up local builds, testing, and travis CI.
It uses travi's caching to load the cache directory across builds too.

Well, the results are in - the build tasks significantly faster 🎉 . Additionally I'm caching the .bazel_pod_store here which prevents redundant downloads of Pods. When we migrate Frankenstein to the repository_rule, I think it will be alot faster of we can utilize and reuse the repository cache in addition to this.
The SPM builds got a nice speedup as well ( as we compile PodToBUILD from source ) which will be mitigated upon updating to it's binary releases.


commented out swarm camel-rest quickstart until fabric8io/fabric8/issues/6136 is addressed

[merge]

retest this please

[merge]


Nodemon package isn't working in Visual Studio Code

Version: 1.55.2 (user setup)
OS: Windows_NT x64 10.0.19042
Hi VS code team,
The nodemon npm package doesn't work in vs code terminal. I installed it using:
npm install nodemon
The installation finished but when I used it:
server.js nodemon (In the terminal)
I got a whole bunch of errors and it doesn't work

Does this issue occur when all extensions are disabled?: Yes/No
Yes

Follow proper steps from package description and check if they work.
And if not make sure they work outside of VS Code in standard windows Power Shell

Now before I even knew that their was a code editor with the name vs code I used git command line and their it works. Why doesn't it work in vs code

I forgot to mention that since I realized this problem  I use the following command in the terminal to run my app.js file:
node app.js
The only problem is that when we make changes in the app.js we have to use ^C to stop running the file and then again I have to type the same command that is node app.js Which is quite frustrating becaz for every little change I do I have to again and again stop it and run it again that's why I use nodemon but it doesn't work in vs code

It's working now idk why it wasn't working earlier


'genproto' workaround blocks Google Cloud imports

Hello, I'm adding Peer-pod support on GCP, see https://github.com/cfircohen/cloud-api-adaptor/tree/peerpod_gcp/gcp.
I'm currently blocked by issue 62 ("panic: protobuf tag not enough fields in Status.state") which has a workaround that replaces genproto with an older 2020 version. Workaround was removed in issue 175 ("go.mod contains unnecesary replace directive") and reintroduced in issue 180 ("Removal of the TTRPC workaround causes panic").
Google cloud GO SDK (cloud.google.com/go/compute) requires the latest genproto package: the older 2020 version doesn't have the necessary bindings, and downgrading GCP client SDK also doesn't work due to missing packages in the old 2020 genproto.
Please advise how to proceed.

@yoheiueda ptal

The protobuf API for agent protocol defined in Kata is referenced in Cloud API Adaptor.
https://github.com/confidential-containers/cloud-api-adaptor/blob/1cd66fe3daadfbecc625ca3d465020b8284155be/pkg/adaptor/server.go#L16

I don't have a quick answer to this problem...
We could work around the issue, if golang could allow coexistance of multiple module versions in a single binary, but I guess it is not allowed in the go module system. https://go.dev/ref/mod#minimal-version-selection
The best solution is to eliminate the dependency in the Kata Containers.
I removed the replace line from Kata's go.mod file, and I was able to build the kata shim.
https://github.com/kata-containers/kata-containers/blob/7153b51578e8b24cf34a53134fcd0cb43060f1de/src/runtime/go.mod#L116
git clone -b CCv0 https://github.com/kata-containers/kata-containers.git
cd kata-containers/src/runtime
go mod edit -dropreplace google.golang.org/genproto
go mod tidy
go mod vendor
make $PWD/containerd-shim-kata-v2

I haven't tested its functionality yet.
If we can confirm that peer pods work with the modified kata shim, we can raise a PR to Kata Containers.

How do you normally test these changes? I assume Kata has an automatic e2e testing environment? Did all the unit-tests pass? Were you able to build a new podvm image and run "confidential-containers" e2e tests against it?

How do you normally test these changes? I assume Kata has an automatic e2e testing environment? Did all the unit-tests pass? Were you able to build a new podvm image and run "confidential-containers" e2e tests against it?

I didn't tested the functionality when I posted my previous comment.
I just tested the updated go.mod using cloud-api-adaptor, and got the the following error.
2023/07/20 07:49:21 [adaptor/proxy] StartContainer: containerID:70d7e9067494ad82e66f684baf7f9917430cf2194b8823024f76e43b250a8422
panic: protobuf tag not enough fields in Status.state:

goroutine 71 [running]:
github.com/gogo/protobuf/proto.(*unmarshalInfo).computeUnmarshalInfo(0xc000616fa0)
	/root/go/pkg/mod/github.com/gogo/protobuf@v1.3.2/proto/table_unmarshal.go:341 +0x139f
github.com/gogo/protobuf/proto.(*unmarshalInfo).unmarshal(0xc000616fa0, {0xc0002e0ba0?}, {0xc000940582, 0x11, 0x558})
	/root/go/pkg/mod/github.com/gogo/protobuf@v1.3.2/proto/table_unmarshal.go:138 +0x67
github.com/gogo/protobuf/proto.makeUnmarshalMessagePtr.func1({0xc000940581, 0x12, 0x559}, {0x0?}, 0x0?)
	/root/go/pkg/mod/github.com/gogo/protobuf@v1.3.2/proto/table_unmarshal.go:1826 +0x151
github.com/gogo/protobuf/proto.(*unmarshalInfo).unmarshal(0xc000616f00, {0x1ce9700?}, {0xc000940580?, 0xc00062ada0?, 0x40d907?})
	/root/go/pkg/mod/github.com/gogo/protobuf@v1.3.2/proto/table_unmarshal.go:175 +0x35f
github.com/gogo/protobuf/proto.(*InternalMessageInfo).Unmarshal(0xc0002cc820?, {0x21ec1c0, 0xc0002cc1c0}, {0xc000940580?, 0x13?, 0x55a?})
	/root/go/pkg/mod/github.com/gogo/protobuf@v1.3.2/proto/table_unmarshal.go:63 +0xd0
github.com/gogo/protobuf/proto.(*Buffer).Unmarshal(0xc000565e18, {0x21ec1c0, 0xc0002cc1c0})
	/root/go/pkg/mod/github.com/gogo/protobuf@v1.3.2/proto/decode.go:424 +0x153
github.com/gogo/protobuf/proto.Unmarshal({0xc000940580, 0x13, 0x55a}, {0x21ec1c0, 0xc0002cc1c0})
	/root/go/pkg/mod/github.com/gogo/protobuf@v1.3.2/proto/decode.go:342 +0xe6
github.com/containerd/ttrpc.(*Client).recv(0xc0003d6220?, 0x0?, 0x0?)
	/root/go/pkg/mod/github.com/containerd/ttrpc@v1.1.0/client.go:378 +0xf5
github.com/containerd/ttrpc.(*Client).run.func2()
	/root/go/pkg/mod/github.com/containerd/ttrpc@v1.1.0/client.go:318 +0x24b
created by github.com/containerd/ttrpc.(*Client).run
	/root/go/pkg/mod/github.com/containerd/ttrpc@v1.1.0/client.go:286 +0x17b
exit status 2

I think Kata needs to migrate to the google/protobuf from gogo/protobuf, since goto/protobuf has been deprecated.
gogo/protobuf is widely used in Kata, so replacing all of them will require some work...
https://github.com/search?q=repo%3Akata-containers%2Fkata-containers+gogo%2Fprotobuf&type=code

Thanks for testing, @yoheiueda.
I see that @littlejawa had a comment here about Containerd moving away from gogo/protobuf in their main branch, and how Kata can now explore removing that dependency as well. Should we ping Julien and ask for status?

@cfircohen That would be great.
I am trying to update the protobuf code in Kata Containers, but haven't succeeded yet. I am currently facing this issue https://github.com/containerd/containerd/issues/8850.

To fix this issue, I believe we need to remove the dependency to gogo in Kata. I raised an issue about it https://github.com/kata-containers/kata-containers/issues/7420.
I think we need some volunteers to fix the issue in Kata, since it is complicated, and needs knowledge of both Kata and protobuf.
If fixing the issue in Kata needs some time, we may need to develop some work around in the cloud-api-adaptor side.
@bpradipt @stevenhorsman @littlejawa any comments?

Hi @yoheiueda and @cfircohen , sorry for the late reply here.
Just to give an update: we are working to remove protobuff from Kata and make this move as soon as possible. It is a high-priority for us right now.
In meanwhile I will check with others if workarounds are possible here.

genproto workaround is not in place since #1754. Closing this.


Actions thread state model is missing valid transition from stop*->Errored

In the case that an activity has a short run, or a low number of cycles and there is an error during it's shutdown or cycle execution, it will transition by default to Stopping and then Stopped via normal flow, but the async exception handling logic may not flag an error on the activity early enough.
When there is an error, the final state of the activity should be Errored in any case.
When there isn't an error, the final state should never be Errored. (Should be either Finished or Stopped).
This needs further review, but the first fix to be applied should be to allow Stopping  -> Errored. Both the transition and final states Stopping and Stopped should be allowed to be moved to Errored, because of a potential race. But, a better solution is to make sure that all transitions are atomic and that we account for each transition uniquely.

This was reproduced in 5.17.1-PREVIEW. Example error stack is below:
4697 ERROR [/path/to/workload/somedriver-someoperation.yaml:004] CoreMotor    Error in core motor loop:java.lang.RuntimeException: Invalid transition from Stopping to Errored
java.lang.RuntimeException: Invalid transition from Stopping to Errored
	at io.nosqlbench.engine.api.activityimpl.MotorState.enterState(MotorState.java:66)
	at io.nosqlbench.engine.api.activityimpl.motor.CoreMotor.run(CoreMotor.java:397)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)


:book: update organizations document typo

Issue# https://github.com/boto/boto3/issues/2576
Additional literal "/n/n" within the text is removed.

@nateprewitt Hey, can you please approve workflow approval? So we can validate the stuff

Hi @umeshkumhar,
Thanks for pointing this out!  Many of the examples are handed to us by the service documentation writers, so we actually need to verify that these are fixed on their end first before we can accept any changes here.  I think we'll be able to pull this in once we confirm, but it could take some time to hear back from them, so we'll keep you posted with any updates we receive.

Codecov Report

Merging #2490 (9fc3598) into develop (0c7d0f9) will increase coverage by 0.00%.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop    #2490   +/-   ##
========================================
  Coverage    95.30%   95.31%
========================================
  Files           59       59
  Lines        11437    11437
========================================
+ Hits         10900    10901    +1
+ Misses         537      536    -1

Impacted Files
Coverage Δ

botocore/credentials.py
98.65% <0.00%> (+0.10%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0c7d0f9...9fc3598. Read the comment docs.

Hi @umeshkumhar,
I confirmed with the team that we won't be able to take a change here, as much as we'd like to.  We'll definitely need to pull the changes from upstream, so any changes made manually here will unfortunately be overwritten.  Sorry about that!


Original string is changed

Maybe the Read.me could be updated with the notion that the original string will be modified during the parsing proces?
I noticed my original string after parsing containing only "http" after parsing was done. I still need my original string after parsing, so I pulled a copy using malloc().
I assume you do not want a malloc() call in your lib? So you deliberately do not make a local copy, am I right?

Thanks for the feedback, I will fix it ASAP :-)

Fixed in commit 463760fb101861d760eae9b46dbf7f8dfaa30179.

modify url string directly will cause problem. how u can free the memory malloced by the URL?


typescript 类型检查 TS7006

如图
@matth3wga0

I have the same error here. How could this be fixed?

@nWidart If your tsconfig.json has the following config:
{
  "compilerOptions": {
    "noImplicitAny": true,
  }
}

TypeScript will be checking every *.d.ts, *.ts, *.tsx files to find implicitly any type.
If you want to disable this feature for the 3rd library, you can update tsconfig.json:
{
  "compilerOptions": {
    "skipLibCheck": true,
  }
}

ps: I think eleme/element-react should remove these warning.


Addition of qiwi icon to readme

Add image qiwi.
See also: #156

Oh, in my laptop, the QIWI text is not shown because the background color is black. How about adding a gray background color?
And also, I think the following code is better.

[![Pylint](https://github.com/snu-quiqcl/swift/actions/workflows/pylint.yml/badge.svg)](https://github.com/snu-quiqcl/swift/actions/workflows/pylint.yml)
[![unittest](https://github.com/snu-quiqcl/swift/actions/workflows/unittest.yml/badge.svg)](https://github.com/snu-quiqcl/swift/actions/workflows/unittest.yml)

Like the below image..

I think there was an update, but I can't see it from this branch, so please check it out! @choiwh03


prisma2 init success message is missing step to go into project folder

prisma2 init foo with Blank project > SQLite > Confirm > JavaScript > Demo script does not tell me to cd ... into my project folder:
C:\Users\Jan\Documents\throwaway>prisma2 init hotfix2

Preparing your demo script (JavaScript) ...

 SUCCESS  Prisma is connected to your database at file:dev.db

┌─ Next steps ───────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                                │
│   Start Prisma's development mode to enable access to                                                              │
│   Prisma Studio and watch schema.prisma for changes:                                                               │
│   $ prisma2 dev                                                                                │
│                                                                                │
│   Start the REST API server (in a new terminal window/tab):                                                        │
│   $ npm start                                                                                │
│                                                                                │
│   Learn more about Prisma 2:                                                                                │
│   https://github.com/prisma/prisma2/                                                                               │
│                                                                                │
│   If you encounter any issues, please report them here:                                                            │
│   https://github.com/prisma/prisma-examples/issues/new                                                             │
│                                                                                │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

This happens with "Demo script" option only, the other option "Just the prisma schema" has the cd <folder> in post install steps.

I wasn't aware of #640. Thanks!

I believe this was fixed in one of the previews, please re-open a new issue if the problem persists.


hierarchy of relation types in relation tables lost

since f99e4732c6a7a3282d6eb2f37fae3b4a4a545825 instead of the hierarchies of the relation types (the labels), only the type itself (name) is shown.

this is a far from perfect solution and probably ordering of results is not working properly, but hierarchies are back


How to set constant learning rate in PPO1?

I checked the doc, but I still cannot find a way to set a constant learning rate in PPO1.
I tried a lot of ways, and the learning rate is always 1e-3.
Can anyone help me?
Thanks a lot

Did you mean setting a learning schedule? Because if learning rate is always 1e-3, it is being constant.

Closing as the answer is in the doc.


[refactor] add tests for record_receipt (or delaying acks)

It's time to have tests, the ruleset for when to send acks (or not) is becoming complicated (see the recent discussions in base-drafts and delayed-ack).
And by writing tests, I've found unnecessary if conditions in record_receipt 😁

@hfujita Thank you for the review.
Regarding high-level comment, do you want something more than what's written in the original comment of this PR (see above)?
PS. I hope I am not poking you too much with review requests. Please feel free to ignore requests that you do not care. Or, I can stop sending review requests for minor / cosmetic changes like this or the DF bit pull requests. Your reviews improve these little PRs too, but that's something that can come at a later time, I think.


Update MySQL info in the docs for Ubuntu 18.04 LTS image

In scope of this PR we added information to the documentation related to MySQL service being disabled by default and how this service can be enabled.
Update for this work-item.

/azp run ubuntu1604, ubuntu1804


Indent between  and

Indent between <div class = "right_col" role = "main"> and <footer> in the browsers of the opera, chrome, and11. In firefox, everything is fine.
I use Yii2 last version and yii2-gentelella.
Scrennshot from Opera - there
Screnshot from Firefox - there

Hi there @Churakovmike ,
Well this is a front-end product and we're dealing with front-end only.


Integrate with workflow

I'm not sure if this is still being worked on but something I would love to see (and have struggled) with is the best way to integrate a cap applications with the workflow service.
Lets say for example when a user creates a new entity in the UI I want to trigger a workflow for approval in certain cases.
I can see a couple of potential ways to do this:

Fire a message to the enterprise messaging service to decouple the action. then have that start a workflow. As it turns out you can't call a rest api and provide a payload from enterprise messaging so this would also require CPI to source messages from the enterprise-messaging queue and convert them to the appropriate rest call to start a workflow instance.

From the CAP service layer call the workflow instance api. I'm using cds.connect.to here and workflow.tx(req).post(...) but it doesn't work an there seems to be no log or error message about it

Call the workflow instance api directly from javascript in the fiori app. This seems more of a clunky way of doing it though.

What would be the best practice way to go here... Would be great to see some integration between CAP and workflow.

Hey @js1972 - I guess we chatted on this already on another channel :-) Regarding making a call to the Workflow service API to start a new workflow instance, the conclusion we came to is that either of these two approaches seem appropriate, both starting from the CAP service which is acting as a backend to the Fiori frontend app:

the service makes the call directly when handing the new entity creation (CAP has great facilities for making RESTful calls in a nice abstract way)
if you want to involve messaging and do things a little more asynchronously, then the service could emit an event message to the bus, instead, and then you'd need another headless service subscribed to those event messages, which would then in turn make the API call to the WF service


Make the information whether an error should be logged to sentry  part of the error class

(we reuse the http code to determine if it's sever error or client error)

Task linked: QF-2134 Review and fix issues on Sentry


Source is internal and has private methods

The Source type, which is used for watchSources, is "internal" (why?) and only has private methods. When testing that the files included by watchSources are correct, this is very inconvenient.

While porting sbt-scalatex to sbt 1.0 I hit on this error
[error] /Users/ollie/dev/Scalatex/scalatexSbtPlugin/src/main/scala/scalatex/SbtPlugin.scala:52:18: No implicit for Append.Values[Seq[sbt.internal.io.Source], Seq[sbt.io.syntax.File]] found,
[error]   so Seq[sbt.io.syntax.File] cannot be appended to Seq[sbt.internal.io.Source]
[error]     watchSources ++= {
[error]                  ^
[error] one error found

I could not find references to watchSources in http://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html Would it be possible to provide an implicit conversion from File to Source to ease cross-building?

FWIW, my workaround is to provide an implicit conversion in a PluginCompat object
package scalatex

import sbt._
import sbt.internal.io.Source
object PluginCompat {
  implicit def fileToInternalSource(file: File): Source =
    new Source(file, AllPassFilter, NothingFilter)
}

Let's call this one closed with:

https://github.com/sbt/io/pull/74;
https://github.com/sbt/sbt/pull/3438; and
https://github.com/sbt/sbt/pull/3478

.. no?

:+1:


fix tests

What kind of change does this PR introduce?
Upgrades the jsdom module
What is the current behavior?
I saw in the previous Github action run that some tests were failing.

What is the new behavior?
Turns out the api for jsdom-global and jsdom were not compatible. Upgrading jsdom to the latest version fixes this issue.
Additional context
Note that there are still some tests which are pending and don't complete. This is because the implementation is still in progress.

Looks like the node8.x tests are still failing for some other syntax error. Should we support support Node 8.x given that it is no  longer maintained?

I'd say we don't need to officially support node8.x

There is a Mocha bug to consider skipped tests as not pending. But looks like any test suite using it.skip() will never complete!

Ah that's annoying. I actually have it on my todo list to convert this to TS + jest - same setup as postgrest-js and gotrue-js. For now I'm happy to comment out the skipped tests

Yay all passing now.

Woo! Nice one @inian

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Use s format specifier for crash log timestamp

The crashlog timestamp uses the 12h format without am/pm. We should treat it as bug and change it to the default "s" specifier:
//    s Format Specifier      de-DE Culture                      2008-10-01T17:04:32
//    s Format Specifier      en-US Culture                      2008-10-01T17:04:32
//    s Format Specifier      es-ES Culture                      2008-10-01T17:04:32
//    s Format Specifier      fr-FR Culture                      2008-10-01T17:04:32

@dbeuchler what have we done? This format contains : - writing a crashlog crashes the application!

@dbeuchler what have we done? This format contains : - writing a crashlog crashes the application!


Relax constraints to allow Rails 5

Since 5.0.0.rc1 is now out, I believe we should relax the requirements on rails.
Nothing in the changelog jumps out at me that would break this gem's functionality.
This'll need to be thoroughly tested once 5.0.0 becomes "stable".

+1

Thanks @dgoerlich!

Sure thing!  Sorry it took so long.  Just been one of those months for me. :)


fix typos and improve grammar on renderer section

When reading the documentation on Canvas vs SVG, I noticed a few typos I felt worthwhile fixing.

Awesome! Thanks a lot!


SOLR-16883: Use postlogs tool from windows and unix via solr cli infrastructure.

https://issues.apache.org/jira/browse/SOLR-16883
Description
experimenting with making the postlogs tool part of SolrCLI so it runs on windows and unix and elminate custom shell scripting.
Let's see if we can't get more usage/awareness of Solr consuming Solr logs!
Solution
Similar to the SimplePostTool Approach...
Tests
ran bats, but need one for bin/solr postlogs
Checklist
Please review the following and check all that apply:

[ ] I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
[ ] I have created a Jira issue and added the issue ID to my pull request title.
[ ] I have given Solr maintainers access to contribute to my PR branch. (optional but recommended)
[ ] I have developed this patch against the main branch.
[ ] I have run ./gradlew check.
[ ] I have added tests for my changes.
[ ] I have added documentation for the Reference Guide

@Willdotwhite @mkhludnev here is another one iwht changes to windows bin.cmd that owuld be nice to get independent test!

Tested @epugh 👍🏻 - I've no idea what I just did, but it certainly did it:
PS C:\Users\Will\Projects\solr\solr\packaging\build\dev\bin> .\solr.cmd postlogs -url http://localhost:8983/solr/gettingstarted -rootdir C:\Users\Will\Projects\solr\solr\packaging\build\dev\server\logs
Sending batch of 300 log records...
Batch sent
Sending batch of 300 log records...
Batch sent
Sending batch of 300 log records...
Batch sent
Sending batch of 300 log records...
Batch sent
Sending batch of 300 log records...
Batch sent
Sending batch of 300 log records...
Batch sent
Sending batch of 300 log records...
Batch sent
Sending last batch ...
Batch sent
Committed

The -help command prints the following, but doesn't actually explain what the command does - should that live in the help output, or do we expect people to check the online docs?
PS C:\Users\Will\Projects\solr\solr\packaging\build\dev\bin> .\solr.cmd postlogs -help
usage: postlogs
 -help            Print this message
 -rootdir <arg>    All files found at or below the root will be indexed.
 -url <arg>       Address of the collection, example
                  http://localhost:8983/solr/collection1/.
 -verbose         Enable more verbose command output.

Sounds like a good idea to me.

Sounds like a good idea to me.

Terrific!   Thanks for chiming in ;-).

@Willdotwhite so yeah, I have been moving the detailed help over to the Ref Guide.  Commons-cli doesn't make it easy to have a pretty/detailed "this is what the tool does", as far as I know.  So that IS something we lose...

@joel-bernstein I ran with it a bit and deprecated the SolrLogPostTool in favour of PostLogsTool and updated the ref guide as well in this PR.


chore: rename build patch-tags

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#599
#598
#597
#596  👈 (View in Graphite)
#595
#594
#593
#592
#591
#590
#589
#588
#587
#586
#585
#584
main

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


Update sbt-native-packager to 1.9.7

Updates com.github.sbt:sbt-native-packager from 1.9.6 to 1.9.7.
GitHub Release Notes - Changelog - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.github.sbt", artifactId = "sbt-native-packager" } ]

labels: sbt-plugin-update, early-semver-patch, semver-spec-patch

Superseded by #97.


[no issue] add test case

Codecov Report

Merging #2573 into master will increase coverage by 0.01%.

@@            Coverage Diff             @@
##           master    #2573      +/-   ##
==========================================
+ Coverage   40.14%   40.16%   +0.01%
==========================================
  Files        1728     1728
  Lines       60278    60278
  Branches     8395     8395
==========================================
+ Hits        24199    24210      +11
+ Misses      36079    36068      -11

Impacted Files
Coverage Δ

.../com/navercorp/pinpoint/rpc/packet/PongPacket.java
50% <ø> (-21.43%)
:x:

...npoint/rpc/server/SimpleServerMessageListener.java
80% <ø> (-20%)
:x:

...vercorp/pinpoint/rpc/packet/ClientClosePacket.java
72.22% <ø> (-11.12%)
:x:

...om/navercorp/pinpoint/rpc/codec/PacketDecoder.java
71.08% <ø> (-7.23%)
:x:

...orp/pinpoint/rpc/server/DefaultPinpointServer.java
81.43% <ø> (ø)
:white_check_mark:

...m/navercorp/pinpoint/test/OrderedSpanRecorder.java
80.95% <ø> (+1.19%)
:white_check_mark:

...ava/com/navercorp/pinpoint/rpc/util/ListUtils.java
56.6% <ø> (+1.88%)
:white_check_mark:

...ava/com/navercorp/pinpoint/web/vo/chart/Point.java
51.02% <ø> (+4.08%)
:white_check_mark:

...npoint/web/vo/stat/chart/DataSourceChartGroup.java
100% <ø> (+40%)
:white_check_mark:

...point/web/view/DataSourceChartGroupSerializer.java
100% <ø> (+100%)
:white_check_mark:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3868170...b059a64. Read the comment docs.


An error occurred while Style/RedundantCurrentDirectoryInPath cop was inspecting

Expected behavior
Been using rubocop in httpx always targeting latest, and it started failing today.
Actual behavior
> bundle exec rubocop -a lib/httpx/plugins/proxy.rb -d
For /home/dev/httpx: configuration from /home/dev/httpx/.rubocop.yml
configuration from /home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-performance-1.18.0/config/default.yml
configuration from /home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-performance-1.18.0/config/default.yml
Default configuration from /home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/config/default.yml
Inheriting configuration from /home/dev/httpx/.rubocop_todo.yml
Use parallel by default.
Skipping parallel inspection: only a single file needs inspection
Inspecting 1 file
Scanning /home/dev/httpx/lib/httpx/plugins/proxy.rb
An error occurred while Style/RedundantCurrentDirectoryInPath cop was inspecting /home/dev/httpx/lib/httpx/plugins/proxy.rb:81:10.
undefined method `start_with?' for nil:NilClass
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/style/redundant_current_directory_in_path.rb:25:in `on_send'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:107:in `public_send'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:107:in `block (2 levels) in trigger_responding_cops'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:171:in `with_cop_error_handling'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:106:in `block in trigger_responding_cops'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:105:in `each'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:105:in `trigger_responding_cops'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:69:in `on_send'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:157:in `on_if'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_if'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `block in on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `each'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:154:in `on_def'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_def'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `block in on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `each'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `on_dstr'                                                                             [56/1807]
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:154:in `on_class'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_class'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `block in on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `each'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:138:in `on_while'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_module'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `block in on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `each'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:138:in `on_while'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_module'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `block in on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `each'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:137:in `on_dstr'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:138:in `on_while'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:71:in `on_module'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-ast-1.29.0/lib/rubocop/ast/traversal.rb:20:in `walk'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/commissioner.rb:87:in `investigate'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/team.rb:156:in `investigate_partial'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cop/team.rb:91:in `investigate'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:345:in `block in inspect_file'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:344:in `each'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:344:in `flat_map'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:344:in `inspect_file'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:287:in `block in do_inspection_loop'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:321:in `block in iterate_until_no_changes'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:314:in `loop'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:314:in `iterate_until_no_changes'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:314:in `loop'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:314:in `iterate_until_no_changes'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:283:in `do_inspection_loop'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:164:in `block in file_offenses'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:189:in `file_offense_cache'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:163:in `file_offenses'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:154:in `process_file'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:135:in `block in each_inspected_file'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:134:in `each'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:134:in `reduce'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:134:in `each_inspected_file'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:120:in `inspect_files'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/runner.rb:73:in `run'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli/command/execute_runner.rb:26:in `block in execute_runner'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli/command/execute_runner.rb:52:in `with_redirect'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli/command/execute_runner.rb:25:in `execute_runner'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli/command/execute_runner.rb:17:in `run'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli/command.rb:11:in `run'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli/environment.rb:18:in `run'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli.rb:118:in `run_command'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli.rb:125:in `execute_runners'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli.rb:51:in `block in run'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli.rb:77:in `profile_if_needed'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/lib/rubocop/cli.rb:43:in `run'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/exe/rubocop:19:in `block in <top (required)>'
/home/.rubies/ruby-3.2.2/lib/ruby/3.2.0/benchmark.rb:311:in `realtime'
/home/dev/httpx/.bundle/ruby/3.2.0/gems/rubocop-1.53.0/exe/rubocop:19:in `<top (required)>'
/home/dev/httpx/.bundle/ruby/3.2.0/bin/rubocop:25:in `load'
/home/dev/httpx/.bundle/ruby/3.2.0/bin/rubocop:25:in `<top (required)>'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:58:in `load'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:58:in `kernel_load'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:23:in `run'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/cli.rb:491:in `exec'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/cli.rb:34:in `dispatch'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/cli.rb:28:in `start'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/exe/bundle:45:in `block in <top (required)>'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/home/.gem/ruby/3.2.2/gems/bundler-2.4.1/exe/bundle:33:in `<top (required)>'
/home/.gem/ruby/3.2.2/bin/bundle:25:in `load'
/home/.gem/ruby/3.2.2/bin/bundle:25:in `<main>'

Steps to reproduce the problem
Run the specified command with the prompt above in httpx master branch.
RuboCop version
 > bundle exec rubocop -V
1.53.0 (using Parser <IP_ADDRESS>, rubocop-ast 1.29.0, running on ruby 3.2.2) [x86_64-darwin21]
  - rubocop-performance 1.18.0

This issue is a dup with https://github.com/rubocop/rubocop/pull/11974 and fixed by https://github.com/rubocop/rubocop/pull/11975.


.pyc files in tarball from pypi

All tarballs from pypi i tested are containing

/menu/templatetags/init.pyc
/menu/templatetags/menu.pyc

Hi,
This seems to be more than a cosmetic issue. I have a package that depends on django-simple-menu, and if I try to install it in development mode (python setup.py develop), it crashes while installing django-simple-menu (see exception below).
With a local checkout of django-simple-menu, then running 'python setup.py sdist' and using the resulting tarball instead of the one from pypi containing the .pyc files, everything works nicely.
Please use the 'python setup.py sdist' and 'python setup.py upload' mechanism to generate and upload the archives.
rsc
issue.txt

Thanks for the report (and pardon the lag).
Version 1.2.1 has just been published to pypi and I've confirmed there's no .pyc files in the tarball.


Picker has been removed from React Native Error

Any ideas how to get around this error? Picker has been removed from React Native

Hello @0xnatalie
Can you show me the exact error? with screenshot if possible

Tried manually adding that picker lib with no luck yet!

Hi @0xnatalie
This library does not using any picker library. You can check the lib code. It must be one of your own code or another library causing this.
I even tried to run the example and it works fine.


feat(guide): Add echo command to bash guide

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[x] My changes do not use shortened URLs or affiliate links.

Pretty simple, just adds a markdown file for the echo bash command. I made sure to make my style consistent with the most of the other articles.

Closed, I will make another PR with many more bash commands


rm duplicated code

Current coverage is 43.38% (diff: 100%)

Merging #236 into master will decrease coverage by 0.62%

@@             master       #236   diff @@
==========================================
  Files            11         11
  Lines          8989       8989
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits           3956       3900    -56
- Misses         3986       4078    +92
+ Partials       1047       1011    -36

Powered by Codecov. Last update f853302...7595ef5


feat(http): update to superagent v2.3.0

[ ] I added new tests for the issue I fixed/built
[x] I ran npm test for the package I'm modifying
[x] I used npm run commit instead of git commit

Why close?

I wanted to move the change to a non-master branch.  I waited for the core-js fix merge.  https://github.com/cyclejs/cyclejs/pull/456


ST-1388 Bundling based off master.

Change description
Bundling fixes directly to master
JIRA link (if applicable)
https://tools.hmcts.net/jira/browse/ST-1388
Before merging a pull request make sure that:

[ ] tests have been updated / new tests has been added (if needed)
[ ] README and other documentation has been updated / added (if needed)

If this ticket will have any visible impact on users and is not behind a feature toggle, make sure that:

[ ] this ticket been reviewed by QA
[ ] the user story been signed off by the PO

Note that bug fixes, dependency updates and technical tasks do not directly impact the user experience and can be merged without QA and PO review.
If this user story cannot be immediately merged find a way to put it behind a feature toggle and get it merged.

Closing as redundant, Bundling now released.


Bump apipie-bindings to remove awesome_print runtime dependency.

AwesomePrint was used only for debug logging in the api in apipie-bindings
but when it is required, it globally monkey patches core ruby and rails classes.
An issue was opened in apipie-bindings to make this dependency opt-in
by requiring a developer to manually add awesome_print to their Gemfile
so it is required before it hits the apipie-bindings code.
See:
https://github.com/Apipie/apipie-bindings/issues/29
It was subsequently fixed here:
https://github.com/Apipie/apipie-bindings/pull/30

cc @kbrock @matthewd


Sending email alert for each hit

Hello, I've configured Elastalert to e-mail me whenever some one is added to a group in AD; I've configured Elastalert to sleep for 1 minutes and query the previous 5 minutes.
My test rule is as below:
name: Test ElastAlert Rule
es_host: <IP_ADDRESS>
es_port: 9200
index: winlogbeat-*
filter:
  - term:
      event_id: "4728"
include:
 - event_data.TargetUserName
 - event_data.MemberName
 - event_data.SubjectUserName
type: any
timeframe:
  minutes: 5
alert:
  - "email"
email: "admin@domain"
smtp_host: "<IP_ADDRESS>"
from_addr: "ElastAlert@domain"

I was expecting to receive an email alert for every group that was modified, however I've noticed that when I modify two groups whilst Elastalert is sleeping, it will only send one e-mail with only the details of one of the groups -  however it does see that there were two hits, as below:
Test ElastAlert Rule

@timestamp: 2017-04-21T14:18:52.823Z
_id: AVuQ4UG3ZFqcPo9Ha8O1
_index: winlogbeat-2017.04
_type: wineventlog
event_data: {
    "MemberName": "CN=Test user,OU=Users, DC=domain",
    "SubjectUserName": "admin",
    "TargetUserName": "Group-1"
}
num_hits: 2
num_matches: 2

As far as I can see I haven't enabled any aggregation - I would like to receive an e-mail for every group that is modified, can anyone help?
Thanks.

Just RTFM'd the option I need is:
realert:
  minutes: 0

Apologies for the noise again :)

can you please tell where you put below entry to get every alert
realert:
minutes: 0


[Improvement] Support to run TPCDS in our integration-test

It's better to run TPCDS to verify the correctness of our system. It will help us find problems more quickly.

Do you have experience on this? I think this is necessary to do daily benchmark to avoid performance regression

We can't use git action to do daily benchmark. Because the git action machine may have unstable performance. I want to introduce the TPCDS test like https://github.com/apache/spark/blob/master/sql/core/src/test/scala/org/apache/spark/sql/TPCDSQueryTestSuite.scala here.


Chore: Support temp table for insert into exec

Description
Trying to get slts working again.
Getting this error with just sql-logic-tests 'sqllogictests/aggregates':
2023-08-25T16:41:41.281364Z ERROR                 main ThreadId(01) testing::slt::cli: crates/testing/src/slt/cli.rs:310: Error while running test `sqllogictests/aggregates` error=test fail: statement failed: internal error: cannot execute postgres query: db error: ERROR: missing table: default.public.t_aggs
[SQL] insert into t_aggs values (1, 1.0, '1'), (2, 2.0, '2'), (3, 3.0, '3'), (4, 4.0, '4');

This is fixed


Latency Issue when Overlaying Two Custom Painters

Steps to reproduce

Add a Custom Painter with thousands of points to display.
Place it in a Stack.
Add a listener to the stack, above the first Custom Painter, that updates as Listener child. The calculation of points in the first painter affects the construction latency of the second one, for example, to draw a line.
Pay close attention to ensuring that the first Custom Painter is never rebuilt when drawing.

Expected results
I am waiting for the latency of the custom painters not to bleed into each other when they are overlaid.
Actual results
I have encountered an issue while using two Custom Painters in my Flutter application. The first Custom Painter is responsible for displaying thousands of points with Quadratic Bezier Paths, while the second Custom Painter only displays a few points. When the two Custom Painters are overlaid on the screen, and the second Custom Painter performs a repaint with a low number of calculations, it seems to inherit the calculation latency from the first Custom Painter. However, when the two Custom Painters are arranged one below the other, without sharing any screen area (for example, in a Column), the second Custom Painter is efficient.
How does the canvas behave when multiple custom painters are overlaid?
Code sample
Code sample

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.16.8, on macOS 14.2.1 23C71
darwin-arm64, locale fr-FR)
[✓] Android toolchain - develop for Android devices (Android
SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.1)
[✓] VS Code (version 1.85.2)
[✓] Connected device (4 available)
! Error: Browsing on the local area network for iPad de
Hugo. Ensure the device is unlocked and attached with a
cable or associated with the same local area network as
this Mac.
The device must be opted into Developer Mode to connect
wirelessly. (code -27)
[✓] Network resources
• No issues found!

You can try wrapping one or both with RepaintBoundary. Also set isComplex and willChange properly on the bezier one.

@malo09 Please try above solution to see if it works. If it doesn't, please provide a minimal sample code so that we can verify the issue. Thanks!

Hello @moffatman, @huycozy
Thank you for your feedback. I've tried your solution, but despite these changes, I don't see any difference, and the latency is still present. Here's a prototype that you can quickly try. I compile it under the iPad Simulator.
I added a button in the App Bar that allows you to switch between modes, one with no latency in the column and the other with latency in the stack.
I'm attaching a demo video with this code example that highlights the latency.
https://github.com/flutter/flutter/assets/72927291/ad513d2a-a75b-48d2-aec9-dc67857ed1d5
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

void main() {
  debugRepaintRainbowEnabled = true;
  runApp(const MyApp());
}

enum FlexLayout {
  stack,
  column,
}

class Point {
  final double x;
  final double y;

  Point({
    required this.x,
    required this.y,
  });
}

class Stroke {
  final List<Point> points;

  Stroke({required this.points});

  factory Stroke.empty() => Stroke(points: []);

  Stroke copyWith({List<Point>? points}) => Stroke(
        points: points ?? this.points,
      );
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: false,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  FlexLayout _layout = FlexLayout.column;

  List<Stroke> _generateRandomStrokes({
    required double maxX,
    required double maxY,
    required int numberOfStrokes,
    required int pointsPerStroke,
  }) {
    final List<Stroke> strokes = [];

    final Random random = Random();

    for (int i = 0; i < numberOfStrokes; i++) {
      final List<Point> points = [];

      for (int j = 0; j < pointsPerStroke; j++) {
        final double randomX = random.nextDouble() * maxX;
        final double randomY = random.nextDouble() * maxY;

        final Point point = Point(x: randomX, y: randomY);
        points.add(point);
      }

      final Stroke stroke = Stroke(points: points);
      strokes.add(stroke);
    }

    return strokes;
  }

  List<Widget> _getPainters(BuildContext context) => [
        RepaintBoundary(
          child: CustomPaint(
            isComplex: true,
            willChange: false,
            painter: SketcherLine(
              strokeWidth: 0.1,
              strokes: _generateRandomStrokes(
                maxX: MediaQuery.sizeOf(context).width,
                maxY: MediaQuery.sizeOf(context).height,
                numberOfStrokes: 2000,
                pointsPerStroke: 200,
              ),
            ),
          ),
        ),
        const DrawingListener(),
      ];

  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          actions: [
            IconButton(
              onPressed: () {
                setState(
                  () {
                    if (_layout == FlexLayout.column) {
                      _layout = FlexLayout.stack;
                    } else if (_layout == FlexLayout.stack) {
                      _layout = FlexLayout.column;
                    }
                  },
                );
              },
              icon: const Icon(Icons.grid_3x3),
            )
          ],
          title: const Text('Latency Issue Code Sample'),
        ),
        body: switch (_layout) {
          FlexLayout.column => Column(
              children: _getPainters(context)
                  .map(
                    (e) => Expanded(
                      child: SizedBox(
                          width: MediaQuery.sizeOf(context).width, child: e),
                    ),
                  )
                  .toList(),
            ),
          FlexLayout.stack => Stack(
              children: _getPainters(context)
                  .map(
                    (e) => SizedBox(
                      width: MediaQuery.sizeOf(context).width,
                      height:
                          MediaQuery.sizeOf(context).height - kToolbarHeight,
                      child: e,
                    ),
                  )
                  .toList(),
            ),
        },
      );
}

class DrawingListener extends StatefulWidget {
  const DrawingListener({super.key});

  @override
  State<DrawingListener> createState() => _DrawingListenerState();
}

class _DrawingListenerState extends State<DrawingListener> {
  var _drawingStroke = Stroke.empty();

  @override
  Widget build(BuildContext context) => RepaintBoundary(
        child: Listener(
          onPointerMove: (event) {
            setState(
              () {
                final points = _drawingStroke.points;
                _drawingStroke = _drawingStroke.copyWith(
                  points: points
                    ..add(
                      Point(
                        x: event.localPosition.dx,
                        y: event.localPosition.dy,
                      ),
                    ),
                );
              },
            );
          },
          child: CustomPaint(
            painter: SketcherLine(
              strokeWidth: 10,
              paintColor: Colors.red,
              strokes: [_drawingStroke],
            ),
          ),
        ),
      );
}

class SketcherLine extends CustomPainter {
  SketcherLine({
    required this.strokes,
    required this.strokeWidth,
    this.paintColor,
  });

  final List<Stroke> strokes;
  final Color? paintColor;
  final double strokeWidth;

  Color _getRandomColor() {
    final Random random = Random();

    final int red = random.nextInt(256);
    final int green = random.nextInt(256);
    final int blue = random.nextInt(256);

    return Color.fromRGBO(red, green, blue, 1);
  }

  @override
  void paint(Canvas canvas, Size size) {
    canvas.clipRect(
      Offset.zero & size,
    );
    final Paint paint = Paint()
      ..style = PaintingStyle.stroke
      ..strokeWidth = strokeWidth;

    for (int i = 0; i < strokes.length; ++i) {
      paint.color = paintColor ?? _getRandomColor();
      final outlinePoints = strokes[i].points;
      final path = Path();

      if (outlinePoints.isEmpty) {
        return;
      }

      path.moveTo(
        outlinePoints[0].x,
        outlinePoints[0].y,
      );

      for (int i = 0; i < outlinePoints.length; i++) {
        path.lineTo(
          outlinePoints[i].x,
          outlinePoints[i].y,
        );
      }

      canvas.drawPath(path, paint);
    }
  }

  @override
   bool shouldRepaint(SketcherLine oldDelegate) => oldDelegate != this;
}

You should change your implementation of shouldRepaint to compare the field values on the old and new delegate. Using listEquals for the strokes, and implement operator== and hashCode on both Stroke and Point. Right now your implementation is always returning true and always repainting both.

It doesn't seem to impact latency. I tried two things in the implementation of the shouldRepaint method.
Following your suggestion, I modified the classes by overriding the == operator:
class Point {
  // ... (unchanged code)

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is Point &&
          runtimeType == other.runtimeType &&
          x == other.x &&
          y == other.y;

  @override
  int get hashCode => x.hashCode ^ y.hashCode;
}

class Stroke {
  // ... (unchanged code)

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is Stroke &&
          runtimeType == other.runtimeType &&
          listEquals(points, other.points);

  @override
  int get hashCode => points.hashCode;
}

I also updated the shouldRepaint method:
@override
bool shouldRepaint(SketcherLine oldDelegate) =>
    strokes != oldDelegate.strokes;

However, this doesn't seem to reduce latency.

To further investigate this behavior, I forced shouldRepaint to return false in the Sketches used by the customPainter with thousands of points, passing the value as a parameter:

class SketcherLine extends CustomPainter {
  SketcherLine({
    // ... (unchanged parameters)
    required this.repaint,
  });

  // ... (unchanged code)

  @override
  bool shouldRepaint(SketcherLine oldDelegate) => repaint;
}

Even by forcing the customPainter with thousands of points not to repaint, the latency still persists in Stack mode.
Following, the full edited implementation :
import 'dart:math';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

void main() {
  debugRepaintRainbowEnabled = true;
  runApp(const MyApp());
}

enum FlexLayout {
  stack,
  column,
}

class Point {
  final double x;
  final double y;

  Point({
    required this.x,
    required this.y,
  });

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is Point &&
          runtimeType == other.runtimeType &&
          x == other.x &&
          y == other.y;

  @override
  int get hashCode => x.hashCode ^ y.hashCode;
}

class Stroke {
  final List<Point> points;

  Stroke({required this.points});

  factory Stroke.empty() => Stroke(points: []);

  Stroke copyWith({List<Point>? points}) => Stroke(
        points: points ?? this.points,
      );

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is Stroke &&
          runtimeType == other.runtimeType &&
          listEquals(points, other.points);

  @override
  int get hashCode => points.hashCode;
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: false,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  FlexLayout _layout = FlexLayout.column;

  List<Stroke> _generateRandomStrokes({
    required double maxX,
    required double maxY,
    required int numberOfStrokes,
    required int pointsPerStroke,
  }) {
    final List<Stroke> strokes = [];

    final Random random = Random();

    for (int i = 0; i < numberOfStrokes; i++) {
      final List<Point> points = [];

      for (int j = 0; j < pointsPerStroke; j++) {
        final double randomX = random.nextDouble() * maxX;
        final double randomY = random.nextDouble() * maxY;

        final Point point = Point(x: randomX, y: randomY);
        points.add(point);
      }

      final Stroke stroke = Stroke(points: points);
      strokes.add(stroke);
    }

    return strokes;
  }

  List<Widget> _getPainters(BuildContext context) => [
        RepaintBoundary(
          child: CustomPaint(
            isComplex: true,
            willChange: false,
            painter: SketcherLine(
              repaint: false,
              strokeWidth: 0.1,
              strokes: _generateRandomStrokes(
                maxX: MediaQuery.sizeOf(context).width,
                maxY: MediaQuery.sizeOf(context).height,
                numberOfStrokes: 2000,
                pointsPerStroke: 200,
              ),
            ),
          ),
        ),
        const DrawingListener(),
      ];

  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          actions: [
            IconButton(
              onPressed: () {
                setState(
                  () {
                    if (_layout == FlexLayout.column) {
                      _layout = FlexLayout.stack;
                    } else if (_layout == FlexLayout.stack) {
                      _layout = FlexLayout.column;
                    }
                  },
                );
              },
              icon: const Icon(Icons.grid_3x3),
            )
          ],
          title: const Text('Latency Issue Code Sample'),
        ),
        body: switch (_layout) {
          FlexLayout.column => Column(
              children: _getPainters(context)
                  .map(
                    (e) => Expanded(
                      child: SizedBox(
                          width: MediaQuery.sizeOf(context).width, child: e),
                    ),
                  )
                  .toList(),
            ),
          FlexLayout.stack => Stack(
              children: _getPainters(context)
                  .map(
                    (e) => SizedBox(
                      width: MediaQuery.sizeOf(context).width,
                      height:
                          MediaQuery.sizeOf(context).height - kToolbarHeight,
                      child: e,
                    ),
                  )
                  .toList(),
            ),
        },
      );
}

class DrawingListener extends StatefulWidget {
  const DrawingListener({super.key});

  @override
  State<DrawingListener> createState() => _DrawingListenerState();
}

class _DrawingListenerState extends State<DrawingListener> {
  var _drawingStroke = Stroke.empty();

  @override
  Widget build(BuildContext context) => RepaintBoundary(
        child: Listener(
          onPointerMove: (event) {
            setState(
              () {
                final points = _drawingStroke.points;
                _drawingStroke = _drawingStroke.copyWith(
                  points: points
                    ..add(
                      Point(
                        x: event.localPosition.dx,
                        y: event.localPosition.dy,
                      ),
                    ),
                );
              },
            );
          },
          child: CustomPaint(
            painter: SketcherLine(
              repaint: true,
              strokeWidth: 10,
              paintColor: Colors.red,
              strokes: [_drawingStroke],
            ),
          ),
        ),
      );
}

class SketcherLine extends CustomPainter {
  SketcherLine({
    required this.strokes,
    required this.strokeWidth,
    required this.repaint,
    this.paintColor,
  });

  final List<Stroke> strokes;
  final Color? paintColor;
  final double strokeWidth;
  final bool repaint;

  Color _getRandomColor() {
    final Random random = Random();

    final int red = random.nextInt(256);
    final int green = random.nextInt(256);
    final int blue = random.nextInt(256);

    return Color.fromRGBO(red, green, blue, 1);
  }

  @override
  void paint(Canvas canvas, Size size) {
    canvas.clipRect(
      Offset.zero & size,
    );
    final Paint paint = Paint()
      ..style = PaintingStyle.stroke
      ..strokeWidth = strokeWidth;

    for (int i = 0; i < strokes.length; ++i) {
      paint.color = paintColor ?? _getRandomColor();
      final outlinePoints = strokes[i].points;
      final path = Path();

      if (outlinePoints.isEmpty) {
        return;
      }

      path.moveTo(
        outlinePoints[0].x,
        outlinePoints[0].y,
      );

      for (int i = 0; i < outlinePoints.length; i++) {
        path.lineTo(
          outlinePoints[i].x,
          outlinePoints[i].y,
        );
      }

      canvas.drawPath(path, paint);
    }
  }

  @override
  bool shouldRepaint(SketcherLine oldDelegate) => repaint;
}

Use listEquals to compare the lists not !=, it will just compare identity, not values.
Can you try running without Impeller? https://docs.flutter.dev/perf/impeller

Running the application without Impeller resolves the issue completely ! there is no latency anymore.
Is this an issue to be raised at the Impeller level? Or is it a normal behavior?

The thing is, Skia has a "raster cache". Which means it will save the result of these expensive painters in the GPU memory, and reuse it later instead of repainting.
Impeller doesn't have any such raster cache yet. There is a ticket here about it but no real info: https://github.com/flutter/flutter/issues/111691

Okay, thanks a lot for your time and help, @moffatman

@malo09 Looks like this can be solved without using Impeller. Keeping this issue open as an Impeller issue for further tracking.
Reproduced the issue with the updated sample code at https://github.com/flutter/flutter/issues/142550#issuecomment-1919003719.
On my end with an old device iPhone 7, iOS 15.8:

With Impeller: the top part is black and the output console warns 0000000d:kIOGPUCommandBufferCallbackErrorOutOfMemoryForParameterBuffer. In the bottom part, there is a noticeable delay when drawing.
Without Impeller: the top part can render all lines and drawing on the bottom part is much smoother.

Demo screenshots

with Impeller
without Impeller

flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.16.9, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.16.9 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 41456452f2 (14 hours ago), 2024-01-25 10:06:23 -0800
    • Engine revision f40e976bed
    • Dart version 3.2.6
    • DevTools version 2.28.5

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.14.3

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

[✓] Android Studio (version 2023.1)
    • Android Studio at /Applications/Android Studio Hedgehog.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.85.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.80.0

[✓] Connected device (4 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D                         • android-arm64  • Android 11 (API 30)
    • iPhone (mobile)  • d9a94afe2b649fef56ba0bfeb052f0f2a7dae95e • ios            • iOS 15.8 19H370
    • macOS (desktop)  • macos                                    • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)     • chrome                                   • web-javascript • Google Chrome 120.0.6099.234

[✓] Network resources
    • All expected network resources are available.

• No issues found!

[!] Flutter (Channel master, 3.19.0-14.0.pre.21, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.19.0-14.0.pre.21 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 6379378c88 (21 minutes ago), 2024-01-30 22:08:36 -0500
    • Engine revision 2d2d88068a
    • Dart version 3.4.0 (build 3.4.0-92.0.dev)
    • DevTools version 2.31.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.14.3

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

[✓] Android Studio (version 2023.1)
    • Android Studio at /Applications/Android Studio Hedgehog.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.85.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.80.0

[✓] Connected device (3 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64  • Android 11 (API 30)
    • macOS (desktop)  • macos            • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)     • chrome           • web-javascript • Google Chrome 121.0.6167.85

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

We have no plans to add a raster cache to Impeller. If you want to cache textures yourself (because you've observed that it improves performance) I'd recommend using something like the SnapshotWidget
It will always be possible to put more geometry on screen than is possible to quickly rasterize, overall this is working as expected.


Replace RandIsaac with Xorshiro

For generating random numbers in linfa, we exclusively use Isaac64Rng, which is an RNG that trades speed for crytographic security. However, we don't need cryptographic security, only randomness, so it makes more sense for us to use a faster PRNG that's not secure. I recommend either Xorshiro256Plus or Xorshiro256PlusPlus from rand_xorshiro.

Closed by #217


Deck's build log lens should fail gracefully on large build-log.txt files.

(re-filed from https://github.com/kubernetes/test-infra/issues/27497)

What happened:
A large (e.g. >26MB) build-log.txt cannot be rendered by Spyglass' build log lens due to the file size. The lens shows the spinning loading symbol forever.
What you expected to happen:
I don't expect the lens to be able to highlight and render such a large file, but it should fail more gracefully. We should display an error if the file is large enough to have no chance of rendering in time and if a timeout is reached that should be displayed on the front end rather than spinning the loading symbol forever.
How to reproduce it (as minimally and precisely as possible):
Create a job with lots of standard output.
/help-wanted

/kind bug

/lifecycle frozen


Removed old email flow

fixes https://github.com/TryGhost/Team/issues/2611

Entered a rabbit hole with lots of side effects that caused weird and hard to debug test failures. Gonna need to continue on this next week.


Padding first 0s in imsi

Related issue:
https://github.com/free5gc/webconsole/issues/22
https://github.com/free5gc/free5gc/issues/330


bug: Automatically scroll up when the ScrollView content is smaller than the container itself

Actually, this doesn't seem to happen.


Possible bug in lc.plot?

See the screenshots below:

It's not a bug in the plot. You have normalized the flux somewhere but not normalized the errors. The error bars are ~15 counts.

I pull the latest changes and now everything works again! =D


Add regional domain name to S3 Bucket

It's advised to use a bucket's regional domain name  when configuring as a Cloudfront origin to avoid some redirect issues while DNS is updated caused by using it's generic/global domain name.  Can we expose that domain name as part of the Bucket?
It looks like it was added to Terraform last year: https://github.com/hashicorp/terraform-provider-aws/issues/7764
See also https://stackoverflow.com/a/58423033

ack looks like my local docs cache is out of date; i see it was included in c81580b82c445314e54134643393aaa8134cec1f !

ack looks like my local docs cache is out of date; i see it was included in c81580b82c445314e54134643393aaa8134cec1f !


Allow For multiple configuration sources

Kong Should allow for multiple sources of configuration - more specifically, Environment variables, command line arguments, and one ore more configuration files.
With the rise in distributed operating systems and cluster orchestration / automation, managing static files on specific machines is an increasing pain point. Most orchestration & automation tools and frameworks have provisions to manage environment variables across nodes or pass command line arguments to remote shells.
in order of operations, I think cli flags > environment variables > files
where flags over ride all, and a file, or directory of files is used as the defaults and / or fall back values.
if a directory of files is specified, files should be merged in an over-riding fashion in order of the file name in lexographic order; much like conf.d, or systemd where 30-somefile > 20-somefile > 10-somefile
Ultimately, we should be able to deploy containers with flags or injecting environment variables
docker run --rm -e <VAR> -e <VAR> mashape/kong kong start --<FLAG> --<FLAG>
What lead me to this problem was trying to deploy a number of Kong instances in container, an connecting them to a cluster of Cassandra nodes, which were also deployed to anonymous machines of which the ips are not known and placed in ETCD
This would be very easy to solve if databases_available settings were exposed through flags.
docker run --rm mashape/kong kong --databases_availale:cassandra:properties:contact_points=$(etcdctl get /place/where/casandra/ips/live)

Platform - CoreOS
Kong Version - 0.5.x

+1

See this discussion; https://github.com/amireh/lua_cliargs/pull/50#issuecomment-150828294 (the project is also used by Busted for the cli)
I think they could use the Kong usecase for their development.

I have been looking and trying for many command line arguments parsing tools in Lua for Kong's CLI to find the one which allowed for the more features and the more flexibility, but not sure if I tried this one.
I have also been wanting to replace what we currently use (lapp.lua) with a better option. lapp left room for flexibility for the way I wanted the CLI to be built (the CLI itself will be more than what it is just now. It is aimed to also be a mean to interact with Kong's configuration), but is too limited.
Very interested in trying it out.

This is an interesting use-case. Parsing defaults from config files inside lua_cliargs, which is purely a CLI-argument parser, has been a long-discussed issue (actually dates back to 2 years ago! see https://github.com/amireh/lua_cliargs/issues/20 and https://github.com/Olivine-Labs/busted/issues/115#issuecomment-16048767)
Eventually, in the work of the 3.0 release of lua_cliargs, I tried to accommodate this feature but it might have been that my approach was not optimal, such that it lead me back to dislike adding this feature to the library because it violates the single-responsibility principle (which really is parsing CLI args.)
However, you guys definitely have a point in that the default values to options/flags are part of the CLI library and as such it should be flexible enough to accept them from different sources. I can currently think of two things:

create a separate library for loading config files, and have a way for the core CLI library to accept these configs (already possible in the 3.0 branch)
re-visit my original approach to adding this to the core library

In order to better assess my decision, can you guys shed light on what features out of a CLI parser are you looking for in Kong?

PS: you might want to look at the 3.0 readme instead of the current one, it has better docs for the API and what the library can currently do (not all features are yet documented but making progress there): https://github.com/amireh/lua_cliargs/blob/3.0/README.md

Perhaps looking at it as a parser is too narrow of a principle, where loading config is really what we are after. The cli ares is a way of getting config. while not in leaving, nconf has been an invaluable tool for us. It might be a point of inspiration m

Ultimately, I'd care how or what is parsing arguments. The issue is that Kong doesn't have a great means of configuration, making hard to deploy in the current modern deployment models.

I was actually just thinking along those lines of using middlewares to isolate those responsibilities.
Reading from CLI arguments is different than reading from config files or env variables to an extent. However, from the application perspective, they all fall down to a large blob of config really.
I have re-introduced support (admittedly, partial[1] support) for loading config from files (JSON, YAML, INI, or plain Lua) in lua_cliargs, but I think to fully harness the requirements here we need a different solution.
[1] partial support because right now we can only accept values for arguments accepted by the CLI, not arbitrary ones. And even if we extended that support to include arbitrary values, I'm not sure how to handle default values (whatever comes from a config file) for "required" arguments.

+1

+1

Taken care of in the 0.9 CLI (config file, env variable, (some) CLI flags). Thanks!


[SPARK-35728][SPARK-35778][FOLLOWUP][TESTS] Add test case to check multiply/divide of day-time interval and year-month interval of any fields by a numeric

What changes were proposed in this pull request?
SPARK-35728: Add test case to check multiply/divide of day-time
intervals of any fields by numeric
SPARK-35778: Add test case to check multiply/divide of year-month intervals of any fields by numeric
Why are the changes needed?
Improve test coverage
Does this PR introduce any user-facing change?
No
How was this patch tested?
Add ut tests
CO-Author-By: AngersZhuuuu<EMAIL_ADDRESS>

@AngersZhuuuu @MaxGekk I tried to test multiply/divide of day-time intervals of any fields by numeric in two ways. First method is
simple, but it is incomplete, because it does not use checkEvaluation. just compare the eval(). Second method is enumerate data to test. I'll delete one way, what about your suggestion? Thank you.

Can one of the admins verify this patch?

ok to test

Can one of the admins verify this patch?

+1, LGTM. Merging to master.
Thank you, @Peng-Lei and @AngersZhuuuu for review.


Export constructors for TraceKeepAliveClient

I think they should also be exported from Ouroboros.Network.NodeToNode module.

I think they should also be exported from Ouroboros.Network.NodeToNode module.

Why?
Ouroboros.Network.NodeToNode doesn't currently import Ouroboros.Network.KeepAlive and other "application level" tracers are not exported such as TraceTxSubmissionInbound, TraceTxSubmissionOutBound and blockfetch.

ok, let's leave this as is.

bors r+


Casting a scalar (single value) to System.Collections.ArrayList fails

Note: Supporting this would be syntactic sugar, but it is already supported with System.Collections.ArrayList's generic counterpart, System.Collections.Generic.List<T>, as well as with regular arrays (e.g, Object[]) and even other colllections (e.g., System.Collections.ObjectModel.Collection<T>).
Steps to reproduce
# These tests pass and create a single-element collection from the input scalar;
{ [array] 42 } | Should -Not -Throw
{ [System.Collections.Generic.List[int]] 42 } | Should -Not -Throw
{ [System.Collections.ObjectModel.Collection[int]] 42 } | Should -Not -Throw

# This test fails.
{ [System.Collections.ArrayList] 42 } | Should -Not -Throw

Expected behavior
All tests should pass.
Actual behavior
The last test fails, because among the types used only System.Collections.ArrayList doesn't support casting from a single value.
Cannot convert the "42" value of type "System.Int32" to type "System.Collections.ArrayList"

Environment data
PowerShell Core 7.0.0-rc.2

Since ArrayList is officially not recommended does it make sense to add improvements for it?

I think not worth it

Good to know about the official deprecation notice, @SeeminglyScience.
However, people will likely continue to use it (what they usually care about is efficient iterative growth, not type homogeneity, and [System.Collections.Generic.List[object]] is a keyboardful, even though it is better behaved), and the- situational - inconsistency described here will continue to cause confusion.
Therefore, if it is a reasonably quick and simple fix, my vote is to do it. It is the kind of issue that trips you up in practice, but isn't big enough to warrant documenting.

Looking at the bigger picture, this takes us back to how it would be nice to have a well-behaved list type that is a first-class citizen, (#5643) perhaps even with += support (#5805).

Good to know about the official deprecation notice, @SeeminglyScience.

Sorry I should have been more explicit, but it is not necessarily deprecated.  Just recommended against.

However, people will likely continue to use it (what they usually care about is efficient iterative growth, not type homogeneity, and [System.Collections.Generic.List[object]] is a keyboardful, even though it is better behaved), and the - situational - inconsistency described here will continue to cause confusion.

If it is efficiency they're after, I highly doubt ArrayList is getting the same improvements that go into List<T>.  Plus having to null the output of Add has some overhead and imo makes it more cumbersome than List<T>.
Mainly though, if an API is not recommended, and there is a clear alternative, making it easier to use seems counter productive.

Looking at the bigger picture, this takes us back to how it would be nice to have a well-behaved list type that is a first-class citizen (#5643), and perhaps even += support for mutable collections (#5805).

The topic of += being mapped to Add is a mixed bag imo.  It would be the only case (I think) of an assignment operator not actually assigning something.  Even with PowerShell's custom array addition, you're still assigning the new array. Same with C# and delegates.  It's always LHS = LHS + RHS and this would change that.  Is that a problem though? 🤷♂
Actually now that I think about it C# does it for event handlers, where it calls the add_ accessor.  So maybe there's precedent.

Mainly though, if an API is not recommended, and there is a clear alternative, making it easier to use seems counter productive.

Agreed in general, but this is more of a bug fix than an improvement.
To put it differently: Leaving the inconsistency no more encourages users to abandon ArrayList than fixing it promotes its (ill-advised) continued use:
[System.Collections.ArrayList] 42 not working is (a) likely to make you work around it with [System.Collections.ArrayList] @(42), and, conversely, does nothing to alert you to the fact that you should be using [System.Collections.Generic.List[object]] 42 instead.
(Not having to worry about .Add() polluting your output stream is a much more compelling reason, by contrast, but the challenge in both cases is that you have to know about the alternative.)
The net effect of the current behavior is just a situational-and-therefore-perfidious inconsistency that is a nuisance in practice, hence my recommendation to fix it.
But enough about that: we now know the pros and cons, and it is clearly not a big issue in the grand scheme of things:
If consensus forms around this assessment and someone is knowledgeable enough to fix this quickly and safely, I'm hoping they will.
I do find the tangent re better built-in list support interesting, so I'll say more about that in a separate comment.

(Tangent-only alert.)

The topic of += being mapped to .Add() is a mixed bag imo. It would be the only case (I think) of an assignment operator not actually assigning something.

I agree that that would be problematic; @PetSerAl  originally voiced the concern and proposed implementing a specialized list type that doesn't violate the equivalence of $a += $b and $a = $a + $b while still performing well (though reference equality would not be maintained) - see https://github.com/PowerShell/PowerShell/issues/5805#issuecomment-367866807.
The C# += syntax for adding event delegates is indeed an interesting anomaly.

Even with PowerShell's custom array addition, you're still assigning the new array.

Yes, but for users not concerned with reference equality that usually isn't a functional problem - but with high iteration counts becomes a performance concern.
Additionally, what's tricky about += currently is that it quietly converts a non-array collection type to an [object[]] array, which adds quiet loss of type fidelity to the performance concern:
$var = [System.Collections.Generic.List[object]] 42
$var += 43 # creates a *copy* of the list *as an array*, with the new element appended.
$var.GetType().Name   # -> 'Object[]' !!

Suggesting that += be mapped to .Add() is seductive (it was the starting point of #5805), but ultimately too problematic.
In light of that, the best that could be done with += for non-array LHS values is to create copies as the LHS type rather than as an array (which wouldn't address the performance concerns and may not always be possible).
For a potential future built-in [list] type, @PetSerAl's proposal strikes me as the best way forward.
I suggest continuing the conversation at #5805.

@mklement0  This does sound like a bug. I would have expected the cast to work on anything that implements IList.
Separately, with respect to += the solution might be to use persistent data structures (which are totally not what they sound like.) They are used in extensively in Clojure and are quite performant. With persistent data structures, it should be possible to preserve the semantic while getting a significant performance gain.


MaxLength attribute ignored on MudTextField

Bug type
Component
Component name
MudTextField
What happened?
MaxLength attribute is ignored on MudTextField when InputType is other than default.
Expected behavior
MaxLength should work regardless of the InputType.
Reproduction link
https://try.mudblazor.com/snippet/mkcmbOvtJetAlRsU
Reproduction steps
Check the reproduction link.
Relevant log output
No response
Version (bug)
6.0.17
Version (working)
No response
What browsers are you seeing the problem on?
Chrome
On what operating system are you experiencing the issue?
Windows
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

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

HTML maxlength is not valid on <input type="number"> by design.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#maxlength


feat!(math): improve prime field (de)serialization

Description
This PR improves prime field (de)serializations in several aspects.

@chokobole Please fix c67611f's commit message filed -> field.


allow multiple oauth2 types

Lets try this again then.
built on top of 2 PR https://github.com/mrin9/RapiDoc/pull/154 and https://github.com/mrin9/RapiDoc/pull/151
I've started a new branch from master and moved my old PR code into this. Adjusting after feedback from previous PRs.
I don't understand how to easy populate subclasses with settings from html, that can be a little messy.
Solves OAuth2 security with multiple different schemas.
Tested oauth on real sever

clientCredentials
authorizationCode

Prepared but not tested (don't have oauth configuration server). I've placed code and @todo tags pointing to where to look and test.

implicit
application
password
using pkce (needs to create hashes e.g. crypto library)

Features

Support for multiple flows in same security scheme
operation lists required scopes
scope selection when requesting tokens
using new oauth-receiver html file
turn on/off feature thru 'api'

hide redirect information (only needed for configure developer, not everyone else when done)
    hide-authentication-redirect-info="true"

show needed security requirements on each operation (scopes)
    show-operation-requirements="true"

seperate calls based on security. When using different security clients/scopes on calls. make it possible to call with correct scheme
    allow-authentication-separated-calls

@fbacker , I am closing this as release 7.5.0 is out has the OAuth support. In case you still having issues to make it work on your end, please feel free to report them.
Thanks a lot for the Initial PR, which I used as a base to implement this feature


PSRAM/Hyperram peripheral

Love the work being done on luna-soc.
I don't physically have Cynthion hardware (yet) but was reading through this repo in excitement. I noticed there is an SRAMPeripheral, but was thinking it would be quite nice to also have a memory-mapped PSRAM peripheral for the Hyperram, I'm imagining some crazy Cynthion/LUNA projects using external audio or video pmods where having the extra addressable memory for framebuffers / delay lines could prove quite interesting.
Feel free to close this issue if you feel it's out of scope, just wanted to make a vote for its existence :).

Hi there @antoinevg --
I had a crack at this and have a working memtest in Rust against the Hyperram peripheral

peripheral: https://github.com/apfelaudio/tiliqua/blob/main/gateware/src/tiliqua/psram_peripheral.py#L107-L208
(hacky) memtest: https://github.com/apfelaudio/tiliqua/blob/main/gateware/src/example_soc/fw/src/main.rs#L70-L102

I had a look at the Vex bus with an ILA and verified that cache line refills are bursting correctly. There was one small thing in the DQS PHY implementation I had to modify to get the memtest to pass (this might be a real bug?)

This line: https://github.com/apfelaudio/tiliqua/blob/main/gateware/src/vendor/psram.py#L269

                with m.Elif(self.final_word):
                    m.d.sync += self.phy.clk_en.eq(0) # ADDED: gate clock before last word
                    m.next = 'RECOVERY'

Anyway, just letting you know in case any of this is useful.
Unfortunately I don't have Cynthion hardware yet, so I won't file an upstream PR (I am testing on a different hardware platform but it's still ECP5+hyperram, quite close to the Cynthion).