Do you take donations?

Hi, I cannot seem to find a link towards donating to you.
My reason is since I no longer need so many 9x capable machines now I would like to give you part of my profit from selling them.
If you choose to decline allowing donations, is there any charitable event you would like people like myself to donate to?

Hello @TiZmSpectrum,
I didn't add the sponsorship button because I didn't expect that anyone would want to contribute financially to the development of this project :-)
I added the button (direct link ko-fi.com/jhrobotics), if you would like to donate, I will of course be very happy and more motivated to next development. If you don’t want to donation directly to me, please donate Archive.org, they are doing great job with archiving webpage and software, and we can all benefit from their databases.

Awesome, expect a niceish size payment in the next two weeks :)

I highly recommend you to post a more prominent donate link because I would like to support you when I can, and I believe many others would do the same in a heartbeat. When old hardware dies out, this project will be the best solution. PC emulators, although good, are highly inefficient for the foreseeable future due to their commitment to accuracy.
When I get the opportunity, I will be talking about this project from the highest mountain tops and promoting it to all of the people who care about this kind of thing.


field counts error in large topic

I get this error consistently when I load topic 2162:
Internal Server Error", body: {"error":"Error(s): Caught exception in MediaWords::Controller::Api::V2::Sentences->field_count \"transformed query is longer than max of 2000000

It looks like the front end is calling sentences/field_counts using the old pseudo query syntax instead of the new timespans_id syntax.  This crashes on very large topics because we can't fit all the stories_ids inside the giant expanded query.

no.  just use:
timespans_id:123456
you are using the old pseudo query method that replaces the timespan clause
with a list of stories_ids.  timespans_id: just queries solr directly.
-hal
On Fri, Mar 9, 2018 at 10:13 AM, rahulbot<EMAIL_ADDRESS>wrote:

This is querying making a query by doing:
timespan_query = "{~ timespan:"+str(timespans_id)+" }"`
Is that not the right way to do it?
That code is here: https://github.com/mitmedialab/MediaCloud-Web-
Tools/blob/master/server/views/topics/apicache.py#L264
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mitmedialab/MediaCloud-Web-Tools/issues/922#issuecomment-371840354,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABvvT2mY8fn2PxV4gsP1Hlqf5ttfy2-mks5tcpwDgaJpZM4SjyFZ
.

--
Hal Roberts
Fellow
Berkman Klein Center for Internet & Society
Harvard University

terrific.  that will give a big speed boost to any other places you fix
that as well.
On Fri, Mar 9, 2018 at 10:46 AM, rahulbot<EMAIL_ADDRESS>wrote:

Closed #922
https://github.com/mitmedialab/MediaCloud-Web-Tools/issues/922 via
e9d0e14
https://github.com/mitmedialab/MediaCloud-Web-Tools/commit/e9d0e14f97a3235f0d5207dfe115801978cf7747
.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mitmedialab/MediaCloud-Web-Tools/issues/922#event-1513543133,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABvvT4anF0G87BGXDSfrWjHIsusc3Zxzks5tcqPwgaJpZM4SjyFZ
.

--
Hal Roberts
Fellow
Berkman Klein Center for Internet & Society
Harvard University


How to build a Flutter web application

Proposed title of article
How to build a Flutter web application
Introduction paragraph(s):
Flutter is an emerging framework for crafting beautiful cross-platform mobile applications. It allows developers to target both iOS and Android platforms with a single code base. This feature helps to save a significant amount of time and resources.  With the release of Flutter 2, its popularity is set to rise even further. The Flutter framework will definitely cause ripples in the web development field. New icons, as well as other features included in Flutter 2 will simplify the development of web applications.
Flutter for Web has recently moved from beta to stable. This is good news to developers since they can build highly secure and appealing websites. Flutter widgets are based on Google's material design and principles. This means that even inexperienced Flutter developers can design visually-appealing applications. This tutorial guides you on how to create a simple Flutter web application.
Key takeaways:

Understand how to install the Flutter SDK.
Set up the development environment.
Build a simple Flutter web application

References:
N/A

good topic @WanjaMIKE  - approved.

@WanjaMIKE just wanted to follow up on this topic as I'm clearing up the queue where possible?

@hectorkambow I will upload the article by tomorrow. Thanks

merged https://github.com/section-engineering-education/engineering-education/pull/2418


None.ne(None) should be NotImplemented

This was changed in Python 3.12. Closes #5103

EnoN .

@youknowone this is ready now, but I'm not sure why tests failed on wasm-wasi.

Done - thanks @youknowone!

Could you also check clippy errors? To check it, see the 'Details' of ubuntu-latest build.
Rebasing the patch on RustPython/RustPython main will also fix other CI failures unrelated to this patch.
I am really sorry for late response during you are writing this patch. And thank you so much for contributing.

Weird, now it's failing on a manual hash implementation? I've rebased against main though

That's due to recent Rust version upgrade. I fixed it on main branch. rebasing on main again will fix it.

Sorry, must've missed your comment - rebased


Handle nullable output values marked as non-nullable in the schema

Ideas:

laziness (like in Besom)
default values (e.g. for String map it to "")
print error message with issue description and repository to raise it in

I reported this type of an issue in GCP ages ago and nothing so far: https://github.com/pulumi/pulumi-gcp/issues/1125


GitHub Issue Slack Link Incorrect

I wanted to open a question / feature request so I began creating an issue.
The checkboxes directed me to ask first on Slack. However, the link takes me to the "generic" page which insists on an @k8sgpt.ai email address to register.

Fix
The link should use the shared invite code and then anyone can register.

@AlexsJones @agardnerIT  would like to know is this issue has been resolved ? since I'm facing the same issue and unable to join Slack

Incorrect Slack Link in .github/README.md Community Section - Update Required
Description:
@AlexsJones @agardnerIT @thschue I encountered an same issue #376 while joining Slack for K8sgpt. In the Home screen of the K8sgpt GitHub repository (https://github.com/k8sgpt-ai), the .github/README.MD file, under the community section, the displayed Slack link is incorrect. It redirects new contributors to a page that insists on an @k8sgpt.ai email address, instead of providing the correct invite code link for Slack as documented in the [contributing-guide] getting Started section (https://github.com/k8sgpt-ai/k8sgpt/blob/main/CONTRIBUTING.md).
Furthermore, the attached screenshot shows the incorrect link placement and destination.

Steps to reproduce:
To resolve this issue, we need to update and document the correct invite link for Slack in the .github/README.MD community section .

Sure @AlexsJones will open a PR addressing the above issue


would be nice to have a config file where you can change the namespace of the classes

Would also be nice to have the option to publish the 3 mail classes so we can override them
I have a situation where I need to pass custom headers to Mail::queue and I am implementing the fix here https://medium.com/@guysmilez/queuing-mailables-with-custom-headers-in-laravel-5-4-ab615f022f17
But in order to do that I have to extend Mailable, but your classes also extend Mailable and I want to use your classes.. so now I have to copy your classes to my own codebase and change them so they extend my modified Mailable class :)

@vesper8 you can extend the mail classes of the package if that works in this case

I'll be converting these into traits this week so their easier to use.

right.. yes that's what I did. But I needed to change which class the package's classes extend. Instead of extending Mailable directly I needed to have them extend something else that itself extends Mailable. So I had to copy your classes to my own codebase so I could change which class they extend. I did all that and it is working.
Thanks

@vesper8 you can extend his class without copying or modifying the namespace:
use TomIrons\Mailables\ActionMailable;

class MyActionMailable extends ActionMailable
{
    // ... override some methods

}

I'm on the same page as @Lloople, you can still access everything inside the Mailable class through the classes in this package.


Large number of WeightedSnapshot$WeightedSample instances in heap

During a heap dump analysis for a long running process, I noticed the com.codahale.metrics.WeightedSnapshot$WeightedSample class being in the top 10 of my histogram for number of items (currently 1,959,523). A heap analysis tool determined that 1,943,542 of these instances are garbage. While this doesn't take up a large amount of memory, it appears that they aren't getting gc'd.
I am wondering under what circumstances might this occur and if upgrading from our current use of 3.2.2 would help this issue at all?

@metame
As you can see from source code, the default Reservoir implementation produces the garbage on each update of the histogram. This garbage is very awkward for everyone GC, because all modern GC implemented across Soft Generational Hypothesis:
*Most of the objects become unused quickly.
*The ones that do not usually survive for a (very) long time.
``WeightedSampledoes not become unused quickly, because the moment of time when it becomes unreachable very depends on the histogram update rate. Because the update rate usually is not huge, the time thatWeightedSamplestays reachable is enough to promote it to the Old regions. At the same time, the fact thatWeightedSamplesurvived does not mean that WeightedSample``` should survive for a long time, because it survived just by mistake.
So default implementation of Reservior totally contradicts underlying JVM implementation, and to solve the problems with middle age garbage you need to switch to another one. For example:

SlidingTimeWindowArrayReservoir which built into Metrics core library
(RollingHdrHistogramBuilder)[https://github.com/vladimir-bukhtoyarov/rolling-metrics/blob/master/histograms.md] from third-party library (Rolling-Metrics)[https://github.com/vladimir-bukhtoyarov/rolling-metrics]


tests: Add a test-only init for issue 2448

As discussed in the weekly meeting 24th of Sept.
https://github.com/devitocodes/devito/issues/2448

Closing in favor of #2477


Replace memoize with Python3 lru_cache

echoing comment in common.py:
def memoize(f):
    # Someday if we upgrade to Python 3 this can be replaced with
    # functools.lru_cache(...).

👍


[ERP-2129] Modified status script to output result to public/status.json

This PR was not what was expected. Closing.


Small test fixes

A few small fixes should be done to the test suite:

Reduce timeout time in socketselect from 5s to 1s so it doesnt take so long
Fix Makefile entry for coreutils-test
Fix fork_simple.c so it properly uses the wait() syscall

Finished with PR. Thanks!


Hair additions

9 new hairstyles plus 1 iteration of the afro2 hairstyle already in-game.

Thanks again for the PR!
I think the black background of the hair looks weird currently, for example:

Even with black hair it looks a bit strange.
And overall (applying to #24 too) I think the braids somehow look too detailed/realistic compared to the more cartoony look of the other facial features. Do you think there is some way to improve that?

I changed the background of the hair to make it match the hair color. For the braids I tried making the stroke size bigger from 1 px to 2 px. And then to 4 px. The first image are the braids with a 2 px stroke, the second picture are the braids with a 4 px stroke, and the third picture has a 4 px stroke but with black hair instead of blonde.

With how I made the initial designs, the stroke color wasn't black like it is in the first two pictures because the opacity lend itself well to any kind of hair color. In these new designs, to make them look more cartoony to match with the facial features, I had to give it a black stroke since the facial features in the game have #000000 borders.

I guess there's also something like this, it's a quick mock up but essentially just hand drawn dreads. I personally think it looks a little messy and plain but it's another option. Hopefully we can pin a solution down!

I think it still just doesn't look good enough, either way. Sorry for not having more constructive feedback. I really don't know anything about graphics! @TravisJB89 what do you think?

I'll keep working but understand if they just don't work for the game! Will get back soon with different designs.


fix(relay): fix otel endpoint type

Completely forgot this https://github.com/firezone/firezone/issues/3251
This is the PR you asked for :/

Completely forgot this https://github.com/firezone/firezone/issues/3251
This is the PR you asked for :/

Thanks for the contribution!

Can you add a test using https://docs.rs/clap/latest/clap/trait.Parser.html#method.try_parse_from that ensures we accept a DNS name? I am worried that if we don't have a test for this, we will forget about this requirement and change it back to a socket address or something else in a refactoring.

Replaced by https://github.com/firezone/firezone/pull/5059.

Thanks!
Unfortunately our CI is not optimised for contributions from forks yet so I am going to take your commit and push it to a local branch and merge it from there. The attribution should stay in-tact through that!

Another option is changing the base of this PR to a contrib branch, open a Pr with that, then merging.
That'll prevent having to close unmerged PRs

Ah that is a good idea! I'll do that next time!


Proper plugin name

At the moment the name isn't very awesome... Ba dum tss. :grin:
@TheGreatRefrigerator mentioned to name it accordingly to the ORS qgis plugin ORSTools.
Input needed ;)

I was cleaning up the ORSTools (or ORStools -.-) plugin and did quite some QGIS cookbook reading:
https://docs.qgis.org/3.16/en/docs/pyqgis_developer_cookbook/plugins/releasing.html?highlight=releasing#releasing-your-plugin
I still had the "No plugin in name" in the back of my head, that's why mentioned this.
There are some good and important points. Maybe just give them a quick check as well :)
(e.g. not uploading __pycache__ in the final plugin data on https://plugins.qgis.org/plugins once you are at that point.
Here are the release instructions for the ORStools plugin if you are interested)

we agreed on ohsomeTools


Make a simple JSONRPC call before pubsub

blockNumber$() is based on onEveryBlock$, which does a pubsub eth_subscribe('newHeads'). However, when we do blockNumber$().subscribe(), we might not get the latest block immediately, and need to wait for the next received block (can take up to 15s on mainnet).
A solution would be to make a JSONRPC call first, then do the pubsub subscribe.
Note: we were using parity_subscribe('eth_blockNumber') before, and that one returned immediately the latest block it had.
Note 2: do this on newHeads and on syncing pubsubs.

I think this could also be fixed upstream in the node, i.e. emit latest value (if available) on pubsub subscription


Failed to parse response when trying to do cross device authentication.

So the current passkeyAuthenticator.authenticate function is returning AuthenticateResponseType, but when i try to authenticate using passkey on another device (private key on device A that used to login on device B). the response type is below, which is different from AuthenticateResponseType.
{   "rawId": "VnyekU7Pp3C4B8oTY0Hx-A",   "authenticatorAttachment": "cross-platform",   "type": "public-key",   "id": "VnyekU7Pp3C4B8oTY0Hx-A",   "response": {     "clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoid3BrcUtLb09NaG1pN2NvVFZva056YVBEeWdwM2pJdk8xLTIzSWxibS1nUSIsIm9yaWdpbiI6ImFuZHJvaWQ6YXBrLWtleS1oYXNoOkxOYmlZYmxCTm5HQ3k2a1lXOTlnOFpEdDB6Z1YyRW04aWdVWUJkNzdRckUiLCJhbmRyb2lkUGFja2FnZU5hbWUiOiJjb20uZXhhbXBsZS5mbHV0dGVyX3Bhc3NrZXlfdGVzdCJ9",     "authenticatorData": "vFRfReoKqgs6BsspvBYtr6Mc2SNzjOzZO4I25cZifSQdAAAAAA",     "signature": "MEYCIQDCFUCSNygYZ8VMMgOvkujFhajSpIqpMSPnL4oHp1hXiwIhAJbZX-3xtZAMmwSzkOlIRVGzsI4cLQIc_tpm-z0qOiPF"   },   "clientExtensionResults": {} }
which caused org.json.JSONException: No value for userHandle (parsing error).

How was the problem solved?


unable to see public dashboards in Firefox anonymous session

Hi,
we have lots of dashboards publicly available. In config.py there is PUBLIC_ROLE_LIKE ="Gamma".
when I try to see them in anonymous session I obtain following error.
In normal session they work.
I tried the git version of yesterday too.

@zufolo441 does it work in other browers?
cc @amitmiran137 @simcha90 you may know

Hi Francesco, could you please update the issue with the version of Superset that you're using?

Hi, I tried with Chrome and works.
Version is from git: 4f5c5372, but I tried version of 5 days ago too.
Thanks!

I've just tried the actual version:  a90e1685 . Same problem.

I have the same problem, with Chrome, Firefox and Safari (haven't tried other browser).
I have PUBLIC_ROLE_LIKE: Optional[str] = 'Gamma' and AUTH_ROLE_PUBLIC = 'Public' in config.py.
When not logged I can access the list of published dashboards but when I want to open one get the following error:

Let me try to reproduce this

I think I was able to find the source for the problem.
The information of the user present on the state is empty (Maybe saying something wrong related to react concepts :sweat_smile: ).

At least its roles need to be present. Just to test I applied these changes to superset/views/utils.py

fantastic, thank you!

For me, it didn't solve...

I experienced the same issue after upgrading to 1.2.0 (installed using pip). The solution above worked perfectly for me. @aspedrosa thanks a lot!

@aspedrosa great job! Would you mind opening a PR with your fix? I'd be happy to review and help get it merged.

@zufolo441

All the permissions I added to public
@suddjian sure :+1:


Deprecate unused Helm releases

Signed-off-by: Rahul M Chheda<EMAIL_ADDRESS>Change Overview

Removed all the unused Helm Charts
Changed location of DockerFiles
Verified all changes via this commit: https://github.com/kanisterio/kanister/pull/719/commits/a636767313b6b33d0a6e853bbdbb8e2482b16b9e
Deprecated Push for un-used Helm charts

Please check the commit wise descriptions for more overview.

Pull request type
Please check the type of change your PR introduces:

[ ] :construction: Work in Progress
[ ] :rainbow: Refactoring (no functional changes, no api changes)
[ ] :hamster: Trivial/Minor
[ ] :bug: Bugfix
[ ] :sunflower: Feature
[ ] :world_map: Documentation
[x] :robot: Test

Issues

#XXX

Test Plan

[ ] :muscle: Manual
[ ] :zap: Unit test
[x] :green_heart: E2E

Whats up with the licenses file?

It came up when I ran the integration test, should I remove it?

I am not sure why integration test created that file, it shouldnt. Yes, I think we should remove that file.

I am not sure why integration test created that file, it shouldnt. Yes, I think we should remove that file.

Done @viveksinghggits

LGTM


Route request based on JWT claims

Title: I would like to route a request containing a jwt header to a dedicated tenant micro-service based on a claim.
Description:
Once my client is authenticated, he will receive a JWT with some claims. I have a micro-service A that will receive this query and dispatch the query to a micro-service B. There is a micro-service B per tenant. I would like the query to be routed seamlessly to the micro-service B specific to a tenant, the routing will be based on a jwt claim.
You already have the same request on this thread
I like the proposition from @galo
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
  name: meme-lz
spec:
  destination:
    name: meme
  precedence: 2
  match:
    request:
      headers:
        jwt_auth.country_code:
          regex: "^(.*?;)?(fr)(;.*)?$"
  - destination:
      service: meme-france

I think nginx already managed that here

@lizan @qiwzhang is this planned as part of the ongoing JWT work or should it be tracked as an enhancement?

Planed JWT work will not cover this feature.  Please track it as a separate issue.

Note also related to https://github.com/istio/istio/issues/8444


Replace lru_cache with django-redis caching

Closes user-reported issue on Slack (no GH issue #)
What's Changed
Issue
In a deployment under uwsgi, a user noticed that the UI would give inconsistent behavior which could in some cases be resolved by refreshing the page. The example given was the "edit" form for a Device DynamicGroup, which would sometimes correctly display the defined Device CustomFields as filterable options for the DG, and other times would omit these filter fields from the edit form.
After some investigation, it appears that the culprit was the lru_cache added on the CustomField.objects.get_for_model() method in #5024. With multiple uwsgi workers, creating or deleting a CustomField would trigger the invalidate_lru_cache signal on the current worker only, while any other workers that had also populated this cache locally would not have theirs cleared. Thus the inconsistent behavior - depending on which worker responded to any given HTTP request, the cache would have a different value and so different behavior would be observed.
In investigating and testing this, I found a similar issue with the usage of @cached_property on TreeManager.max_depth (#5131), with the same root cause.
Old solution
~The solution proposed here is admittedly a bit of a blunt object. Since the intended performance optimization of the lru_cache added in #5024 was to reduce the impact of repeatedly running cacheable queries within the context of a single request, all I'm doing here is adding a new piece of middleware that clears the relevant caches before processing any new request.~
New solution
Replace the local in-memory caches for this data with the shared django-redis cache, so that clearing the cache when appropriate automatically applies to all worker processes:

TreeManager.max_depth
ComputedField.objects.get_for_model
CustomField.objects.get_for_model
Relationship.objects.get_for_model_source
Relationship.objects.get_for_model_destination

Additional changes

Add NAUTOBOT_INSTALLATION_METRICS_ENABLED=false to development/dev.env so that installation metrics are not unnecessarily sent when testing with the final images (which don't use development/nautobot_config.py)
Add caching.md to developer documentation, spelling out best practices and conventions for using caching in Nautobot, and documenting some of the potential pitfalls.
Remove ChoiceSetMeta.__getattribute__ as it was making ChoiceSet references un-pickleable and was documented in #3439 as being "currently unused" in any case.
Normalize cache keys as following either of the following two forms:

For Manager/Queryset/Model caches, nautobot.<app>.<model>.<method>[.<variable>...]
For function/method caches, <module_path>.<function>[.<variable>...]

Remove unnecessary lru_cache micro-optimization of remote_auth_enabled/sso_auth_enabled/ldap_auth_enabled
Fix our parallel test runner to ensure that each parallel test worker uses a distinct Redis cache index (localhost:6379/<index>) so that caches don't clobber one another during testing.

Screenshots
Before, with a temporary log message reporting the state of the cache every time DynamicGroupEditView was loaded, showing that the initial cache of "no custom fields defined" was not cleared on every worker after a new custom field was created:
21:41:16.193 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:41:25.946 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:41:26.035 INFO    nautobot.extras.views :
  Created dynamic group devices (PK: 616c15a3-0818-4992-abfd-8a3feda312fa)
21:41:28.657 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:41:35.369 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:41:38.094 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:41:55.367 INFO    nautobot.extras.views :
  Created custom field text (PK: 25d1ce4e-3ca2-4344-90f9-1bc72c6ec3ae)
21:42:05.611 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:09.636 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:13.009 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:14.347 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:15.477 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:16.575 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:17.895 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:42:30.451 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:31.624 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:32.720 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:42:33.912 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:42:34.988 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>

After, in the same circumstances, showing that all requests have the correct refreshed cache:
21:56:24.777 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:56:32.454 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:56:32.568 INFO    nautobot.extras.views :
  Created dynamic group devices (PK: 271fd7f9-2b1d-4870-ac5e-4a6314a07813)
21:56:36.697 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:56:38.553 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:56:40.648 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:56:41.974 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:56:43.600 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:56:46.661 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet []>
21:56:46.742 INFO    nautobot.extras.views :
  Modified dynamic group devices (PK: 271fd7f9-2b1d-4870-ac5e-4a6314a07813)
21:57:05.170 INFO    nautobot.extras.views :
  Created custom field text (PK: 384e3c85-bcad-4f2b-9e66-a421ed3059d7)
21:57:11.353 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:15.536 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:17.197 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:19.012 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:20.568 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:24.414 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:25.744 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:27.009 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:28.238 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:29.526 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:30.804 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:32.110 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:33.277 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:34.597 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>
21:57:35.800 WARNING nautobot.extras.views :
  CustomField model cache: <RestrictedQuerySet [<CustomField: text>]>

TODO

[x] Explanation of Change(s)
[x] Added change log fragment(s) (for more information see the documentation)
[x] Attached Screenshots, Payload Example
[ ] Unit, Integration Tests
[ ] Documentation Updates (when adding/changing features)
n/a Example Plugin Updates (when adding/changing features)
[ ] Outline Remaining Work, Constraints from Design

Would it make sense to move all of the recently added LRU cache to use django caches to prevent any further issues like this?

Added a custom limited_lru_cache decorator that adds decorated functions to the extras registry so that they can all be cleared iteratively by the middleware. Also I changed it so the middleware clears caches after a request, instead of before a request, as there's no need for cached data to linger around while the server is sitting idle.
I found a similar bug with the TreeManager.max_depth cached_property and multiple uwsgi purposes, so that's fixed now too.

Would it make sense to move all of the recently added LRU cache to use django caches to prevent any further issues like this?

Absolutely worth considering! I'll do some investigation.

@glennmatthews it has been reported that this does not fix the custom field option for dynamic groups after all. I have created issue #5545 with reproducible steps to continue tracking this.


Cannot edit metadata from info overview, only from 3 dots menu

https://user-images.githubusercontent.com/50382414/152254789-f3975214-492b-4b3d-b5bb-92e67e22e322.mp4

You actually cannot in both cases. In the first case, trying to edit metadata will let you know which formats are unsupported (if any) so the user can choose to proceed or not with the items that are supported.

Oh, my bad.


Karpenter doesn't create Nodes

Installed Karpenter following the documentation. Created the following provisioner:
apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
metadata:
  name: provisioner-test
spec:
  requirements:
    - key: dwh
      operator: In
      values: ["yes-dwh"]
  taints:
    - key: dwh
      value: cronjobs-test
      effect: "NoSchedule"
  limits:
    resources:
      cpu: 1000
  provider:
    instanceProfile: KarpenterNodeInstanceProfile-features
    subnetSelector:
      kubernetes.io/cluster/features: '*'
    securityGroupSelector:
      Name: sg-***
  ttlSecondsAfterEmpty: 30

The resource I am trying to match with the provisioner above is:
apiVersion: batch/v1
kind: CronJob
metadata:
  name: dwh-cron
spec:
  jobTemplate:
    spec:
      template:
        spec:
          tolerations:
            - key: "dwh"
              value: cronjobs-test
          nodeSelector:
            dwh: "yes-dwh"

The error I get:
 2022-01-26T16:07:43.841Z	DEBUG	controller.selection	Could not schedule pod, matched 0/1 provisioners, tried provisioner/provisioner-test: invalid nodeSelector "dwh", [yes-dwh] not in []	{"commit": "5047f3c", "pod": "dwh-dev/karpenter-test-4vgnb"}
Would appreciate your assistance on this issue. Thanks in advance.

Currently, only well known labels are supported via requirements. For custom labels, use the explicit labels syntax:
labels:
  dwh: yes-dwh

I'm surprised our validation logic allowed this. @felix-zhe-huang can you take a look?

Are you following the getting started guide? There are many reasons the node can't connect.

instance profile needs the right permissions
security groups need connectivity to the masters
iam role needs to be granted access.

Try logging into the node with
aws ssm start-session --target $(kubectl get node -l karpenter.sh/provisioner-name -ojson | jq -r ".items[0].spec.providerID" | cut -d \/ -f5)

and then reading the kubelet logs with
sudo journalctl -u kubelet

@Izvi-digibank check your subnet selectors. I had a similar issue, it was caused by nodes binding to public subnet instead of private.

@ellistarn I am attaching all the relevant configurations, all followed by the documentation. @alekc subnet selector is 100% private. Would appreciate your further attention to the following details;
Instance profile has the right permissions (Policy is "AmazonSSMManagedInstanceCore"):

AmazonSSMManagedInstanceCore policy :
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeAssociation",
                "ssm:GetDeployablePatchSnapshotForInstance",
                "ssm:GetDocument",
                "ssm:DescribeDocument",
                "ssm:GetManifest",
                "ssm:GetParameter",
                "ssm:GetParameters",
                "ssm:ListAssociations",
                "ssm:ListInstanceAssociations",
                "ssm:PutInventory",
                "ssm:PutComplianceItems",
                "ssm:PutConfigurePackageResult",
                "ssm:UpdateAssociationStatus",
                "ssm:UpdateInstanceAssociationStatus",
                "ssm:UpdateInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2messages:AcknowledgeMessage",
                "ec2messages:DeleteMessage",
                "ec2messages:FailMessage",
                "ec2messages:GetEndpoint",
                "ec2messages:GetMessages",
                "ec2messages:SendReply"
            ],
            "Resource": "*"
        }
    ]
}

KarpenterNodeInstanceProfile-features Trust relationship:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

KarpenterController IAM Role policy:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:CreateLaunchTemplate",
                "ec2:CreateFleet",
                "ec2:RunInstances",
                "ec2:CreateTags",
                "iam:PassRole",
                "ec2:TerminateInstances",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeInstances",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeInstanceTypeOfferings",
                "ec2:DescribeAvailabilityZones",
                "ssm:GetParameter"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

KarpenterController Trust Relationship:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::***:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/***"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringLike": {
          "oidc.eks.eu-west-1.amazonaws.com/id/***": "system:serviceaccount:karpenter:karpenter"
        }
      }
    }
  ]
}

Karpenter 0.5.3 helm chart values file:

serviceAccount:
  # -- Create a service account for the application controller
  create: true
  # -- Service account name
  name: karpenter
  # -- Annotations to add to the service account (like the ARN of the IRSA role)
  annotations: {eks.amazonaws.com/role-arn: arn:aws:iam::***:role/KarpenterController}

controller:
  # -- Additional environment variables to run with
  ## - name: AWS_REGION
  ## - value: eu-west-1
  env: []
  # -- Node selectors to schedule to nodes with labels.
  nodeSelector: {}
  # -- Tolerations to schedule to nodes with taints.
  tolerations: []
  # -- Affinity rules for scheduling
  affinity: {}
  # -- Image to use for the Karpenter controller
  image: "public.ecr.aws/karpenter/controller:v0.5.3@sha256:ddd24d756cb324cf8f91f2274621646f83d6121ed6856312ca672a5f78c57174"
  # -- Cluster name
  clusterName: "features"
  # -- Cluster endpoint
  clusterEndpoint: "https://***.gr7.eu-west-1.eks.amazonaws.com"
  resources:
    requests:
      cpu: 1
      memory: 1Gi
    limits:
      cpu: 1
      memory: 1Gi
  replicas: 1
webhook:
  # -- List of environment items to add to the webhook
  env: []
  # -- Node selectors to schedule to nodes with labels.
  nodeSelector: {}
  # -- Tolerations to schedule to nodes with taints.
  tolerations: []
  # -- Affinity rules for scheduling
  affinity: {}
  # -- Image to use for the webhook
  image: "public.ecr.aws/karpenter/webhook:v0.5.3@sha256:19a1e1f2c8ec6ece1b170584dd6251d2e00f1676503a65d1433f45f46e330ddf"
  # -- Set to true if using custom CNI on EKS
  hostNetwork: true
  port: 8443
  resources:
    limits:
      cpu: 200m
      memory: 100Mi
    requests:
      cpu: 200m
      memory: 100Mi
  replicas: 1

Can you connect using aws ssm start-session --target i-0c8ddaf2ca6b7427f and then check the kubelet logs, mentioned above?

➜  ~ aws ssm start-session --target i-09986a80810518f03 --profile dev

Starting session with SessionId<EMAIL_ADDRESS>sh-4.2$
sh-4.2$
sh-4.2$ sudo journalctl -u kubelet
-- No entries --

@ellistarn No logs visible :(
Did you happen to view the details I added in the last comment? Are all my configurations looks okay to you?

Your instance profile needs the 4 policies:
      ManagedPolicyArns:
        - !Sub "arn:${AWS::Partition}:iam::aws:policy/AmazonEKS_CNI_Policy"
        - !Sub "arn:${AWS::Partition}:iam::aws:policy/AmazonEKSWorkerNodePolicy"
        - !Sub "arn:${AWS::Partition}:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
        - !Sub "arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore"
        - ```

Thanks, added those policies. In my opinion it's not clear enough in the documentation, I'd suggest en edit.
New nodes is still in unknown state, however I was able to get some Kubelet logs:
Jan 27 20:03:42 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: I0127 20:03:42.631981    3183 csi_plugin.go:1024] Failed to contact API server when waiting for CSINode publishing: Unauthorized
Jan 27 20:03:42 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:42.645985    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:42 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:42.747172    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:42 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:42.847984    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:42 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:42.945556    3183 eviction_manager.go:255] "Eviction manager: failed to get summary stats" err="failed to get node info: node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:42 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:42.948822    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:42 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:42.980458    3183 kubelet.go:2214] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.049754    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.150725    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.251498    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.352811    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.453649    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.553948    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: I0127 20:03:43.632164    3183 csi_plugin.go:1024] Failed to contact API server when waiting for CSINode publishing: Unauthorized
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.655409    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.756325    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.857267    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:43 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:43.958160    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:44 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:44.059166    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:44 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:44.160706    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:44 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:44.262109    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:44 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:44.363362    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:44 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:44.464479    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"
Jan 27 20:03:44 ip-172-31-9-245.eu-west-1.compute.internal kubelet[3183]: E0127 20:03:44.565171    3183 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-245.eu-west-1.compute.internal\" not found"

@ellistarn  Any advise?

@Izvi-digibank
from your logs: Failed to contact API server when waiting for CSINode publishing: Unauthorized
I do not see
set {
    name  = "aws.defaultInstanceProfile"
    value = aws_iam_instance_profile.karpenter.name
  }

(check the docs https://karpenter.sh/v0.5.6/getting-started-with-terraform/#install-karpenter-helm-chart)

@alekc  I'm using v0.5.3 https://karpenter.sh/v0.5.3/getting-started-with-terraform/
There's no request for this parameter in this version's documentation.

Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: I0127 21:23:56.669754    3130 kubelet_node_status.go:429] "Adding node label from cloud provider" labelKey="failure-domain.beta.kubernetes.io/region" labelValue="eu-west-1"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: I0127 21:23:56.669767    3130 kubelet_node_status.go:431] "Adding node label from cloud provider" labelKey="topology.kubernetes.io/region" labelValue="eu-west-1"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: I0127 21:23:56.671629    3130 kubelet_node_status.go:554] "Recording event message for node" node="ip-172-31-9-51.eu-west-1.compute.internal" event="NodeHasSufficientMemory"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: I0127 21:23:56.672004    3130 kubelet_node_status.go:554] "Recording event message for node" node="ip-172-31-9-51.eu-west-1.compute.internal" event="NodeHasNoDiskPressure"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: I0127 21:23:56.672287    3130 kubelet_node_status.go:554] "Recording event message for node" node="ip-172-31-9-51.eu-west-1.compute.internal" event="NodeHasSufficientPID"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: I0127 21:23:56.672558    3130 kubelet_node_status.go:71] "Attempting to register node" node="ip-172-31-9-51.eu-west-1.compute.internal"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:56.696006    3130 kubelet_node_status.go:93] "Unable to register node with API server" err="Unauthorized" node="ip-172-31-9-51.eu-west-1.compute.internal"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:56.739358    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:56.839931    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:56.941040    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.041166    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.141854    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.242647    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.343159    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.444323    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: I0127 21:23:57.488624    3130 csi_plugin.go:1024] Failed to contact API server when waiting for CSINode publishing: Unauthorized
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.545135    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.645959    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.747037    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.848239    3130 kubelet.go:2294] "Error getting node" err="node \"ip-172-31-9-51.eu-west-1.compute.internal\" not found"
Jan 27 21:23:57 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:57.855915    3130 kubelet.go:2214] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized"

Got some new logs from Kubelet.

Jan 27 21:23:56 ip-172-31-9-51.eu-west-1.compute.internal kubelet[3130]: E0127 21:23:56.696006    3130 kubelet_node_status.go:93] "Unable to register node with API server" err="Unauthorized" node="ip-172-31-9-51.eu-west-1.compute.internal"

Your node can't communicate with the API Server.
Here's an example of my aws-auth configmap
k get configmaps -n kube-system aws-auth -oyaml
apiVersion: v1
data:
  mapRoles: |
    - groups:
      - system:bootstrappers
      - system:nodes
      rolearn: arn:aws:iam::767520670908:role/KarpenterNodeRole-etarn
      username: system:node:{{EC2PrivateDNSName}}
  mapUsers: |
    []
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system

In the future, I highly recommend following or directly translating one of the guides.

Your'e correct, apparently my aws-auth has not got updated. closing this thread. Thanks.

@ellistarn @felix-zhe-huang  I encounter the same error, could you please take a look? https://github.com/aws/karpenter/issues/1683

@Izvi-digibank check your subnet selectors. I had a similar issue, it was caused by nodes binding to public subnet instead of private.

That was my problem too. Removing the discovery tag from public subnets and then deleting the stuck nodeclaim and instance rapidly resolved the issue.


Create asu

Please add Arizona State University
www.asu.edu
https://degrees.apps.asu.edu/bachelors/major-list/interest-area/06
https://www.asu.edu/about/contact

@jelugo87 lib/domains/edu/asu: this request has an incorrect file path format, please ensure that you are familiar with     this repository rules located at the bottom of this page and change     your request accordingly. If you don't know how to change request, close it and open a new one.     If you are not able to make the pull request according the instructions, please send us an email to<EMAIL_ADDRESS>Please mention this request URL in the message.

@jelugo87 I have to close this request because: 1) It is in an incorrect format. 2) The domain asu.edu has been abused severely, and it cannot be added to the trusted list.
Please apply for free educational license with an official document which proves that you are a student. You can do it using "OFFICIAL DOCUMENT" tab at https://www.jetbrains.com/shop/eform/students.
Thank you for the understanding!


Same image encoder for RNN and Actor/Critic shortcut?

According to Figure 7 of the paper, separate modules are used to create observation embeddings for the RNN and shortcut observations for the actor/critic MLP head respectively.
However, in the code it appears that the same image encoder is used to create image embeddings for the RNN and MLP (e.g. the same self.image_encoder is used in get_obs_embedding() and get_shortcut_obs_embedding() here).
Was there any reason for this design choice?

Hi, this is a minor detail. In addition, I think using shortcuts or not won't make a difference to performance. Feel free to make your own design.


[CARBONDATA-1326]- Findbugs Fixes

Find-bugs Fixes

Can one of the admins verify this patch?

Can one of the admins verify this patch?

LGTM

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

retest this please

Can one of the admins verify this patch?


Feature/logger

Logger
Code clean up
Fixed failing tests
Fixed lint issues

Nice! Thx for the logger.

Nice! Thx for the logger.

I have solved the issues

@darya-gurinovich I have added part of your logic, but I abstracted it to be compatible with older iOS versions as well

@lemonandlime @darya-gurinovich @AndreasShortcut @sheikhbayazid
to use the logger, I recommend the following:

In your IEnvironmentConfig you can define the verbosity accordingly.
Inject your logger in your AppConfig
When you want to use the logger just go for: @LazyInject private var logger: Loggable

@lemonandlime @darya-gurinovich @AndreasShortcut @sheikhbayazid
to use the logger, I recommend the following:

In your IEnvironmentConfig you can define the verbosity accordingly.
Inject your logger in your AppConfig
When you want to use the logger just go for: @LazyInject private var logger: Loggable

Thanks! What should we do if we want to use different levels of the verbosity?

@lemonandlime @darya-gurinovich @AndreasShortcut @sheikhbayazid
to use the logger, I recommend the following:

In your IEnvironmentConfig you can define the verbosity accordingly.
Inject your logger in your AppConfig
When you want to use the logger just go for: @LazyInject private var logger: Loggable

Thanks! What should we do if we want to use different levels of the verbosity?

I have improved the API: https://github.com/shortcut/shortcut-foundation-ios/pull/21/commits/f9fac01c5d0a5ebbdbf2259323527ffae6496e0e
// utilizing the global defined verbosity
logger.log(message: "some message")

// utilizing a defined verbosity for this particular log
logger.log(message: "some critical message", verbosity: .critical)

We could create a global function just like print() so it's very compact.
Also I think we could play around with build schemes to set the log level verbosity
Great this is a really nice feature

We could create a global function just like print() so it's very compact.
Also I think we could play around with build schemes to set the log level verbosity
Great this is a really nice feature

Yes, we can also create a global function. Feel free to do it if you want to.


Slide map progress bar marks are blurry

As the title says, and visible in the screenshot below: some of the marks indicating slide changes inside the progress bar are a little blurry, I am not sure if that is intentional though. If not, it would be great if that could be fixed 🙏

It seems like a <canvas> is used for drawing these. That canvas is likely just created with a wrong resolution (i.e. too low). You also have to consider the UI scaling factor when creating the canvas.
I would probably suggest to get rid of the canvas altogether and simply use <div>s for these bars. I don't see why a canvas is required/better here.

Slide marks are implemented with a playback bar plugin. This type of plugin was originally created to draw anything on the playback bar, such as a hot map. This is the reason to use a canvas instead of DOM elements.
In version 2.x of paella, which I have been working on for a little over a year now, I have removed this type of plugins because no one has developed any apart from the slide marks, so I see no need to keep them. In version 2, this feature is integrated in the core and the tags are placed using DOM elements.
To solve this problem without having to upgrade to version 2 (which, by the way, I don't know when it will be released), I have modified the API of this type of plugins to support a scaling factor. The new API is in version 1.50.0 of paella-core, and this very morning I am going to update the slide mark plugin to use it.


Fix the paths of static ICU libraries

The new path is the right path on at least Ubuntu Precise
(http://packages.ubuntu.com/precise/amd64/libicu-dev/filelist) and Arch Linux
(https://aur.archlinux.org/packages/icu-staticlibs/).

The old path is correct for Trusty and Yakkety though.  What we should probably do for ICU is to use pkg-config which uses dynamic linking but will work everywhere.  When I build executables for the media tree, I'll just use user.mk to statically link as much as possible to try and increase the chances of those executables working.

It should work now (via pkg-config)


README.md: use CommBank/chronos for build status

Apologies, I meant to raise this against CommBank:master !!


Add shapely

Similar to #603:  copying from: conda-forge and pyodide

I realize there was already a PR attempt adding shapely and geos in https://github.com/emscripten-forge/recipes/pull/131
Maybe you could take some inspiration from there? Probably you can ignore the changes in .github/workflows/build_recipes.yaml and conda_build_config.yml there.
Also it may be a good idea to add both recipes at the same time, that way you can test that shapely actually works with the geos you are building.

Oh man! I think I looked for issues but not PRs :facepalm: let me check. There was a big change in shapely 2.0 (released December 2022) that made it easier to build: https://shapely.readthedocs.io/en/stable/release/2.x.html#refactor-of-the-internals so the build process might be significantly different than it was when that PR was opened.

might work with https://github.com/emscripten-forge/recipes/pull/609


Align recipe conda policy

Checklist

[x ] Used a fork of the feedstock to propose changes
[ x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ x] Ensured the license file is being packaged.

Should close issue #23
The generic BLAS vendor is selected.

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

I don't see the conda smity re-render commit (maybe one wasn't needed), but running here in case.
@conda-forge-admin, please rerender

This looks good to me. @repagh Are you ok with moving the readme instructions to the Slycot repo?

yes, fine
On Sun, 31 May 2020 at 20:08, Jason K. Moore<EMAIL_ADDRESS>wrote:

This looks good to me. @repagh https://github.com/repagh Are you ok
with moving the readme instructions to the Slycot repo?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/conda-forge/slycot-feedstock/pull/28#issuecomment-636506824,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAVKIDNN5QMDTVNX3VWCUWLRUKMJ5ANCNFSM4NPGW3HA
.

--
René van Paassen        | o/|<EMAIL_ADDRESS><[____-----<               t: +31 15 2628685
|  o'                   mobile: +31 6 39846891


fix: more tests

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+3.0%) to 77.139%

Totals

Change from base Build<PHONE_NUMBER>:
3.0%

Covered Lines:
461

Relevant Lines:
611

💛  - Coveralls


updated assertion_filter_cond by adding gsub() argument to line 520 s…

…o that the error message returned for arg_name returns inputs wrapped in functionsby themselves without the function. So instead of expr(filter_add) in the error message its filter_add
Thank you for your Pull Request! We have developed this task checklist from the Development Process Guide to help with the final steps of the process. Completing the below tasks helps to ensure our reviewers can maximize their time on your code as well as making sure the admiral codebase remains robust and consistent.
Please check off each taskbox as an acknowledgment that you completed the task or check off that it is not relevant to your Pull Request. This checklist is part of the Github Action workflows and the Pull Request will not be merged into the main branch until you have checked off each task.

[x] Place Closes #<insert_issue_number> into the beginning of your Pull Request Title (Use Edit button in top-right if you need to update)
[x] Code is formatted according to the tidyverse style guide. Run styler::style_file() to style R and Rmd files
[x] Updated relevant unit tests or have written new unit tests, which should consider realistic data scenarios and edge cases, e.g. empty datasets, errors, boundary cases etc. - See Unit Test Guide
[x] If you removed/replaced any function and/or function parameters, did you fully follow the deprecation guidance?
[x] Update to all relevant roxygen headers and examples, including keywords and families. Refer to the categorization of functions to tag appropriate keyword/family.
[x] Run devtools::document() so all .Rd files in the man folder and the NAMESPACE file in the project root are updated appropriately
[x] Address any updates needed for vignettes and/or templates
[x] Update NEWS.md under the header # admiral (development version) if the changes pertain to a user-facing function (i.e. it has an @export tag) or documentation aimed at users (rather than developers)
[x] Build admiral site pkgdown::build_site() and check that all affected examples are displayed correctly and that all new functions occur on the "Reference" page.
[x] Address or fix all lintr warnings and errors - lintr::lint_package()
[x] Run R CMD check locally and address all errors and warnings - devtools::check()
[x] Link the issue in the Development Section on the right hand side.
[x] Address all merge conflicts and resolve appropriately
[x] Pat yourself on the back for a job well done! Much love to your accomplishment!

@bms63 Hey Ben, I'm getting some errors about dependencies when doing the checks. It looks like its on Github's end but want to make sure I'm not missing anything.

@cicdguy we have a bunch of actions failing cause of staged dependencies.  Did we need to update something?

Can we try removing admiral.test from https://github.com/pharmaverse/admiralvaccine/blob/main/staged_dependencies.yaml?

this is admiraldev?

@cicdguy Yea sure, go ahead.

@ccidguy @bms63 Just checking in if its safe to try another push? Also, if its possible to use rlang::expr_text() in place of rlang:call_args() which would give an error back for the variable assigned to filter_add, e.g. "Argument 'my_expression' should be a filter condition". I think I can make some changes that aren't gsub that could return the same thing. It just wouldn't use 'filter_add'

@bundfussr can you also weigh in here please

@bundfussr can you also weigh in here please

From my side it is fine to use gsub(). However, I wonder if the condition for modifying arg_name should be more restrictive, e.g, arg_name <- gsub("^enexpr\\((\\w+)\\)$", "\\1", arg_name).
We should do the same update for the other assertions which are usually called with arg = enexpr(arg), i.e., assert_symbol() and assert_expr().
And the new behavior needs to be documented.

Hi All! I was thinking about this PR last night, and wanted to share two thoughts:

If we go the route of using gsub(), that should go into the default arg_name argument value, rather than into the body of the function. Then if a user ever wants to override the arg_name default, the passed value will not be subject to additional parsing.
Speaking of the arg_name argument: My preference here is now to just do nothing. If we are calling this function AND changing the argument as it's passed to the function (e.g. wrapping the true argument name in enexpr()), we can just specify the arg_name value. Then this function remains in alignment with every other checking function. For example, assert_filter_cond(exprs(filter_add), arg_name = 'filter_add').

Hi All! I was thinking about this PR last night, and wanted to share two thoughts:

If we go the route of using gsub(), that should go into the default arg_name argument value, rather than into the body of the function. Then if a user ever wants to override the arg_name default, the passed value will not be subject to additional parsing.
Speaking of the arg_name argument: My preference here is now to just do nothing. If we are calling this function AND changing the argument as it's passed to the function (e.g. wrapping the true argument name in enexpr()), we can just specify the arg_name value. Then this function remains in alignment with every other checking function. For example, assert_filter_cond(exprs(filter_add), arg_name = 'filter_add').

Putting the gsub() call into the default value is a good idea. It makes the behavior of the function much clearer.
I would agree to the second point if admiraldev were a general package for argument checking. However, it is intended to support admiral packages. In admiral we have the convention that values don't need to be quoted for arguments which expect a single symbol or expression. I.e., if we do nothing, the default value for arg_name in assert_filter_cond() and assert_symbol() can never be used. Therefore I would prefer setting arg_name = gsub("^enexpr\\((\\w+)\\)$", "\\1", rlang::caller_arg(arg)) as default value in assert_filter_cond(), assert_symbol() and assert_expr().

Hey @bundfussr I just wanna check before I push. The arg_name changes are only required for those three assert functions? I just saw a similar example in the assertions script, like 'var_name' in 'assert_date_var'.

Hey @bundfussr I just wanna check before I push. The arg_name changes are only required for those three assert functions? I just saw a similar example in the assertions script, like 'var_name' in 'assert_date_var'.

I think we don't need to change assert_date_var().

@ProfessorP-beep are you on pharmaverse slack?  I wanted to ask you a few questions.

Hey @bms63, sorry since I'm outside the working group list of email domains it won't let me join and says I need a personal invite. I messaged my email on LinkedIn but can post it here as well.


geode doesn't work

Geode Issue

[X] I confirm that this bug is NOT related to a mod but directly to Geode Loader itself.

Platform
Windows
SDK commit
No response
Geode Version
2.0.0 beta 27
Mods Installed
No response
Expected Behavior
I expected the geode to work. for example a new button in the menu
Actual Behavior
Geode doesn't work as if I didn't download it

Steps to Reproduce
I reinstalled Windows, it worked before
Additional Information
Perhaps the geode does not work because it does not have the Windows Runtime it needs. As I said, I reinstalled Windows. Before downloading the Geometry dash, (not geode), it gave an error saying that there was no file, so I downloaded it from the Internet. Perhaps this also prevents it from working

Turi ip ip ip

yes

Revert.
https://www.makeuseof.com/how-to-downgrade-steam-games/


improve updating

update views
add sorting for nslayoutconstraint
update only new constraints
prevent animation of view for newly added to superview

https://user-images.githubusercontent.com/3011832/155862197-e0c88f54-99d9-4311-9a27-cb1251e9fd23.mp4

@gmlwhdtjd 기능 추가하느라 코드가 영 맘에 안드네요. ㅋㅋ


Network contributor

The article mentions this:

The user who creates the workspace must be assigned the Network contributor role or a custom role that’s assigned the Microsoft.Network/virtualNetworks/subnets/join/action action.

Against which resource? Against the whole VNet? Or only against the subnets (if those are pre-created)?
kind regards
-j

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

ID: 93bd5c16-e0ec-5064-9bc0-1c527c328a7e
Version Independent ID: 5342d01e-c2da-f7a8-d22e-86995a17af79
Content: Deploy Azure Databricks in your Azure virtual network (VNet injection) - Azure Databricks - Workspace
Content Source: databricks/administration-guide/cloud-configurations/azure/vnet-inject.md
Service: azure-databricks
GitHub Login: @mssaperla
Microsoft Alias: saperla

Thanks for the feedback and bringing this to our notice . At this time we are reviewing the feedback and will update the document as appropriate .

Thank you for your feedback. This has been assigned to the content owner, @mssaperla , and will be updated as appropriate.

Thanks for looking into it @MartinJaffer-MSFT and @mssaperla

Thanks for your dedication to our documentation. Unfortunately, we have been unable to address your issue and apologize for the delayed response. We are closing this issue, but if you feel that it's still a concern, please let us know directly at<EMAIL_ADDRESS>#please-close

#please-close


Re-allow playing AnimatedSprite2D without frames

Fixes #47578, partial revert of #47064.

Cherry-picked for 3.3.


Minor touchups

Most importantly, I fixed how errors are handled. You should almost never call .unwrap() in a library function. This will create some unexpected surprises when someone uses this library and their program crashes!
Cleaned up some of the documentation strings.
Cleaned up some of the edition 2018 styling since this is an edition 2021 project.
Use format!() for string contatentation to make the project more readable.
Introduce CI to run Cargo Clippy and Format, and the third party audit and check for unused dependencies.
Relax the dependency versions. Forcing some version like 1.0.123 isn't important and could make for duplicated dependencies in downstream projects. Most Rust projects should follow semantic versioning, so 1.0.x should be fine.

Great project and I look forward to using this in my MalwareDB project!

Hi @rjzak,
Thanks for your contribution ! :100:


Backport CVEs to 1.3.

Signed-off-by: Filip Drobnjakovic<EMAIL_ADDRESS>Is your feature request related to a problem? Please provide an existing Issue # , or describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you are proposing
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #434 (bdb183e) into 1.3 (1bcd4bc) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head bdb183e differs from pull request most recent head 7080130. Consider uploading reports for the commit 7080130 to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff            @@
##                1.3     #434   +/-   ##
=========================================
  Coverage     72.05%   72.05%
- Complexity      355      356    +1
=========================================
  Files            44       44
  Lines          2519     2519
  Branches        170      169    -1
=========================================
  Hits           1815     1815
  Misses          597      597
  Partials        107      107

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Update Chinese localization files and fixed some other details.

Initially completed Chinese translation files.
Fixed some translation error in "foods.json".
Fixed the layout of Solver page.
Fixed some missing translation keys.

Thanks for your submission! Could you verify that the changes to foods.json are the same as in this PR: https://github.com/doxxx/lodestone-recipe-db-scraper/pull/18/files

I've compared them. It's the same.


[Battery Optimizer] Discharge Battery

Extension
https://www.raycast.com/Qetesh/battery-optimizer
Description
It would be great to have a discharge option for the battery. That way, if you know you'll always be plugged in—for instance, during the weekend—the battery could discharge to, let's say, 20%, and the MacBook could run directly from the power supply.
Who will benefit from this feature?
the battery would not be used for that time.
Anything else?
No response

Thank you for the suggestion! As this project is based on bclm with a focus on simplicity, a discharge feature isn’t feasible. Also, note that bclm doesn’t support macOS versions above 15.0.

@raycastbot close as not planned


Updates README and adds an example for volumeClaim testing usage

What does this PR do?

Adds a volumeClaim example: config/samples/k6_v1alpha1_k6_with_volumeClaim.yaml.
Updates the readme with a more thorough explanation on how to use volumeClaims and also adds a directory example.

Why?

After taking some time debugging and experimenting with running k6 tests using volumeClaims, I believe having more concrete examples and explanations like this would help folks working with it in the future.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

how to create a volume claim pls explain

@patenvy1234, creating volumes and volume claims is part of standard Kubernetes docs:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolume
There're also a lot of third-party guides and howto's in the network about it.

I have already created volume claim now how store the test.js inside it ? and what should be the mounting location


Gertrude's cat missing step

After feeding the cat in Gertrude's Cat the milk and sardine, you have to try to pick it up before you can actually find the kittens, if you don't do this all the crates will just say that you find nothing interesting, even if the meow was there a second before

Just tested this now, you don't need to try and pick up the cat.


[Snyk] Security upgrade python from 3.7 to 3.13.0rc2

Snyk has created this PR to fix 2 vulnerabilities in the dockerfile dependencies of this project.
Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.
Snyk changed the following file(s):

virtualization/Docker/Dockerfile.dev

We recommend upgrading to python:3.13.0rc2, as this image has only 185 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.
Vulnerabilities that will be fixed with an upgrade:

Issue
Score

Out-of-bounds Write SNYK-DEBIAN12-GLIBC-5927132
  823

Out-of-bounds Write SNYK-DEBIAN12-GLIBC-5927132
  823

Out-of-bounds Write SNYK-DEBIAN12-GLIBC-5927132
  823

Out-of-bounds Write SNYK-DEBIAN12-GLIBC-5927132
  823

CVE-2023-44487 SNYK-DEBIAN12-NGHTTP2-5953379
  561

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

🎉 Snyk hasn't found any issues so far.
✅ code/snyk check is completed. No issues were found. (View Details)


Output

Hi,
Is it possible to get an output of changes and errors only?
Thanks!
ido

Nope! But since you get the json or yaml output, you can parse it afterwards.
In builds after 1.7.1 for example, you can select "none" output so that nothing is shown by default. You could then parse the SALTBUILDOUTPUT envvar and display the bits you wish.

SALTBUILDOUTPUT envvar is not working for me, I have opened an issue about this.
But if it will be fixed, do you have something that I can use?
I.E, if you already parse the SALTBUILDOUTPUT envvar, I will appreciate if you can share it.
Thanks!


Scale storage decouple NSD's and filesystem definition and creation

Scale storage decouple NSD's and filesystem definition and creation. This will allow us to create NSD's without defining filesystem as well.
Signed-off-by: Rajan Mishra<EMAIL_ADDRESS>Now we have 2 separate entity for NSD's and filesystem i.e
scale_disks  ===> NDS's.
scale_filesystem ===> Filesystem.

PLAY RECAP ****************************************************************************************************************************
[root@test-vm1 ibm-spectrum-scale-install-infra]# mmlsnsd
 File system  Disk name    NSD servers
------------------------------------------------------------------------------
 gpfs     nsd4     test-vm1
 (free disk)  nsd6      test-vm1

"scale_disks": [
    {
      "nsd": "nsd4",
      "device": "/dev/sdc",
      "filesystem": "gpfs",
      "servers": "test-vm1"
    },
    {
      "nsd": "nsd6",
      "device": "/dev/sde",
      "servers": "test-vm1"
    }
  ],
  "scale_filesystem": [
    {
      "filesystem": "gpfs",
      "defaultMountPoint": "/ibm/gpfs",
      "scale_fal_enable": false
    }
  ]

As we discuss on our call , looks good to me !


CORE-3200: Select AddColumnGeneratorSQLite only for SQLite

Probably you are interested in this, the workaround is SqlGeneratorFactory.getInstance().unregister(AddColumnGeneratorSQLite.class);. 😄

I used this workaround here: https://github.com/dropwizard/dropwizard/pull/2325

Thanks, I'll release 3.6.1 with the fix very soon


max-width classes not working

installed windicss plugin on a fresh install of gridsome. i am trying to set max-width of the page layout container mx-auto max-w-screen-lg not working. but width classes are working, if i use w-lg instead of max-w-screen-lg or max-w-lg its working.

Hey @deeplinked
Thanks for the issue. I don't think you should use container with max-screen-lg? Seems like the container takes priority


Inconsitstent button behaviour for tray icons

Sometimes all tray icons react to left button clicks, sometimes some of them to only to a right click and some of them only to a left click. What's this weird behaviour and how do I fix it ?

Some tray icons are not a menu
Fixed with d2d9db23b52bfa88a84944a6c97890c373f5796f


ER: basic TCO

Basic TCO support would substantially improve gojq's speed and memory efficiency for cetain jq programs.
This note first considers a simple and direct test of recursion limits (see [*Recursion] below), and then a more practical test involving an optimized form of walk and a well-known large JSON file
https://github.com/ryanwholey/jeopardy_bot/blob/master/JEOPARDY_QUESTIONS1.json
[*Recursion]
for jq in gojq ; do
    echo $jq ::
    /usr/bin/time -lp $jq --argjson max 100000000 -n '
    def zero_arity:
      if . == $max then "completed \($max)"
      else if (. % 100000 == 0) then . else empty end, ((.+1)| zero_arity)
      end;
    1 | zero_arity'
done

In abbreviated form, the output for jq is:
"completed 100000000"
user        90.48
sys          0.24
   1880064  maximum resident set size

For gojq, the program fails to complete in a reasonable amount of time. In fact, it takes many hours to reach 600,000.
Setting max to 100,000 gives these performance indicators:
user        78.83
sys          0.65
47173632  maximum resident set size
[*walk]
#!/bin/bash

for jq in jq gojq ; do
    echo $jq
  /usr/bin/time -lp $jq '
  def walk(f):
  def w:
    if type == "object"
    then . as $in
    | reduce keys[] as $key
        ( {}; . + { ($key):  ($in[$key] | w) } ) | f
    elif type == "array" then map( w ) | f
    else f
    end;
  w;

  walk(if type == "string" then 0 else 1 end)
  ' jeopardy.json > /dev/null

done

Results:
jq
user         6.44
sys          0.11
 226742272  maximum resident set size

gojq
user         9.99
sys          0.85
1861201920  maximum resident set size

Current TCO implementation of gojq limits the optimization to functions with no local variables. There might be something we can do here.
https://github.com/itchyny/gojq/blob/244f9f7c71b2ad0e151f63fc9aaf781f7949e18b/compiler.go#L1393

I fixed this, thanks for reporting.

Despite this enhancement, gojq still seems to consume far more memory than one would expect.  Compare:
./gojq --version
gojq 0.12.4 (rev: 45af604/go1.16)

/usr/bin/time -lp ./gojq -n 'def f: . as $x | if . == 10000000 then . else (.+1|f) end; 0|f'
10000000
user         3.89
sys          0.08
  10539008  maximum resident set size

$ /usr/bin/time -lp jq -n 'def f: . as $x | if . == 10000000 then . else (.+1|f) end; 0|f'
10000000
user         4.95
sys          0.01
   1859584  maximum resident set size

Is that what you'd expect?

Reusing the local variable will reduce the linear growth of memory consumption (which is important in ordinary languages) but it cannot always be applied in jq. For example, def f: . as $x | $x, (if $x < 1000000 then $x + 1 | f else empty end), $x; f cannot reuse the stack frame. So the problem here is I need to implement some logic to judge the recursive call is at the last or not.

Oops, 86ee519eed36b91d300d830347d5b22d39d1a26d breaks the behavior of the query in my comment...

The optimization of jq simply changes the return address to avoid the quadratic growth of instructions, and does not care the stack frame growth. On the other hand, the optimization of gojq replaces the call instruction to jump. This is why I limited to functions with no variables, like _while and _until. This is large difference than I thought and rushing to extending the optimization targets causes various queries fail to run correctly. I need more more time to answer to how to handle this.

Since this issue was closed based on an update that has since been reverted,
it would be helpful at least for some people if either the issue was reopened, or if
some notes about TCO optimization were added to the README page.

I improved the optimization algorithm.

Yes, a huge improvement, but I was surprised that the zero_arity program still requires more than 4,000 times more memory than jq.  This is a bit surprising to me as the recursive function has no local variables or structures at all.
(Given that Go is supposed to be as fast as C for comparable programs, the CPU time difference is also a bit surprising, especially as gojq CPU times are are often less than for jq when memory reclamation is not an issue.)
"completed 100000000"
user       159.04
sys         38.90
7845294080  maximum resident set size

jq ::
"completed 100000000"
user        87.91
sys          0.66
   1859584  maximum resident set size

The function is already optimized by jump instruction to avoid stack frame allocation. However, there is a fork instruction, and thus it makes the stack still growing. Not sure how jq handles this situation but worth investigating.

To summarize, one problem was return address, resolved by the opcallrec instruction implemented by 97658f328ad53a03bb86b8c815e503ff7edf45a9 (which also introduced a broken fork analysis later reverted). Another problem, which I noticed today, was variable lookup algorithm (especially for variables outside the recursive functions), resolved by 932c65e18c94c5903bfd18da4be80fa0320c20f5. Tail call using opjump instruction is still limited to functions with no local variables (user defined or compiler emitted) just as it is since v0.4.0 (I implemented this optimization for while and until).

Hello, sorry for commenting on an old issues. I just wanted to get some clarifications about current state of TCO in gojq. If i understand it correctly gojq currently can in some cases optimize stack use from quadratic to linear? but constant is not possible?
If that is the case i'm willing to spend some time working making it constant if that is possible or very hard? in my case i would like to make range/*,  repeat/1 and def loop(f): def _r: f | _r; _r; loop(.+1) (pass state to next iteration) constant. Any pointers would be greatly appreciated.

Tail call using opjump consumes constant number of stacks so while, until, range, repeat run in constant memory. This is as it is since v0.4.0.

Ok that is good to hear. Maybe i'm doing something wrong or there is some bug. For example if i try this:
$ go run cmd/gojq/main.go -n 'range(100000000) | empty'

I see that the process keeps increasing in memory usage (RSS). I would have expected it increase and then decrease from time to time when the GC runs.
I did some more digging after adding basic pprof code to cli.go (it dumps memory profile if $MEMPROFILE is set):
$ go build -o gojq cmd/gojq/main.go && \
MEMPROFILE=gojq.mem.prof ./gojq -n 'range(10000000) | empty' && \
go tool pprof -http :5555 gojq gojq.mem.prof

In pprof i see this (sample "inuse_space"):

If i print env.offset it seems to keep increasing.
Sorry for my probably very basic understand of this but i want i learn and help if possible. Really appreciate that you are taking your time to help.

Okay, values grows so range does not run in constant memory.

That is true, but do you think that is the main part of the memory increase?
For example env.offset seems to be constantly 4 for recurse(1) but keeps increasing for range(1000000)

Interesting, env.offset is constant for recurse(0) but increases for recurse(.+0)

Here's possible solution to suppress the values growth, but needs more investigation not to introduce different bugs.
diff --git a/execute.go b/execute.go
index 6bba740..afb0cbe 100644
--- a/execute.go
+++ b/execute.go
@@ -228,7 +228,11 @@ loop:
 			if backtrack {
 				break loop
 			}
+			f := env.scopes.index > env.scopes.limit
 			s := env.scopes.pop().(scope)
+			if f {
+				env.offset = s.offset
+			}
 			pc, env.scopes.index = s.pc, s.saveindex
 			if env.scopes.empty() {
 				return env.pop(), true

Thanks, i tried the patch and it seems to have fixed most of the memory increase issue. The allocations done by make in case opscope: looks reasonable now. Still there seems to be quite a lot of allocations done by *stack.push() that seems to not get GC:ed.
gojq master with offset patch and pprof (https://gist.github.com/wader/87b034dbc986b4d50c8ad5f41c39d2b7 and a defer maybeProfile()() in *cli.run())
go build -o gojq cmd/gojq/main.go && MEMPROFILE=gojq.mem.prof ./gojq -n 'range(20000000) | empty' && go tool pprof -http :5555 gojq gojq.mem.prof

Nice, thanks! the script where i originally noticed this seems to still increase in memory usage. I managed to minimize it down to this: recurse(def f($a): 1; f(1)). Without argument it is constant but with argument it's is increasing. Is that expected with currently TCO implementation?

How about now? The problem is not in tail call optimization, anymore. Maybe I need to stop somewhere, the code complexity is growing. I'll cut a new tag soon.

Not much difference. I think the issue is the env.offset still, with recurse(def f($a): 1; f(1)) it keeps increasing trigger the if env.offset > len(env.values) { ... make(...) ... } allocation i think. But i understand it gets complicated, i'm trying myself to wrap my head around the current TCO code so that i help, making some progress. It would be nice if recurse/1, repeat/1 and while/2 (and until/2?) could be constant in memory, if i understand the jq documentation that is what jq can TCO?

jq -n 'recurse(def f($a): 1; f(1))' seems to use constant memory, RSS is constant. TCO requirement for jq seems to be call must be last and have no arguments https://github.com/stedolan/jq/issues/437

I'm trying to understand the code related to opscope/opret and the various stacks. I did some tests to see how env.offset changes during calls and noticed this:
How come that after the first f(1) call env.offset it not back to 3 again? i'm failing to understand the conditions in popscope() for when offset is restored.
$ GOJQ_DEBUG=1 go run -tags debug cmd/gojq/main.go -n 'def f($v): 1; f(1) | f(1)'
	0	scope                    [0,3,0]
	1	store                    [0,0]	## $ARGS
	2	jump                     13
	3	scope                    [1,3,1]	## f
	4	store                    [1,0]
	5	store                    [1,1]	## v
	6	load                     [1,0]
	7	load                     [1,1]
	8	callpc                   null
	9	store                    [1,2]	## $v
	10	load                     [1,0]
	11	const                    1
	12	ret                      null	## end of f
	13	store                    [0,1]
	14	jump                     18
	15	scope                    [2,0,0]	## lambda:15
	16	const                    1
	17	ret                      null	## end of lambda:15
	18	pushpc                   15
	19	load                     [0,1]
	20	call                     3	## call f
	21	store                    [0,2]
	22	jump                     26
	23	scope                    [3,0,0]	## lambda:23
	24	const                    1
	25	ret                      null	## end of lambda:23
	26	pushpc                   23
	27	load                     [0,2]
	28	call                     3	## call f
	29	ret                      null
	----------------------------------------+
	0	scope                    [0,3,0]	|	null	{"named":{}}
2021/08/31 00:32:54 opscope start: env.offset=0
2021/08/31 00:32:54 opscope end: env.offset=3
	1	store                    [0,0]	|	null	{"named":{}}			## $ARGS
	2	jump                     13	|	null
	13	store                    [0,1]	|	null
	14	jump                     18	|
	18	pushpc                   15	|
	19	load                     [0,1]	|	[15,0]
	20	call                     3	|	[15,0]	null			## call f
	3	scope                    [1,3,1]	|	[15,0]	null			## f
2021/08/31 00:32:54 opscope start: env.offset=3
2021/08/31 00:32:54 opscope end: env.offset=6
	4	store                    [1,0]	|	[15,0]	null
	5	store                    [1,1]	|	[15,0]			## v
	6	load                     [1,0]	|
	7	load                     [1,1]	|	null
	8	callpc                   null	|	null	[15,0]
	15	scope                    [2,0,0]	|	null			## lambda:15
2021/08/31 00:32:54 opscope start: env.offset=6
2021/08/31 00:32:54 opscope end: env.offset=6
	16	const                    1	|	null
	17	ret                      null	|	1			## end of lambda:15
2021/08/31 00:32:54 opret start: env.offset=6
2021/08/31 00:32:54 opret end: env.offset=6
	9	store                    [1,2]	|	1			## $v
	10	load                     [1,0]	|
	11	const                    1	|	null
	12	ret                      null	|	1			## end of f
2021/08/31 00:32:54 opret start: env.offset=6
2021/08/31 00:32:54 opret end: env.offset=6
	21	store                    [0,2]	|	1
	22	jump                     26	|
	26	pushpc                   23	|
	27	load                     [0,2]	|	[23,0]
	28	call                     3	|	[23,0]	1			## call f
	3	scope                    [1,3,1]	|	[23,0]	1			## f
2021/08/31 00:32:54 opscope start: env.offset=6
2021/08/31 00:32:54 opscope end: env.offset=9
	4	store                    [1,0]	|	[23,0]	1
	5	store                    [1,1]	|	[23,0]			## v
	6	load                     [1,0]	|
	7	load                     [1,1]	|	1
	8	callpc                   null	|	1	[23,0]
	23	scope                    [3,0,0]	|	1			## lambda:23
2021/08/31 00:32:54 opscope start: env.offset=9
2021/08/31 00:32:54 opscope end: env.offset=9
	24	const                    1	|	1
	25	ret                      null	|	1			## end of lambda:23
2021/08/31 00:32:54 opret start: env.offset=9
2021/08/31 00:32:54 opret end: env.offset=9
	9	store                    [1,2]	|	1			## $v
	10	load                     [1,0]	|
	11	const                    1	|	1
	12	ret                      null	|	1			## end of f
2021/08/31 00:32:54 opret start: env.offset=9
2021/08/31 00:32:54 opret end: env.offset=9
	29	ret                      null	|	1
2021/08/31 00:32:54 opret start: env.offset=9
2021/08/31 00:32:54 opret end: env.offset=9
1
	29	ret <backtrack>          null	|

I understand the issue exists in calling the filter argument, and it needs be fix some day. It's not an issue of tail call, and I think there's no critical issues on tail call optimization (the zero_arity query runs in comparable duration as jq), but it's OK to continue discussion here. The problem is that updating the stack limit is actually needed on switching to the frame calling argument, so basic strategy should be saving (well, saving to limit is already done, but not used) the stack limit and restoring on appropriate timing. Just restoring the stack limit on opret breaks execution of forks. I don't have clue to the correct solution yet, but hopefully I'll come up with it just like the other fixes for tail call optimization.

👍  I would like to know more about jq:s stack model so while learning more about i will keep this issue in mind. Does jq:s stack implementation differ a lot compared to gojq:s in this case?


Improve handling of current virtual desktop identifier

In order to get current virtual desktop id we are parsing data from registry Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\SessionInfo\\<session-id>\\VirtualDesktops. When system is first started and only one (virtual) desktop exists there is no virtual desktop id in mentioned registry key (value is empty), so we use GUID 00000000-0000-0000-0000-000000000000.
After creating new virtual desktop, both of them get assigned with valid GUID, and 00000000-0000-0000-0000-000000000000 is never used latter on. Having GUID of primary desktop changing from empty (all zeros) was cause of several issues in the past, and handling it is tricky.
Using https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-ivirtualdesktopmanager and method GetWindowDesktopId could help us to bypass this problem and have valid GUID for all desktops at any point.
Modify ZoneWindow class to use this API for it's virtual desktop id, and check all other places handling virtual desktop id if it can be simplified. This might be good opportunity to replace unique identifier (Format: <device-id>_<resolution>_<virtual-desktop-id>) and instead of string use object.

This is an important fix because it solves one of the most annoying problem we had in FZ with regard to Virtual Desktops.


Telsamate 1.23.3

This change updates the version of Teslamate to 1.23.3.  Changes since 1.22.0 include:

Support for Telsa's new CAPTCHA verification
Power added to MQTT topics
New timeline dashboard and other miscellaneous dashboard fixes
Improved translations

Thanks for this. Once the builds complete I'll merge.


Abstract microcontroller type

One that has a grab-bag of common IO types (digital, SPI, I2C, UART, CAN, USB), using #20.
A future feature would allow the IOs to be of all of the above types, though the design model and implementation for that is unclear. For now, there would be an API similar to the current new_io that returns a io of the appropriate type. Main benefit is that it could allow micros to be more interchangeable with abstract types instead of changing HDL.
Related: #15, which is also relevant to this.

Thoughts on architecture of the components involved:
Chip level:

instantiates the footprint
ports more or less directly correlate with the footprint, probably configured as a named vector that correlates with the port name
perhaps also creates peripheral ports (eg, SPI, I2C), but it's unclear how to handle configuration (either pin matrix like LPC1549 or alternative-mapping like STM32) and overlap with GPIO ports (perhaps mutual exclusion functionality? or pin mapping generator?)

peripherals at this level more accurately models the chip and its resources
this better modeling may also make it easier to generate firmware stubs (in the future), without needing things like graph traversal (but this will need to traverse the graph to get names - perhaps using link name with name inference from allocated port names)
otherwise, ports would need to be passively-typed, since analog functionality is often overlapped with digital ports

Application circuit level:

contains required supporting components, like decoupling capacitors
exposes the same interface as the chip above, except for anything only connecting to required components

requires vector export functionality

does not contain optional components, like crystals (if there is an internal frequency source - but exposes the port)

Pin mapping level (IO controller wrapper / adapter):

a very magical block, does a lot of things to present this software-controlled bag-of-IOs abstraction

everything else needed to use the microcontroller is automatically generated - for example, crystals (details below) and programming ports
parameters and refinements can be used to turn these off and control their implementation

can contain mixins (#104) to provide the interface to support different functionality, eg frequency tolerance spec to automatically generate a crystal if needed
contains a very basic pin mapper (greedy assignment - maybe better or configurable in the future), it is expected users will manually specify pin mappings through suggested name on the connected ports and refinements

if the chip or application circuit provides peripheral IOs: there are now overlapping responsibilities, in which case this will need to both handle direct port assignment (even bundles like SPI aren't broken up, they are directly forwarded) AND generating refinements to the chip to control its internal assignment

architecturally, this will need to understand the chip's peripheral assignment architecture, then serialize that configuration, pass it as a parameter, which the chip will deserialize and handle its internal mapping

bitbang case: should bitbang adapters be instantiated here? - probably don't need to worry about it right now

Current state of things:

chips have passive pins (for the analog/digital reason above) - so the modelling is meh
application circuit block also handles pin mapping
the instantiating level must create supporting components like crystals and programming ports - composable but still kinda overhead

Defining a cross-level-of-abstraction pin mapping interface:

requirement: handle multiple mapping schemes, including pin matrix and fixed peripherals with alternate pins
requirement: single source of truth: the pin assignment definition should be centralized, and pin assignments (in both the chip and IO controller levels) should draw from this central source of truth
architecture: TBD