feat: support poem v2.0.0

Description of change
Closes #1519.
Adds support for poem v2.0.0.
Approach is based on how support for Axum 0.7 was added to shuttle-axum in 0.34.1
How has this been tested? (if applicable)
Using /examples/poem/hello-world/, I did cargo check with the following changes to dependencies
Poem 1 (regression test)
poem = "1.3.55"
shuttle-poem = { path = "../../../services/shuttle-poem/" }

Poem 2
poem = "2.0.0"
shuttle-poem = { path = "../../../services/shuttle-poem/", default-features = false, features = ["poem-2"] }

Cool, thanks a lot, Paul! I am wondering, though, if we need to take this step for Poem. From the changelog it seems like there are very few changes except for the upgrade of Hyper, so as far as I can tell the user won't need to make updates to their application, we just need to update the part that starts the server on our end in shuttle-poem. Oh, and they'll need to update their version of poem if they update their version of shuttle-poem. Or am I missing something here?

Oh, and they'll need to update their version of poem if they update their version of shuttle-poem. Or am I missing something here?

The version of poem (poem = "1.3.55" vs poem = "2.0.0") used in the example/user application needs to match the version of poem in shuttle-poem.
Otherwise you get the
#[shuttle_runtime::main]
^^^^^^^^^^^^^^^^^^^^^^^^ the trait `poem::endpoint::endpoint::Endpoint` is not implemented for `impl Endpoint`

error reported in #1519.
This appears to be the entirety of the issue.
(It's also as I mentioned a breaking change since the user must update their version of poem at the same time or their app will break.)

Re: failed CI check
cargo clippy --tests \
             --all-targets \
             --all-features \
             --manifest-path services/shuttle-poem/Cargo.toml \
             --no-deps -- \
             --D warnings

error[E0252]: the name `poem` is defined multiple times
 --> src/lib.rs:8:5
  |
6 | use poem_1 as poem;
  |     -------------- previous import of the module `poem` here
7 | #[cfg(feature = "poem-2")]
8 | use poem_2 as poem;
  |     ^^^^^^^^^^^^^^ `poem` reimported here
[...]

The issue is the --all-features flag. Features poem-1 and poem-2 are mutually exclusive.
(It looks like the current version of shuttle-axum would also fail such a test. https://docs.rs/shuttle-axum/latest/src/shuttle_axum/lib.rs.html#5-8)

Yes, but if they are already bumping the version of shuttle-poem, if bumping poem as well does not require any changes to their application, do we need feature flags to avoid forcing people to upgrade? Axum 0.7 also came with other breaking changes, so we didn't want to force people to upgrade if they weren't prepared to upgrade their application. I'm not sure we need to take the same approach here. :thinking:

Yes, but if they are already bumping the version of shuttle-poem, if bumping poem as well does not require any changes to their application, do we need feature flags to avoid forcing people to upgrade? Axum 0.7 also came with other breaking changes, so we didn't want to force people to upgrade if they weren't prepared to upgrade their application. I'm not sure we need to take the same approach here. 🤔

If you increase the version of shuttle-poem to 0.37.0 then that should be ok.
If you only increase the version of shuttle-poem to 0.36.1 then you are going to have problems. Someone will checkout an example that uses shuttle-poem = 0.36.0 and poem = "1.3.55". Cargo will select shuttle-poem 0.36.1 (with the change) as compatible with 0.36.0. The user will not be able to compile the example due to the above error.
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-cratesio

There is also the question of if Shuttle wants to provide backwards support for poem 1 in shuttle-poem 0.37 and later. (Which is not a question I can answer.)

Hi hi, original feature requester here :wave:
Thanks for the speedy resolution @paulotten !
Just wanted to say that I have tested these changes and everything works as it should. As mentioned in this thread, poem 2.0.0 actually has little changes and in my case no changes needed to be made to my (small) codebase.


Add xgboost4j-example-gpu module

This PR adds xgboost4j-example-gpu module to demonstrate how to accelerate
the XGBoost distributed training and inferring on the iris dataset by
leveraging GPU.
This PR didn't add the README on how to run since we still don't know where to download the xgboost4j-example-gpu in this PR. I will create a follow-up for this after this PR merged.

Hi @trivialfis, Could you help to review this PR


headWrapStyles ignores border styles

Hi,
I init a freeze table with the follow:
var freeze_table_pecas_obra_edit = new FreezeTable("#freeze_table_pecas_obra_edit",
	{
		'scrollable': true,
		'freezeHead': true,
		'freezeColumn': true,
		'scrollBar': false,
		'namespace': 'freeze_table_pecas_obra_edit',
		'columnWrapStyles' : {'border-right':'1px solid black'},
		'headWrapStyles'   : {'border-right':'1px solid black', 'border-bottom':'1px solid black'},
		'backgroundColor'  : '#DEDEDE',
		'columnBorderWidth': 1
	});

But it does not respect the border styles. Check this printscreen:

I think that I'm not doing anything wrong....

Hi @jescampos,
Can you provide sample code such as JSFiddle?

Hi,
I tried to create one but now the header is not fixed: https://jsfiddle.net/4Lp852hm/1/
Can you have a look please?

Hi @jescampos,
Can you indicate the problem?
The demo seems to work fine.

In this example, more cleaner,  you can se it better: https://jsfiddle.net/0t4vkx1d/
FreezeTable ignores the border-right css in headWrapStyles configuration. It's supposed to each th in thead has a border.
'headWrapStyles'   : {'border-right':'1px solid black', 'border-bottom':'1px solid black'},
The border-bottom works just fine!
Thanks.

Hi @jescampos,
headWrapStyles doesn't take affect to each th, you can set them by static CSS.

I has setting the css to the table id:
#table_id th
For some how the css was not applied.
I changed the selector to the the freeze container (div) and, it's not perfect, but works!
Thanks for support.


2167 huawei password breadcrumb

Context
https://trello.com/c/XCVq2BM4
Changes proposed in this pull request
Guidance to review

 Update breadcrumb for 'Your Huawei router passwords'


Handle case where nvidia-smi is not installed

There is an edge case in check_call where, if the process was not able to be started, the underlying exception is propagated. In my case, nvidia-smi is not installed, so my rh.function() call crashed with a FileNotFoundError.
The relevant portion of the docs (emphasis mine):

Run command with arguments. Wait for command to complete. If the return code was zero then return, otherwise raise CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute. If check_call() was unable to start the process it will propagate the exception that was raised.

@steve-marmalade thanks for the PR!


8911 set default locale

After looking at this more closely I think configatron.default_locale was a mistake and I think it can be removed. I have done so. Take a look and see what you think.

There is feature spec coverage on this and they are still passing so I think we're good.


Milan fluid summary compress (DocumentService.connectToStorage method injection)

For review @vladsud @DLehenbauer @dstanesc
When implementing the general compression of summaries at the Fluid Framework, we identified 3 interfaces / implementations which should be wrapped by adapters to add the compression to the summarizer.
The IStorageDocumentService contains all methods to send and receive blobs to / from the server.
The IDocumentService contains connectToStorage method to obtain the IStorageDocumentService implementation
The IDocumentServiceFactory  contains methods createContainer and createDocumentService, which create IDocumentService implementation.
The original idea was to wrap IDocumentServiceFactory by DocumentServiceFactoryProxy adapter and wrap methods of IDocumentServiceFactory.createContainer and IDocumentServiceFactory.createDocumentService so that they will return wrapped IDocumentService implementation (wrapped by DocumentServiceProxy). The method IDocumentService.connectToStorage  would be wrapped to return IStorageDocumentService  wrapped by StorageDocumentServiceProxy. This way the caller of the method  IStorageDocumentService.connectToStorage will call the wrapped 'connectToStorage' which will apply the compression to IStorageDocumentService methods.
The usage and implementation of the method IStorageDocumentService.connectToStorage in the routerlicious driver (and possibly other drivers) brings challenges to the approach above as follows:
Method routerlicious-driver - DocumentService.connectToStorage caches the created documentStorage in the instance variable prior wrapping it by proxy. So far this would not be a problem because every call to the wrapped connectToStorage would wrap it. However this instance variable is used internally in other methods where reading of blobs happens.
This PR presents the experimental solution where the IDocumentService wrapper injects the wrapped method connectToStorage into the IDocumentService  instance as follows. The original connectToStorage is saved and the wrapped connectToStorage  is replacing it in original IDocumentService instance. The wrapped method caches  the wrapped documentStorage so the internal access to this method results in usage of properly wrapped object.
	private readonly originConnectToStorage: () => Promise<IDocumentStorageService>;
	constructor(service: IDocumentService, private readonly _config: ICompressionStorageConfig) {
		super(service);
		this.originConnectToStorage = this.service.connectToStorage.bind(this.service);
		service.connectToStorage = this.connectToStorageOverride.bind(this);
	}

	public async connectToStorageOverride(): Promise<IDocumentStorageService> {
		if(this.hasStorage()) {
			return this.originConnectToStorage();
		}
		else {
			const storage = await this.originConnectToStorage();
			const wrapped = new DocumentStorageServiceCompressionAdapter(storage, this._config);
			this.saveStorage(wrapped);
			return wrapped;
		}
	}

The compression still uses 16 bytes header. The new recognition algorithm will be subject to next PR.

Work moved to separate branch (and merged).


Video starts to play when i am in the subs page

Chrome 113.0.5672.127, windows 10 with latest builds and updates, nova script 0.42.0+9ad24c4
Hello
I saw a video in youtube and when the final of the video i clicked in subscriptions tab but the video started to play again, but in second plan, the subs page was fully loaded but the video was still playing and stopped only when i reloaded the page, i am the guy with the auto pause and stop video preload issue, and i am still having this issue now with this new one.

https://github.com/raingart/Nova-YouTube-extension/assets/20147128/cf1f9af1-4163-45b5-887a-a957de153a37
even with turbo click, nothing.
finally worked


Invite “pmikus” and “mackonstan” to GitHub repo and CNCF slack

Action item: onboarding “pmikus” and “mackonstan” to CNF project
Tasks:

[ ] add “pmikus” and “mackonstan” to https://github.com/cncf/cnfs

[ ]  send an invitation for cloud-native.slack.com to<EMAIL_ADDRESS>This is the engineer that will be working on t22 action items.

Email draft:
To join the cncf.io slack, please visit https://slack.cncf.io and enter your email address to receive an invite. Once you have created your account on http://slack.cncf.io, please find and join the #cnf and dev-cnf-kubecon channels.
There are many Slack apps available for Linux, Windows, Mac, iPhone, Android and you can also use the web browser.
If there's anything I can do to help, please let me know.
Thanks so much,
Lucina


Add a Donate button to README

What is the problem?
We don't have a donate button 😱
How can this be addressed?
Add a button donate button to the README file
It something like  linked with Serenata's Apoia.se Campaign. I generated that badge with Shields.io.
Who could help with this issue?
Anyone really
Labels
Already there 😉
Important
This is a first-timers-only issue, it is supposed to help people get their feet wet. Keep that in mind when considering to open a pull request 😉

Code for the badge mentioned: ![donate](https://img.shields.io/badge/donate-apoia.se-EB4A3B.svg)

Hello jtemporal,so am guessing the button links to the donate button at https://apoia.se/serenata (the green button on the page).I would like to try this

go ahead @Ilozuluchris 😉

i want to contribute with this @jtemporal

Closed by #259 — thanks everybody for the enthusiasm, luckily there's a lot of other issues around ; )


Pass dependencies through optimizations

This makes cull and fuse, two very common optimizations, return a
second dependencies result that is a frequently reused side effect
of the computation.  Dask.array was recreating this fairly expensive
data five times for a single optimization pass.
This is bad because it complicates optimizations.  This is good
because it halves total optimization time in some cases.
Fixes #1133
cc @eriknw if you have a minute can you take a look at these changes to dask.optimize?

Looking now.

Great.  I think the tradeoff is worth it for these functions.  Not passing an optional dependencies to non-critical functions also seems reasonable as a way to avoid complications.
A downside is that now I don't know the next "obvious" thing to do to optimize these further!  What do profiles look like with these changes?

I recommend pulling out snakeviz and running the following:
In [1]: import dask.array as da
In [2]: n = 12
In [3]: x = da.random.random((2**n, 2**n), chunks=(2**n, 1))   # 4096 x 4096, 4096 x 1
In [4]: for i in range(1, n):                                  # 4096 x 4096, 2048 x 2
            x = x.rechunk((2**(n - i), 2**(i + 1)))            # 4096 x 4096, 1024 x 4
   ...:
In [5]: y = x.sum()
In [6]: %load_ext snakeviz
In [7]: %snakeviz y._optimize(y.dask, y._keys())

Inline_functions takes up about half of the optimization time now.  Really though, I think we're at the point of diminishing returns.  This computation takes around a minute-plus to run on a distributed machine.

If you are looking to do some optimization work we're close to the point where we might want to Cythonize a couple of functions within the distributed scheduler.  If you're interested let me know and I'll produce a benchmark script for you to play with.

Okay.  I'm up for Cythonizing some functions.  I'm taking a vacation in a few days, so it'll probably be a few weeks until I can do the work.  Thanks for letting me know this would be beneficial to do.


Jeff Schaller: Watch gordonbullard.com

Jeff Schaller requests the watch of the watch_keyword gordonbullard\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

gordonbullard\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Thomas Ward in Charcoal HQ

Approved by Machavity in Charcoal HQ


History.js breaks on iOS after leaving site and coming back via back button

To recreate, go to:
http://balupton.github.com/history.js/demo/
Then go to:
http://google.com
Hit your back button and then click on any of the pushState buttons and you will get:
JavaScript: Error
undefined
TypeError: 'undefined' is not a function
It seems to be caused by calling History.pushState(); But beyond that I'm not sure what's happening. I tried checking to see if History.pushState was undefined just before it is called and it returns defined so it must be something inside History.js or the Adapter.
Also, I tried running Weinre on my iPad to see if I could better track down the error, but as it turns out, running Weinre on the same page fixes the error. Hah!

A small update.  I was able to fix the issue by dropping History.js all together and moving to just making pushState calls, however I'd prefer to stick with History.
When I made the switch I decide to keep using History as a variable for window.history but that caused the same error to persist. After removing the History variable and just writing out window.history each time the error went away. Not sure what the deal is, but I hope this helps someone that knows much more than I do.


Set servers url in openapi.json if root_path is set

I was reading the documentation on configuring Fastapi behind a proxy which was very helpful. Thanks. https://fastapi.tiangolo.com/advanced/behind-a-proxy/
My request is that if root_path is set that it is "servers" url is automatically set in openapi.json
{
    "openapi": "3.0.2",
    // More stuff here
    "servers": [
        {
            "url": "/api/v1"
        }
    ],
}

I currently set with this: openapi_schema["servers"] = [{ "url": root_path }"}]

Hmm, I just saw that this was implemented in 70a51b3a  but it didn't work for me.

Closing this.


Synchronize workshop case studies with examples

[ ] Project Red: https://gtp.scientificwebservices.com/geophires/?shared-geophires-result-id=479c90cb-4b7d-4e8a-ace6-e5cc578be69c
[x] Cape Station: https://gtp.scientificwebservices.com/geophires/?shared-geophires-result-id=2bfa1f9f-d50b-476e-a05f-90e7f6a84ac1

Cape Station: https://github.com/NREL/GEOPHIRES-X/pull/292


Update docs for IE8

May we please see one example where the current recommendation fails and the new one works.

We've recently announced a feature complete status for v1.x and will only be accepting bug fixes for v1.x. Be sure to take a look at v2.0-dev and it's new features that are either finished or currently under development.  If you see your feature is still not implemented, feel free to submit another PR to the v2.0-dev (or later) branch for your feature.


Add cursor render to pattern visualization

After playing the generated map, graph cursor positions from replay in pattern visualizations.

done


issue in importing imutils on macos

<Traceback (most recent call last):
File "main.py", line 2, in
from imutils import perspective
ImportError: No module named imutils>
I have done installation of package by pip install imutils but still this error is coming.

Did you mix python2 and python3? Try pip3 install imutils to use it with python3

Did you mix python2 and python3? Try pip3 install imutils to use it with python3


Add Chinese translation

Add Chinese version

Very cool!
Well I can't really review it it's correct... but I will trust you on this...
10x!

Thank you accept this very much, I will try my best to update.
And thank you for you trust.
2017-02-21 16:14 GMT+08:00 Meir Wahnon<EMAIL_ADDRESS>
Merged #84 https://github.com/meirwah/awesome-incident-response/pull/84.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/meirwah/awesome-incident-response/pull/84#event-970274607,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMLDZ72sRn7pQIkiGMLaeRIa6_nHWorJks5repz9gaJpZM4MG5Xf
.

👍


[Question] Protocol and Transport Characteristics

I've got a couple of general questions about the chamomile protocol and transports:

What are the requirements for a chamomile transport implementation at the message level. Does it need to make sure that messages are delivered reliably and in-order like TCP or can messages be unordered and unreliably delivered like UDP?

Is the protocol suitable for streaming applications such as network gaming or video conferencing or is it not designed for high-bandwidth, low-latency communication and it would instead be used to find peers and establish a different protocol connection between peers for things like streaming video?

upper's data package is not need in-order. Transport only receive whole-data-package and send it to remote. (How to send the data packet depends on the transport process, like TCP: [0,0,0,0,x...xxx] first-4-bytes is package length, and others is package value.)

stream/big-file protocol will be independent, only as a transmission channel, TCP or other as a control channel.


Automate schedule downloads

Description
Create a GitHub Action to download the schedule data from the CTA and save to s3. The workflow will be run every day at 5:30pm UTC or on a push to the automate-schedule-downloads branch. The push event trigger can be removed once the PR has been approved.
Resolves #18
Type of change

[ ] Bug fix
[x] New functionality
[ ] Documentation

How has this been tested?
Locally

Note from discussion 8/1: Maybe make two GitHub actions, one that only downloads and a second that creates the processed route trip count file based on the downloaded file


Limit error when query big tables

hi,
Thank you for public the repo. It helps a lot.
I met a Error like
QKolaError: Internal Server Error - "limit"
when q.sync("tbl")
the tbl is a Kdb table with rows like 10,000,000
is there any way to unlimit the settings?
Thanks!

Hi, what is the size of the table, use -22!tbl to get the size.

hi,
thx for the prompt responds
q)-22!tbl
22672823693

Unfortunately, the max size per IPC is 2,147,483,647. To support more than 2,147,483,647 requires extra work. I would suggest you to make multiple requests for the table.
https://www.timestored.com/kdb-guides/errors/limit

Going to release a new version to support IPC message up to 2TB this weekend.


Separate config for skip register

This ensures that we can still allow users to login with password when the normal registration is disabled.

Needs a README update, otherwise fine.


Use effect clarification on LimitedTextarea

Use effect clarification on LimitedTextarea, detailed in #50

A few more words about the result of the useEffect dependency array.
Add limit to the useEffect dependencies.
Value -> initialValue to express the behaviour a bit more specifically.
Small typo fix in useEffect description

@Chalarangelo this is a discussion I have had a few times before, what do you consider the "semantic" reasons for using value instead of initialValue?
IMO using value in this case is somewhat ambiguous as it implies the component is controlled and that changing the value prop will change the rendered value, which is not the case.
Using initialValue is more explicit, although I agree, not as nice to look at.

@louisjordan If you put it like that, it probably makes some more sense. I'd like an opinion from the rest of the team before we move on that, maybe it can even justify an addition to the guidelines.
Opinions? @fejes713 @skatcat31 @atomiks @flxwu

Closing due to inactivity and conflicts from migration. Feel free to open a new PR about this and we can discuss details there.


Less Task Bugfixes

Fixes #192 and #194

Hi,
Any update on when this PR will be merged into the main repo ?

@logbon72 what would you say about @MAXakaWIZARD comment? Do you think it should be taken into account before merge?

The comment looks like an enhancement, this PR is a bug fix and the issue is causing stuffs to break, I think users can write callbacks as a workaround for @MAXakaWIZARD comment.
I noticed import statements were not working because the file contents were passed to the compilers in place of the file path, which was why I wrote a callback in the first place.

Ok, thanks. Merging it


DS-2904 Asynchronous & Batch Google Analytics Reporting  for DSpace 5.x

See: https://github.com/DSpace/DSpace/pull/2248 as a reference.
This feature request is a place holder for the following PR:
https://github.com/DSpace/DSpace/pull/3306
This is a back port of https://github.com/DSpace/DSpace/pull/2248 for DSpace 5.x.

Closing, fixed in 7.1 See #2248


Enter style not applied

I've got this setup:
<VelocityTransitionGroup
  enter={{
    animation: {
      translateX: 0
    },
    style: {
      transform: 'translateX(-' + this.props.width + 'px)'
    }
  }}

  leave={{
    animation: {
      translateX: this.props.width + 'px'
    },
    style: {
      transform: 'translateX(0)'
    }
  }}

  runOnMount>
  {this.props.visible ? (
    <Wrapper>
      <img src={this.props.src} />
      { this.props.children }
    </Wrapper>
  ) : undefined }
</VelocityTransitionGroup>

Imagine multiple of those components next to each other. On enter, the Wrapper should slide in from the left, and the leaving Wrapper should slide out to the right.
The leave animation is working fine, but the style of the enter animation isn't applied before the animation starts, so it slides in from the right. Anybody know how to fix this?

Try translateX as the key to the style block. velocity-react uses Velocity's style setting for consistency, not React's.

@phopkins you are a genious. That works, thanks!


[BUG] Gestures of the previous page invoked when tapping left of the PagerView

Hi @fermoya,
thanks for the Pager! really cool. I think I found a little glitch.
When you have a view left of the Pager (in a HStack) and you have swiped to page two then the gestures of the view on the left don't work any more. instead you get the gestures of the no longer visible page 1.
Here is a simple view that reproduces it: the tap gesture only works while you are on the first page.
struct ContentView: View {
    @State var x = 0
    @State var page: Int = 0
    var items = Array(0..<10)

    var body: some View {
        HStack() {
            Text("\(x)").frame(width: 100, height: 100).onTapGesture {
                x += 1
            }
            Pager(page: $page, data: items, id: \.self) { i in
                Text("Page \(i)").frame(width: 100, height: 100).background(Color.yellow).onTapGesture {
                    x -= 1
                }
            }
        }.frame(width: 200)
    }
}

I would expect the gestures to work no matter which page I am on.
I am using 1.14.1 and it happens on all iOS devices and simulators I have tried.
Cheers & Thanks,
Andreas

Hi @kellysoft-andreas  thanks for your feedback. I've just released 1.14.2-beta.2. It should have this issue covered.

Hi @kellysoft-andreas  thanks for your feedback. I've just released 1.14.2-beta.2. It should have this issue covered.

should be solved now, please use version 2.0.0

should be solved now, please use version 2.0.0

yeap - I upgraded to 2.0.0 and it works fine. Thanks!

yeap - I upgraded to 2.0.0 and it works fine. Thanks!


Add SLA note for VM Status events

To set correct expectations, the documentation should state an SLA note that the VM Status updates are potentially out of order, lossy, and may be delayed.  Please add a warning note to not use VM Status for visual UIs because they will not reflect the true state of the VM because the events are potentially delayed, lossy, and/or out of order.

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

ID: b1ad7262-ea2b-b1c2-2e3c-d4303719af05
Version Independent ID: 59fc39f6-9ce1-6919-0c93-ff202a39a7a8
Content: Monitor virtual machine health with Azure Monitor for VMs (preview)
Content Source: articles/azure-monitor/insights/vminsights-health.md
Service: azure-monitor
GitHub Login: @MGoedtel
Microsoft Alias: magoedte

@anhowe Thanks for bringing this to our attention. Your feedback has been shared with the content owner for further review.

@anhowe Do you have any more information on this? I'm trying to configure it right now for a single VM and can't get any email alerts to be generated.

#please-close as after the PM spoke to @anhowe directly, he learned his feedback was not specific to AzMon for VMs, but Azure resource health. That being said, while there have been intermittent latency issues with the health feature of AzMon for VMs showing up-to-date information, I'm adding a statement to make a note of this while changes are being completed to improve the experience.


Struggling with the understanding of .Include() and why it produces Inner joins (and how to change it to left outer joins)

SelectTest.zip
In a .NET Core Web API I have a controller which simply should return a list of entities with optional (foreign key is nullable) referenced entities which can be filtered by one criteria and paginated.
According to the famous Blog example I simply used the equivalent to
dbContext.Blogs.Include(b => b.Posts)

In my example
dbContext.Employee
.Include(ee => ee.Department)
.Include(ee => ee.SalaryBoundary)
.Include(ee => ee.Project)
.Include(ee => ee.EmploymentStatus)

Don't mind the strange table and column names, they come from obfuscating my real world names.
The problem is that it always generates an inner join and since one of the referenced elements is null the result is always an empty list.
And I can't figure out how I can bring EF core to generate left (outer) joins. And still don't get it why the default behavior for such an example seem to be inner join.
I attached an example project. The (local) database (including data) can be created with the Create-DB.sql script and the connection string can be configured in appsettings.json. The example project provides a setup for testing the problem with swagger and see the generated log files in the logs directory.
Please can anyone show me how to change the query to left outer joins so the list returns all eight entries with the view elements attached and null if foreign key is null.
The full controller causing the problems is
// the controller
    [Route("api/v1/[controller]")]
    public class EmployeeController : Controller
    {

        private readonly DatabaseContext _dbContext;
        private readonly ILogger<EmployeeController> _logger;

        /// <summary>
        /// Constructs a new instance of EmployeeController
        /// </summary>
        /// <param name="dbContext">the database context to be used</param>
        /// <param name="logger">the logger to be used</param>
        public EmployeeController(DatabaseContext dbContext, ILogger<EmployeeController> logger)
        {
            _dbContext = dbContext;
            _logger = logger;
            _logger.LogDebug("{0} > new instance created", GetType().Name);
        }

        /// <summary>
        /// Returns a list of Employees
        /// </summary>
        /// <param name="hideInactive">optional if inactive employees  should be excluded or not</param>
        /// <returns></returns>
        /// <response code="200">Ok</response>
        /// <response code="400">Bad Request</response>
        [HttpGet(Name = "ListEmployees")]
        [Produces("application/json")]
        [ProducesResponseType(typeof(ICollection<EmployeeView>), 200)]
        [ProducesResponseType(typeof(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary), 400)]
        [SwaggerOperation("ListEmployees")]

        public IActionResult ListEmployees([FromQuery] bool hideInactive = false)
        {
            _logger.LogInformation("{0}.ListEmployees(hideInactive: {1})", GetType().Name, hideInactive);

            if (!ModelState.IsValid)
            {
                _logger.LogWarning("{0}.ListEmployees(hideInactive: {1}) > bad request due to invalid ModelState: {2}", GetType().Name, hideInactive, JsonConvert.SerializeObject(ModelState));
                return BadRequest(ModelState);
            }

            var query = _dbContext.Employee
                .Include(ee => ee.Department)
                .Include(ee => ee.SalaryBoundary)
                .Include(ee => ee.Project)
                .Include(ee => ee.EmploymentStatus)
                .AsNoTracking()
                .AsQueryable();

            if (hideInactive)
            {
                query = query.Where(ee => ee.IsActive == true);
            }

            query = query.OrderBy(ee => ee.Id);

            Pagination pagintation = Pagination.FromRequest(Request);

            if (pagintation.IsEnabled)
            {
                pagintation.TotalElements = query.Count();

                query = query.Skip(pagintation.SkipItems).Take(pagintation.ItemsPerPage);

                Pagination.ToResponse(Response, pagintation);
            }

            List<EmployeeView> result = query
                                        .Select(ee => new EmployeeView()
                                            {
                                                Id = ee.Id,
                                                Name = ee.Name,
                                                IsActive = ee.IsActive,

                                                Project = (ee.Project == null) ? null :
                                                    new ProjectView()
                                                    {
                                                        Name = ee.Project.Name,
                                                        ClientCount = ee.Project.ClientCount,
                                                        PriorityLevel = ee.Project.PriorityLevel,
                                                        RiskLevel = ee.Project.RiskLevel
                                                    },

                                                EmploymentStatus = (ee.EmploymentStatus == null) ? null :
                                                    new EmploymentStatusView()
                                                    {
                                                        Name = ee.EmploymentStatus.Name
                                                    },

                                                SalaryBoundary = (ee.SalaryBoundary == null) ? null :
                                                    new SalaryBoundaryView()
                                                    {
                                                        SalaryLimit = ee.SalaryBoundary.SalaryLimit
                                                    },

                                                Department = (ee.Department == null) ? null :
                                                    new DepartmentView()
                                                    {
                                                        Name = ee.Department.Name,
                                                        EmployeeCount = ee.Department.EmployeeCount,
                                                        IsSuccessfull = ee.Department.IsSuccessfull,
                                                        AverageIncome = ee.Department.AverageIncome
                                                    }
                                            }
                                        )
                                        .ToList();

            return Ok(result);

        }

        /// <summary>
        /// Returns the Employee with the given id
        /// </summary>
        /// <param name="id">obligatory id of the Employee</param>
        /// <returns></returns>
        /// <response code="200">Ok</response>
        /// <response code="400">Bad Request</response>
        /// <response code="404">Not Found</response>
        [HttpGet("{id:int}", Name = "GetEmployeeById")]
        [Produces("application/json")]
        [ProducesResponseType(typeof(EmployeeView), 200)]
        [ProducesResponseType(typeof(ICollection<NotFoundInfo>), 404)]
        [ProducesResponseType(typeof(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary), 400)]
        [SwaggerOperation("GetEmployeeById")]
        public IActionResult GetEmployeeById(int id)
        {
            _logger.LogInformation("{0}.GetEmployeeById(id: {1})", GetType().Name, id);

            if (!ModelState.IsValid)
            {
                _logger.LogWarning("{0}.GetEmployeeById(id: {1}) > bad request due to invalid ModelState: {2}", GetType().Name, id, JsonConvert.SerializeObject(ModelState));
                return BadRequest(ModelState);
            }

           EmployeeView result = _dbContext.Employee
                .Include(mp => mp.Department)
                .Include(mp => mp.SalaryBoundary)
                .Include(mp => mp.Project)
                .Include(mp => mp.EmploymentStatus)
                .Where(mpf => mpf.Id == id)
                .AsNoTracking()
                .Select(ee => new EmployeeView()
                    {
                        Id = ee.Id,
                        Name = ee.Name,
                        IsActive = ee.IsActive,

                        Project = (ee.Project == null) ? null :
                                                    new ProjectView()
                                                    {
                                                        Name = ee.Project.Name,
                                                        ClientCount = ee.Project.ClientCount,
                                                        PriorityLevel = ee.Project.PriorityLevel,
                                                        RiskLevel = ee.Project.RiskLevel
                                                    },

                        EmploymentStatus = (ee.EmploymentStatus == null) ? null :
                                                    new EmploymentStatusView()
                                                    {
                                                        Name = ee.EmploymentStatus.Name
                                                    },

                        SalaryBoundary = (ee.SalaryBoundary == null) ? null :
                                                    new SalaryBoundaryView()
                                                    {
                                                        SalaryLimit = ee.SalaryBoundary.SalaryLimit
                                                    },

                        Department = (ee.Department == null) ? null :
                                                    new DepartmentView()
                                                    {
                                                        Name = ee.Department.Name,
                                                        EmployeeCount = ee.Department.EmployeeCount,
                                                        IsSuccessfull = ee.Department.IsSuccessfull,
                                                        AverageIncome = ee.Department.AverageIncome
                                                    }
                    }
                )
                .SingleOrDefault();

            if (result == null)
            {
                return NotFound(new NotFoundInfo("id", id).AsCollection());
            }

            return Ok(result);

        }
    }

}

Further technical details
EF Core version: 1.1.0
Database Provider: Microsoft.EntityFrameworkCore.SqlServer
Operating system: Windows 7
IDE: Visual Studio 2015
IIS Express

@MontyGvMC In general, a required relationship (that is, a non-nullable FK) will result in an inner join, because it is not possible for the dependent table to have any null FK values. Looking at your model, it seems some of the relationships are required, so inner join will be used.
Also note that it looks like none of the Includes are being used by the query. You might want to take a look at this announcement: https://github.com/aspnet/Announcements/issues/256

Thank you for taking time to answer.
Unfortunatly I still have no idea how the code is intended to be so it returns all eight entries (creating left outer join).

@MontyGvMC @ajcvickers The query ends up using INNER JOIN instead of LEFT OUTER JOIN because somehow the model is constructed with required relationships, despite the fact that all but one FKs on Employee are nullable.
I was able to workaround this by explicitly calling IsRequired(false) on the relationships, e.g.:
    entity.HasOne(d => d.Department)
        .WithMany(p => p.Employee)
        .HasForeignKey(d => d.DepartmentId)
        .IsRequired(false)
        .OnDelete(DeleteBehavior.Restrict)
        .HasConstraintName("FK_Employee_Department");

But I suspect there is either a bug or I am missing some detail in the model configuration.

What I was missing are all the calls to IsRequired() on the FK properties, e.g.:
                entity.Property(e => e.DepartmentId)
                    .IsRequired()
                    .HasColumnName("DepartmentID");

                entity.Property(e => e.EmploymentStatusId)
                    .IsRequired()
                    .HasColumnName("EmploymentStatusID");

...
                entity.Property(e => e.ProjectId)
                    .IsRequired()
                    .HasColumnName("ProjectID");

These override the nullability of the FK property itself, making all the relationships required which explains why INNER JOIN is used. You have to remove those calls to IsRequired() if you want LEFT OUTER JOIN to be generated.

Thank you for your support.
Well, those code is autogenerated by scaffolding the DB (since we use DB first approach for our project).
I will test it out and report back if this solved my problem.

Without .IsRequired() it works as expected. Thank you very much! I will check my complete DB for this calls.
Is the code generator intended to create those .IsRequired() calls when scaffolding the DB?

Is the code generator intended to create those .IsRequired() calls when scaffolding the DB?

No, it is not. That is a bug in DbContext scaffolding. But it is already fixed in 2.0.

I've got a similar problem. Well, it arises from the same situation, just materializes a bit different.
Anyway, I have a Soft Delete setup and a GlobalFilter setup to only query for Active rows.
So, anyways, my Parent class in a relation is SoftDeleted and I guess my EF Core generates an Inner Join but fails to actually join these rows because of the global filter? Am I on the right track?


firebase issue: createUserWithEmailAndPassword

`
//user.dart file
class User {
String userId;
User({this.userId});
}
//auth.dart file
import 'package:firebase_auth/firebase_auth.dart';
import '../models/user.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
User _userFromFirebaseUser(FirebaseUser user) {
return user != null ? User(userId: user.uid) : null;
}
Future signUpWithEmailAndPassword(String email, String password) async {
try {
AuthResult authResult = await _auth.createUserWithEmailAndPassword(
email: email, password: password);
FirebaseUser firebaseUser = authResult.user;
return _userFromFirebaseUser(firebaseUser);
} catch (error) {
print('PrintByMe: $error');
}
}
}
//signupscreen.dart file
//calling function
signUp() async {
if (_formKey.currentState.validate()) {
setState(() {
_isLoading = true;
});
print('email:$email , password: $password');
authService.signUpWithEmailAndPassword(email, password).then((value) {
if( value != null) {
setState(() {
_isLoading = false;
});
Navigator.of(context).pushReplacementNamed(HomeScreen.routeName);
    }
  });
}

}
`
I/flutter ( 5831): email:anc	 , password: anc E/flutter ( 5831): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The method 'signUpWithEmailAndPassword' was called on null. E/flutter ( 5831): Receiver: null E/flutter ( 5831): Tried calling: signUpWithEmailAndPassword("anc\t", "anc") E/flutter ( 5831): #0      Object.noSuchMethod  (dart:core-patch/object_patch.dart:53:5) E/flutter ( 5831): #1      _SignUpScreenState.signUp  package:quizapp/screens/sign_up_screen.dart:29 E/flutter ( 5831): #2      _SignUpScreenState.build.<anonymous closure>  package:quizapp/screens/sign_up_screen.dart:98 E/flutter ( 5831): #3      GestureRecognizer.invokeCallback  package:flutter/…/gestures/recognizer.dart:182 E/flutter ( 5831): #4      TapGestureRecognizer.handleTapUp  package:flutter/…/gestures/tap.dart:504 E/flutter ( 5831): #5      BaseTapGestureRecognizer._checkUp  package:flutter/…/gestures/tap.dart:282 E/flutter ( 5831): #6      BaseTapGestureRecognizer.acceptGesture  package:flutter/…/gestures/tap.dart:254 E/flutter ( 5831): #7      GestureArenaManager.sweep  package:flutter/…/gestures/arena.dart:156 E/flutter ( 5831): #8      GestureBinding.handleEvent  package:flutter/…/gestures/binding.dart:222 E/flutter ( 5831): #9      GestureBinding.dispatchEvent  package:flutter/…/gestures/binding.dart:198 E/flutter ( 5831): #10     GestureBinding._handlePointerEvent  package:flutter/…/gestures/binding.dart:156 E/flutter ( 5831): #11     GestureBinding._flushPointerEventQueue  package:flutter/…/gestures/binding.dart:102 E/flutter ( 5831): #12     GestureBinding._handlePointerDataPacket  package:flutter/…/gestures/binding.dart:86 E/flutter ( 5831): #13     _rootRunUnary  (dart:async/zone.dart:1196:13) E/flutter ( 5831): #14     _CustomZone.runUnary  (dart:async/zone.dart:1085:19) E/flutter ( 5831): #15     _CustomZone.runUnaryGuarded  (dart:async/zone.dart:987:7) E/flutter ( 5831): #16     _invoke1  (dart:ui/hooks.dart:275:10) E/flutter ( 5831): #17     _dispatchPointerDataPacket  (dart:ui/hooks.dart:184:5)

Hi! This error has nothing to do with FlutterFire. This error is in your code of AuthService as the method is registered on that. Please check if you are initializing your service properly.
Also please put your code in code block


Removed all mentiones of beta in the README.

Fixes #1057.

Looks like the build timed out. This can happen and it's on my list of things to make better.
Running the build again will likely be successful. However given that there aren't any code changes here, I think it's fine to merge.


@azure/graph GraphRbacManagementClient.applications.create with password is nonfunctional against https://graph.microsoft.com/beta/

Package Name: @azure/graph
Package Version: 5.0.0
Operating system:
[x] nodejs

version: 12.7.0

Describe the bug
After patching #4730 locally so the graph client doesn't send an apiVersion query parameter, the types for an application PasswordCredential don't match up with what the server expects in an application create request, resulting in a request error:
he property 'startDate' does not exist on type 'Microsoft.DirectoryServices.PasswordCredential'. Make sure to only use property names that are defined by the type

To Reproduce
Steps to reproduce the behavior:
First, patch #4730 locally by removing apiVersion from the serialized query parameters in graph.js.
Then, execute the following:
// @ts-check
const crypto = require("crypto");
const msRestNodeAuth = require("@azure/ms-rest-nodeauth");
const { generateUuid } = require("@azure/ms-rest-js");
const { GraphRbacManagementClient } = require("@azure/graph");

async function main() {
    const appName = "some-globally-unique-app-name-097635";
    const authResp = await msRestNodeAuth.interactiveLoginWithAuthResponse();
    const subClient = new SubscriptionClient(authResp.credentials);
    const tennants = await subClient.tenants.list();
    const tennantId = tennants[0].tenantId;
    // Now that we have a tenant id, reauth in the graph domain with it (the need for a second interactive prompt seems silly)
    const reauth = await msRestNodeAuth.interactiveLoginWithAuthResponse({ domain: tennantId, tokenAudience: "https://graph.microsoft.com" });
    const client = new GraphRbacManagementClient(reauth.credentials, tennantId, { baseUri: "https://graph.microsoft.com/beta/" });
    const autogeneratedPassword = crypto.randomBytes(48).toString("base64");
    const cli = await client.signedInUser.get();
    // cli request works~

    // equivalent to az ad app create --display-name \"appName\" --password \"<autogenerated>\" --available-to-other-tenants
    const app = await client.applications.create({
        availableToOtherTenants: true,
        displayName: appName,
        homepage: `http://${appName}:8080`,
        identifierUris: [`http://${appName}:8080`],
        passwordCredentials: [{
           value: autogeneratedPassword,
           startDate: new Date(),
           endDate: new Date(Date.now() + 3.154e10),
           keyId: generateUuid(),
           customKeyIdentifier: Buffer.from("App secret", "utf16le"),
        }],

    });
    // app request errors with `The property 'startDate' does not exist on type 'Microsoft.DirectoryServices.PasswordCredential'. Make sure to only use property names that are defined by the type.`
    // The query errors with `The request did not have a subscription or a valid tenant level resource provider.` when submitted against the default @azure/graph `baseUri`, which seems wrong, which is why the newer microsoft graph request seems warranted
}
main().catch(e => console.error(e));

Expected behavior
No error and an app to be made - or an error from vscode, thanks to //@ts-check
Additional Context
It looks like the credential format is ever so slightly different than what the client serializes right now, and since which fields are serialized is hardcoded, there's no simple workaround in the client.

Hi @weswigham we labeled the issue so that the right team can find it. Thanks

@weswigham I believe there is some confusion around which Graph API is being used here.
https://graph.microsoft.com/ is the endpoint for the Microsoft Graph, which is the newer replacement for the Azure Active Directory Graph (AAD graph is no longer actively developed). This package @azure/graph is for the older Azure AD Graph, which uses the https://graph.windows.net/ endpoint and does require the apiVersion query parameter that the issue #4730 recommended patching out.
If you're looking for the Microsoft Graph package to use the newer API, it is @microsoft/microsoft-graph-client on NPM.
The Microsoft Graph package has its own authentication mechanisms that will work for that service, whereas the @azure/graph package uses the specification of the older service, and as you identified, they are slightly incompatible.
I'm going to close this issue since I don't think there's anything actionable for us here, but please feel free to reopen and/or ping us here if I'm misunderstanding. If you have issues with the MS Graph, it is maintained in a separate repo over at https://github.com/microsoftgraph/msgraph-sdk-javascript

Assuming  this is one example https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/graphrbac/azure-graphrbac is it possible a note to this effect could be added to all related out of date GraphRbac projects?
Thanks!  Could save lots of debug etc for folks using the sdks.


Compute growth multiplier once for all staking rewards

#1285
#1283
#1286  👈
feature/proof-of-stake

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

Join @lazynina and the rest of your teammates on  Graphite

Merge activity

May 7, 9:37 AM EDT: @lazynina started a stack merge that includes this pull request via Graphite.


Cluster Created with kind Fails to Mount containerd HostPath

What steps did you take and what happened:
When creating a kubemark cluster using kind and capd kubemark pods stay in ContainerCreating status with an error in the description saying that they have FailedMount:
Warning  FailedMount  10s (x6 over 26s)  kubelet            MountVolume.SetUp failed for volume "containerd-sock" : hostPath type check failed: unix:///run/containerd/containerd.sock is not a socket file

Going into the kubelet container in docker shows that the file exists and is a socket:
% kubectl get pods -o wide -n default
NAME                                 READY   STATUS              RESTARTS   AGE     IP       NODE              NOMINATED NODE   READINESS GATES
kube-node-mgmt-kubemark-md-0-62h9n   0/1     ContainerCreating   0          5m12s   <none>   kubemark-worker   <none>           <none>
kube-node-mgmt-kubemark-md-0-kks4r   0/1     ContainerCreating   0          5m12s   <none>   kubemark-worker   <none>           <none>
kube-node-mgmt-kubemark-md-0-mkt6m   0/1     ContainerCreating   0          5m12s   <none>   kubemark-worker   <none>           <none>
kube-node-mgmt-kubemark-md-0-wpdhp   0/1     ContainerCreating   0          5m12s   <none>   kubemark-worker   <none>           <none>

% docker exec -it kubemark-worker /bin/bash

root@kubemark-worker:/# ls -l /run/containerd/containerd.sock
srw-rw---- 1 root root 0 Apr  5 20:15 /run/containerd/containerd.sock

Steps to Reproduce:

Add kubemark provider to clusterctl.yaml:

providers:
- name: "kubemark"
  url: "https://github.com/kubernetes-sigs/cluster-api-provider-kubemark/releases/v0.5.0/infrastructure-components.yaml"
  type: "InfrastructureProvider"

Create kind cluster config:

% cat kubemark.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: kubemark
nodes:
- role: control-plane
  extraMounts:
  - containerPath: /var/run/docker.sock
    hostPath: /var/run/docker.sock
- role: worker
  extraMounts:
  - containerPath: /var/run/docker.sock
    hostPath: /var/run/docker.sock

Create kind cluster using config:

kind create cluster --config kubemark.yaml

Initialize CAPI cluster:

export CLUSTER_TOPOLOGY=true
clusterctl init --infrastructure kubemark,docker

Wait until CAPI cluster pods are fully deployed
Create kubeadm cluster and apply it

export SERVICE_CIDR=["<IP_ADDRESS>/16"]
export POD_CIDR=["<IP_ADDRESS>/24"]
clusterctl generate cluster kube-node-mgmt --infrastructure kubemark --flavor capd --kubernetes-version 1.26.3 --control-plane-machine-count=1 --worker-machine-count=4 | kubectl apply -f-

Wait for CAPD controller to launch containers and for pods to be created in the default namespace and then watch them stop at ContainerCreating

What did you expect to happen:
I expected the kubemark / CAPD cluster to come up and for pods to enter running state
Anything else you would like to add:
I tried using minikube instead of kind to create the cluster and ran into the same issue with the containerd socket not mounting.
I was originally using Kubernetes 1.23.X to test against, but found the original issue where CAPD was switched to use the unix:/// style socket specification in the HostMount and it mentioned problems with 1.24.X versions of k8s so I switched to 1.26.3. But no matter what I try I can't seem to get past this error: https://github.com/kubernetes-sigs/cluster-api/issues/6155
I'm using Docker version: 23.0.1
Environment:

cluster-api version:

% clusterctl version
clusterctl version: &version.Info{Major:"1", Minor:"4", GitVersion:"v1.4.1", GitCommit:"39d87e91080088327c738c43f39e46a7f557d03b", GitTreeState:"clean", BuildDate:"2023-04-04T17:31:43Z", GoVersion:"go1.19.6", Compiler:"gc", Platform:"linux/amd64"}

cluster-api-provider-kubemark version:  v0.5.0
Kubernetes version: (use kubectl version):

% kubectl version --short
Flag --short has been deprecated, and will be removed in the future. The --short output will become the default.
Client Version: v1.26.3
Kustomize Version: v4.5.7
Server Version: v1.26.3

OS (e.g. from /etc/os-release): Ubuntu 22.04.2

/kind bug
[One or more /area label. See https://github.com/kubernetes-sigs/cluster-api-provider-kubemark/labels?q=area for the list of labels]

I've noticed that if I manually edit the generated clusterctl cluster config before applying it and remove the type and format of the HostMount that I can get past this issue:
Before:
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: KubemarkMachineTemplate
metadata:
  labels:
    cluster.x-k8s.io/cluster-name: kube-node-mgmt
  name: kube-node-mgmt-kubemark-md-0
  namespace: default
spec:
  template:
    spec:
      extraMounts:
      - containerPath: unix:///run/containerd/containerd.sock
        hostPath: unix:///run/containerd/containerd.sock
        name: containerd-sock
        type: Socket

After:
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: KubemarkMachineTemplate
metadata:
  labels:
    cluster.x-k8s.io/cluster-name: kube-node-mgmt
  name: kube-node-mgmt-kubemark-md-0
  namespace: default
spec:
  template:
    spec:
      extraMounts:
      - containerPath: /run/containerd/containerd.sock
        hostPath: /run/containerd/containerd.sock
        name: containerd-sock

This is a separate issue, but I also found that I was not able to use Kubernetes version v1.26.3 because kubemark didn't have an image built for this version published here: https://quay.io/repository/elmiko/kubemark?tab=tags
My previous commands ended up with ErrImagePull
Instead, I needed to find a version that was supported by both kind and kubemark by cross-referencing the following image repositories:

https://quay.io/repository/elmiko/kubemark?tab=tags
https://hub.docker.com/r/kindest/node/tags?page=1&name=v1.25

I ended up settling on v1.25.3 as a baseline between the two systems.

interesting, i have not hit this yet, but perhaps we need to update those templates for the current versions?

I know that this is at least still a problem for me. I currently run all of the manifests that clusterctl generate creates via a sed pipe that removes the type: Socket from the manifest before piping it into kubectl apply -f -.
This should be a super simple fix, I'm guessing that we just remove the line from here? https://github.com/kubernetes-sigs/cluster-api-provider-kubemark/blob/main/templates/cluster-template-capd.yaml#L120
However, it would be good to know that someone else is able to confirm this problem and that it isn't just something different about my local environment before changing something like this.

/remove-lifecycle stale

@aauren i'm assuming that this is still an issue for you?
i have been updating the make test-e2e target (which deploys a kubemark cluster) on ubuntu 22.0.4 and i'm not seeing this issue arise. i did confirm that the type: Socket field exists in my manifests. i will try testing with removing that line, perhaps it is superfluous.

Yup. Still an issue for me. I'm very open to the idea that something is just off about my setup. However, if it is superfluous and you're willing to remove it, that would help me a lot also.

i'll give it a try without the type field and see what happens, if we can remove it then i'm not opposed. although i am curious how your ubuntu is set up that is different than mine. i've been doing default ubuntu server 22.04 installs and then running an ansible script to configure the server. i have a feeling that maybe it's just a local config issue, but i'm not an ubuntu expert.

So I can tell you the process that I have been using to use kubemark:

Add provider to \~/.cluster-api/clusterctl.yaml:

providers:
- name: "kubemark"
  url: "https://github.com/kubernetes-sigs/cluster-api-provider-kubemark/releases/v0.5.0/infrastructure-components.yaml"
  type: "InfrastructureProvider"

Create kind cluster with config:

$ cat kubemark.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: kubemark
nodes:
- role: control-plane
  # The below add in a mount for configuring passing the docker socket into the containers
  extraMounts:
  - containerPath: /var/run/docker.sock
    hostPath: /var/run/docker.sock
- role: worker
  # The below add in a mount for configuring passing the docker socket into the containers
  extraMounts:
  - containerPath: /var/run/docker.sock
    hostPath: /var/run/docker.sock

$ kind create cluster --config kubemark.yaml
Creating cluster "kubemark" ...
 ✓ Ensuring node image (kindest/node:v1.26.3) 🖼
 ✓ Preparing nodes 📦 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
 ✓ Joining worker nodes 🚜
Set kubectl context to "kind-kubemark"
You can now use your cluster with:

kubectl cluster-info --context kind-kubemark

Thanks for using kind! 😊

Initialize CAPI:

$ export CLUSTER_TOPOLOGY=true
$ clusterctl init --infrastructure kubemark,docker
Fetching providers
Installing cert-manager Version="v1.11.0"
Waiting for cert-manager to be available...
Installing Provider="cluster-api" Version="v1.4.1" TargetNamespace="capi-system"
Installing Provider="bootstrap-kubeadm" Version="v1.4.1" TargetNamespace="capi-kubeadm-bootstrap-system"
Installing Provider="control-plane-kubeadm" Version="v1.4.1" TargetNamespace="capi-kubeadm-control-plane-system"
Installing Provider="infrastructure-kubemark" Version="v0.5.0" TargetNamespace="capk-system"
Installing Provider="infrastructure-docker" Version="v1.4.1" TargetNamespace="capd-system"

Your management cluster has been initialized successfully!

You can now create your first workload cluster by running the following:

  clusterctl generate cluster [name] --kubernetes-version [version] | kubectl apply -f -

Generate and Apply kubemark CAPI config (this is the part that fails without sed'ing the socket)

$ export SERVICE_CIDR=["<IP_ADDRESS>/16"]
$ export POD_CIDR=["<IP_ADDRESS>/24"]
$ clusterctl generate cluster kube-node-mgmt --infrastructure kubemark --flavor capd --kubernetes-version 1.25.3 --control-plane-machine-count=1 --worker-machine-count=4 | kubectl apply -f-

thanks @aauren , i will try to reproduce from your instructions.

i've been working on reproducing this, and i do get a similar result when trying things as you have them listed here. but when i remove the type: Socket i get an error, i see the kubemark pods in the management cluster showing this error:
  - containerID: containerd://bfebceedc7bd541071f029a6d22105004ff39715c24a219afa18dcdaa6cd3d9f
    image: quay.io/cluster-api-provider-kubemark/kubemark:v1.25.3
    imageID: quay.io/cluster-api-provider-kubemark/kubemark@sha256:84d402c851014092eafecb880afa2863cbaa87362edfcf76b03a4c436dc8422d
    lastState:
      terminated:
        containerID: containerd://bfebceedc7bd541071f029a6d22105004ff39715c24a219afa18dcdaa6cd3d9f
        exitCode: 128
        finishedAt: "2023-09-01T19:02:47Z"
        message: 'failed to create containerd task: failed to create shim task: OCI
          runtime create failed: runc create failed: unable to start container process:
          error during container init: error mounting "/run/containerd/io.containerd.runtime.v2.task/k8s.io/bfebceedc7bd541071f029a6d22105004ff39715c24a219afa18dcdaa6cd3d9f/unix:/run/containerd/containerd.sock"
          to rootfs at "/unix:/run/containerd/containerd.sock": stat /run/containerd/io.containerd.runtime.v2.task/k8s.io/bfebceedc7bd541071f029a6d22105004ff39715c24a219afa18dcdaa6cd3d9f/unix:/run/containerd/containerd.sock:
          no such file or directory: unknown'
        reason: StartError
        startedAt: "1970-01-01T00:00:00Z"
    name: hollow-node
    ready: false
    restartCount: 3
    started: false
    state:
      waiting:
        message: back-off 40s restarting failed container=hollow-node pod=kube-node-mgmt-kubemark-md-0-4t56v_default(c0f464c2-4df9-4da6-aa09-5a4450bd5341)
        reason: CrashLoopBackOff

fwiw, i'm using capi 1.4.6 and kubernetes 1.25.3

ok, i think i've found the root cause here. for me, it's not the type: Socket but the actual file links.
i modified my cluster yaml to contain this for the KubemarkMachineTemplate
---
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: KubemarkMachineTemplate
metadata:
  labels:
    cluster.x-k8s.io/cluster-name: kube-node-mgmt
  name: kube-node-mgmt-kubemark-md-0
  namespace: default
spec:
  template:
    spec:
      extraMounts:
      - containerPath: /run/containerd/containerd.sock
        hostPath: /run/containerd/containerd.sock
        name: containerd-sock
        type: Socket

could you try out that configuration @aauren ?

i think this is fixed in the 0.6.0 release, but i'm hitting a different issue there now

i've created #97 to capture the followup work here.

@aauren please give the 0.6.0 release a try with these instructions, i've fixed up the release artifacts and pushed a tagged image to the registry. it's working for me locally now.

Hey @elmiko! Sorry that it took me so long to get around to testing this one.
I can confirm that 0.6.0 fixes the issue that I was having with sockets!
Thanks for fixing this up for me! Cheers!

great to hear @aauren !


Bug in ide.py when handling a list of losses

Dear developers,
I found a bug in the code of ide.py, because it triggered an error like "list object is not callable" when an argument of type "loss = ['MSE', 'MSE'] is passed to the compile method.
Find below a proposal to overcome the issue:
class IDE(PDE):

    (...)

    def losses_train(self, targets, outputs, loss_fn, inputs, model, aux=None):
        bcs_start = np.cumsum([0] + self.num_bcs)
        int_mat = self.get_int_matrix(True)
        f = self.pde(inputs, outputs, int_mat)
        if not isinstance(f, (list, tuple)):
            f = [f]
        f = [fi[bcs_start[-1] :] for fi in f]

        if not isinstance(loss_fn, (list, tuple)):
            loss_fn = [loss_fn] * (len(f) + len(self.bcs))
        elif len(loss_fn) != len(f) + len(self.bcs):
            raise ValueError(
                "There are {} errors, but only {} losses.".format(
                    len(f) + len(self.bcs), len(loss_fn)
                )
            )

        # losses = [loss_fn(bkd.zeros_like(fi), fi) for fi in f]
        losses = [loss_fn[i](bkd.zeros_like(fi), fi) for i, fi in enumerate(f)]

        for i, bc in enumerate(self.bcs):
            beg, end = bcs_start[i], bcs_start[i + 1]
            error = bc.error(self.train_x, inputs, outputs, beg, end)
            # losses.append(loss_fn(bkd.zeros_like(error), error))
            losses.append(loss_fn[len(f) + i](bkd.zeros_like(error), error))
        return losses

    def losses_test(self, targets, outputs, loss_fn, inputs, model, aux=None):
        int_mat = self.get_int_matrix(False)
        f = self.pde(inputs, outputs, int_mat)
        if not isinstance(f, (list, tuple)):
            f = [f]
        # return [
        #     loss_fn(bkd.zeros_like(fi), fi) for fi in f
        # ] + [bkd.as_tensor(0, dtype=config.real(bkd.lib)) for _ in self.bcs]
        return [
            loss_fn[i](bkd.zeros_like(fi), fi) for i, fi in enumerate(f)
        ] + [bkd.as_tensor(0, dtype=config.real(bkd.lib)) for _ in self.bcs]

Would that be OK? Thanks in advance for the attention :)

Sorry, I posted it in the wrong repo


docs: fix srr note and change jsonc to json5 [ci skip]

Description
Fix ssr note (#5921 is a wrong PR, sorry about that) and change jsonc to json5 since prismjs didn't have jsonc lang.

Additional context

What is the purpose of this pull request?

[ ] Bug fix
[ ] New Feature
[x] Documentation update
[ ] Other

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

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

Unfortunately, prettier formats json5 with single quotes, had to add <!--prettier-ignore-->.

you have a typo in the PR description


[common] simplify the use of _extract_m3u8_formats and _extract_f4m_formats

instead of:
m3u8_formats = self._extract_m3u8_formats(m3u8_url, video_id, 'mp4', m3u8_id='hls', fatal=False)
if m3u8_formats:
    formats.extend(m3u8_formats)
f4m_formats = self._extract_f4m_formats(f4m_url, video_id, f4m_id='hds', fatal=False)
if f4m_formats:
    formats.extend(f4m_formats)

just use:
formats.extend(self._extract_m3u8_formats(m3u8_url, video_id, 'mp4', m3u8_id='hls', fatal=False))
formats.extend(self._extract_f4m_formats(f4m_url, video_id, f4m_id='hds', fatal=False))

and may be even making mp4 as the default ext and hls as the default id for m3u8_formats
and hds as the default id for f4m_formats
if this acceptable i will change all the parts that use this two methods in the other extractors.

It think it's a reasonable change.
About setting m3u8_id and f4m_id: if a website only provides m3u8 or f4m formats the prefix is not needed so I don't know if we should set it (although it's not really important since it's better to use format filters instead of directly using the ids).

LGTM.

if this acceptable i will change all the parts that use this two methods in the other extractors.

i will just merge it because if i modify every use if this methods it will take a long time(there is more than 400 file that use this method) and just keep this change when there is a modification of an extractor or for the new extrators.

It's fairly easy to deal with most common cases with this rough snippet:
import glob
import re

for filename in glob.glob('./youtube_dl/extractor/*.py'):
    with open(filename, 'r+') as f:
        src = f.read().decode('utf-8')
        src_tmp = re.sub(
            r'(?s)([a-zA-Z_][\da-zA-Z_]*) = (self\._extract_(?:f4m|m3u8|smil)_formats\(.+?\))\s*if \1:\s*([a-zA-Z_][\da-zA-Z_]*)\.extend\(\1\)',
            r'\3.extend(\2)', src)
        if src == src_tmp:
            continue
        f.seek(0)
        f.truncate()
        f.write(src_tmp.encode('utf-8'))

if it is safe to apply this modification than it will a lot better than changing every file manualy.

Obviously you should look through changed files before committing. Visually I've found no issues applying it. I can commit it myself if you want.

I can commit it myself if you want.

yes and thanks for the help.


Fix PSUseSingularNouns issues from PSScriptAnalyzer

This change is

Added an incorrect Remote when pushing my changes. Will do again in a new PR.


how to switch rootscreen

1  check if has token or not before screens show
2 if token use main tab, not use loginscreen
3  switch to main tab after login

Hey @roycehe! Let's take this - https://github.com/kanzitelli/rnn-starter/blob/master/App.tsx - as an example.
Say, we have stores.auth where you store your auth state. You can use it in App function to determine which root you want to use first. Then from Login screen, you will need to setRoot manually to show your tabs.
import {LogBox} from 'react-native';
import {Root, Screen, BottomTabs} from 'rnn-screens';

import {screens} from './src/screens';
import {Services} from './src/services';
import {Stores, stores} from './src/stores';
import {DesignSystem} from './src/utils/designSystem';
import SplashScreen from 'react-native-splash-screen';

LogBox.ignoreLogs(['Require', 'RCTBridge']);

export const beforeStart = async (): PVoid => {
  // 1. hydrate stores
  await Stores.hydrate();

  // 2. configure design system
  await DesignSystem.configure();

  // 3. init services
  await Services.init();

  // 4. hide splash screen
  SplashScreen.hide();
};

export const App = () =>
  Root(
    // we can use `stores` here as it was already inited in beforeStart functions
    stores.auth.isLoggedIn ?
      Screen(screens.get('Login')) :
      BottomTabs([
        Screen(screens.get('Main')),
        Screen(screens.get('Playground')),
        Screen(screens.get('Settings')),
      ]),
  );

I didn't test this code, but it seems like a working piece.

This works when you launch the app. However, at least for me, the stores are not updating when state changes and the root stack never updates.


Make it build with ghc-9.10

Description
Make it build with ghc-9.10.
Cannot be merged until after the SRPs have been removed.
Checklist

[ ] Commit sequence broadly makes sense and commits have useful messages
[ ] New tests are added if needed and existing tests are updated
[ ] When applicable, versions are updated in .cabal and CHANGELOG.md files according to the
versioning process.
[ ] The version bounds in .cabal files for all affected packages are updated. If you change the bounds in a cabal file, that package itself must have a version increase. (See RELEASING.md)
[ ] All visible changes are prepended to the latest section of a CHANGELOG.md for the affected packages. New section is never added with the code changes. (See RELEASING.md)
[x] Code is formatted with fourmolu (use scripts/fourmolize.sh)
[x] Cabal files are formatted (use scripts/cabal-format.sh)
[x] hie.yaml has been updated (use scripts/gen-hie.sh)
[ ] Self-reviewed the diff

I think it would be better to make all uses of foldl' from Foldable unqualified, and where there's an ambiguity with one of the specialized versions (eg from Set) make those qualified.
Even with ghc 8.10.7, Data.List.foldl' is just a reexport of Data.Foldable.foldl', so I think we should also change all the uses of Data.List.foldl' to Data.Foldable.foldl'.

I think it would be better to make all uses of foldl' from Foldable unqualified, and where there's an ambiguity with one of the specialized versions (eg from Set) make those qualified.

@neilmayhew The reason for qualified import is because GHC-9.10 finally exposes foldl' from Prelude, which means we run into redundant constraint issue for older ghc. So, the cleanest way to solve this is by a qualified import of Foldable

I am not worried about the nix eval failure for now. I will fix it when the rest works.


Http failure response for https://prod.json.systems/v1/graphs:inferGraph: 0 Unknown Error

when i submit my json data and after 5mins age , it will alert this message
[Http failure response for https://prod.json.systems/v1/graphs:inferGraph: 0 Unknown Error]
The following data is the json i just to submit , hope it can help you to figure out the bug
{
"errcode": 0,
"errmsg": "ok",
"userlist": [{
"userid": "zhangsan",
"name": "张三",
"department": [1, 2],
"open_userid": "xxxxxx"
}]
}

This has been fixed in the new version.


Filtering feature

There are no filtering options available in the existing slash, we need to add filters based on product feature such as prices

We should add filters with min price , min ratings and max price. The required text elements should be added in the front-end.

Filters with min price, max price and min ratings are added. You can check the changes Here


Update guava to 31.0-jre

Updates com.google.guava:guava from 30.1.1-jre to 31.0-jre.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

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

labels: library-update

Codecov Report

Merging #538 (879d991) into develop (16ccb9d) will decrease coverage by 0.06%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop     #538      +/-   ##
===========================================
- Coverage    60.42%   60.36%   -0.07%
===========================================
  Files           53       53
  Lines         1539     1539
  Branches        30       30
===========================================
- Hits           930      929       -1
- Misses         609      610       +1

Impacted Files
Coverage Δ

.../main/scala/com/twitter/bijection/Bufferable.scala
90.80% <0.00%> (-1.15%)
:arrow_down:

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 16ccb9d...879d991. Read the comment docs.


feat: Add NestJS.

@ceefour @philhawksworth Isn't Nestjs a Node.js framework? Why add it as a headless CMS?
Am I missing something?

@ledenis Yes it's a Node.js framework but it's more comparable to Strapi than to Express.js or Fastify. Since it has extensive support for REST APIs and GraphQL which are essential in JAMstack (especially when combined with Gatsby). Also with NestJS Admin users can get a pretty good UI for editing entities.

@ceefour Ok, I didn't know NestJS Admin, thanks!
But for me, NestJS is still far from a headless CMS (like Strapi), rather it's a tool to build your own CMS I would say. You have to write some code, you cannot just install it and use it right away.

Yeah the fact that Nest allows for exposing content APIs made me think this can be a useful part of the headless CMS and decoupled content ecosystem.
That's why I accepted the PR

Ok, I guess we don't have the same definition of CMS :)

I would agree with @ledenis, headlesscms.org is "a list of content management systems", which Nest.js is not. We've said the same to other frameworks in the past. If Nest.js is powering a CMS, such as NestJS Admin mentioned above, that would fit the bill.

Going to go ahead and revert this, but as I said before, a CMS built on nest is more than welcome!


Testing history manipulation

[ ] Add new Location implementation or augment SpyLocation to handle history manipulation
[ ] Test replacing the current history entry on navigation

Yes, at least via the session history package I'm working on. However, I'm doubtful it will make it into the router without being a major breaking change. It might be possible to do it in a non-breaking way if we support injecting the old location APIs and the new simultaneously.

I'm going to close this since the new package won't actually have anything to do with the plan for Location here.


Add finished signal to GPUParticles

Followup to #76853.
bugsquad edit: Fixes: https://github.com/godotengine/godot/issues/54964

when?
threaded render ist still broken without this

when? threaded render ist still broken without this

4.1 is in feature freeze, and this pull request needs a review before this can be merged.

One thing I just realized after hitting "approve". Is "emission_finished" the best name for this signal? As it fires after the last particle dies rather than after the last particle is emitted. The way I see it, there are two stages for a one_shot particle 1) Particles emitting (and some active) and 2) no particles emit anymore, but some particles still active. This is fired after 2), but "emission_finished" seems to infer that it signals between 1) and 2)
It would be nice to have feedback from the particles team CC @QbieShay

I'd maybe just call it "finished" or "cycle done". What happens if it's not oneshot? will it still fire at the end of each cycle of emission?

Im open to renaming the signal. I just took the name from the old implementation in #7887. The signal is one shot only so finished seems fitting.

I like "finished". "cycle_done" seems like it would fire every time a cycle finished (which would match this behaviour for one_shot particles, but would fire many times for non one_shot particles).
Let's do two things then:

Rename the signal to "finished" ("finished"already exists as a SceneStringName, so you can just use it and delete "emission_finished"
Add to the docs to clarify when the signal is fired (e.g. "emitted when all active particles have finished processing. When [member one_shot] is disabled, particles will process continuously, so this is never emitted")

Do you think it's possible to have the signal emit also for non-oneshot particles? I can see usage of this for baking flipbook animations for lower LOD vfx

The actual implementation doesn't need to be in this PR but the name would need to include this usecase.

Do you think it's possible to have the signal emit also for non-oneshot particles? I can see usage of this for baking flipbook animations for lower LOD vfx

Should be doable but would propably require a different approach for CPU Particles (GPU should work very similar). But this could be put behind a condition.
It is a thing for another PR though. And I would prefer to resolve the emmitting restart for one shot before it.
Im not very sure of what to think with cycle_done personally. It feels kinda wrong at this point with only one_shot supported. But if we assume, that continuous support is going to be added eventually it might be justified.

Do you think it's possible to have the signal emit also for non-oneshot particles? I can see usage of this for baking flipbook animations for lower LOD vfx

Are you thinking a of a signal that emits every cycle?

I'm not so sure about the names either. I'd like something that encompasses both usecases, which are:
The particle system has a set number X of particles, that are emitted at different intervals depending on the explosiveness and randomness parameters. There's multiple concepts in this

I have emitted all particles
All particles i have emitted in this cycle are now done processing and have disappeared. New ones may be there already
I have finished "my job" because once i do one emission cycle, I do not need to do it again.

I need some more time to come up with a name that encompasses 3 and 2, but I think emission_finished hints more at usecase 1 rather than 2 and 3, while finished is more generic for "finished for whatever i set out to do" and i think fits more with 2 and 3. cycle_finished is more precise but also "cycle" would be used only here. I do have plans in the future to add properties over emitter cycle (velocity multiplier for example, imagine water that shoots out at high pressure in the beginning and it's reduced to a drip in the end), but that would require a specific definition of emission cycle. It would also be interesting to add a pause between one cycle of emission and the next.
I'm sharing all of this to give a broader vision on how I'd like particles to be developed in the future. I hope this is useful to pick a name. I would just not use emission_finished because it hints at case 1 while we're tackling 2 and 3 with this signal.

I guess I will go with cycle_finished then.

Thanks for the explanation. Using the numbers from your response.

would be a good candidate for "emission_finished" (but I'm not sure if it would be useful)
could be a good candidate for "cycle_finished" but indeed. It doesn't really match exactly cycle is an internal variable we use to track how many times an emission "cycle" has completed. I.e., If I emit all my particles 1..10, once 1. dies and I emit it again, I am on cycle 2 and so on. Each time particle 1 get's re-emitted, we increment the cycle. So a cycle in this terminology doesn't quite fit what you describe in use-case 2.
is exactly what this PR covers, and I think is a good candidate for the name "finished"

@HolonProduction let us reach a consensus first before updating the PR. I don't want to make you run around and changed it multiple times, I don't think it would be a good use of your time.
I know it looks like annoying bikeshedding but i think it's important to consider future expansion to keep names somewhat consistent and communicative.

@HolonProduction let us reach a consensus first before updating the PR.

Totally agree. My work on it is on hold until there is a agreement.

So, I do personally think that the most common usecase will be to have a oneshot particle that you want to auto-free once it's done. I think that can have a more default name like finished.
For consistency, what are the other nodes that have a concept of being "done"? Animators have animation_finished, and what else?

"particles_finished"? :thinking:

For consistency, what are the other nodes that have a concept of being "done"? Animators have animation_finished, and what else?

Here are the currently defined finished signals (note emission finished is not used anywhere):
https://github.com/godotengine/godot/blob/b8ed596769d2114797015833ce86f86ee872ecfa/scene/scene_string_names.cpp#L59-L61
finished appears to only be used in one place, in the video stream player

Clarification: my proposal that everything has a "finished" signal is out of the scope of this PR.

But we could start by naming this one finished.

My ideal resolution would be:

rename "emission_finished" to just "finished" (delete "emission_finished" from SceneStringName)
Open proposals for other types of signals (e.g. signal on cycle, signal on emission finishing, etc.)

My only concern is the name "finished" might imply that it will signal whenever the particle system finishes, so some users may expect it to fire after a user turns emitting to false and the last particle dies. But I may be overthinking things at this point

If that's the case we can find a way to emit the signal at that point too. I think it would make a lot of sense, but it doesn't need to be this PR.

Fair enough. We should document that this only gets emitted with one_shot particles, and then we can remove that limitation if there is demand in the future :)
@HolonProduction To summarize, we have circled back to my earlier comment https://github.com/godotengine/godot/pull/76859#issuecomment-1630731991 if you implement the two things there in this PR and the CPUParticles PR, we should be ready to merge :)

Thanks!

But it also might be able to gracefully handle this type of conflict

To my surprise it did!

In 4.2 beta 1 should the finished signal from a one shot emitter allow me to immediately set emitting = true to get new particles? Cause that is not working in my test project without manually delaying for a bit longer.
Maybe this is more related to #79689?

@Gatada In short, no. A signal is just a notification that something has happened. It doesn't impact the emitting property in any way.
You seem to be describing desired functionality that is the subject of this proposal https://github.com/godotengine/godot-proposals/issues/7322, I suggest you follow up there

I suspect I wasn't clear: the finished signal is transmitted at what time? And has it been implemented in beta 1?

@Gatada In short, no. A signal is just a notification that something has happened. It doesn't impact the emitting property in any way.
You seem to be describing desired functionality that is the subject of this proposal https://github.com/godotengine/godot-proposals/issues/7322, I suggest you follow up there

Surely the signal isn't emitted without the emitter having changed state? The finished signal isn't very useful if I still risk interrupting or interfering with the particles life-span even after having received it.
The docs states: "Emitted when all active particles have finished processing."
Which I assume means:
• emitting is false
• all particles have expired
• emitter is ready to emit
This however is not the case for beta 1, hence my question: is my assumption wrong?

tl;dr
Try using restart() instead of emitting=true.
Since we are talking about GPU particles here the answer is a little bit complicated. Those particles are processed on the GPU and querying the GPU every frame to find out whether the particles are still processing is to performance heavy. The signal is just fired based on a timer with a time estimated from you particle configuration.
However I don't think you issue has something to do with this PR. While I was working on this I also had problems with restarting. If I recall correctly setting emitting=true would only work after a certain time. Which is basically the time your particles need but it does not factor in explosiveness or lifetime randomness. So when using those properties (which I suspect you are doing) there is a time when no particles are visible but restarting this way does not work (idk why just observed the fact; no guaranty has been some time since I worked on this).
Setting emitting to true has no effect if some internals think the system is still running, which I suspect is happening. On the other hand restart tells all internals to restart the system from the start, discarding all previous particles. So using restart should solve the problem. In theory it could also remove existing particles but since finished is emitted when no particles are visible anymore this is not a concern in this case.

Documentation should reflect this.

Made a doc PR to explain the signal more accurately.


SQL Assessment Extension not working

dashboard tab for sql assessment won't load

pinged @vchvlad to take a quick look, i will also look into it.

pinged @vchvlad to take a quick look, i will also look into it.


Failed to bootstrap panda

While bootstrapping panda, I got the following error:
> uname -a
Darwin MBP2013.local 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64 i386 MacBookPro11,2 Darwin
> perl6 -v
This is perl6 version 2015.09-25-ga3962b0 built on MoarVM version 2015.09-4-g002edea
> perl6 bootstrap.pl
==> Bootstrapping Panda
Default constructor for 'Panda::Ecosystem' only takes named arguments
  in method throw at /Users/skaji/env/rakudobrew/moar-nom/install/share/perl6/runtime/CORE.setting.moarvm:1
  in sub make-default-ecosystem at /Users/skaji/src/github.com/tadzik/panda/lib/Panda/App.pm:39
  in sub MAIN at bin/panda:16
  in block <unit> at bin/panda:95

==> Please make sure that /Users/skaji/env/rakudobrew/moar-nom/install/share/perl6/site/bin is in your PATH

See also https://travis-ci.org/shoichikaji/mi6/builds/81149995
If I applied a patch:
diff --git lib/Panda/App.pm lib/Panda/App.pm
index e845c37..6b957f7 100644
--- lib/Panda/App.pm
+++ lib/Panda/App.pm
@@ -36,11 +36,12 @@ sub make-default-ecosystem(Str $prefix? is copy) is export {
     # If this is already in @*INC, it doesn't harm anything to re-add it.
     @*INC.push("file#" ~ $prefix ~ '/lib');   # TEMPORARY !!!

-    return Panda::Ecosystem.new(
+    my $e = Panda::Ecosystem.new(
         statefile    => "$pandadir/state",
         projectsfile => "$pandadir/projects.json",
         extra-statefiles => @extra-statefiles
     );
+    return $e;
 }

 sub listprojects($panda, :$installed, :$verbose) is export {

then I could bootstrap panda successfully.
I actually don't know why this patch solves issue. Do you have any idea?
Thanks.

Maybe it's related to rakudo/rakudo/0d40e0080209c6f5eda979e58c3360bad77cfe8b the fix for https://rt.perl.org/Ticket/Display.html?id=75118,

@moritz Thank you. It's difficult to create a minimal testcase :/

Yes, it's most probably due to the fix for returning pairs. The JIT seems to need an update, since setting MVM_JIT_DISABLE=1 fixes panda's bootstrap, too.

NOTE:
https://github.com/tadzik/panda/commit/971fbc82dbcf5892067110419d734ec690c08590 is a workaround for this. Thank you @timo
But I believe this bug is not fixed in rakudo, and will appear someday again.

Looks like it's fixed/workedaround then :)


Set User-Agent in client library

Forked from #2243.
@smarterclayton wrote: We've used libname/<deep version>-commit (os: , runtime: ) in the past, and then changed libname to the executable name when used in a binary.  "os" helps catch wierd envs people care about but we didn't think to test, runtime has been useful for error reports, commit catches roll your own folks but won't work for us (since it's a compile time thing).
curl:
curl/7.26.0

Common browser/tool/bot settings are here:
http://www.useragentstring.com/pages/useragentstring.php
I still think it would be useful to set User-Agent, for monitoring purposes if nothing else, though I'm becoming less sure it could be used to customize default behavior.

/cc @nikhiljindal

+1

Fixing this now


nodeIntegration and multiple windows

Electron can have multiple BrowserWindow instances. Each of them can configure webPreferences and have different settings for nodeIntegration.
Since nodeIntegration is "per window", I don't know if it makes sense to have a global build setting for nodeIntegration.

https://github.com/electron-vite/vite-plugin-electron-renderer#config-presets-opinionated

vite-plugin-electron-renderer just does some initialization configurations, but they are not mandatory and user configurations have higher priority.
If the user provides a corresponding configuration, the user configuration is used first.

By default Vite's configuration will take effect for each BrowserWindow.
Does your application have multiple HTML files as entry points?
for your application? For example foo.html, bar.html, baz.html.

Here 👉 multiple-window

@caoxiemeihao Awesome! Sorry I've been quiet recently. I had a huge influx of Script Kit users and haven't been able to focus on the vite branch like I need to 😅
I promise to get back to it soon!

@caoxiemeihao Where did that example go?


Proposal: Retire Action-Chain workflow engine

With Mistral deprecation underway, I found myself questioning the value of keeping and maintaining the action-chain workflow engine when it only provides a subset of Orquesta functionality without any major advantages.
If we compare a simple workflow in Orquesta vs Action-Chain, we can see the complexity of writing in on or the other is near parity.
Action-Chain
Metadata
---
name: simple_actionchain
pack: test
description: Simple Action Chain workflow
runner_type: action-chain
entry_point: "workflows/simple_actionchain.yaml"
enabled: true
parameters:
  message:
    type: string
    default: "Hello World!"

Workflow
---
chain:
  - name: display_message
    ref: core.local
    parameters:
      cmd: "echo {{ message }}"
    on-success: celebrate
    on-failure: retire

  - name: celebrate
    ref: core.local
    parameters:
      cmd: "echo Time to celebrate."

  - name: retire
    ref: core.local
    parameters:
      cmd: "echo Time to retire."

Result
id: 5f51046d79d4aea9a17090a0
action.ref: test.simple_actionchain
parameters: None
status: succeeded (2s elapsed)
result_task: celebrate
result:
  failed: false
  return_code: 0
  stderr: ''
  stdout: Time to celebrate.
  succeeded: true
start_timestamp: Thu, 03 Sep 2020 14:57:49 UTC
end_timestamp: Thu, 03 Sep 2020 14:57:51 UTC
+--------------------------+------------------------+-----------------+------------+-------------------------------+
| id                       | status                 | task            | action     | start_timestamp               |
+--------------------------+------------------------+-----------------+------------+-------------------------------+
| 5f51046db6b0404a4575781d | succeeded (0s elapsed) | display_message | core.local | Thu, 03 Sep 2020 14:57:49 UTC |
| 5f51046eb6b0404a4575781f | succeeded (0s elapsed) | celebrate       | core.local | Thu, 03 Sep 2020 14:57:50 UTC |
+--------------------------+------------------------+-----------------+------------+-------------------------------+

Orquesta
Metadata
---
name: simple_orquesta
pack: test
description: Simple Orquesta workflow
runner_type: orquesta
entry_point: "workflows/simple_orquesta.yaml"
enabled: true
parameters:
  message:
    type: string
    default: "Hello World!"

Workflow
version: 1.0

input:
  - message

tasks:
  display_message:
    action: core.local
    input:
      cmd: "echo <% ctx().message %>"
    next:
      - when: <% succeeded() %>
        do: celebrate
      - when: <% failed() %>
        do: retire

  celebrate:
    action: core.local
    input:
      cmd: "echo Time to celebrate."

  retire:
    action: core.local
    input:
      cmd: "echo Time to retire."

Result
id: 5f51047b79d4aea9a17090a3
action.ref: test.simple_orquesta
parameters: None
status: succeeded (2s elapsed)
start_timestamp: Thu, 03 Sep 2020 14:58:03 UTC
end_timestamp: Thu, 03 Sep 2020 14:58:05 UTC
result:
  output: null
+--------------------------+------------------------+-----------------+------------+-------------------------------+
| id                       | status                 | task            | action     | start_timestamp               |
+--------------------------+------------------------+-----------------+------------+-------------------------------+
| 5f51047b4d06ed3c6511eee6 | succeeded (1s elapsed) | display_message | core.local | Thu, 03 Sep 2020 14:58:03 UTC |
| 5f51047c4d06ed3c6511eef6 | succeeded (0s elapsed) | celebrate       | core.local | Thu, 03 Sep 2020 14:58:04 UTC |
+--------------------------+------------------------+-----------------+------------+-------------------------------+

The output is slightly different, but the overall execution is the same.  I haven't done any extensive benchmarking between action-chain verses orquesta performance but the example shows that they are on par for simple linear workflows.
I think converging workflows to orquesta would simplify the choice for end users and reduce the code base/maintenance for St2 developers, hence this proposal.

The intent of Orquesta is to replace both Mistral and Action Chain. We decided to put Action Chain deprecation on hold because it's working for many users and very little known defects. We can revisit this for Action Chain if there's significant vote on the community as this may impact a larger number of packs and workflows in production than Mistral.

Thanks for opening this issue!
There were some internal chats before about the Orquesta vs Action Chain.
I remember the main arguments behind keeping the Action Chain were simplicity and near real-time performance/speed, especially for big workflows.
It's good to have this discussion in one place and revisit the decisions with time as we got new data.


[update] airline's terminal section color

Hello, @whatyouhide
I've updated the color scheme in the terminal section of the vim-airline.
This is expected to improve the user interface.
This uses the same green color scheme as the insert mode color scheme.
screenshot
gotham

gotham256

Thanks @kazukazuinaina! 💟


/v2/api-docs 404

Hi, I'm getting a 404 when trying to connect to /v2/api-docs. My logs show a mapping for the endpoint, but I cannot visit it.
It seems the problem may be that I cannot find the correct web context root. The project I am working on is organized as raptor-webservice/src/main/...... so I think the default should be raptor-webservice, but localhost:8080/raptor-webservice/v2/api-docs gives me a 404 error as well.
Also, other endpoints do not require the web context root before the path. For example, I have 'RequestMappingHandlerMapping:220 - Mapped "{[/jobs/pm/submit' and this can be visited with localhost:8080/jobs/pm/submit. So this leads me to believe that 'RequestMappingHandlerMapping:220 - Mapped "{[/v2/api-docs]' should make localhost:8080/v2/api-docs available, but as I said before that gives me a 404.
So, I'm just wondering if you might be able to tell me if I need some web context root in that path and if I do, I was wondering if you could tell me how I could figure out what that root is because I have been searching for a way to view it and haven't had any luck.
Thanks.
P.S. - I added this as a comment to an old issue that had been closed, but I wasn't sure if it would go unnoticed on a closed issue. Sorry for the duplicate comments.

It was a port issue, solved by moving over to 8081.


Implement Retry with exponential backoff

I have made a fork for implementing the retry specified on google fcm references
pull request https://github.com/spacialdb/fcm/pull/58

Phew, this was awhile ago, any chance on getting this added?  With a busy site I'm worried I'll come up against connection limits


Collector Run Block Height Error

I get this error when I run npm run collector with CHAIN_ID = columbus-5
[ERROR]: /blocks/1 500 - {"error":"height 1 is not available, lowest height is 4724001"}

on columbus-5 there is no height 1.
You need to set the start height.

where can I set start height?

Hi @Fahad-Mahmood,
Could you please share the way to do it if you managed to find out?
Thanks!

Here https://github.com/terra-money/fcd/blob/main/src/collector/block/block.ts#L215, its looking for height 1.

@danuzlav If you are using columbus-5, I would recommend you to use bombay branch, check the updated README there, you can set INITIAL_HEIGHT env.


itertools.dropwhile: Implement itertools.dropwhile

@coolreader18 Thanks for the review. I 've updated the PR.
Always thanks!

Looks good to me!


Restyle the install- and uninstall button animations

Remove the background-stripes and add a spinning icon.

Implemented in the referenced commits. Merged in 681d2b86f4e79ae81615914564540742984aefb0.