Add support for Rails 6 built-in Parallel Testing

Use Rails 6 built-in parallelizer API for running parallel RSpec executors
https://edgeguides.rubyonrails.org/testing.html#parallel-testing
https://github.com/rails/rails/pull/31900#issuecomment-374299402

We'd love to support parallel tests with RSpec itself, its a rather large task however. If we get parallelisation support into rspec-core you can be sure we'll integrate with the rails helpers.

Note that linked #1254 says:

There are bunch of gems that allow for parallel execution, but all of these are process based and not thread based.

I believe the parallel testing now built into Rails can be process-based or thread-based, and by default is process-based.
Is supporting Rails process-based parallel testing less of a challenge? It looks like one of the main things Rails does for you when supporting this is setting up a separate database for each test worker, as well as orchestrate getting each worker to run different tests and aggregating the results.

In the short term all we could offer is to help integrate 3rd party parallel testing with Rails tools.
Our own parallel journey requires changes to rspec-core which are mostly identical for process or thread based.
Please note there are parallel testing extensions for RSpec already!

Discourse now has a solution based on parallel_tests https://github.com/discourse/discourse/pull/7778

Is there any update on supporting the activesupport parallelize helper in rspec-rails, now that rails 6 has been released?

Sorry, I meant to include a link with more details:
https://github.com/rails/rails/pull/31900

No, RSpec itself needs to support parallelisation in order for it to supported

Sorry @JonRowe - can I please clarify something?

rspec-core needs updating even for multi-process parallelisation, right? (not just multi-threaded parallelisation as described in https://github.com/rspec/rspec-core/issues/1254, which I would assume is more challenging)

The main rspec-core runner doesn't support parallelisation, so it has no means of collating results from workers, be they threads or processes. Process based parallelisation is simpler than thread based due to well, the GIL on MRI rubies and lack of 100% thread safety within the other gems. (I'm fairly certain for example that there are threaded bugs lurking within the mocks code).
My ideal plan for taking us to parallelisation is to use the "fork" model that the bisect runner uses, maybe with a fall back to a "shell" model (essentially processes) but I haven't had the time to work much on it.

to summarize: regardless if thread or processes: rspec-core isn't supporting it yet, so if we run a rails 6.0 application and use rspec, we won't benefit from it. correct?

The helpers are there to support parallelisation, rspec on its own doesn't support parallelisation so you'll need an extension gem to benefit from it.

My ideal plan for taking us to parallelisation is to use the "fork" model that the bisect runner uses, maybe with a fall back to a "shell" model (essentially processes) but I haven't had the time to work much on it.

@JonRowe Would you copy all bisect code and renaming the namespace to parallel and make the required changes?

No I'm writing it from first principles using the bisect runner as a guide and some other external gems.

@JonRowe thanks for taking this on! Is there anything we can do to help this along? Not sure I'm qualified to write any of the runner but if there's something, please let us know!

Since Support Multithread Execution ticket on rspec-core doesn't seem to be a good fit, let me do a brain dump of tools that allow for parallelization of RSpec suite execution here:

https://github.com/Shopify/ci-queue - seems to be actively maintained
https://github.com/tmm1/test-queue - quite well known
https://github.com/sandro/specjour - uses Bonjour to find worker processes
https://github.com/cookpad/rrrspec - unmaintained for a year
https://github.com/conversation/rspec-queue
https://github.com/grosser/forking_test_runner
https://github.com/paraspec/paraspec - just found it recently, didn't investigate
https://github.com/lonelyplanet/queuecumber - the name says it all
https://github.com/grosser/parallel_tests - does not aggregate reports. serves as a base for some other tools in this list
https://github.com/ArturT/knapsack - splits the suite into equal'ish parts basing on previous runs' results. provides a dynamic queue for distributed rspec processes in the commercial version, but doesn't have on-premise option AFAIK
https://github.com/aslakhellesoy/rspec-distributed - quite old. uses DRb, so can accumulate build results not only from several processes running on different CPU cores, but also from several machines. seems abandoned
at my previous company, I was working on an in-house tool, but it's still not open-sourced unfortunately
... I keep bumping into new ones each and every month

All or most of those tools allow for parallelized execution in processes, arranging work with several databases via more or less common TEST_ENV_NUMBER env var.
With such a variety of tools, it seems that parallel testing of Rails applications is not really an unsolved problem.
Basing on the efforts that had to be spent on building and maintaining such a tool while working full-time, I wouldn't really expect that a comparable tool will appear out of thin air in RSpec distribution and immediately becomes better than everything else on the market.

this will be awesome with rails 6+

@pirj I recently attempted to improve our CI testing using some of the tools you mentioned above, and I didn't have much luck. I didn't test all of them, but I did test the ones that were the most popular, and none really seemed to meet what we're looking for.
In an ideal world, a solution for this would do the following:

If multiple cores are available, automatically parallelize the specs. This would have to be configurable.
Automatically aggregate the results into a single, readable output stream using the provided formatter.

My understanding of the Rails feature is that it gets us more of the way there. This still feels like an unsolved problem to me for Rspec. I believe Jest does something like this at the file level in JavaScript. It would be awesome to see.

@LandonSchropp I have bad news for you if you really need to aggregate the results into a single standard RSpec report. It's a hard task with a number of non-obvious edge cases. We've solved it on my previous project, at least for those cases that we've faced. The report is gathered from different workers, spread over different processes or even machines. Unfortunately, it's not open-sourced yet.
If you're using a JUnit-compatible XML-based reporter, combining the results in the end for CI to consume shouldn't be a big deal though.
As to my memory, we had no big issues with aggregating SimpleCov results, but that worked before I joined and I didn't work on this part.
Auto-scaling to multiple available cores is a trivial task. Once you (depending on your system flavour and CPU type) get the number of processors, you're able to run rake db:test:create and rspec by prefixing them with a TEST_ENV_NUMBER, and you're done. Some prefer leaving one core, but you may play around and run 2x more parallel processes than you have cores available. It depends on your tests what will yield the best results. Typically this is all done it a 20 LoC shell script.
Another non-trivial task is to evenly distribute your specs across those parallel processes. If you don't, you risk that one of the processes will be running for a significant amount of time, while other cores will finish already and will be idle. It is solved in Knapsack Pro and AFAIR in rrrspec.
The key is to keep the execution time of the specs, and feed specs to RSpec runner dynamically, one by one. Most time-consuming specs changed specs since the last run, and newly introduced specs are run first to reduce the unevenness of the distribution.
Frankly, I don't have any proof that this queuing system is faster than pre-divided execution on a pretty large suite.
Don't divide the spec into individual examples if you're using let_it_be, or some other form of before(:context) with a transaction rollback. The expensive setup will multiply in this case.

My understanding of the Rails feature is that it gets us more of the way there.

Honestly, I'm not so sure about that. A major flaw I could spot is that Rails doesn't detect if a worker died and did not finish all the workload it was supposed to execute. A better way is to have a timeout and consider worker as dead and spread over its remaining workload among alive workers. This is also solved in my previous project.

@pirj Thanks for the detailed reply!
Sorry if my post sounded like I was trivializing the amount of work involved in this. That definitely wasn't my intention. My goal in my last message was more to enumerate my team's use case in the hopes that it could influence the future design of this. I'm sure that a refactor along these lines is a massive undertaking.

As to my memory, we had no big issues with aggregating SimpleCov results, but that worked before I joined and I didn't work on this part.

I'll have to take a second look at that. When I was investigating, it wasn't clear to me how I'd go about that. I found one plugin for integrating SimpleCov with parallel-tests, but it said it was only compatible with CircleCI, and we're using Codeship, so I didn't explore it further. If you have any hints you could share, I'd appreciate it.

Auto-scaling to multiple available cores is a trivial task. Once you (depending on your system flavour and CPU type) get the number of processors, you're able to run rake db:test:create and rspec by prefixing them with a TEST_ENV_NUMBER, and you're done.

Yep, that's what we're currently doing. In my laptop, I've got 8 cores, each with hyperthreading, so that spins up 15 processes to run on. With that many simultaneous tests running, you can see how managing output would be helpful. I hadn't looked into aggregating JUnit XML compatible results. Do you have an example of something like that with Rspec you could point me to? Maybe that would help solve some of our problems. Our CI processes have four cores available, so it's somewhat less of a concern there.

Frankly, I don't have any proof that this queuing system is faster than pre-divided execution on a pretty large suite.

That's roughly my experience as well. We have a few specs in our application are that are slower than others, but for the most part the costs of individual specs are amortized over our files. Based on my observations of using Jest, it looks like it breaks the spec files into a queue, and then runs each file as a worker becomes available. In our use case, pre-splitting the specs has worked fine.
When I was exploring Knapsack, I actually felt like it was trying to solve a different problem than what we were experiencing. As you said, for us, it was less about distribution and more about taking advantage of multiple cores locally and in our CI environment.

A major flaw I could spot is that Rails doesn't detect if a worker died and did not finish all the workload it was supposed to execute. A better way is to have a timeout and consider worker as dead and spread over its remaining workload among alive workers. This is also solved in my previous project.

I can't speak to that. I'm sure you're absolutely correct, and I agree with you that the behavior you're describing sounds better than what's being done by the Rails runner.
What I meant more from my comment is that what's advertised from the Rails runner is more what we're after. It advertises that it automatically detects the number of cores on the machine, creates the test databases for us, and then splits up our tests and runs them. We love Rspec and will continue to use it over Minitest, but it would be awesome if there were an analog to the parallel features with Rspec that was as easy to use as the Rails solution.
Thanks again for your detailed reply. I really appreciate it!

I can't speak to the rest of it, but as for merging JUnit reports, I've done that before in a different context. The file format is pretty simple, it would just be a matter of a little Nokogiri code to open each report and output a bigger report with the contents of each. Just have each rspec process output in JUnit format and then handle the aggregation and printing of results yourself

@JonRowe Discourse would be happy to fund some work here if you or any other contributors are looking to build it.
Some requirements from me :)

Dedicated gem, plug-and-play into your existing rspec rails app. Must be drop in replacement for Discourse.

Fork per testing process

Pull vs push model. (our bin/turbo_rspec is still the old push model, it means that some workers can be doing nothing while other workers have backlogs of work)... instead similar to @tmm1's test_queue master process has a queue of tests and child processes just ask it for the next test to run via an IO.pipe or some other cheap transport.

Non interleaved output like Discourse's bin/turbo_rspec

Long term also offers discourse bin/rake autospec which is basically a interruptible guard.

If anyone want to work on this and would like the work funded, DM me via Twitter.  @samsaffron

My plan is to build support for parallelism into rspec-core, which solves many of the problems with  plug'n'play, both as our own option, and the ability to farm work out to other plugins. Fork is absolutely on those planes. I very much like the idea of the master rspec process controlling the queue like that, as it allows much easier non interleaved output, which was very much essential.
From there rspec-rails would than integrate the Rails system test helpers for their database support etc
I hadn't thought about the possibility of such a model being a long running process, and reloading / rerunning specs, thats got a set of complications all on its own (as I'm sure you know!)

@JonRowe it must be noted too that parallelism in Rspec will also give a strong acceleration to all the "TDD devops" tools which happen to be based on RSpec (like InSpec and ServerSpec). Just a side-dish, but a very nice one, and definitely useful to the reputation of Ruby as a whole ^_^. Given that, maybe Chef could also be willing to provide some funding in that area (I'm not working there, but just making a wild guess!).

@JonRowe @SamSaffron My company, CommitChange, would be able to add a small amount to the parallel testing pot. It'd be well under $1000 (we just don't have the resources to spend a lot more) but it's something if it'd help. I totally get if this isn't enough to bother but there's likely many smaller users who might be able to put in a few hundred.

thanks everyone, I have been chatting privately to @JonRowe and it looks like Jon may have some time for this project, stay tuned :confetti_ball:

+1

Any updates or PR's to share here? Super excited.

Discourse are sponsoring @JonRowe here a bit to ensure he has enough time to work on internals
We are also sponsoring @ioquatix who is working on a new gem to do general work queue based parallel testing with an rspec backend.
Nothing is ready for testing yet, but we hope to have something in the next couple of months.

That's great news! In the mean time, we've also recently put up our own solution into our CI that uses a pull mode with separate processes: rspecq (mostly inspired from ci-queue).

cc @ArturT

Thanks @pirj for pinging me.
Recently I've been working with @shadre on running in parallel a slow RSpec test file split by test examples on multiple CI nodes.
We also prepared an article how to run slow RSpec files in parallel using Github Actions.

@SamSaffron @JonRowe may we have a quick update on the progress, please?

@ioquatix is working on a parallel runner, it is getting there he can link to the repo and provide a bit of an update if you feel like testing.
We still need to polish off some small rough edges but it works overall.

@ioquatix is working on a parallel runner, it is getting there he can link to the repo and provide a bit of an update if you feel like testing.
We still need to polish off some small rough edges but it works overall.

Do you mean this one: https://github.com/ioquatix/turbo_test?

Yes that is it ... Samuel is still working on it.
On Tue, Nov 24, 2020 at 2:33 AM Ilya Zub<EMAIL_ADDRESS>wrote:

@ioquatix https://github.com/ioquatix is working on a parallel runner,
it is getting there he can link to the repo and provide a bit of an update
if you feel like testing.
We still need to polish off some small rough edges but it works overall.
Do you mean this one: https://github.com/ioquatix/turbo_test?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rspec/rspec-rails/issues/2104#issuecomment-732235726,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAABIXKLANAMBECNM63VZKTSRJ6EFANCNFSM4HCVUOKQ
.

I will give you an update this weekend. Sorry, it has been hectic preparing for (virtual) conferences.

Meanwhile, I've extracted turbo tests from the Discourse and Rubygems source code into a separate gem: turbo_tests.
Samuel's work is kinda more long-term from my perspective, as it doesn't use the parallel_tests gem.
PS. It's funny that we started working on the same thing separately on the same day (October 30th).

Whats the status of the feature? Is it on development or just forgotten? Does it need any coding support? Can we have any feedback about that, please? Would be nice to see parallel testing built-in and working :+1:
@salimane @ioquatix

Whats the status of the feature? Is it on development or just forgotten? Does it need any coding support? Can we have any feedback about that, please? Would be nice to see parallel testing built-in and working :+1:
@salimane @ioquatix

Hey all,
I think similar to @agis  I stood up a gem over redis that can aggregate data over multiple machines / processes with agent syncing.
it's agnostic to frameworks, so I'll be using it for rspec / cucumber formatters.  It's also used as a lib, so the last agent to finish can programmatically interact with the aggregate payload.
https://github.com/skinnyjames/double_decker

A solution based on Ractors would have been very elegant. Bypassing the GIL/GVL would enable true parallelism and the utilization of all cores of our computers, IMO the key to very fast tests and an more interactive kind of BDD workflow.
All parallel_tests-like solutions have drawbacks in terms of setup, simplicity of use, resource usage etc. .
I was quite motivated and hacked up a Ractor-powered version of RSpec::Core::Runner#run_specs just to immediately fail :-(. Ractors impose big restrictions, especially regarding sharing objects. I understand that the current programming model of RSpec and Rails, e.g. the usage of model instance variables doesn't really fit in the Ractors world. I'm not that optimistic that we see a Ractors-aware Rails version soon.

I'm afraid that test parallelism is not just about isolating common state/global variables in RSpec/Rails.
It's also about mocking that may interfere if you do that in the same process. Imagine two tests that run in parallel do allow(Foo).to receive(:bar).and_return(:baz).
Also, various gems that come with testing approaches with no consideration to in-process parallelization in mind, e.g. Sidekiq's HardWorker.jobs that would be shared. And the list of such gems is near infinite.

Imagine two tests that run in parallel do allow(Foo).to receive(:bar).and_return(:baz).

or even worse, 2 tests that need to write into the database 🤯

Whats the status of the feature?

https://github.com/ioquatix/turbo_test/ is open source, and your help is appreciated. You can at least give it a shot and report issues that you come across. I haven't had a chance to give it a shot just yet, but it's not a completely greenfield project, it is something that worked for Discourse, and is being extracted to benefit everyone.

or even worse, 2 tests that need to write into the database

That was never an issue with use_transactional_fixtures. Each thread already runs with a separate Active Record connection by default, and that means that all threads would run in separate transactions. Even against the same database.
There are a couple of things that could break this, e.g. the use of uses_transaction.
Still, cloning/preparing a separate database for each thread is a common way of isolating parallel tests. I can't think of any tangible benefits of using the same database for several test threads/processes/fibers/ractors.

Hi sorry I have not had time to respond here but I am following the conversation and as it stands turbo_test does work, it does have a good performance profile and it's now more a matter of ironing out the bugs/workflow.

Still, cloning/preparing a separate database for each thread is a common way of isolating parallel tests. I can't think of any tangible benefits of using the same database for several test threads/processes/fibers/ractors.

The main benefit is simplicity.

I'm afraid that test parallelism is not just about isolating common state/global variables in RSpec/Rails.
It's also about mocking that may interfere if you do that in the same process.

Mocking is a form of global state like others (including ENV sharing), which will cause difficulties here (more with threads, a bit less with forks).
This could mean that rspec-mocks needs to evolve to support per-process expectations (something which can be complicated if one mocks constants in particular), like Elixir Mox does, if there is no better alternative.

turbo_test should be completely fine with mocks since it runs tests in complete isolation.

@thbar I'm not sure if I completely understand the problem. rspec-support provides in_sub_process do helper if you need it better isolation in certain examples.
Can you please elaborate on per-process expectations and the problems that could arise with the current rspec-mocks running in separate processes?

Hey 👋
Love RSpec ❤ but its main weakness to me it's that it has no built-in parallelisation 😢 It leads many teams to run the full tests in the CI and not on their local environment, which I believe is not the best practice in 2022 compared to other languages. This thread is opened for almost 3 years, small questions:

Does anyone was able to accomplish parallel testing with RSpec and rails6
Will RSpec support built-in parallel testing this year 😓
I guess it's not an easy topic 🙏

this year

No promises. This depends on contributors mostly. RSpec core team has limited resources and is working on releasing support for Rails 7, trying to get RSpec 4 out of the door, and a number of housekeeping tasks.
I encourage you to take a stab at it, and report how far you went through, what went wrong. We can adjust RSpec Core/Mocks as needed to support in-process concurrency.

I think where this was left off is that the result of "take a stab at it" is https://github.com/ioquatix/turbo_test/, and so next steps for anyone who wants this (me included :) ) is to implement that gem and report any issues. Is that right?
If turbo_test gets enough adoption and validation, would that approach then be folded into rspec?

Checking Rails testing guide:

forking processes is the default method

Process forking approach has been available for running RSpec in parallel in the local development for a long time already. Check https://github.com/rspec/rspec-rails/issues/2104#issuecomment-582583372 for a list. There are numerous blog posts how to set it up, including for Rails.
This shifts the "inherent deficiency, obviously a downside" argument into "is not available out of the box, needs additional setup". And, from my perspective, shifts its priority a bit down.
Should we embrace and absorb, bundle or reinvent one of those tools?
It comes with a burden to support it.
Should we work on supporting in-process concurrency (threads, fibers, ractors, ... whatever comes next)?
Basically, the same answer as above.
Should we give our preference and advertise one of the tools in our documentation, optionally provide it as part of our rails generate rspec:install template?
As you've seen, turbo_test development was very active at some point, and then suddenly stopped. This happened to other tools, too. We have no control over that.
I would be happy to see a streamlined approach, but it's unlikely to happen without outstanding contributors' dedication to develop and spread the word. The tool should really stand out, as the currently existing ones work in most cases, too.

@griou We run our rspec/capybara test suite using https://github.com/grosser/parallel_tests  It works well, you just have to make some different config adjustments for things that run outside of rails during the test suite run, i.e. capybara ports, database selection (per process), elasticsearch indices (per process), redis, etc...  See the wiki for examples  https://github.com/grosser/parallel_tests/wiki

@pirj I think I have to add another perspective here. Been around Rails projects since 2.3 was latest and greatest. Up until now for every new project we went with RSpec. But now starting on a new project there is really big incentive to switch - it's included out of the box, automatic and will be supported.
So it is not only missing feature, but becoming a kind of branding issue.
In-process concurrency would be great, but maybe first step is just provide up to date list of existing tool and provide some options in install template. The template option might be bridge to other tool owners to iron out some integration issues and simply drive interest to them.

https://github.com/serpapi/turbo_tests author here. Shameless plug, but it's available as a gem and works as a replacement for the parallel_tests. We use it for 1.5 years in CI and in development every day.
PS. All I did is copy-pasted part of the source code from Rubygems and Discourse, adjusted it a bit, and packaged it into a gem (https://github.com/rspec/rspec-rails/issues/2104#issuecomment-732739992).

FWIW, https://github.com/serpapi/turbo_tests worked out of the box (added gem, ran bundle exec turbo_tests) and halved my dev machine test suite runtime. Everything passed first time (admittedly a very simple test suite).
By contrast, https://github.com/ioquatix/turbo_test required a bunch of setup steps (https://github.com/ioquatix/turbo_test/issues/6) and is now throwing an error when I try it again.

copy-pasted part of the source code from ... Discourse

MIT vs GPLv2 :scream:
@SamSaffron What do you think?
Worked perfectly fine as a drop-in replacement/wrapper for parallel_tests. Good job, @ilyazub !
Before:
bundle exec rspec spec/models/  646.73s user 251.24s system 86% cpu 17:14.30 total

After:
bundle exec turbo_tests spec/models  966.81s user 339.88s system 216% cpu 10:04.89 total

What was missing (and what Rails provides with its default testing framework):

Active Record automatically handles creating a database

Without createdb myproject2 etc it didn't work. I've seen rails db:test:prepare, but db:create wasn't apparently called. I blame this on parallel_tests.
Spreading out tests evenly, dynamically (with a queue), and considering individual specs' CPU/IO ratio is out of comparison and is on par with Rails.

FWIW, https://github.com/serpapi/turbo_tests worked out of the box (added gem, ran bundle exec turbo_tests) and halved my dev machine test suite runtime.

Same! Been following this thread since 2019 and this week it paid off—thanks @ilyazub!

@bmulholland @pirj @jkeen Thanks for your kind words!

copy-pasted part of the source code from ... Discourse

MIT vs GPLv2 scream @SamSaffron What do you think?

I guess I can change the license from MIT to GPLv2 if needed. I've used the MIT license because that's what bundle gem turbo_tests provided.

What was missing (and what Rails provides with its default testing framework):

Active Record automatically handles creating a database

Without createdb myproject2 etc it didn't work. I've seen rails db:test:prepare, but db:create wasn't apparently called. I blame this on parallel_tests.

Yes, parallel_tests requires manual invocation of rake parallel:setup. But I've incorrectly written in the gem description about how the parallel_tests gem is used. Please don't blame parallel_tests for that :-)
@pirj Thank you for mentioning the automatic DB creation in Rails. I've opened an issue in the turbo_tests repo about an automatic setup of the database.

Btw, ActiveRecord::TestCase uses DRb for IPC. At some point, I'd like to try using DRb in turbo_tests.

I guess I can change the license from MIT to GPLv2 if needed. I've used the MIT license because that's what bundle gem turbo_tests provided.

Most likely you have to use GPLv2. Only users of your gem might have some problem if they don't check the license is GPLv2.
This reminds me of last year mess in the Rails community https://news.ycombinator.com/item?id=26566925

users of your gem might have some problem if they don't check the license is GPLv2

Only if they decide to supply a modified version of turbo_tests as an integral part of their proprietary software to another party. To my best knowledge, GPL does not apply any restrictions on using GPL-licensed software for CI or local development, commercial or otherwise, modified or not.
The Rails community incident is the reason why I mention GPL vs MIT above:

GPL header removed.
The license that you're shipping mimemagic under (MIT) isn't compatible with shared-mime-info's.

Happy for the code that was extracted from discourse to be treated as MIT!
On Sat, 29 Jan 2022 at 7:21 pm, Phil Pirozhkov @.***>
wrote:

users of your gem might have some problem if they don't check the license
is GPLv2
Only if they decide to supply a modified version of turbo_tests as an
integral part of their proprietary software to another party. To my best
knowledge, GPL does not apply any restrictions on using GPL-licensed
software for CI or local development, commercial or otherwise, modified or
not.
The Rails community incident
https://github.com/mimemagicrb/mimemagic/issues/97#issue-839587054 is
the reason why I mention GPL vs MIT above
https://github.com/rspec/rspec-rails/issues/2104#issuecomment-1022567077
:
GPL header removed.
The license that you're shipping mimemagic under (MIT) isn't compatible
with shared-mime-info's.
—
Reply to this email directly, view it on GitHub
https://github.com/rspec/rspec-rails/issues/2104#issuecomment-1024864513,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAABIXNRHDZZYR7UTKL6KHLUYOPQHANCNFSM4HCVUOKQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID:
@.***>

Thanks a lot, @SamSaffron ! ❤
@ilyazub I suppose you can consider this written permission to use parts of GPL-licensed Discourse code in your MIT-licensed turbo_tests.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.

Great discussion, I'm really excited to see people passionate about testing!
Just reading through some of the comments here, it seems like we need a better model for parallel testing. From what I see, I think turbo_test (my hack/implementation) has the right approach by separating out the worker setup into an explicit step, given that https://github.com/serpapi/turbo_tests/issues/18 seems to be exactly the same issue. What we put into that worker setup depends on your app, db setup, and Rails.
Regarding parallelism, I think there are enough issues in Rails test harness that some improvements there would be useful: better handling of TEST_ENV_NUMBER would be an obvious one, along with better db migrations using a proper interface rather than shelling out to rake. RSpec also has a ton of global state which makes it hard to work with (think hacks to reset global state after each worker runs a test), so there is also work to be done here.
To this end, I decided to try implementing a green-field parallel test runner and ended up with https://github.com/ioquatix/sus which I'm now using in a handful of projects. It's designed from the ground up for multi-thread parallelism by ensuring all tests can be run in total isolation (i.e. the semantic model is built from the ground up for isolation). Interestingly enough, I've been toying with an idea to host other test frameworks within sus, i.e. hosting Minitest/RSpec tests within the sus parallel runner.
Maybe rspec-core can follow a similar model to sus but a large amount of rspec would need to be rewritten, essentially the entire output/notification system (it's unsafe/hard to parallelise/global state) and the test statistics capture (currently also seems like global state). @JonRowe correct me if I'm wrong please. Separation between running a set of tests and the test model itself would also be really useful. sus exposes tests as an hierarchy of callable objects and you can execute them any way you want, so this gives a lot of power for different execution models - multi-thread - multi-process - multi-host - etc. Tests have (guaranteed) consistent unique identifiers which you can transit across those boundaries (i.e. hosts) and reload in a target process which ensures that these models all work as expected (doesn't depend on load order etc).
After playing around in this space for a while, I think what we want is this:

A way to load a callable hierarchy of tests with unique identifiers from a specific test framework e.g. sus, minitest, rspec, etc.
A command to execute this callable hierarchy and report failures.

sus unfortunately combines both of these things into a single gem, but it's been on my todo list to explore having a clean separation between these two, and write an adapter for rspec. If we adopt this approach generally, it should be far easier to define a clean model for multi-thread/process/host parallelism that works generally across a wide range of test definitions.

@Unknown-Guy Yes, a one-minute speed-up could be better. How many *_spec.rb files do you have?

@ilyazub there's 277 files there, 4425 examples

Looks like a new tool for rspec parallel testing https://github.com/briandunn/flatware

Looks like a new tool for rspec parallel testing https://github.com/briandunn/flatware

@ryanong Thank you for suggesting it! It uses drb and I love the flatware's code structure and quality.
Unfortunately, it's slower than turbo_tests (and now I'm not sure about re-writing it using drb).
$ time bundle exec flatware rspec -w 8 ./spec/search/google/
real    6m7.343s
user    0m10.354s
sys     0m1.710s

$ time bundle exec turbo_tests ./spec/search/google/
real    4m56.069s
user    23m9.252s
sys     0m11.208s

Tested with Ruby 2.7.2 on 8 core i7-6700HQ CPU @ 2.60GHz.
$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]

There're 196 spec files (2,1K examples) in the directory I've used to compare the speed.
find ./spec/search/google/ -name '*_spec.rb' -type f | wc -l
196

find ./spec/search/google/ -name '*_spec.rb' -type f -print0 | xargs -0 grep -o 'it ' | wc -l
2149

P.S. Maybe it's possible to parallel execution of examples instead of spec files using flatware :thinking: :bulb:

Not very rigorous, but FWIW on my M1 MBP (8-core, 32GB), running a Rails project's 4260 examples across 526 spec files:

tool
times

non-parallel rspec
194.53 real       137.02 user        27.78 sys

parallel_tests
62.50 real       213.39 user        46.99 sys

turbo_test
60.26 real       201.67 user        44.91 sys

flatware
55.53 real       183.73 user        35.53 sys

I ran each a handful of times and reported the best time.

@jdelStrother Just released a new version - would love to address these concerns could you open an issue?

My concern is, that with all the tools one need to execute a different command than bundle exec rspec, this is not very intuitive for new commers to a project that uses rspec. Is there a solution to hidde the parallelization?


bot is not recognized

I was able to flash everything correctly, and I see the hub in mqtt explorer (see image)

This is the value of the config message
{
  "~": "switchbot/esp32_switch_bot_hub/esp32",
  "name": "esp32_switch_bot_hub Linkquality",
  "device": {
    "identifiers": [
      "switchbotesp_esp32_switch_bot_hub_MAC_ADD"
    ],
    "manufacturer": "WonderLabs SwitchBot",
    "model": "ESP32",
    "name": "esp32_switch_bot_hub"
  },
  "avty_t": "switchbot/esp32_switch_bot_hub/lastwill",
  "uniq_id": "switchbotesp_esp32_switch_bot_hub_MAC_ADD_linkquality",
  "stat_t": "~/rssi",
  "icon": "mdi:signal",
  "unit_of_meas": "rssi"
}

But I'm not able to recognize my bot.
Here is an image of the esp32 on both sides + the bot
In case it's hard to read, it says ESP WROOM 32D
This is what I bought from aliexpress - https://www.aliexpress.com/item/1005001636295529.html?spm=a2g0o.order_list.0.0.70001802UZ4iV4

Maybe it's my device that is not supported? or did I use the wrong version? or do I need to send some command to find the bot?
Thanks a lot!

I think someone mentioned using an ESP32 devkit v4 with ESP WROOM 32D but I would have to check through the HA forum chats
did you uncomment the part inside the bot list? the default code looks like this
static std::map<std::string, std::string> allBots = {
  /*{ "switchbotone", "xX:xX:xX:xX:xX:xX" },
    { "switchbottwo", "yY:yY:yY:yY:yY:yY" }*/
};

when you add a bot it should look like this with the inside uncommented
static std::map<std::string, std::string> allBots = {
  { "switchbotone", "xX:xX:xX:xX:xX:xX" }
};

No, I missed this part. I'll try it soon and will update here about it:)

@devWaves Works like a charm now
see the attached video - https://youtu.be/cxfHDoZxu54
Thanks for your help!


TeamCity: enable CC

Fixes gradle/gradle-private#4237
Reviewing cheatsheet
Before merging the PR, comments starting with

❌ ❓must be fixed
🤔 💅 should be fixed
💭 may be fixed
🎉 celebrate happy things

@bot-gradle test RfR

I've triggered the following builds:

Ready for Release (Trigger) (Check)

Build Scan

The following builds have failed:

Ready for Release (Trigger) (Check)

Build Scan

@blindpirate could you look into the failures that happened during RfR?


#19: On click anywhere plays a paused story

Describe your changes
1, onRelease function was being called all the time even if the story was not put on hold. so added a check there such that this function will be called only if the story was on hold.
2, storyState changed to playing when story was out of hold (to change the icon of play and pause button)
Screenshots
Issue ticket number and link
#19
Checklist before requesting a review

[o] I have performed a self-review of my code.

[o] Followed the repository's Contributing Guidelines.

[o] I ran the app and tested it locally to verify that it works as expected.

[o] I have starred the repository.

Hi @meetbhalodi11 ,
I've checked your code, but seems like the problem still persists,
Pause the story using pause button, and click anywhere on the story, you will notice that the story again starts playing.

@Gauravdarkslayer The main issue is resolved however the issue you are mentioning is due that is because of the handleSwipe left/right. let me fix that too

@meetbhalodi11 Yes it can be.
Thank you!

@Gauravdarkslayer
Current Behaviour: when user click on the right side of the story it navigates to the next story and similarly if user click on the left side it navigates to the previous story. Even if the story is paused this things will happen
Question: What is exactly not suppose to happen in this case? Is it that we don't want to play the story when user navigates through the stories when the story is paused?

@meetbhalodi11 , So basically the plan is to disable next and previous buttons (hidden buttons) only on desktop view.
And for user convenience we'll add arrow button navigation on desktop view, also those arrow buttons will be hidden in mobile view.
So as you've noticed that play/pause button is not visible in mobile view, but user is still able to pause the story using long mouse tap, so i'll open a new issue mentioning what to enable in mobile view and what to disable in desktop view.
By the way this behaviour is visible in instagram stories as well. on desktop view they are enabling arrow button navigation.
If you want to discuss more, then here's my discord id, let's catch up there gauravdarkslayer .


Clear fast boot rendered head on browser boot

Split initializers into fastboot & browser flavors.
Use placeholder meta tags for marking extent of head.hbs content.

@tomdale @rwjblue comments welcome.

This requires a shared package to ensure that fastboot version doesn't run when it ember-cli-fastboot is not present (since this addon still supports that world).
@tomdale this is he scenario that I was explaining on the fastboot/browser initializer stripping PR.

See https://github.com/tildeio/ember-cli-fastboot/pull/110#issuecomment-184680878 for details on filtering the initializers.

Is this good to go?

@tomdale haven't tested out the filter module as much as I plan to yet, but I should be able to cut a new release of this addon today.

@tomdale just published as 0.0.4

You're the hero Gotham needs.


A few enhancements to istio-proxy-cfg.py

Made a few enhancements:

pilot_url doesn't have to be provided, but can be found out from the cluster
cache_stats can be queried. This is useful to find out who are talking to pilot for xds
podname can be a prefix of a pod's name
clarify the help strings.

Although I think podname as name.namespace.ip or name.namespace is not necessary, I kept them in.

@baodongli: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-smoke.sh
2d8ad7b2c93c82055499c9ef194a15a9ea264d2b
link
/test e2e-smoke

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@baodongli: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-smoke.sh
2d8ad7b2c93c82055499c9ef194a15a9ea264d2b
link
/test e2e-smoke

prow/istio-pilot-e2e.sh
2d8ad7b2c93c82055499c9ef194a15a9ea264d2b
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test circleci

@baodongli: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
d3c90e86bb9f180bc21ed27a84e660b0ee5dba01
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test istio-pilot-e2e

@mandarjog updated per comments. let me know any further comments. thanks

Running it directly gets me this error
mjog-macbookpro:tmp mjog$ ./istio-proxy-cfg.py -h
usage: istio-proxy-cfg.py [-h] [--pilot_url PILOT_URL] [--output OUTPUT]
                          [--cache_stats] [--clear_cache_stats]
                          podname

Fetch routes from Envoy or Pilot for a given pod

positional arguments:
  podname               podname must be either name.namespace.podip or
                        name.namespace or any string that is a pod's label or
                        a prefix of a pod's name. ingress, mixer, istio-ca,
                        product-page all work

optional arguments:
  -h, --help            show this help message and exit
  --pilot_url PILOT_URL
                        Often this is localhost:8080 or 15003 through a port-
                        forward. kubectl --namespace=istio-system port-forward
                        $(kubectl --namespace=istio-system get -l istio=pilot
                        pod -o=jsonpath='{.items[0].metadata.name}')
                        8080:8080. If not provided, attempt will be made to
                        find it out.
  --output OUTPUT       A directory where output files are saved. default is
                        the current directory
  --cache_stats         Fetch Pilot cache stats
  --clear_cache_stats   Clear Pilot cache stats
mjog-macbookpro:tmp mjog$ ./istio-proxy-cfg.py ingress
It seems that you are running outside the k8s cluster
Let's try to create a port-forward to access pilot
Enter local port number (default 8080, ctrl-C to abort): 8080
local port is 8080
Forwarding from <IP_ADDRESS>:8080 -> 8080
Handling connection for 8080
Fetching from Pilot for pod istio-ingress-784f979b9b-jpdzv in istio-system namespace
http://localhost:8080/v1/listeners/istio-proxy/ingress~<IP_ADDRESS>~istio-ingress-784f979b9b-jpdzv.istio-system~istio-system.svc.cluster.local
Handling connection for 8080
http://localhost:8080/v1/routes/80/istio-proxy/ingress~<IP_ADDRESS>~istio-ingress-784f979b9b-jpdzv.istio-system~istio-system.svc.cluster.local
Handling connection for 8080
http://localhost:8080/v1/clusters/istio-proxy/ingress~<IP_ADDRESS>~istio-ingress-784f979b9b-jpdzv.istio-system~istio-system.svc.cluster.local
Handling connection for 8080
http://localhost:8080/v1/registration/grafana.istio-system.svc.cluster.local|http
Handling connection for 8080
http://localhost:8080/v1/registration/istio-pilot.istio-system.svc.cluster.local|http-discovery
Handling connection for 8080
http://localhost:8080/v1/registration/httpbin.default.svc.cluster.local|http
Handling connection for 8080
http://localhost:8080/v1/registration/echosrv2.istio.svc.cluster.local|http-echo
Handling connection for 8080
http://localhost:8080/v1/registration/prometheus.istio-system.svc.cluster.local|http-prometheus
Handling connection for 8080
http://localhost:8080/v1/registration/echosrv1.istio.svc.cluster.local|http-echo
Handling connection for 8080
http://localhost:8080/v1/registration/productpage.default.svc.cluster.local|http
Handling connection for 8080
Wrote  ./istio-ingress-784f979b9b-jpdzv/pilot_xds.json
Fetching from Envoy for pod istio-ingress-784f979b9b-jpdzv in istio-system namespace
kubectl -n istio-system exec -i -t istio-ingress-784f979b9b-jpdzv -c istio-ingress -- curl http://localhost:15000/routes
command terminated with exit code 126
Traceback (most recent call last):
  File "./istio-proxy-cfg.py", line 376, in <module>
    sys.exit(main(args))
  File "./istio-proxy-cfg.py", line 324, in main
    data = pr.routes()
  File "./istio-proxy-cfg.py", line 173, in routes
    return self.query("/routes")
  File "./istio-proxy-cfg.py", line 163, in query
    s = subprocess.check_output(cmd.split())
  File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 219, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['kubectl', '-n', 'istio-system', 'exec', '-i', '-t', 'istio-ingress-784f979b9b-jpdzv', '-c', 'istio-ingress', '--', 'curl', 'http://localhost:15000/routes']' returned non-zero exit status 126

Would be good to replace this
Let's try to create a port-forward to access pilot
Enter local port number (default 8080, ctrl-C to abort): 8080

with "using ${some random local port} for forwarding to pilot"   And make it non interactive.

About the curl error, I realized that port-forward can be used and curl can be invoked from the host rather than from inside the container. I'll restructure the code a bit so that both sidecar query and pilot query can use the same code. For local port, I'll use a random port from the range 50000 - 60000, and get rid of the read from user.
Let's use another PR for the mtls.

@baodongli: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
e4fd766b721fcb9ab6d1f5f6366766bfe34ae764
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

@baodongli: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
e4fd766b721fcb9ab6d1f5f6366766bfe34ae764
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

@baodongli: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
e4fd766b721fcb9ab6d1f5f6366766bfe34ae764
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


TUAB data version 3.0.0

excepted file format is not matching with the current version of tuab 3

Hi @Farzaneh-Taleb,
Thank you for your let us know. Can you describe it a little more? I couldn't find the version 3.0 in this website: https://isip.piconepress.com/projects/tuh_eeg/html/downloads.shtml#w_2022

I received an email from<EMAIL_ADDRESS>in October 2022 as follow:
"We are preparing new releases of the TUH EEG data and resources, and
would like to obsolete the older versions since we can no longer support
those. The newer versions contain improved annotations, simpler file
formats (e.g., csv) and a few other corrections that users have pointed
out over the past few years. These new versions will be available online
shortly. We will announce them through our listserv.""
I recently accessed the new version of the data. When I downloaded it, it was annotated with v3.0.0.

For example I needed to change this method as follow to get it to work: def parse_description_from_file_path(file_path):
# stackoverflow.com/questions/3167154/how-to-split-a-dos-path-into-its-components-in-python  # noqa
file_path = os.path.normpath(file_path)
tokens = file_path.split(os.sep)
# expect file paths as tuh_eeg/version/file_type/reference/data_split/
#                          subject/recording session/file
# e.g.                 tuh_eeg/v1.1.0/edf/01_tcp_ar/027/00002729/
#                          s001_2006_04_12/00002729_s001.edf
version = tokens[-6]
# year, month, day = tokens[-2].split('')[1:]
subject_id = tokens[-1].split('')[-3]
session = tokens[-1].split('')[-2][1:]
segment = tokens[-1].split('_')[-1].split('.')[0][1:]
return {
'path': file_path,
'version': version,
# 'year': int(year),
# 'month': int(month),
# 'day': int(day),
'subject': subject_id,
'session': int(session[1:]),
'segment': int(segment[1:]),
}

Okay, I think I understand!
Correct me if I didn't catch any. There was a change in the files in the new version of the dataset, and the parse function is not working anymore. A small adaptation in the current code would be enough to choose which parser to use. Something like if version 3 doesn't parser the year, month and day.
Could you do this PR? Your work can help the open-source community =) I can help you with the review.
Did you find any other @Farzaneh-Taleb issues about the dataset?

Yes, I think that should be enough! Sure! I would be happy! I will let you know if I find anything else!


Want to add a good Python Machine learning E-book

I know a really good book that beginners can refer to learn machine learning with python. Please assign me this issue so that I shall add it.

I have an amazing beginner-friendly list of books since I am also learning right now, so please assign me this issue.

I have an amazing machine learning E-book for someone who is starting their journey in ML . Please assign this issue to me.

If you identified a resource worth an addition to this compilation, do not rise
a blank issue.  Instead, either
a) if submitting an issue, include a link to the specific material. Or
b) file a pull request.  On the project's landing page you find a section «How
To Contribute»  with a link to a separate page; there, you find all the details
about the agreed format to prepare a PR.  In case your interest is ML, you
possibly acquired enough experience with git to use this option.

@Shobhit1201 @nidhi-2619 Please feel free to raise a PR with the resource. No need to have an issue for it.


mgrs grid extension

Sentinel data uses the MGRS grid, as does HLS, likely others. Derived products from these are likely to use the MGRS grid as well.
Created repo https://github.com/stac-extensions/mgrs and will fill it in.  Three fields:
mgrs:utm_zone
mgrs:latitude_band
mgrs:grid_square

Two other things:

This can also be used to assign data to an MGRS grid based on the closest centroid, the data doesn't have to be a full tile in the grid. This way you can make a browsable catalog based on location first, then by time.

in the polar regions, mgrs:utm_zone is omitted, mgrs:latitude_band is A, B, X, or Z instead, and there is still a grid_square, just a reduced set of letters are used.

https://en.wikipedia.org/wiki/Military_Grid_Reference_System#Polar_regions

Proposed extension up and ready for review: https://github.com/stac-extensions/mgrs

What do you think about having some kind of generic grid field?
In ODC we have odc:grid_code, which fits things like the MGRS code or Landsat's pathrow.
It would be awesome if there was one agreed name for a consistent footprint across STAC.

@alexgleith Creating that here: https://github.com/stac-extensions/grid (might still be private)

Seems solved with two new extensions, great :-)


Allow to create a ZetaChain native ZRC20 that can be used on any chain

Is your feature request related to a problem? Please describe.
Currently ZRC20 represents an existing asset (native token or ERC20) from an external chains. The asset is whitelisted and can be deposited/withdrawed from/to the same connected chain.
This idea is about allow minted "ZetaChain Native" ZRC20. The ZRC20 is minted on ZetaChain and can be withdrawn to any connected EVM chains (eventually on non-EVM chains that support fungible token)
Describe the solution you'd like
Creation
Best way to create a new ZRC20 would be to do it directly at the EVM level. This would requires at least precompiled: https://github.com/zeta-chain/node/issues/2403
A stateful precompiled allows to create a new ZRC20. It would interact with the fungible module to create the new asset in the ZetaChain store.
Condition for creation TBD.

Totally permissionless (might involve risk if we interact with the store)
Can require approval from group/gov prop
Other condition: locking/staking a portion of ZETA tokens to mint a new ZRC20 -> hence adding zeta-utility flag

TBD:

Reusing the ForeignCoin object (might want to rename it)
Create a new object to represent these assets, this might make more sense sense we wil have to store somewhere the value locked to be minted on any connected chain.

External chain
ERC20Custody is used to store reserve of existing ERC20Custody.
This feature would require a new contract (asset handler) to address minting/burning the tokens.
We can call it ZRC20Connector, this allows to keep consistency with the ZetaConnector contract, implying connector contract are used to connect with ZetaChain native tokens.
Protocol
The ZetaClient will have to sign transaction into the ZRC20Connector above to handle outbounds.

Consideration migrate to an existing ERC20 to a ZRC20 directly on ZetaChain


xCode Cloud Support for CI/CD

I'm looking at xCode Cloud to create iOS builds of our app each time a check-in occurs to our main branch for CI/CD purposes. However I have an error stating that it requires the following files to be checked into GIT.

awsconfiguration.json
amplify/.config/local-env-info.json
amplifyconfiguration.json

However, we are a multi developer team and do this would likely cause all kinds of issues as we merge pull requests etc. Any experience or suggestions? We'd really like our iOS app to auto build with CI/CD after we do a push to our branch.

If you wish to avoid pushing these files, one thing you could do is to have them stored somewhere and pull them during the pre-build.
For example, you could have the files stored in private s3 buckets and download them to your app's directory.
Or store their contents in Secret Environment Vars, and run a script to create the files from them.


feat(GRO-591): featured galleries/institutions carousel

Closes GRO-591
https://user-images.githubusercontent.com/112297/139688407-9dd8acce-822b-43d9-b600-6106ec0485d4.mov
This PR extracts the carousel we use on the homepage and then utilizes it for the featured galleries/institutions.

❇


syntax=zsh colorizes incorrectly

Following code isn't highlighted correctly, when opened from test.zsh file:
#!/bin/zsh
call ZUI[my_select_data] 'ZUI[my_host_data]='
if (( 1 )); then
    :
fi

It looks like following: Asciinema, Imgur – the if (( ... is higlighted as if it was inside a string.

please create issues in the official vim-zsh-runtime files repository


feat: Add support for playing audio files and ensure only one audio plays at a time

This feature enhances the asset showcase by introducing support for playing audio files (MP3 and WAV formats). Users can now interact with audio assets directly within the showcase interface, enabling them to preview audio content conveniently. Furthermore, this implementation ensures that only one audio file plays at a time, enhancing usability and preventing overlapping audio playback. With this addition, the asset showcase becomes more dynamic and interactive, offering a comprehensive experience for users exploring audio assets.

Great one @arv-aks! I was expecting this PR from the community. Will do a test run and merge soon.

Great one @arv-aks! I was expecting this PR from the community. Will do a test run and merge soon.

Thank you! I'm glad I could contribute. Please let me know if there are any issues or further changes needed.

Hi @arv-aks, can you make the audio element's title (file name) align with other titles? Currently it appears asymmetrical.

Also, hovering over the controls results in some overflow. Not sure if that is fixable, or if we can just bear with less controls.

Hi @chtgupta, Thanks for the feedback and addressing the alignment issue with the audio element's title! Regarding your second point about the overflow issue when hovering over the controls, I've looked into it. It seems that the overflow you're observing is related to the volume control of the audio element. Unfortunately, there isn't a straightforward way to hide or modify this control directly through HTML and CSS alone.
Alignment issue is fixed and ready to merge


Support for multiple materials

I an trying to export a mesh that has multiple materials but just the first one is being exported. Is this unsupported for now or am I doing something wrong.
The model was working fine when I had all the mesh split in submeshes each one with each own material.

This is happening to me too

On the meantime I used this tool:
https://gist.github.com/mstevenson/4145716
To split a mesh per materials in Maya. That made GLTF go with it for the time being

So I actually just updated to the latest commit of UnityGLTF and while there were a couple other bugs for me it did support exporting a mesh with multiple materials. So you may try updating if you haven't.


Ensure any old openjdk build directory is removed before building

The openjdk build output directory may exist from a previous build if it was aborted or purposely kept.
It must always be deleted prior to a new build.

run tests

Wondered if this should be done in temurin-build?

Wondered if this should be done in temurin-build?

So no, because a user may have specified a user openjdk build folder that maybe by accident is some location they don't want to delete like /home !

run tests

If cleanWorkspace=true context.WORKSPACE will be cleaned up include openjdk_build_dir(under WORKSPACE). Otherwise openjdk_build_dir will not be cleaned up.
This pr will cleanup openjdk_build_dir(under WORKSPACE) even if  cleanWorkspace=false. However any other files or directory under the WORKSPACE will not be cleaned up if  cleanWorkspace=false.
Just curious any reason we don't do the cleanWorkspace by default CLEAN_WORKSPACE": false?

If cleanWorkspace=true context.WORKSPACE will be cleaned up include openjdk_build_dir(under WORKSPACE). Otherwise openjdk_build_dir will not be cleaned up.
This pr will cleanup openjdk_build_dir(under WORKSPACE) even if cleanWorkspace=false. However any other files or directory under the WORKSPACE will not be cleaned up if cleanWorkspace=false.
Just curious any reason we don't do the cleanWorkspace by default CLEAN_WORKSPACE": false?

We have always not cleaned the WORKSPACE before a build by default for nightly/weekly builds, the reason is to save time in having to re-clone the openjdk src repository(~2Gb) each time.
Release builds do clean WORKSPACE before a build.


fix data race.

Could you show more details where has the race problem?

See this log https://s3.amazonaws.com/archive.travis-ci.org/jobs/158374705/log.txt
leaderConn may be accessed by two goroutines, the one running the connection may write to leaderConn, the another closing the connection may read leaderConn.
So I create a leaderProxy which only lives inside run(), no other goroutines may access it.

LGTM

LGTM


APP-1412 Add health check for POD Authentication Service

Fix application URL

Codecov Report

Merging #128 into dev will increase coverage by 0.07%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##              dev     #128      +/-   ##
==========================================
+ Coverage   88.09%   88.17%   +0.07%
==========================================
  Files         133      133
  Lines        2385     2384       -1
  Branches      276      276
==========================================
+ Hits         2101     2102       +1
+ Misses        169      168       -1
+ Partials      115      114       -1

Impacted Files
Coverage Δ

...egration/healthcheck/IntegrationHealthManager.java
90.9% <100%> (-0.09%)
:arrow_down:

.../integration/model/yaml/IntegrationProperties.java
98.05% <0%> (+1.94%)
: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 0fdfb81...281c623. Read the comment docs.


Example GCP, where is the secret name referenced?

https://github.com/jetstack/kube-lego/blob/6b5cb1375c44d7a98feea9eef96b8dda4a8fd65d/examples/gce/echoserver/ingress-tls.yaml#L13
How is the 'secret' referenced on the certificate generation side of things? Can I change this value or is it hardcoded?

Thank you!


Removed unused optimisation

Description
Please include a summary of the change and which is fixed.

Removed extra optimization in code which never used due dictionary is biggest than value
Reduce data for benchmark performance
Removed files for errors suppression
update README
update api_validation_test pytest mark
version up to 1.5.7

How has this been tested?
Please describe the tests that you ran to verify your changes.

[x] UnitTest
[x] Benchmark

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

Comparison is base (8323b51) 90.76% compared to head (e096c51) 90.87%.
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #430      +/-   ##
==========================================
+ Coverage   90.76%   90.87%   +0.10%
==========================================
  Files         125      125
  Lines        4180     4174       -6
  Branches      662      658       -4
==========================================
- Hits         3794     3793       -1
+ Misses        252      249       -3
+ Partials      134      132       -2

Files
Coverage Δ

credsweeper/__init__.py
100.00% <100.00%> (ø)

credsweeper/filters/value_split_keyword_check.py
100.00% <100.00%> (+25.00%)
:arrow_up:

... and 1 file with indirect coverage changes

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


Generic Provider Family

Is your feature request related to a problem? Please describe.
I'm trying to build a generic controller to handle forms. I have a generic state for the form, and used to build the controller, but the generator does not let me build it. I think that's because family it's not supported.
I have some code to explain the problem i'm trying to achieve:
@riverpod
class FormController<T> extends _$FormController {
  late FormGroup _form;
  late StreamSubscription<ControlStatus> _statusSubscription;

  @override
  CustomFormState<T> build({
    required FormGroup formGroup,
    required T Function(FormGroup form) buildValidState,
  }) {
    _form = formGroup;
    _statusSubscription = _form.statusChanged.listen(
      (status) {
        if (status == ControlStatus.valid) {
          state = CustomFormStateValid<T>(
            value: buildValidState(_form),
          );
        } else {
          state = CustomFormStateInvalid<T>();
        }
      },
    );

    ref.onDispose(() {
      _statusSubscription.cancel();
    });
    return CustomFormStateInvalid<T>();
  }

  FormGroup getForm() => _form;

  void resetForm() {
    _form.reset();
  }

  void enableForm() {
    _form.markAsEnabled();
  }

  void disableForm() {
    _form.markAsDisabled();
  }
}

This is the generic state:
sealed class CustomFormState<S> {
  const CustomFormState();
}

final class CustomFormStateValid<S> extends CustomFormState<S> {
  const CustomFormStateValid({required this.value});
  final S value;
}

final class CustomFormStateInvalid<S> extends CustomFormState<S> {
  const CustomFormStateInvalid();
}

I don't know if i'm doing something wrong or if the library does not support these kind of implementation.

This is part of Riverpod 3 and is already implemented. It'll be available soon enough


Switch to official 600.0.0 tag for swift-syntax

Switch to the official 600.0.0 tag for swift-syntax, which was recently created.
Checklist:

[x] Code and documentation should follow the style of the Style Guide.
[x] If public symbols are renamed or modified, DocC references should be updated.

@swift-ci please test

Please create a PR to cherry-pick to release/6.0.1 if appropriate.

For 6.0.1: https://github.com/swiftlang/swift-testing/pull/708


Remove unnecessary exceptions for wgpu

why do you think they are unnecessary?

Should've clarified :sweat_smile: : they'll soon be unnecessary, as https://github.com/gfx-rs/wgpu/pull/1516 will remove the need for it.

Wgpu 0.9 has dropped with the new license!

Could you also do the update to wgpu 0.9 in this PR? It would be best to remove exceptions and update in the same PR otherwise CI will be broken between the two

to be done after #2371

They just responded.

@TheRawMeatball could you resolve the conflicts ?

bors r+


Regression when using a customised template

Disclaimer: I apologise for the quality or lack there of in this report.
Describe the bug
Today I installed this using npm i @olavoparno/jest-badges-readme and set it up using the very good instructions on your medium post.
I then tried to set up a custom template and every time I changed it from the expected templated from
| Statements | Branches | Functions | Lines | Build Status |
| -----------|----------|-----------|-------| ------------ |
| ![Statements](#statements# "Make me better!") | ![Branches](#branches# "Make me better!") | ![Functions](#functions# "Make me better!") | ![Lines](#lines# "Make me better!") | ![BuildStatus](#buildstatus# "Building Status") |

to
#lines#

It inserts the links for the other measurements even though the #replace# string isnt there/
I had a quick look in the code of 1.5.1 that was installed on my machine
 o.reportKeys.forEach(function (t) {
            var n = o.getBadge(i, t.key);
            if (n.length) {
              var a = t.value,
                u = s.indexOf(a),
                g = s.slice(u + a.length + 1),
                c = g.indexOf(")"),
                d = g.substring(0, c),
                f = n + ' "Make me better!"',
                m = d.localeCompare(f);
              (s = s.replace(d, f)),
                0 !== m &&
                  (console.log("Badge for " + t.key + " updated with: " + n),
                  (l = 1)),
                (r = !0),
                e.writeFileSync("./README.md", s, "utf8");
            } else r = !1;

I had been looking at a fork as well to see if anyone had implemented the behaviour I was looking for - I was on a fork that hadn't actually diverged but was on 1.3.6 and the code looked like it should do what I expected. I reverted to 1.3.6 and my custom template is working as expected same with 1.4.1.
There might have been a regression introduce with the new no template needed feature.
Apologies for the lack of details here - I was short on time and thought I would quickly report it.

Thanks for the report. I'll look into it as soon as I can.

@startswithaj thank you again for the report and I somehow sadly announce that this repo has been archived in favor of this one:
https://github.com/olavoparno/istanbul-badges-readme
The usage has not changed at all, one must still copy the desired coverage report markup into their README.md file.
It is also done by me and unfortunately I have not been having enough time to write it, but it is simpler than this one and hopefully, without the bug you have mentioned.
Please do try this one and thanks again.


The site does not work correctly over HTTPS

You have mixed HTTP and HTTPS content, so on my Firefox browser it does not load CSS.
You should check all URLs to resources and make sure they are HTTPS and not HTTP.

Hi Mitar,
Thank you for posting this issue tracker. I can confirm that CSS will not display correctly if the website is viewed using https. The reason is because all the js, css files are linked directly from another website (not from the local web assets). Also, we don't force ssl to be true in the application config so they may not work correctly.


Skia Sharp Mobile Blazor Bindings

This is the new home for the issue 1455 in the Skia Sharp repo. After some discussion over there it sounds like it fits best here for now.
I'm working on a wrapping project to use SkiaSharp in Mobile Blazor Binding.
I'm thinking it's best to build it in the SkiaSharp namespace, even though it lives here to make it feel similar to using SkiaSharp on other platforms. Unless someone objects? It's not a big deal to change it if I get it wrong.
The scope of this issue will be limited to using SkiaSharp in Mobile Blazor Bindings Native. Hybrib app Skia will also be interesting but we'll leave that for another day.
Using the SKCanvas will look like this:
<ContentPage>
    <StackLayout>
        <SKCanvasView InvalidateSurface="@PaintSurface"></SKCanvasView>
    </StackLayout>
</ContentPage>

@code
{

    void PaintSurface (object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e)
    {
        var surface = e.Surface;
        var canvas = surface.Canvas;
        canvas.Clear(SkiaSharp.SKColor.Parse("#CC0000"));
    }
}

I dig it!
As far as namespace goes, I suggest that the namespace match the "environment" (i.e. the GitHub repo) that contains the code. For example, the Pancake view sample wrapper is in the Microsoft.MobileBlazorBindings.* assembly/namespace.
I think this is important because when it comes to NuGet packages (which this obviously will be), the Microsoft.MobileBlazorBindings.* package namespace is reserved on NuGet.org for MBB only, meaning that no one else can "squat" any names. I think it also makes it clearer at a glance as to who "owns" the code. Is this Microsoft Mobile Blazor Binding's wrapper for SkiaSharp? Or is it SkiaSharp's integration with Mobile Blazor Bindings? The code might be essentially the same, but it's subtly different in terms of how someone looking at it for the first time might see it.
Thoughts?

I am just thinking that maybe this will change in the future? For example, it might be an autogenerated way to do this whole connection. What are the chances that the IDE/tooling might have a task that would scan all referenced assemblies and "generate" the wrappers for MBB? This might also be great for all users for all libraries. Then, the actual control might not exist in this source.
Am I making sense?
Basically, I see some of this code is already generated, so could this move into a MSBuild target and run on the build? If I want to use library X with view Y, then it will be generated once-off in the obj folder and then I can use it from there? Since I have already been working with my hands in MSBuild tasks for years now, I could help out with this. A seamless integration of "any" XF library - at least for the native bindings part. Not sure about the hybrid atm.

@mattleibow that would be super nice - it's an area I'm looking into as well. But I don't know if/when that will land.

Awesome! Let me know if you want to chat. Do we have a specific issue for this?

Yup #151 !

@Eilon @lachlanwgordon This is the XAML syntax with MBB, will this also work with the razor syntax?  By that I mean, the UI is run in the thin browser shim using MBB but SkiaSharp works as expected on the device like you have here?

The snippet above is Razor Syntax(not xaml), but it uses the Xamarin Forms controls to make a native mobile/desktop App with skia sharp in it.
If you're wanting to use SkiaSharp in a Blazor web site, that's a different issue which Mobile Blazor Bindings can't help you with.
SkiaSharp in Blazor Web is being discussed here https://github.com/mono/SkiaSharp/issues/1194, it looks like you're already involved over there.
If you want more info on how to use this feature feature in a Mobile Blazor Bindings app, the docs are here. https://github.com/MicrosoftDocs/mobile-blazor-bindings/blob/master/mobile-blazor-bindings/walkthroughs/skiasharp.md
They're not published to the microsoft docs site yet because this is part of Preview 5 which hasn't been released yet, but you can read the docs on github and use the Nightly Builds now.

Thank you @lachlanwgordon for answering!
@RChrisCoble if you have another scenario in mind please let us know!

The snippet above is Razor Syntax(not xaml), but it uses the Xamarin Forms controls to make a native mobile/desktop App with skia sharp in it.
If you're wanting to use SkiaSharp in a Blazor web site, that's a different issue which Mobile Blazor Bindings can't help you with.
SkiaSharp in Blazor Web is being discussed here mono/SkiaSharp#1194, it looks like you're already involved over there.
If you want more info on how to use this feature feature in a Mobile Blazor Bindings app, the docs are here. https://github.com/MicrosoftDocs/mobile-blazor-bindings/blob/master/mobile-blazor-bindings/walkthroughs/skiasharp.md
They're not published to the microsoft docs site yet because this is part of Preview 5 which hasn't been released yet, but you can read the docs on github and use the Nightly Builds now.

@lachlanwgordon Thanks for the correction.  I've spoken at length with @mattleibow who owns the SkiaSharp repo and to get SkiaSharp going on WASM he needs the upcoming .Net 6 AOT feature support which hopefully will drop in preview releases sometime in Q1/Q2 so he can get started.  AOT appears to be the top requested feature in the .Net 6 roadmap.
I'm assuming this means for code to draw with SkiaSharp in the browser client the code itself also has to be compiled/linked to a .wasm target directly (like Uno is doing), making it specific to the web context.  For the same code to execute on multiple devices (not web) with SkiaSharp, what you've done appears to be the path forward.
Keep up the great work!  👍


Irritating "time stamp"

It's not really a time stamp but I didn't know how to proper describe it.
What I experienced:
I had a look at an old blog post of mine which I did in 09/2014. I read a comment and I saw on top of it "3 years ago" and I felt irritated as it's 10/2016 so there could be no comment from three years ago as this would mean 10/2013 when this blog post didn't exist yet.
So it seems like a comment thats 2 years and 1 month old is interpreted as "three years ago" which is totally wrong. It should switch to three years ago after 3 years, 2 years and 1 month should remain "two years ago".
In case you need an example: https://blog.mdosch.de/2014/09/11/die-fish-shell/

True, I have same issue with some of my posts. I'll work out a fix.

@philipcmonk that seems like it should do it. Care to send a PR?

Sure:  #335


Implement basic grammar

@liam-mills Could you please list a detailed reasoning of why this change is needed? This is quite a significant shift in the direction this project was looking to go in. We need to have a larger conversation about the future of this repository if we are to merge this pull request. Marked as on hold.

No.


Backporting PR #2069 to bump_18.09

Signed-off-by: fanjiyun<EMAIL_ADDRESS>This is a backport of PR #2069
git cherry-pick db50782482a148e9a06e46a236a37e5f6e560e8a Merged cleanly
CC: @arkodg @joeabbey

can you use the -x option for your cherry-pick (so that there's a reference to the original commit)?

PTAL @euanh


Strange behavior - Image goes after text

Hi!
It is not a bug.
But for me it is a logical bug.
Text

Title
Text / Description
Image
Link

It is very not typical that image goes after text.

Feature request add support HTML in text fields like text, description, etc.

Hi @Onore !
First of all, thank you for your feedback.
Indeed, it would be better that the text/description goes after the image. So expect to see this in the next release!
Concerning HTML support in text fields, I think giving too much control could lead to bad rendering. I may have to rethink that part, or see what could be possible to do to allow rich texts.

I close the issue as the strange behavior mentioned is corrected in the 2.4.0 version.
I take the point about the HTML support. I let you open another issue if you want to discuss this feature!


Drop support for iOS 8

This alleviates warnings seen in iOS 14 targeted builds.

Fix #84.

Friendly nudge @devxoul.
I'd love to see this merged in order to fix #84.


PROD-307/create-dynamic-image

https://github.com/user-attachments/assets/3d48a42e-1ab2-4c6e-92bb-bfb2bcf79290

will review after image is made into horitzontal


functional-tester: compact request failed from 'ErrTooManyRequests'

2016-12-16 06:34:16.546972 I | etcd-tester: [round#1494] compacting storage (current revision 515734331, compact revision 515724331)
2016-12-16 06:34:16.547395 I | etcd-tester: [compact kv #0] starting (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.004279 I | etcd-tester: [compact kv #0] done (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.005862 I | etcd-tester: [compact kv #1] starting (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.025915 I | etcd-tester: [compact kv #1] already compacted (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.025948 I | etcd-tester: [compact kv #1] done (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.028400 I | etcd-tester: [compact kv #2] starting (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.029582 W | etcd-tester: [compact kv #2] error rpc error: code = 2 desc = etcdserver: too many requests (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.030646 I | etcd-tester: [compact kv #3] starting (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.043883 I | etcd-tester: [compact kv #3] already compacted (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.043905 I | etcd-tester: [compact kv #3] done (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.045149 I | etcd-tester: [compact kv #4] starting (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.062523 I | etcd-tester: [compact kv #4] already compacted (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.062557 I | etcd-tester: [compact kv #4] done (endpoint http://<IP_ADDRESS>:2379)
2016-12-16 06:34:40.062574 W | etcd-tester: [round#1494] functional-tester compact got error (rpc error: code = 2 desc = etcdserver: too many requests)
2016-12-16 06:34:40.062592 I | etcd-tester: [round#1494] canceling the stressers...

@fanminshi @xiang90 @heyitsanthony even if we cancel stressers before compact, if the server applier falls behind, we get this error. Maybe make this hard-coded maxGapBetweenApplyAndCommitIndex configurable?
I am getting ErrTooManyRequests errors in benchmark as well.

I suspect this kinda of error will show up under heavy usage. Future user might encounter this if they are a heavy user. Not sure what's the best solution. we can increase the maxGap, but we can still see the ErrTooManyRequests if the limit is met with even heavy workload. I wonder should we retry on this error in hoping the server catches up in a short time but fail if server keeps lagging behind. Not sure the best way to get around this issue.

@xiang90 @heyitsanthony Any objection to make this configurable? We need this to be more flexible for benchmarks (39 ~ 40K throughput writes). I have my own branch for benchmarks with maxGapBetweenApplyAndCommitIndex bumped up to 30000, where etcd is capable to process all 2-million requests.

No. It should not be configurable. No one knows how to configure it. We need to figure out why exactly 5000 is not enough.

@xiang90 Ok understand. Let me investigate more where it gets behind to trigger this errors. Thanks.

Correction: This doesn't happen in normal benchmarks.
v3.1.0 release binaries, with benchmark go1.7.4
$ benchmark --endpoints=<IP_ADDRESS>:2379,<IP_ADDRESS>:2379,<IP_ADDRESS>:2379 --conns=100 --clients=1000 put --key-size=8 --val-size=256 --total=100000
 100000 / 100000 Boooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00%1s

Summary:
  Total:	1.8648 secs.
  Slowest:	0.0442 secs.
  Fastest:	0.0037 secs.
  Average:	0.0177 secs.
  Stddev:	0.0057 secs.
  Requests/sec:	53625.9340

Response time histogram:
  0.0037 [1]	|
  0.0077 [672]	|
  0.0118 [15258]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.0158 [23787]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.0199 [29816]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.0239 [17119]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.0280 [8017]	|∎∎∎∎∎∎∎∎∎∎
  0.0320 [3126]	|∎∎∎∎
  0.0361 [1730]	|∎∎
  0.0401 [445]	|
  0.0442 [29]	|

Latency distribution:
  10% in 0.0107 secs.
  25% in 0.0136 secs.
  50% in 0.0171 secs.
  75% in 0.0209 secs.
  90% in 0.0252 secs.
  95% in 0.0283 secs.
  99% in 0.0339 secs.
  99.9% in 0.0382 secs.
$ benchmark --endpoints=<IP_ADDRESS>:2379,<IP_ADDRESS>:2379,<IP_ADDRESS>:2379 --conns=100 --clients=1000 put --key-size=8 --val-size=256 --total=1000000
 1000000 / 1000000 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00%22s

Summary:
  Total:	22.0249 secs.
  Slowest:	1.0136 secs.
  Fastest:	0.0033 secs.
  Average:	0.0208 secs.
  Stddev:	0.0230 secs.
  Requests/sec:	45403.2277

Response time histogram:
  0.0033 [1]	|
  0.1043 [997130]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.2053 [374]	|
  0.3064 [432]	|
  0.4074 [836]	|
  0.5084 [236]	|
  0.6095 [658]	|
  0.7105 [303]	|
  0.8115 [11]	|
  0.9126 [12]	|
  1.0136 [7]	|

Latency distribution:
  10% in 0.0129 secs.
  25% in 0.0152 secs.
  50% in 0.0186 secs.
  75% in 0.0232 secs.
  90% in 0.0280 secs.
  95% in 0.0312 secs.
  99% in 0.0377 secs.
  99.9% in 0.5007 secs.

Will investigate more if that happens again.


Noise scheduler bug

Hi there, thank you for your implementation of PixArt-Alpha on ComfyUI. It's a big step.
I found a little bug in the code causing poor image generation.
We may fixed it together.
Specifically, Line 41: betas = torch.tensor(gd.get_named_beta_schedule(noise_schedule, steps))  needs to be changed to:
betas = torch.tensor(gd.get_named_beta_schedule(noise_schedule, 1000)) in the most simple way.

Good catch, thanks!
Seems like you're right and that argument should be left as the default of 1000.
That reference sampler code was meant to be a stopgap until I got the model to work with the default KSampler, but I never figured out why it performed so poorly with it. Tried messing with the SamplerCustom node but couldn't get it to match the reference code no matter how much I messed with it...


Problems on windows with dashboard

The following error is shown when trying to access http://localhost:3000/vanity
Template is missing
Missing template c:/Ruby192/lib/ruby/gems/1.9.1/gems/vanity-1.7.1/lib/vanity/templates/_report with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml, :haml], :formats=>[:html], :locale=>[:en, :en]} in view paths "c:/Users/epetre/Burndown-Charts/app/views", "c:/Users/epetre/Burndown-Charts/vendor/plugins/xss_terminate/app/views", "c:/Users/epetre/Burndown-Charts/vendor/plugins/dynamic_sitemaps/app/views", "c:/Ruby192/lib/ruby/gems/1.9.1/gems/openid_active_record_store-1.0.1/app/views", "c:/Ruby192/lib/ruby/gems/1.9.1/gems/devise-1.4.5/app/views", "c:/Users/epetre/Burndown-Charts", "c:/"

If you have time could you test against master? I believe this is fixed there, if not can you supply a little more information? What version of rails are you using? From the backtrace it looks like ruby 1.9, but is it 1.9.1 or 1.9.2? Thanks.


updating graph users using ocs endpoint crashes the ocis service

Step to reproduce

create user brand-new-user using the graph API
try to update the same user using the OCS API

curl -kv -XPUT -uadmin:admin https://localhost:9200/ocs/v1.php/cloud/users/brand-new-user

Expected
Should show some error message
Actual
request exits with an empty response and the server is crashed with log:
{"level":"fatal","service":"ocs","time":"2022-04-06T16:41:19+05:45","message":"cs3 backend doesn't support editing users"}

Originally posted by @kiranparajuli589 in https://github.com/owncloud/ocis/issues/3167#issuecomment-1090151237

Tests which crashes ocis service due to this issue are now skipped with skipOnGraph.
After this issue is fixed:

[ ] follow up on skipped test scenarios, unskip them and run on ci


⚠ Ixtanet SAT has degraded performance

In 807229c, Ixtanet SAT ($MEDIA_SAT) experienced degraded performance:

HTTP code: 200
Response time: 20799 ms

Resolved: Ixtanet SAT performance has improved in 394af02.


Mixed Underscores and dashes in install binary

Should have a convention on which one to use and stick to it.  :) confusing and hard to notice...
https://github.com/weaveworks/flux/releases/download/master-6cc08e4/fluxctl-linux-amd64

https://github.com/weaveworks/flux/releases/download/master-0d109dd/fluxctl_linux_amd64

Will be fixed as part of: https://github.com/weaveworks/flux/issues/342

Fixed in #248


Status descriptors don't work

I don't think they would be changed from SS14 descriptions as they are quite agnostic, but despite that they borked.

Can't repro on latest master.


Player

[ ] #48
[ ] #49
[ ] #50
[ ] Ability/abilities?
[ ] #51
[ ] #52
[ ] #53

Most got spun off into their own issues completed by different people


fix(MemoryStorage): request queues race conditions causing crashes

Closes #1792 🤞
Running E2E as well to see if it worked

Apparently does not work, from the e2e tests:
ERROR CheerioCrawler:AutoscaledPool: isTaskReadyFunction failed
  SyntaxError: Unexpected end of JSON input
      at JSON.parse (<anonymous>)
      at RequestQueueFileSystemEntry.get (/home/runner/work/crawlee/crawlee/packages/memory-storage/dist/fs/request-queue/fs.js:28:25)
      at async RequestQueueClient.listHead (/home/runner/work/crawlee/crawlee/packages/memory-storage/dist/resource-clients/request-queue.js:147:29)
      at async RequestQueue._ensureHeadIsNonEmpty (/home/runner/work/crawlee/crawlee/packages/core/dist/storages/request_queue.js:610:101)
      at async RequestQueue.isEmpty (/home/runner/work/crawlee/crawlee/packages/core/dist/storages/request_queue.js:526:9)
      at async CheerioCrawler._isTaskReadyFunction (/home/runner/work/crawlee/crawlee/packages/basic-crawler/dist/internals/basic-crawler.js:710:38)
      at async AutoscaledPool._maybeRunTask (/home/runner/work/crawlee/crawlee/packages/core/dist/autoscaling/autoscaled_pool.js:481:27)

ERROR Unexpected end of JSON input
  SyntaxError: Unexpected end of JSON input
      at JSON.parse (<anonymous>)
      at RequestQueueFileSystemEntry.get (/home/runner/work/crawlee/crawlee/packages/memory-storage/dist/fs/request-queue/fs.js:28:25)
      at async RequestQueueClient.listHead (/home/runner/work/crawlee/crawlee/packages/memory-storage/dist/resource-clients/request-queue.js:147:29)
      at async RequestQueue._ensureHeadIsNonEmpty (/home/runner/work/crawlee/crawlee/packages/core/dist/storages/request_queue.js:610:101)
      at async RequestQueue.isEmpty (/home/runner/work/crawlee/crawlee/packages/core/dist/storages/request_queue.js:526:9)
      at async CheerioCrawler._isTaskReadyFunction (/home/runner/work/crawlee/crawlee/packages/basic-crawler/dist/internals/basic-crawler.js:710:38)
      at async AutoscaledPool._maybeRunTask (/home/runner/work/crawlee/crawlee/packages/core/dist/autoscaling/autoscaled_pool.js:481:27)

Yep, I saw that too (although it makes no sense... its supposed to be flushed by then)... Really confused, trying to debug further

let's hope it will get better


implement standalone Attesteer

Requirements:
https://integritee.atlassian.net/wiki/spaces/INTEGRITEE/pages/294486075/Attesteer
Architecture:
https://integritee.atlassian.net/wiki/spaces/INTEGRITEE/pages/294520417/Attesteer+Planning
start new repo, forked from worker

I will close this epic as the relevant issues have been done for the MVP.


UI does not reflect system font size and scaling changes properly

When setting are like this on 4K HiDPI display

TS fonts on scene and diagrams (both on scene and in the palette) do not reflect options change. But other text in UI has changed properly.

Postponed until Qt5.15+


Requesting example of iOS + FlutterView + messaging (similar to hello_android)

Now that https://github.com/flutter/flutter/issues/3256 is closed (yay!) we might be able to add a hello_ios example (equivalent to hello_android).

Not.  Still need to land https://github.com/abarth/engine/tree/extensible_ios

Patches have landed but there are a few bugs to work out still.

Can we close this now?

We don't actually have an example yet.  I was going to factor the Xcodeproject into the developer-controlled and Flutter-controlled pieces before creating the example.

This example now exists: https://github.com/flutter/flutter/tree/master/examples/hello_services


Re-fork repositories to avoid confusion

@agirault  To avoid confusion, could you delete your project agirault/ShapePopulationViewer and re-fork the one hosted in the NIRALUser organization. See https://github.com/NIRALUser/ShapePopulationViewer
The fork graph currently shows this:

Thanks :pray:

Ping

Thanks :pray:


AuthPermissionPredicate setup for cap. preReqs

https://github.com/kgrgreer/foam3/pull/1524 - then reverted - issue was there was a spid.grantPermission call that I missed previously causing an auth recursive infinite call

LGTM, just the one typo


require command to be passed to acorn kube command (#1184)

acorn-io/manager#1184
Checklist

[ ] The title of this PR would make a good line in Acorn's Release Note's Changelog
[ ] The title of this PR ends with a link to the main issue being address in parentheses, like: This is a title (#1216). Here's an example
[ ] All relevant issues are referenced in the PR description. NOTE: don't use GitHub keywords that auto-close issues
[ ] Commits follow contributing guidance
[ ] Automated tests added to cover the changes. If tests couldn't be added, an explanation is provided in the Verification and Testing section
[ ] Changes to user-facing functionality, API, CLI, and upgrade impacts are clearly called out in PR description
[ ] PR has at least two approvals before merging (or a reasonable exception, like it's just a docs change)

Is this linking to the correct issue? Seems to be an unrelated pull request :thinking:

The issue was in another repo, I fixed the link


Footer cutting off bottom of all pages

🗣 Description
Page footer currently cuts off "Export Users" section of "Users" page, to include cutting off other pages within crossfeed. User is unable to scroll past footer or page in order to reach export section or cuts off information on other pages.
go to frontend/src/components/footer/styleFooter.ts
🧪 Testing
Will be using local crossfeed to make and update changes.

for more information see ticket #2209


Reland "Revert "[ios] Run ios rendering test on github action runner""

Original PR https://github.com/AgoraIO-Extensions/Agora-Flutter-SDK/pull/1150


Bug:

Overview
In Proposal Details in the right box.
The lines within the process bar are misaligned
Steps to reproduce

DAO Type: Token Voting DAO
Parent DAO
1/1 tokens
Voted on a createSubDAO proposal
100% approval

Screenshots / Video

Version
Prod (app.fractalframework.xyz/)
Browser
Chrome (or Chromium based)
Operating System
None
web3 wallet
None

Duplicate of https://github.com/decent-dao/fractal-interface/issues/979 and fixed in https://github.com/decent-dao/fractal-interface/pull/984


fixing TypeError

Hi there,
I adjusted the "hello tone" example in the Readme to make it work again.
Cheers,
tpltnt

thanks for the PR!


Could you please elaborate on BPnP_fast?

Hi Bo,
I was wondering if you could elaborate more on the BPnP_fast method implemented in your code, which is not explained in your paper. In its comments, it says that higher order derivatives are dismissed for efficiency purpose and this sacrifice is 'negligible' for gradient accuracy.
https://github.com/BoChenYS/BPnP/blob/114f731dbf2b287f818b8afdce0ac479068fa4f1/BPnP.py#L211-L225
Could you provide some insights for the application of this function? For example, what kind of practical consequences would you expect out of using BpnP_fast? In our task, I find regular BPnP is really slow and thus hardly applicable to joint training with other modules, while BPnP_fast is much better.
Best,
Qi Yan

BTW, according to this post https://github.com/BoChenYS/BPnP/issues/5. create_graph=False should not be use. However, this option significantly reduces GPU memory usage. Do you have any suggestions on reducing the memory usage as well as the runtime of BPnP_fast by other means?

Hi Qi,
I didn't notice any difference in practical results between the fast version and the original version. So my hypothesis is that the approximate gradients given by the fast version are accurate enough for practical use.
For your second question, thank you for your suggestion. I will optimize the code to get rid of the unnecessary memory usage for the fast version. To further reduce memory usage, you may modify the get_coefs function to loop over every 3D point, instead of processing all n 3D points together. But that would significantly increase the runtime so I wouldn't recommend it.
Cheers
Bo

Hi Bo,
Thanks so much for your message & wish you a happy holiday season! Sorry that I may have to bother you with another question about training stability. In our task, we are interested in grad_z but training with BPnP is highly unstable because of frequent gradient explosions (see below).

For a fair comparison, I tried the central difference-based PnP gradient estimator implemented in DSAC* and kept everything else the same. It was much more stable (at least the training was able to proceed).

I played with the forward PnP solver configurations a bit and it didn't help to solve the problem. I wonder if you could provide any insights/suggestions on this empirical result? I guess a naive clamp over grad_z would be helpful but I am not sure how it would hurt the optimality.
Many thanks,
Qi Yan

Hi Bo,
Thanks so much for your message & wish you a happy holiday season! Sorry that I may have to bother you with another question about training stability. In our task, we are interested in grad_z but training with BPnP is highly unstable because of frequent gradient explosions (see below).

For a fair comparison, I tried the central difference-based PnP gradient estimator implemented in DSAC* and kept everything else the same. It was much more stable (at least the training was able to proceed).

I played with the forward PnP solver configurations a bit and it didn't help to solve the problem. I wonder if you could provide any insights/suggestions on this empirical result? I guess a naive clamp over grad_z would be helpful but I am not sure how it would hurt the optimality.
Many thanks,
Qi Yan

After checking the logging, I confirm that the training instability comes from nan grad_z values, which is due to division by zero in batch_project funtion pts2d_pro = pts2d_proj[:, :, 0:2].div(S). Just made a pull request trying to fix this numerical issue.
BTW, this error is noted by torch.autograd.set_detect_anomaly(True). It seems that this also significantly alleviates the gradient explosion problem.

Hi Qi,
Thanks for your analysis and the pull request. However, I don't think clamping S to min=0.1 is a good idea generically. S is the z coordinates of the pts3d_cam, i.e., the 3D points expressed in the camera coordinate system. S should be able to take any real values including negative (object behind camera scenario). While S=0 is is extremely unlikely in practice, for applications that somehow have a lot of S=0, ad hoc treatments can be applied such as S[S==0] = S[S==0]+1e-8 or something similar.
Cheers
Bo

Hi Qi,
Thanks for your analysis and the pull request. However, I don't think clamping S to min=0.1 is a good idea generically. S is the z coordinates of the pts3d_cam, i.e., the 3D points expressed in the camera coordinate system. S should be able to take any real values including negative (object behind camera scenario). While S=0 is is extremely unlikely in practice, for applications that somehow have a lot of S=0, ad hoc treatments can be applied such as S[S==0] = S[S==0]+1e-8 or something similar.
Cheers
Bo

Yes, you're right and this is absolutely specific to applications. Thanks for your advice.