Unclear when rolling back an app that it will create a new revision

What kind of request is this (question/bug/enhancement/feature request):
enhancement
Description:
In current state, rolling back for multi-cluster apps appears through the UI to use the previous revision unique ID and Name. However, in reality it creates a new revision ID and Name. On cluster apps page, we only show the information that will be changed.
Enhancement Suggestions (one or the other):

Make it consistent with cluster apps page by only showing the information that will be changed. In the screenshot example below, I believe that would just be the templateVersionId for this Multi-Cluster App.
Have a warning or some type of reminder on the page saying that a new revision will be created.

Environment information
Single install Rancher v2.3.5

In testing on master-2338-head (Rancher version 17a40f502) it is not showing anything for a multi-cluster app if I select a revision that has a value difference, then select the current one (no value difference), then go back to the one with a value difference. It initially showed the difference, but the second time it's selected it shows nothing. Example screenshots in order:

Validated on master-head version 53e0430e1 using default ui-index.
It is more clear now and the error commented above is no longer noticed:

The new tooltip is also helpful for project apps:


Possible disable the zoom?

Is it possible to lock/disable the zoom?
I am creating a drawing app, and the zoom works great with the canvas. But when you zoom, you also draw. I like to lock the zoom when drawing.

Hello? Any response wil be apprenticed.

@MikeMilian hello. Use <pinch-zoom [disabled] = "true">

But first upgrade to version 1.2.5

Yes great! Thank you very much!


Add 'Collapse All Diffs' action button to multi-diff editor

This PR closes #198248

/assign @hediet in the hope this will be considered for merging, perhaps even in time for upcoming endgame of the November 2023 milestone.

Fails with:
src/vs/editor/browser/widget/multiDiffEditorWidget/multiDiffEditorViewModel.ts(31,1): Bad whitespace indentation
[hygiene                 ] src/vs/editor/browser/widget/multiDiffEditorWidget/multiDiffEditorViewModel.ts(32,1): Bad whitespace indentation
[hygiene                 ] src/vs/editor/browser/widget/multiDiffEditorWidget/multiDiffEditorViewModel.ts(33,1): Bad whitespace indentation
[hygiene                 ] src/vs/editor/browser/widget/multiDiffEditorWidget/multiDiffEditorViewModel.ts(34,1): Bad whitespace indentation
[hygiene                 ] File not formatted. Run the 'Format Document' command to fix it: src/vs/editor/browser/widget/multiDiffEditorWidget/multiDiffEditorViewModel.ts

Probably because you took my suggestion where I had to use space to indent (urgh github).

Just noticed:

precondition: ContextKeyExpr.equals('activeEditor', MultiDiffEditor.ID),

This might be problematic when you have a multi diff editor to the side. When the activeEditor is a normal text editor, the menu entry would disappear from the multi diff editor and only reappear once it gets focus. (from my understanding of activeEditor, it would need to be tested)

This might be problematic when you have a multi diff editor to the side.

It's already the case that when an editor's group is not the active group none of its toolbar buttons display. So I don't think anything needs to be changed. Please merge this PR.


Potential Compatibility Issue?

I wanted to use this again after a while, but I'm getting this error now despite having all the required stuff. It properly gets the manifest_assetmanifest, but then it shows this:

I know there were some in-game engine and system changes over the past few months (I think it could've potentially changed the database formatting in some capacity), so maybe that was the cause? If it helps, the program worked fine when I used it in October of last year.

i also have the same Problem

Found a fix! See https://github.com/lskyset/priconne-asset-extractor/pull/10
I guess Priconne added a new entry in the manifests sometime recently.

Found a new error now, this time it's when trying to extract asset bundles directed by certain asset manifests (it's happened with 'howtoplay2' and 'atlasngui2' for me so far, there could be more):

It downloads the .unity3d asset bundles fine, but it throws the error when actually trying to extract things from them. Asset bundles from other manifests seem to get extracted perfectly fine.


add arm64 builds

add arm64
MNT: Re-rendered with conda-build 3.28.2, conda-smithy 3.30.4, and conda-forge-pinning 2<IP_ADDRESS>.11.45
bump build

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] 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.

@raybellwaves this is ready for review


PCM error: no memory controllers found.

when i run ./pcm-memory  in  aws(m7i.16xlarge)  intel 8488C , error is appear . how to solve???
(py39) [root@ip-172-31-39-180 bin]# ./pcm-memory

 Intel(r) Performance Counter Monitor: Memory Bandwidth Monitoring Utility ($Format:%ci ID=%h$)

 This utility measures memory bandwidth per channel or per DIMM rank in real-time

Detected a hypervisor/virtualization technology. Some metrics might not be available due to configuration or availability of virtual hardware features.

=====  Processor information  =====
Linux arch_perfmon flag  : yes
Hybrid processor         : no
IBRS and IBPB supported  : yes
STIBP supported          : yes
Spec arch caps supported : yes
Max CPUID level          : 31
CPU model number         : 143
INFO: Reducing the number of programmable counters to 3 to workaround the fixed cycle counter virtualization issue on AWS.
      You can disable the workaround by setting PCM_NO_AWS_WORKAROUND=1 environment variable
Number of physical cores: 4
Number of logical cores: 8
Number of online logical cores: 8
Threads (logical cores) per physical core: 2
Num sockets: 1
Physical cores per socket: 4
Last level cache slices per socket: 0
Core PMU (perfmon) version: 2
Number of core PMU generic (programmable) counters: 3
Width of generic (programmable) counters: 48 bits
Number of core PMU fixed counters: 1
Width of fixed counters: 48 bits
Nominal core frequency:<PHONE_NUMBER> Hz
IBRS enabled in the kernel   : yes
STIBP enabled in the kernel  : no
The processor is not susceptible to Rogue Data Cache Load: yes
The processor supports enhanced IBRS                     : yes
Package thermal spec power: 0 Watt; Package minimum power: 0 Watt; Package maximum power: 0 Watt;

INFO: Linux perf interface to program uncore PMUs is NOT present
PCM error: socket_ 0 >= socket2M2Mbus.size() 0
PCM warning: total_sockets_ 1 does not match socket2M2Mbus.size() 0
PCM error: no memory controllers found.
Can not access server uncore PCI configuration space. Access to uncore counters (memory and QPI bandwidth) is disabled.
You must be root to access server uncore counters in PCM.
ERROR: PCU PMU not found
ERROR: MDF PMU not found
Info: IDX - Detected 0 IAA devices, 0 DSA devices, 0 QAT devices.
Socket 0: 0 PCU units detected. 12 IIO units detected. 12 IRP units detected. 0 CHA/CBO units detected. 0 MDF units detected. 1 UBOX units detected. 0 CXL units detected.

Detected Intel(R) Xeon(R) Platinum 8488C "Intel(r) microarchitecture codename Sapphire Rapids-SP" stepping 8 microcode level 0x2b000590
Access to Intel(r) Performance Counter Monitor has denied (no MSR or PCI CFG space access).
Cleaning up
 Closed perf event handles
 Zeroed uncore PMU registers

and how to solve  in  m7i.metal-24xl ? ```
=====  Processor information  =====
Linux arch_perfmon flag  : yes
Hybrid processor         : no
IBRS and IBPB supported  : yes
STIBP supported          : yes
Spec arch caps supported : yes
Max CPUID level          : 32
CPU model number         : 143
Number of physical cores: 96
Number of logical cores: 192
Number of online logical cores: 192
Threads (logical cores) per physical core: 2
Num sockets: 2
Physical cores per socket: 48
Last level cache slices per socket: 56
Core PMU (perfmon) version: 5
Number of core PMU generic (programmable) counters: 8
Width of generic (programmable) counters: 48 bits
Number of core PMU fixed counters: 4
Width of fixed counters: 48 bits
Nominal core frequency:<PHONE_NUMBER> Hz
IBRS enabled in the kernel   : yes
STIBP enabled in the kernel  : no
The processor is not susceptible to Rogue Data Cache Load: yes
The processor supports enhanced IBRS                     : yes
Package thermal spec power: 385 Watt; Package minimum power: 205 Watt; Package maximum power: 764 Watt;
opening /dev/mem failed: errno is 2 (No such file or directory)
WARNING: enumeration of devices in UncorePMUDiscovery failed
INFO: Linux perf interface to program uncore PMUs is present
PCM error: no memory controllers found.
Can not access server uncore PCI configuration space. Access to uncore counters (memory and QPI bandwidth) is disabled.
You must be root to access server uncore counters in PCM.
ERROR: PCU PMU not found
ERROR: MDF PMU not found
ERROR: PCU PMU not found
ERROR: MDF PMU not found
Info: IDX - Detected 8 IAA devices, 8 DSA devices, 8 QAT devices.
opening /dev/mem failed: errno is 2 (No such file or directory)
terminate called without an active exception
DEBUG: caught signal to interrupt (Aborted).

thanks for opening the issue. m7i.16xlarge is a virtualized instance. Virtualized instances do not allow access to uncore memory controller performance monitoring units (e.g. memory controller).  In m7i.metal-24xl your Linux kernel version does not allow for direct memory mapped register access. Could you try a workaround by setting PCM_USE_UNCORE_PERF=1 environment variable (
https://github.com/intel/pcm/blob/master/doc/ENVVAR_README.md):
export PCM_USE_UNCORE_PERF=1
./pcm-memory

Does it work for you?

stale issue. Please re-open if the issue is still there


chevrotain as the 'generated' code from PEG

While reviewing different DSL generators, came across this.
From the performance perspective, this one is beating the others. However, from the maintenance perspective this looks slightly complex (so much of repetitive code). Also, it would be impossible to transform the original grammar (expressed by the code) to other languages (since there is no separate grammar or generator).
A grammar essentially captures just the symbols and their transitions/groups. In that sense the formalism of PEG or similar are quite tidy and easy to maintain, as well can have multiple language implementations. However, the generated code from PEG parser is not that performance when compared with this library.
One question I have then is:

Does it makes sense to have the grammar intent be kept in the tidy format of, say PEG or similar, and the usual PEG parsers, such as peg.js have the code generated that uses this chevrotain API.

That way, we can gain

the original grammar is separate and easy to reuse part-wise and change (especially when it grows large)
can have the performance benefits
can have implementations from other languages too (since the original grammar is abstracted out as separate and format grammar file)

Thanks for the feedback @KrishnaPG.
This will be a long reply so bear with me 😄.
Corrections regarding the quoted comment:
Can you share where you have come across that comment? As it is not completely accurate.
The Grammar's structure can be exported and accessed in a programmatic manner

Perhaps I should create an example that explicitly demonstrates this?

This is actually how the parser is implemented on the inside, the grammar's structure must be known
to perform lookahead decisions (which branch to take), to detect ambiguities and left recursion
or even just to draw the syntax diagrams.
On Maintenance and TCO:
I agree that writing the grammar in pure JavaScript causes a more verbose and uglier code.
This is one of the trade-offs of the approach taken by Chevrotain being an internal JavaScript DSL.
But this does not necessarily mean that it is harder to maintain:

Yes the syntax of the grammar is uglier, but it is could also be easier to write because any JavaScript IDE may be used with its full capabilities (syntax highlighting / goto definition / find usages / ...)
This gets even worse when you add code snippets inside your grammar, as even if you have an editor
which supports your favorite parser generator's syntax, does it also support your favorites target language syntax/semantics too?

Reading and Writing code is only the beginning, What about debugging? can you add breakpoints inside a formal grammar definition? With Chevrotain you can add a breakpoint anywhere just as you would for any other JavaScript code.

Lack of generated Code can actually be claimed to reduce the complexity of a project.
I have seen projects where 20K+ lines of of generated Antlr3 code was committed to the source code
Granted this is an extreme case and can be resolved, but not having to deal with generation steps / file watchers does reduce complexity (even if by just a little). I would describe this advantage this as the removal of one more "Leaky Abstraction".

To summarize:
There are both advantages and disadvantages to having no separate code generation phase.
Particularity form a maintenance and TCO perspective. Which approach has the advantage depends
on the specific use case (Grammar Generator used , available Editor tools for that grammar generator, Quality of Editor used for the target language, how much debugging is expected, ect...).
Reducing Grammar verbosity and increasing readability:
The bigger problem imho is that grammar actions (a.k.a semantic actions) are embedded as part of the grammar. this drastically reduces readability and maintainability as it breaks the single responsibility principle.
Example1:

Chevrotain Pure JSON Grammar.
Chevrotain JSON Grammar with embedded actions.

Example2:

PEG.js Pure JSON Grammar.
PEG.js Grammar with embedded actions.

It is easy to notice that the pure versions are so much more readable and understandable.
Antlr4 has resolved this problem by having the ability to "listeners" to perform grammar actions
which are defined completely separately from the grammar. I've had some thoughts on how to implement this feature with Chevrotain. If I can achieve that capability I believe 80%+ of the problem will be resolved.
Using Chevrotain as a compilation Target
Sorry for only now getting to your original question 😄
Will be answered in a separate comment.

Using Chevrotain as a compilation target for PEG.js / Parser Generators:

Does it makes sense to have the grammar intent be kept in the tidy format of, say PEG or similar, and the usual PEG parsers, such as peg.js have the code generated that uses this chevrotain API.

There are a few problems with this:

Biggest issue: The semantics of different Parsing solutions are often similar but not identical, examples:

PEG.js does not have a separate tokenizing phase while Chevrotain does.
Antlr4 is LL(*) with support for handling some cases of Left Recursion, while Chevrotain is LL(K) and will detect and fail on any use of left recursion.

This means that not all grammars can be directly machine translated between parsing libraries. and worse yet some could be directly translated but will have slight semantic difference which could only be discovered at runtime for specific inputs.

The grammar is not everything, a pure grammar won't accomplish much, once embedded actions are added this increases the complexity of the translation process.

Chevrotain may be very fast, but that is not because there is anything inherently fast in its approach. It is fast in spite of it, due to the massive amounts of performance optimizations it does. Having no compile step is a big disadvantage when it comes to maximum performance potential. Just the use of anonymous functions in the grammar is horrible from a performance perspective. What I'm getting at is that if I wanted to implement a compile target for parser generators (some sort of Parser Assembly Language) that maximizes performance then I would have created a completely different project...

Creating a Tidy ENBF like format to specify Chevrotain Grammars.
While using Chevrotain as a compilation target for other parsing libraries seems problematic.
Creating an external DSL that compiles to Chevrotain's internal DSL is possible.
Such a concept would be even more viable if/once the embedded actions have been separated from
the grammar and the grammar file (either external or internal DSL) will just be a pure grammar file as
it would make the generation phase very simple.
This kind of feature is interesting but not currently of a high priority for me, nor am I even sure it should be part of Chevrotain due to feature scope creep and maintenance concerns. But if the use case is only dealing with pure grammars it should not be too complex and can be easily developed separately from Chevrotain as a small library. The most difficult part of such a feature would be developing the grammar of the external DSL, but that will just be some variant of BNF/EBNF so once again not too complex, see: Example of Antlr Grammar specified in Antlr syntax.
If you are interested in creating such a project I suggest following the issue for support of pure grammars with separate actions.
And only attempting this once productive pure grammars are supported.

Thank you @bd82 for the detailed answer. I agree with your points on maintenance (especially the debug capability and embedded actions).
I like the Chevrotain approach of Javascript itself being the DSL - it solves multiple problems as you have indicated. However, the challenge is, having the same grammar be parsed by other languages, say C/C++.
On the other hand, I think we really do not need to have the same grammar be parsed by other languages, if the underlying actions can somehow are available in the DSL irrespective of their language.
Let me explain with a simple example. This is something we are currently trying to solve and any help / info from Chevrotain side could greatly help.
Use case:
Consider the below code in a custom DSL:
  read_input | update_chart | ( > 10) ? raise_alarm;

The read_input, raise_alarm and update_chart are provided by domain specific implementations, such as, for example:
implementation 1 (say, in C++)
void read_input() {
   // read from standard input
}
void raise_alarm() {
  // write to error console
}
void update_chart() {
  // write to console output
}

implementation 2 (say, in Javascript)
function read_input() {
   // ajax load the input for every 5 seconds
 }
function raise_alarm() {
  // POST data to error log on server and send eMail
 }
function update_chart() {
  // update the chart on web-page UI
}

Now, with Autobhan / WAMP and DeepStream etc. it is pretty straightforward and easy to inter-operate and invoke methods from different languages with ease.
What is missing, rather, is the ability to create dynamic DSLs that are formed out of the available underlying methods and knowing when to invoke what (like a parser event).
For example, consider something like below:
import 'implementation2';

read_input | update_chart | ( > 10) ? raise_alarm;

After the above import statement, all functions / actions provided by the implementation2 should be available as tokens in the current DSL, and the parser should be capable of invoking them (in the order governed by the DSL's operator semantics, say left-to-right or right-to-left etc.).
In other words, the valid tokens of the DSL are not static, but rather are varying, leading to a dynamic DSL that is populated by the underlying actions (implemented by any language and invoked through RPC, such as WAMP or DeepStream) - but the language itself is static (such as the operator precedence etc.)
Use case 2:
To give another example, consider the below DSL from music domain:
  C C D G A

Each note (such as C, D etc.) has an underlying MIDI action supported by C/C++ implementation as below:
function C() { play_midi_note('c'); }
function D() { play_midi_note('d'); }
 // ...

In this case the notes are valid tokens in the DSL. But the notes need not be C D ... always, they could just be Do Re Mi ... etc. in which case:
import `solfège`;
 Do Re Mi Do ...

solfège implementation:
function Do() { play_midi_note('...'); }
function Re() { play_midi_note('...'); }
 // ...

Question:

How to implement such dynamic DSL (that has varying tokens) ?

The goal is: Consider a text editor that support this kind of music DSL. As user keeps entering the notes (such as C D etc..) the editor should actually execute the underlying action for each note (in this case play the actual note) that the user just now entered.
This requires the text editor to support dynamic DSLs that can be loaded on the fly and know when to invoke the underlying action for the token (what to invoke).

The background information helps, I think I now understand your use case.
On Dynamic Tokens with fixed structure:

How to implement such dynamic DSL (that has varying tokens) ?

Chevrotain has a concept of Token inheritance which allows to match Dynamically Defined Tokens Additionally Chevrotain also supports some mechanisms of Grammar Inheritance.
The dynamically defined Tokens should be enough for your the use case you described, but Grammar inheritance could provide a bit more dynamic power if you also want to dynamically change the structure of the language too.
Overall solution and separation of concerns:
I generally recommend separating the syntactic analysis from any business logic, this is doubly true in a complex use case such as yours.
I think that your parser should at no point perform the actual RPC calls, instead it should create an intermediate data structure (AST?) which represents those custom user actions.
This data structure should preferably be serializable (to json?)  to allow transmitting over the "wire".
What this will accomplish is allow you to invoke the user actions in multiple runtimes (JS/Java/C++/.NET/...) as the implementer of such an invoker no longer needs to deal with the difficulty of parsing your complex language, only read a simple protocol (json?).
On building Editors:
Building language editors parsers has different requirements from the parser than building standard compilers specifically:

Fault Tolerance & Error Recovery  - for dealing with partially valid input.
Incremental /  Partial parsing - can be helped by using multiple start rules.
Providing syntactic content assist

Chevrotain was initially created to be part of both a compiler solution and an editor solution which is why it has those capabilities. but these capabilities are just pre-requisites / enablers. You may also need to design your data structures to support partial parsing results, add logic in your editor to only re-parse the last text block modified  by the user, ect...
Just keep in mind that the "standard" parsing flow of whole input from beginning to end may not be sufficient for building an editor.
Recommended Video: Anders Hejlsberg on Modern Compiler Construction
.
Potential Concerns:

Relying on Chevrotain specific(or uncommon) features such as dynamically defined tokens and error recovery will greatly limit the potential for migration  to another parsing library in the future.

Mixing many unrelated languages into one "super grammar" could cause unintended ambiguities, perhaps dynamically mixing in only the sub languages the specific user enabled would be safer.

I can try creating such an example using grammar inheritance if this interests you.

Thank you @bd82
The grammar inheritance sounds interesting - but it looks like the parser has to have the knowledge of all tokens before-hand.
Rather, what I am looking at is: a token list (and their associated actions) that can grow and shrink at runtime.
For example, consider an editor app. When it starts running, it would not know which tokens the user might type. But once the user enters import xyz then it would know the list of valid tokens the user is expected to enter from then on. And by the time the user completes entering his logic (in the custom xyz DSL) in that editor, the editor would have already figured out the AST required to process that logic (and the corresponding actions to take to execute it). This AST could then be distributed as work definition to some cluster of machines around the world, and each machine will either execute the AST action as it is, or convert into native binary for performance and invoke the underlying actions (each possibly provided by different language binaries).
Static parsers (such as those expressed with PEG grammars) would not be able to achieve that kind of feat - and I think Chevrotain is the closest bet (given that JS is its DSL, which is dynamic by nature) for this kind of task. Just that I am not sure how to actually achieve it.
One thing I can tell is, requirements for dyanamic DSLs is on rise in the industry, and if Chevrotain can somehow illustrate its strength in this area, it is going to play major role in the evolution of next gen tech surrounding the use-cases, such as IOT and edge-analytics (which require business logic work definitions to be uploaded from user that is usually powered by Polyglot functional providers)

Some Questions:

Do you want just the list of valid tokens to be changed at runtime or also the grammar's structure too?
Are we dealing we structured languages here (Context Free) or natural languages?
Can we define bounds (implicit or explicit), i.e where each sub DSL has started and ended?
Can we limit the imports to the top of the text?
can a single text include multiple unrelated DSLs ?

A sample input case:
// imports
import smart_home_dsl;
import smart_home_temperature_sensor_addon_dsl;
import smart_home_aircon_addon_dsl;

// user's code
connect to my_home in my_ip_address.
connect to living_room_temperature_sensor in my_home.
connect to living_room_air_con in my_home,

if living_room_temperature_sensor's reading is greater than 25 degrees celsius
   THEN activate living_room_air_com at full blast

Is this a valid example for the discussion?

Great questions @bd82 . The sample input you have demonstrated is perfectly valid example. Will try to answer the questions by building on that example.

Are we dealing we structured languages here (Context Free) or natural languages?

Structured languages. No ambiguity is allowed.

Can we define bounds (implicit or explicit), i.e where each sub DSL has started and ended?

I think this one is closely related to the other question below, hence will answer combined

Do you want just the list of valid tokens to be changed at runtime or also the grammar's structure too?

The Grammars can change, and perhaps one way to maintain dis-ambiguity is with bounds either implicitly or explicitly (where each sub DSL started/ended).

Let me illustrate with an example. Extending your smart home example, consider the below
import alarm_dsl;

IF living_room_temperature_sensor's templerature > 25 degrees
    THEN play music_alarm {
        C C D G C G G
    }

The play music_alarm allows different music grammar that is comprised of music notes such as C, D, G etc... and its grammatical meaning is entirely different from the parent / host grammar (and within the bounds of { } ).
Now, consider that the music_alarm supports repeating the alarm some number of time (say 3 times as expressed below):
    THEN play music_alarm {
        C C D G C G G
    } X 3

Then such a play music_alarm grammatical structure could possibly be expressed as below:
// file: alarm_dsl

import music_string_dsl;

definition:
       music_alarm {MUSIC_STRING} [X NUMBER]

or it could be more extensive as below:
// file: alarm_dsl

import music_string_dsl;
import calcluator_dsl;
import sql_dsl;

definition:
      music_alarm {MUSIC_STRING} [X NUMBER  |  (CALCULATION)  |  {SQL_STATEMENT}]

which allows one to write something like below utilizing the Calculator grammar:
    THEN play music_alarm {
        C C D G C G G
    } X (1 + 2)

or something like below utilizing the SQL grammar:
    THEN play music_alarm {
        C C D G C G G
    } X { SELECT alarm_count FROM user_preferences }

Extension Plugins
One possibility I would like to note here is: say, the alarm vendor supplies only the {MUSIC_STRING} [X NUMBER] as the original grammar (without the calculator or sql support), user may (on his end) use his own (possible third-party) extensions such as the below to extend the vendor's grammar.
// file: number_extension_dsl
redefine:
     NUMBER: NUMBER  |  (CALCULATION)  |  {SQL_STATEMENT}

By importing the above extension_dsl user can use SQL statements in place where the alarm vendor originally only supported numbers.

Can we limit the imports to the top of the text?

Should be fine with that, but not sure if one can know the list of all imports upfront.

For example,
    THEN play music_alarm {
        import music_dsl;          // <<- scoped import here
        C C D G C G G
    }

This is required when we are merging user-supplied pieces with a default template (such as happens in admin-dashboards). For example, say the above music piece is actually gathered from user as input on a web-page textbox. Then users would only see a music-entry editor / text box (without the surrounding context) and enters:
        import music_dsl;
        C C D G C G G

which will then be merged with the outer base-template play music_alarm { % user_string_here %  } loaded from DB.
In such case, we would not know which all DSL to be imported up front. User may choose to use his own custom compatible music dsl (uploaded from his computer).
Since import statement essentially results in an AST being loaded into memory (possibly either replacing / extending or standalone), it would be good to support the import statement anywhere.

can a single text include multiple unrelated DSLs ?

As of now, I am not really sure if there are any good use-cases for unrelated DSLs in a single file - but I think if scoped DSLs are supported (with some implicit / explicit start/end block indications), putting unrelated DSLs in a single file should not be a problem. Not sure, though. With your better expertise in ASTs / DSLs, I think you are better judge on this one to decide if it s good to have or not. Will leave it to you.

Thanks @KrishnaPG I think these answer help for farther clarify the use case.
Back to a much higher level now that we have a shared understanding of the use case.
The (though) high level requirements here are:

Language Extensibility by external plugins.
Dynamic Language importing/enabling.

Optionally with scoping support.

There are obviously other issues, such as generic (extensible?) data structures to represent the sub languages's output, a portable protocol to communicate those actions, ... but those issues while not trivial are more standard well understood engineering issues...
Alternative approach.
Have you considered that instead of extending the syntax of some "meta-language" to create
new semantics (example: controlling smart home semantics) you can only deal with describing the semantics without inventing new syntax by creating internal DSLs?
Examples:

Chevrotain itself is a prime example of this approach as it did not create a new syntax to define grammars (external DSL) but is instead an internal JavaScript DSL.

Rest Assured Java rest services testing DSL

Creating Domain Specific Languages with Scala

Baysick Basic in Scala

Scala is worth extra emphasis here because it is very friendly towards internal DSLs.
It even has macros(like lisp) support which is something I've had to pseudo hack together to implement Chevrotain in JavaScript .
This approach will solve many of the problems of creating such an extensible meta language.
But at the cost of uglier code (with something like Scala not as ugly...). and lower potentially lower performance.
Thoughts on the feasibility of creating such a meta language using Chevrotain.
Will add this in a separate comment, hopefully tomorrow.

Thank you @bd82
You are right w.r.to not creating new "syntaxes". For that matter, any single Turing-complete language is capable of solving all computable problems with just one syntax (by definition, being the turing-computable). Say, simple, plain-old C is enough.
However, I would like to impress that is equally important to be able to create new syntaxes.
The fact that we do have plethora of languages (more specifically, syntaxes) already at the high-level itself, such as C++, Javascript, Python, R etc., clearly indicate what the underlying problem is.
I will not go into the language wars, but hope to clarify the problem by illustrating few pain points that we are facing in the industry right now:

Consider a CEP (compex event processing) engine that requires real-time streaming calculations on the incoming streaming data. It requires more expressiveness in terms of "data flow". The syntax is more apt  to write something like

    source | transform1 | transform2 | output

than something that requires heavily nested callbacks or promises (JS style), or heavily sequential control flow (such as the C style), though these JS/C etc. can perfectly do the job and perhaps with more efficiently.

Consider a cultural document preservation system, such as music notation. It requires tabulature style of expressiveness that allows both "sequential and parallel" notes illustration at the same time. This kind of syntax is hard to express with any existing programming language.

And the problem is, the syntax that suits well for CEP, does not just work for the Music Notation.
We always tried to keep it low and stay true to one syntax paradigm, but it doesn't work. For example,

Our CFugue library its a mater piece for Carnatic Music, straight from C/C++. But it is just not enough for what we want to achieve.
The M2M gap for C/C++ is too large: http://gopalakrishna.palem.in/blog/RestfulC++.html Asynchronous multi-core execution synatx is hard to capture on fundamentally sequential syntax designs

Now, one may argue that C/C++ is the wrong choice, stick to JS or Python or xyz language (syntax) for all things - well each language has its own problems.
It is just NOT possible to create one Syntax to rule them all. The very fact that each of the programming languages / syntaxes keep evolving with each version (say ES6, Python 3 etc..), is itself clear indication that every syntax is missing something.
Now, consider this scenario:

Instead of one programming language / syntax growing over years with different versions vertically (enhancing its syntax along the way), think of different syntaxes evolving horizontally at the same time each tailor built for different purposes. That horizontal set of syntaxes is our DSLs.

This is just like modularity concept in our programming - one module to do just one thing and doing it right. But we are applying that modularity to a syntax/language.
Why am I stressing on supporting multiple syntaxes
The earlier days, some one created a language / syntax and all used it. With LLVM there are already many languages / syntaxes out there created by every other person.
IOT brings the capability to connect multiple devices from different domains (from wrist watch to refrigerator to aeroplane and what not). It is impossible to convince all device vendors to agree on one meta language. Even if the vendors want to create one syntax, given the diverse domains, they would eventually endup with creating whole set of DSLs one for each domain (just like JS for web, C for system programming etc.)
Software creators (such as those who create IOT analytics platforms) ultimately has to support all these DSLs, and at any given point of time the software would not know which exact DSL it can expect (the devices may connect and go away randomly).
Hence the need for on the fly syntax and semantic adaptable editors / interpreters / generators.
Bottom Line is:
I request you to keep the option of being able to create and work with different set of syntaxes, as important as being able to extend the semantics of one syntax.
The former takes the horizontal approach, while the later takes the vertical approach - both of which are needed.

Also, a sideline thought:
Is it possible to consider the AST as the universal meta language and treat all the syntaxes just as aliases at the semantic layer?
When a new syntactic expression is inserted into a parent code, if we can treat it as AST subtree insertion into parent AST (mounted at that insertion point), then I think it is possible to have different syntaxes work together.
I am taking this concept directly from the language workbenches but I see no reason why it cannot be used here. MPS does it with its projectional editor

On External vs Internal DSLs.
I'm not saying there is only one way, I'm just worried that often people underestimate
the complexity of creating / maintaining new languages and are too quick to create a new syntax where an internal DSL could provide most of the benefits at fraction of the cost.
Perhaps the use case you are describing is the exception to the rule.
Both due to the highly varied domains present and because many of these languages seem to be(?) much smaller than your average programing language in terms of size and complexity.
Perhaps more then just creating a platform to help "Software creators" build things such as
"IOT analytics platforms" a larger scope is required. providing a language toolkit to build these
special domain languages for "IOT device vendors".
Basically if company X provides "smart home controllers" that has an embedded javascript runtime.
They could implement their own DSL using this hypothetical language toolkit.
And the "Software creators" which build apps around those can "re-use" some of the products
of the toolkit to build their editors.
Basically whoever writes the compiler also writes the language services for editor use cases.
This is already happening in modern compilers (Scala/TypeScript/new C# compiler).
But assuming dozens or hundreds of these unique DSLs each implemented by a different team/company/org with different background in language design / compilers will create real mess :sad.

Implementing "On the fly adaptable syntax & semantics using Chevrotain.
Semantics.
Firstly Chevrotain only deals with syntax, not semantics. if you make sure to create a simple structure representing only the syntax (concrete parse tree) as the output of a parser then all adaptable/custom semantics concerns can be resolved.
Basically never embed code actions in your parser that deal with semantics.
Chevrotain could help with this however if I succeed in implementing automatic concrete parse tree creation and an API to invoke custom actions on it. (similar to what Antlr4 and ohm.js do).
So grammars will remain completely pure and all semantic actions can be invoked on the fly and customized.
Syntax.
Chevrotain does not perform any code generation from a grammar representation.
which can make it more adaptable, however it does the opposite of generating a grammar representation derived from the parser's source code.  This means that Chevrotain expects most information about the language to already be present during parser initialization. and changes to the grammar to be represent as changes to that same source code.
What this means is that Chevrotain Parsers can be adapted during runtime, but only before parser initialization, not during the parsing flow itself. Chevrotain is also written in JavaScript(TypeScript) which means that this limitation can probably be worked around, however
this is not something I would recommend because if I wanted a truly adaptable "on the fly" solution I would go for a completely interpreted parsing engine which is much more suited for such a requirement. (at the cost of one order of magnitude slower performance).
Simulating on the fly parser adaptability.
If we assume two constraints.

identifiable lexical delimiters around blocks of each DSL group.
Import statement may only appear in the top (header) of each block.

A possible approach would be to perform two phase parsing.

Phase one - split the input into blocks/sections where each block has a header and contents.

The contents should be read as a raw string.

Phase two - Using the information from each header, an appropriate parser will be assembled at runtime to deal with the content of the relevant block.

Notes:

The delimiters may be implicit (always one at the start and end of a file) or explicit.
There may be a need to lexically identify the header sections as well.
These delimiters may make the source code uglier, so they do not necessarily have to be visually displayed in the Editor's UI at all times.

On assembling an appropriate parser on demand (grammar extensibility).
Chevrotain has some dynamic features that can help with this, such as token inheritance and grammar inheritance, additionally I've created Grammar mix ins in a proto version of
Chevrotain so expanding on the assembly / dynamic creation capabilities seems possible.
Notes:

Such extensions do not necessarily have to be a part of the core Chevrotain library.
Such extensions may lead to ambiguities.

Imagine two grammar plugins to some language both adding a new statement that starts with "A B (C)" grammar, because "(C)" may require infinite lookahead to expand, the grammar is no longer LL(K).

Thank you @bd82

What this means is that Chevrotain Parsers can be adapted during runtime, but only before parser initialization, not during the parsing flow itself.

I am not much expert with parsers or their implementation, but to think aloud, what is preventing from doing something like below:
Say, each import statement causes a parser object to be created (that knows how to parse that particular dls). So, essentially when one says:
import  "music.dsl";
import "sql.dsl";

the above statement results in two parser objects in memory, say: parser.music and parser.sql (and of-course the host/parent parser object itself is already there, making it total 3).
Then when one encounters something like this kind of grammer, for example:
definition:
      music_alarm {MUSIC_STRING}

where MUSIC_STRING was previously defined in the music.dsl then when the host / parent parser encounters something like below:
music_alarm {
  C D C G
}

then it knows that music_alarm by definition expects a MUSIC_STRING object to follow it (within braces {} ), so it would invoke the parser.music to parse the content { C D C G } and moves on with rest of the stuff as is.
In other words, the host / parent parser just acts as a container of different sub-parsers and keep delegating it to the right parser (based on the definition supplied by user).
Since in Javascript objects can be extended anytime, the parser.music, parser.sql and few others such as parser.c++ etc. can be created on the fly (based on the import statement).
Would that kind of thing possible with Chevrotain?

@KrishnaPG What you are describing above is not very different from what I've described.
The differences are granularity (statement level vs block level choice of parser) and position of the import statements (start of document vs start of blocks).
The reason I suggested a clearer division of one block per grammar is due to the following
catch 22 situation:
You said:

In other words, the host / parent parser just acts as a container of different sub-parsers and keep delegating it to the right parser (based on the definition supplied by user).

import  "music.dsl";
import "sql.dsl";
import "smart_home.dsl";

// SQL
select name, age from customer where age > 60

// Music
music_alarm {
  C D C G
}

// Smart Home Robot
activate robotic helper bob and
insert three bottles of soda to the fridge.

The big question is: how do you decide which parser to activate for each line/statement?
In the smart home DSL has the word insert can start a statement but that is also true for the
SQL dsl, maybe in some other DSL "insert" will be recognized as a wildcard "Identifier" (like it would according to Java Lexer rules).
Basically how can you tell which parser to use without first parsing the sentence ?
This is a chicken and egg problem, cyclic dependency what came first?
It can get worse as in some edge cases maybe the same line/sentence can be parsed by different parsers with different meaning? or what if different DSLs have different whitespace sensitivity rules and in a certain combination of statements the previous one ruins the whitespace for the following one.
The approach I suggested earlier tries to resolve this by creating very clear delimiters unambiguous lexical rules on which parser should be used where. so after a single pass with the "sections dividing parser" we can now do as you suggested as run each appropriate parser on each appropriate input. but at least we know how to match one to the other.
But it could be a bit ugly because of the need for delimiters.

Thank you @bd82
Now I see the disconnect. The host parser, supports multiple syntaxes, but the syntaxes cannot appear anywhere randomly in the text. They have to follow the host syntax grammar (the definition supplied by user I was referring to earlier).
You are right about the delimiters - the only difference is: I am suggesting not to keep it fixed, and rather be driven by the user. Say, user indicates with the first import what the base syntax to expect for the rest of the file.
For example, consider a base syntax definition file as below:
// file: base.dsl
import  "music.dsl";
import "sql.dsl";
import "smart_home.dsl";

<SQL_STATEMENT> WS <MUSIC_ALARM_STATEMENT> WS <MULTIPLE_ROBOT_STATEMENTS>

Now, the host parser knows to expect, SQL statements first followed by MUSIC followed by ROBOT statements (from the above base dsl definition), so your example:
import "base.dsl";

select name, age from customer where age > 60

music_alarm {
  C D C G
}

activate robotic helper bob and
insert three bottles of soda to the fridge.

becomes parsable. Agreed, this is rigid, but if that is what user wants let it be.
Or else, my personal favorite (from Latex style):
// file: base.dsl

import  "music.dsl";
import "sql.dsl";
import "smart_home.dsl";

definition:
\Sql { SQL_STATEMENT }

definition:
\Music { MUSIC_STATEMENT }

definition:
\Smart { SMART_HOME_STATEMENTS }

Here, I am (trying) to define my own delimiters, such as \Sql etc. that should indicate the parser to expect SQL_STATEMENT to follow where ever a \Sql entry appears. That way I can re-write your example as:
import "base.dsl";

\Sql { select name, age from customer where age > 60 }

\Music {
    music_alarm {
        C D C G
    }
}

\Smart {
    activate robotic helper bob and
    insert three bottles of soda to the fridge.
}

\Sql { select something from somewhere  }

The order could be changed and the blocks could start anywhere, since they are all top-level definitions that indicate the host parser which one to delegate to.

To answer your question: how to decide which parser to activate for each line/statement?

That would be determined by the host grammar supplied by the user.

How does one know what is the host grammar?

One (resonable) way perhaps is to consider what ever is the first import, it specifies the host grammar (that tells how to parse the rest of that file)

In other words, user code is a self-describing entity that tells (with the first import) how to parse the rest of its content. (Like xml-schema that is embedded inside the XML files).

This Self-describing machine-digestible entity concept is very important as we are leaving the information-age towards machine-learning, and is inline with the OKFN (Open Knowledge Foundation)'s Data Package standards

Imagine a csv file that has self-describing info on what each column's datatype is (in parser's terms, how to parser each column and derive the actual value).

Analytics pipelines currently suffer from the lack of this info (and something the data packages and other initiatives from the OKFN aim to solve in general). IOT devices need this capability to be able to "communicate" with diverse devices and invoke each others' actions.
Bottom line
I think you and I are almost on the same line in this regard, expect I am suggesting to make the host's grammar also be configurable / adaptable, supplied by user - which means not fixing the delimiters ourselves, but by the user. The goal is to achieve self describing user scripts.

Which exact syntax one uses to create those base/host grammar self-descriptions then? : one could use any of the standard grammar syntaxes, such as PEG or Chevrotain etc., with support for additional commands such as import needed to make the resulting grammar on the fly parasable.

I think you and I are almost on the same line in this regard, expect I am suggesting to make the host's grammar also be configurable / adaptable, supplied by user - which means not fixing the delimiters ourselves, but by the user. The goal is to achieve self describing user scripts.

Yes, what you are describing is just an extension of my more naive and "fixed" approach.
Given:

description of an host grammar.

// file: base.dsl

import  "music.dsl";
import "sql.dsl";
import "smart_home.dsl";

definition:
\Sql { SQL_STATEMENT }

definition:
\Music { MUSIC_STATEMENT }

definition:
\Smart { SMART_HOME_STATEMENTS }

Implementations of parsers for the sub-grammars (music.dsl / sql.dsl / smart_home.dsl).

I would:

implement a parser that can read the host definition and create a data structure representing it.

implement an interpreter that executes over that data structure and invokes the appropriate sub parser's rules in the correct order.

This (limited) scenario does not require any special parsing capabilities such as dynamic tokens, dynamic parser creation or extension.  The only thing that appears to be required is supporting multiple start rules, so that individual rules from the sub grammars could be invoked directly instead of being limited to a single top rule.
in that case PEG.js would not be suitable as that feature request has been open for nearly three years now 😢. But any parsing library which supports multiple start rules may be used.
The more dynamic capabilities would mostly be relevant during authoring of those sub grammars.
As before, the main worry is that these custom defined host grammars could contain ambiguities.
mostly around common prefixes. This can be resolved by host grammar authors by adding delimiters, but that will not resolve the problem of detecting these ambiguities in the first place.
A possible approach would be to build a structure defining the host's grammar including
the sub grammar parts. This is possible with chevrotain as the grammar structure is represented with its own classes
And the grammar validations are independent of the parsing flow and can be executed directly.

closing this as it seems the discussion has finished. 😄


docs: update faq.md

Signed-off-by: mgorsk1<EMAIL_ADDRESS>Summary of Changes
Updates the documentation of Neo4j vs. Atlas
Documentation
faq.md
CheckList
Make sure you have checked all steps below to ensure a timely review.

[x] PR title addresses the issue accurately and concisely, including a title prefix.
[x] PR includes a summary of changes.
[x] My commits follow the guidelines from "How to write a good git commit message"

@mgorsk1 would you mind creating this PR against main branch instead?

good catch @verdan maybe it's time to make main a default one? not quite sure why we would use master if it's deprecated

@mgorsk1 you also need to rebase your branch with the main branch first.

+1 on making main branch as default now.


Image import doesn't work on macOS with Apple M1

What did you do

How was the cluster created?

k3d cluster create mycluster

What did you do afterwards?

k3d image import my-image:1.0 -c mycluster
k3d image import my-image:1.0 -c mycluster -m direct

What did you expect to happen
I expected the image to be loaded correctly, but it didn't. Initially, I considered whether it was a problem with the containerd CLI when loading arm64 images (similar to https://github.com/kubernetes-sigs/kind/issues/2549), but it fails consistently also with images built specifically for amd64.
Screenshots or terminal output
The same error is thrown running any of the previous commands.
INFO[0000] Importing image(s) into cluster 'mycluster'
INFO[0000] Auto-detected a remote docker daemon, using tools node for loading images
INFO[0000] Starting new tools node...
INFO[0000] Starting Node 'k3d-mycluster-tools'
INFO[0000] Saving 1 image(s) from runtime...
INFO[0012] Importing images into nodes...
INFO[0012] Importing images from tarball '/k3d/images/k3d-mycluster-images-20220201175708.tar' into node 'k3d-mycluster-server-0'...
ERRO[0014] failed to import images in node 'k3d-mycluster-server-0': Exec process in node 'k3d-mycluster-server-0' failed with exit code '1'
INFO[0014] Removing the tarball(s) from image volume...
INFO[0015] Removing k3d-tools node...
INFO[0015] Successfully imported image(s)
INFO[0015] Successfully imported 1 image(s) into 1 cluster(s)

The final message says the image has been imported correctly, even if an error is thrown. Therefore, I tried running the image as a Pod and it fails as follows.
Error: failed to create containerd container: error unpacking image: failed to resolve rootfs: content digest sha256:86512c94ca5f80c9406083a8d44baa1fa5578fbdb5e0a80e3d07454de1065486: not found

Which OS & Architecture

macOS with Apple M1

Which version of k3d
$ k3d version
k3d version v5.2.2
k3s version v1.21.7-k3s1 (default)

Which version of docker
$ docker version
Client:
 Cloud integration: v1.0.22
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:46:56 2021
 OS/Arch:           darwin/arm64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:43:07 2021
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Hi @ThomasVitale , thanks for opening this issue! Sorry I got back to it that late.
Can you please paste the logs here from the same command, but with --trace appended so we can see the full trace log?

Feel free to reopen if it's still present in the upcoming v5.4.0 release :+1:

@iwilltry42  I'm facing the same problem as mentioned above on Mac OS Apple M1 and k3d v5.4.1

@iwilltry42 I'm seeing this issue on ubuntu when upgrading from k3d 5.3.0 to 5.4.1.
I'm seeing output like:
INFO[0000] Importing image(s) into cluster '$CLUSTER_NAME'
INFO[0000] Starting new tools node...
INFO[0000] Starting Node 'k3d-$CLUSTER_NAME-tools'
INFO[0000] Saving 3 tarball(s) to shared image volume...
INFO[0000] Importing images into nodes...
INFO[0000] Importing images from tarball '/k3d/images/k3d-$CLUSTER_NAME-images-$IMAGE1.tar' into node 'k3d-$CLUSTER_NAME-server-0'...
INFO[0000] Importing images from tarball '/k3d/images/k3d-$CLUSTER_NAME-images-$IMAGE2.tar' into node 'k3d-$CLUSTER_NAME-server-0'...
INFO[0000] Importing images from tarball '/k3d/images/k3d-$CLUSTER_NAME-images-$IMAGE3.tar' into node 'k3d-$CLUSTER_NAME-server-0'...
ERRO[0001] failed to import images in node 'k3d-$CLUSTER_NAME-server-0': Exec process in node 'k3d-$CLUSTER_NAME-server-0' failed with exit code '1'
ERRO[0001] failed to import images in node 'k3d-$CLUSTER_NAME-server-0': Exec process in node 'k3d-$CLUSTER_NAME-server-0' failed with exit code '1'
ERRO[0001] failed to import images in node 'k3d-$CLUSTER_NAME-server-0': Exec process in node 'k3d-$CLUSTER_NAME-server-0' failed with exit code '1'
INFO[0001] Removing the tarball(s) from image volume...
INFO[0002] Removing k3d-tools node...
INFO[0003] Successfully imported image(s)
INFO[0003] Successfully imported 3 image(s) into 1 cluster(s)

One thing that jumps out: the code in importWithToolsNode() that logs these failures when copying images swallows errors without returning them to the caller: https://github.com/k3d-io/k3d/blob/852df7786ab5a98b9ecd95e1b215d593cf9201d8/pkg/client/tools.go#L125-L127 which allows the "successfully imported images" result to get printed.
Compare that to this other k3d code to import images into clusters (rather than nodes) which fails if any individual image fails to import: https://github.com/k3d-io/k3d/blob/7b1b416c2298f1aa30950eaae1d2847140ee285a/cmd/image/imageImport.go#L75-L86
Or even this code in the same importWithToolsNode() method that returns errors if any image fails to save: https://github.com/k3d-io/k3d/blob/852df7786ab5a98b9ecd95e1b215d593cf9201d8/pkg/client/tools.go#L114-L116
Should importWithToolsNode() return an error whenever any image installations encounter an error? That would at least mean that image installation errors are reported as overall install errors: that doesn't fix the install errors themselves, but it seems more appropriate than treating them as successes.

I am also using m1 and k3d image import fails. :(
my k3d version is 5.4.1.
$ k3d image import foo-my:latest -c local

.
.
.
TRAC[0002] Exec process '[./k3d-tools save-image -d /k3d/images/k3d-local-images-20220504000554.tar foo-my:c82a74353357d2f11f2d0a0543cbdd9367fcd0dd9f78b03cf6fa70cf11bbc3e2]' still running in node 'k3d-local-tools'.. sleeping for 1 second...

TRAC[0003] Exec process '[./k3d-tools save-image -d /k3d/images/k3d-local-images-20220504000554.tar fo-my:c82a74353357d2f11f2d0a0543cbdd9367fcd0dd9f78b03cf6fa70cf11bbc3e2]' still running in node 'k3d-local-tools'.. sleeping for 1 second...

.
.
.

DEBU[0029] Exec process in node 'k3d-local-tools' exited with '0'
INFO[0029] Importing images from tarball '/k3d/images/k3d-local-images-20220504000554.tar' into node 'k3d-local-server-0'...
DEBU[0029] Executing command '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' in node 'k3d-local-server-0'
INFO[0029] Importing images from tarball '/k3d/images/k3d-local-images-20220504000554.tar' into node 'k3d-local-agent-0'...
.
.
.
TRAC[0029] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-server-0'.. sleeping for 1 second...
TRAC[0029] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-agent-0'.. sleeping for 1 second...
TRAC[0030] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-server-0'.. sleeping for 1 second...
TRAC[0030] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-agent-0'.. sleeping for 1 second...
TRAC[0031] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-server-0'.. sleeping for 1 second...
TRAC[0031] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-agent-0'.. sleeping for 1 second...
TRAC[0032] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-agent-0'.. sleeping for 1 second...
TRAC[0032] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-server-0'.. sleeping for 1 second...
TRAC[0033] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-agent-0'.. sleeping for 1 second...
TRAC[0033] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-server-0'.. sleeping for 1 second...
TRAC[0034] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-server-0'.. sleeping for 1 second...
TRAC[0034] Exec process '[ctr image import /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-agent-0'.. sleeping for 1 second...
.
.
.
ERRO[0035] failed to import images in node 'k3d-local-agent-0': Exec process in node 'k3d-local-agent-0' failed with exit code '1'
ERRO[0035] failed to import images in node 'k3d-local-server-0': Exec process in node 'k3d-local-server-0' failed with exit code '1'
INFO[0035] Removing the tarball(s) from image volume...
DEBU[0035] Executing command '[rm -f /k3d/images/k3d-local-images-20220504000554.tar]' in node 'k3d-local-tools'
TRAC[0035] Exec process '[rm -f /k3d/images/k3d-local-images-20220504000554.tar]' still running in node 'k3d-local-tools'.. sleeping for 1 second...
DEBU[0036] Exec process in node 'k3d-local-tools' exited with '0'
INFO[0036] Removing k3d-tools node...
DEBU[0036] Deleting node k3d-local-tools ...
TRAC[0036] [Docker] Deleted Container k3d-local-tools
INFO[0036] Successfully imported image(s)
INFO[0036] Successfully imported 1 image(s) into 1 cluster(s)

@ethanttbui , @CodingCanuck & @heesuk-ahn , please follow along in the new issue #1072

I have the same problem... Any update on this topic ?

To add some info, I have this happening to me and executed the following (some stuff altered for privacy):

k3d image import --cluster local --trace my-registry.me.com/app/app:2.8.3 --keep-tarball
docker exec -it k3d-local-server-0 ctr image import /k3d/images/k3d-local-images-20221117171312.tar

The output I got was
unpacking my-registry.me.com/app/app:2.8.3 (sha256:9379e04f6e56bf94db2d35f429dbf98cdcf8150a719b98face34981cec3ec23b)...ctr: content digest sha256:889bf72e765011f62f49d586fa4e24d42a865b11a676e612b162c24e9448181b: not found

In my mind this at least points into the tarball not being correctly produced, so I decided to compare the output of k3d-tools save with something else.

Jumped into the tools node and did ./k3d-tools save-image -d /k3d/images/k3d-local-images-temp.tar my-registry.me.com/app/app:2.8.3 and unpacked the tar, that had the following:

0d1e54d7b02115dcb3090315577baaccb869554c3ed505c64a455e581e13a57e
1288696addccc4013c5bcf61c1b6c38128a7214a0942976792918b51912d90f7
2b5a543f4bcd9d542c2b6d47951f3ef1fbca037cb2a2b5bd45694dcd6a673b5b
2d13c582c25d67b636cd6289ec75b79e746c73c08c6d96d2deff17a4c55ea492.json
32264cb072bcfb1a6ededa41733450c4a2e72791419da04339c4b2b29931d76c
6c243dbf5e2a5d2dee49003e9be5438030648635f82872b48be52e651a41ff07
895c913e1e487191387c85cd2facafc8b1a94404ea2a036fb562db42150575ec
manifest.json
repositories

I did a docker save of the same image on my mac and inspected the tar, did sha1sums on all the contents and then found only 2 differences:

The tar from my mac did NOT have a "repositories" file
the tar from my mac had in the manifest.json "RepoTags":null while the one in k3d save had "RepoTags":["my-registry.me.com/app/app:2.8.3"]

I then exec-ed into the tools node again, mde those 2 modifications (delete repositories and set RepoTags to null) and placed a tar of the outcome in /k3d/images/test1.tar.
Finally, I did docker exec -it k3d-local-server-0 ctr image import /k3d/images/test1.tar and that succeeded.
Now, I haven't enough knowledge about the image format to understand why this is causing this to fail, but at least it seems to be the cause. Happy to provide more info or do more tests, this seems quite frequent on my end.

To add some info, I have this happening to me and executed the following (some stuff altered for privacy):

k3d image import --cluster local --trace my-registry.me.com/app/app:2.8.3 --keep-tarball
docker exec -it k3d-local-server-0 ctr image import /k3d/images/k3d-local-images-20221117171312.tar

The output I got was
unpacking my-registry.me.com/app/app:2.8.3 (sha256:9379e04f6e56bf94db2d35f429dbf98cdcf8150a719b98face34981cec3ec23b)...ctr: content digest sha256:889bf72e765011f62f49d586fa4e24d42a865b11a676e612b162c24e9448181b: not found

In my mind this at least points into the tarball not being correctly produced, so I decided to compare the output of k3d-tools save with something else.

Jumped into the tools node and did ./k3d-tools save-image -d /k3d/images/k3d-local-images-temp.tar my-registry.me.com/app/app:2.8.3 and unpacked the tar, that had the following:

0d1e54d7b02115dcb3090315577baaccb869554c3ed505c64a455e581e13a57e
1288696addccc4013c5bcf61c1b6c38128a7214a0942976792918b51912d90f7
2b5a543f4bcd9d542c2b6d47951f3ef1fbca037cb2a2b5bd45694dcd6a673b5b
2d13c582c25d67b636cd6289ec75b79e746c73c08c6d96d2deff17a4c55ea492.json
32264cb072bcfb1a6ededa41733450c4a2e72791419da04339c4b2b29931d76c
6c243dbf5e2a5d2dee49003e9be5438030648635f82872b48be52e651a41ff07
895c913e1e487191387c85cd2facafc8b1a94404ea2a036fb562db42150575ec
manifest.json
repositories

Saving the image directly in my mac and then copying it into the volume and manually importing (ctr image import) failed with the same error. Then I tried saving the image on my mac again but this time using the hash reference and that was imported successfully.
When I inspected the hash-saved-image tar, did sha1sums on all the contents and then found only 2 differences comparing to the one saved by k3d:

The tar from my mac did NOT have a "repositories" file
the tar from my mac had in the manifest.json "RepoTags":null while the one in k3d save had "RepoTags":["my-registry.me.com/app/app:2.8.3"]

I then exec-ed into the tools node again, mde those 2 modifications (delete repositories and set RepoTags to null) and placed a tar of the outcome in /k3d/images/test1.tar.
Finally, I did docker exec -it k3d-local-server-0 ctr image import /k3d/images/test1.tar and that succeeded.
Now, I haven't enough knowledge about the image format to understand why this is causing this to fail, but at least it seems to be the cause. Happy to provide more info or do more tests, this seems quite frequent on my end.

@iwilltry42  how do we reopen this? Still observing this on 5.4.6. Thakns

ran into this as well, thought i'd share some more findings.
context
very relevant fact here is that i'm running this on an M1 mac.
k3d version v5.4.4
k3s version v1.23.8-k3s1 (default)

/ # ctr version
Client:
  Version:  v1.5.13-k3s1
  Revision:
  Go version: go1.17.5

Server:
  Version:  v1.5.13-k3s1
  Revision:
  UUID: dc205011-e667-416a-9c8e-c7ba88eb82c8

problem
fwiw i suspect this issue is related: https://github.com/containerd/containerd/issues/6441, particularly the in-depth explanation here (https://github.com/containerd/containerd/issues/6441#issuecomment-1098609359).

So import is matching both linux/amd64 and linux/386, but since the image was pulled and exported for only the linux/amd64 platform, import cannot find the necessary content for linux/386 platform.
Since there seems to be inconsistency between ctr import and ctr export as far as platforms goes, which would be correct? In this case, the image is exported for just linux/amd64 but import expects linux/amd64 and linux/386.

fixes were identified for this and merged to containerd here (https://github.com/containerd/containerd/pull/6906) at the end of august and the beginning of november (https://github.com/containerd/containerd/pull/7615).
i tried updating k3d to see if i could get a release of ctr that includes the fixes -

/ # ctr version
Client:
  Version:  v1.6.6-k3s1
  Revision:
  Go version: go1.18.1

Server:
  Version:  v1.6.6-k3s1
  Revision:
  UUID: 5afae041-3b63-41d7-8dc3-c011fcc6390d

i was getting the same error messages as explained above. k3d image imports would fail and/or attempts to deploy would return an image pull error
ERRO[0030] failed to import images in node 'k3d-local-agent-2': Exec process in node 'k3d-local-agent-2 failed with exit code '1'
INFO[0030] Removing k3d-tools node...
INFO[0030] Successfully imported image(s)
INFO[0030] Successfully imported 1 image(s) into 1 cluster(s)

findings
manual import approach
given the aforementioned issue, i wanted to confirm whether the problem was in fact stemming from discrepancies in underlying architecture. first i ran an image import to ensure the tarball persists locally:
k3d image import --cluster local-cluster-name --trace gcr.io/private-regstry/app:2.8.3 --keep-tarball

i made a note of the logs that show the full ctr cmd being run to import the image in the trace logs, i.e.
TRAC[0028] Exec process '[ctr image import /k3d/images/local-cluster-name-xxx-images-20221202162620.tar]' still running in node 'local-cluster-name-agent-2'.. sleeping for 1 second...

i then ran docker exec to get a shell in the 'master node' container and cd'd into /k3d/images
here, i re-ran the ctr image import command but made sure to include the --all-platforms flag.

from the help text:
 --all-platforms      imports content for all platforms, false by default

/k3d/images # ctr image import --all-platforms local-cluster-name-images-20221202162620.tar
unpacking gcr.io/xxxx/xxxx:(sha256:xxxxx)...done

unlike before, now it unpacks - little victories 😄...
i then ran ctr images list | grep 'your-image-name' to confirm it unpacked. that, unfortunately, is where the success ends going this route. though you can kick off a deployment and get past the prior error(s) related to the image not being pull-able, you will then hit an error similar to the following:
 - dev:pod/app-6dc6fc866-lm2w6: container xxx in error: &ContainerStateWaiting{Reason:CreateContainerError,Message:failed to create containerd container: error unpacking image: failed to resolve rootfs: content digest sha256:767c499cb2f8d13b940afeb98edd0fe91505b0d6993a4820b0a1fc9a58a11cb2: not found,}

when running ctr images list to get the digest for the same problematic image, as you may have guessed the digests are different:
gcr.io/xxxx/xxx      application/vnd.docker.distribution.manifest.v2+json      sha256:19cbc744b63eb4b1447401c775dc33a09f141f09b9a0c29632e008ead05c8e43 493.0 MiB linux/amd64

the above error (failed to resolve rootfs: content digest) is referenced in the following issues https://github.com/containerd/containerd/issues/1498 and https://github.com/containerd/containerd/pull/1506, which concern a feature long-released in containerd for multi-arch unpacking. the problem here doesn't seem to be one of lack of support for unpacking multi-arch builds, though, more-so that the digests aren't matching.
i noticed ctr images import has a --digests flag:
--digests            whether to create digest images (default: false)

so that seemed like the next thing to try...
docker save approach
since k3d image import doesn't offer a way to include all-platforms or digests, i searched for whether there was a workaround for that. (credit to https://github.com/kubernetes-sigs/kind/issues/2402#issuecomment-1056734295 for pointing me in this direction)

before doing this it's necessary to delete the old attempts in the local registry if you tried manually unpacking it via ctr on the node, etc.

to import an image, run the following instead of k3d image import
docker save gcr.io/example-repo/image | docker exec --privileged -i k3d-local-server-node-example ctr --namespace=k8s.io images import --all-platforms --digests --snapshotter=overlayfs -

this is almost the same approach as what i was doing above, except i'm skipping the k3d image import step and using docker save and added the --digests and --snapshotter flags.
in theory, this ought to make your image(s) available and i suspect the above could even function as a workaround for some, but that assumes the source image has multi-platform builds available to be saved in the first place.
unfortunately, this was not the case for me as the image(s) in question don't currently have builds compatible with the underlying architecture of the k3d 'nodes'. if this is you as well, you can expect to get a back-to-square-one error of:
DEBU[0046] marking resource failed due to error code STATUSCHECK_IMAGE_PULL_ERR  subtask=-1 task=Deploy
 - dev:deployment/xxx: container xx is waiting to start: gcr.io/example-repo/x can't be pulled

the workaround to the workaround might be rebuilding the affected image(s) with --platform flag, i.e.  docker build --platform <whatever the output of $(uname -m) is on a k3d node>, but i've not had an opportunity to try this yet.


[1.16.5-v1.3.3] Broken recipes in the datapack prevent creating or loading worlds.

Hey there, so i somehow am getting this error now about the datapack in this mod which prevents creating or loading worlds.  I strangely enough didn't get this error before though, it just happens now for unknown reasons, See screenshots from the log here:

I have looked into the mods files in gildedarmor-forge-1.16.5-1.1.3.jar/data/gildedarmor/recipes/ and i've found out that the recipes in the gilded_enderite_xyz_smithing.json files are broken. The tag has a # for some reason, which breaks the recipe/datapack and i like i mentioned above, it makes it impossible to play the game.
The gilded_netherite_xyz_smithing.json files are fine and don't have the # in them.
Can you upload a new file with the # removed from the gilded_enderite_xyz_smithing.json recipes so it can be used by modpacks? That should fix the issue. I'd like to do it myself but whenever i change just a teeny tiny little thing in the mod's .jar file the CurseForge Launcher just straight up removes the file because it is no longer a legit file, or rather, modified in this case.
Thanks in advance!

gildedarmor-forge-1.16.5-1.1.3.zip
Fixed it for you :D


experiment with collecting some new terms from schema_sheets

actually, why do they even have to be new terms?
What would a NMDC schema sheet look like?
Be sure to plan for round-tripping

schemasheets won't be a useful tool for managing a schema of this complexity


chore(ci): automatically stale and close issue/pr

Summary
We decided to close old tickets for the repo. This workflow will automatically label PRs/issues as stale for 14 days of inactivity, and close after another 7 days.

@StarlightIbuki shall we cherry-pick to ee?

@AndyZhang0707 I don't think we need EE to have this action.


Missing humidity reading

Hue motion sensors also provides humidity reading, will be nice to have this service.

What is the source for that information? I am asking this because it is certainly not true, the hue motion sensor, and also the outdoor motion sensor, are both lacking such capability.
This becomes apparent when you query the bridge, it shows no such available services at all.


It replaced certificate on wrong iis-site

Love the product.
I run it yesterday (v1.9.1) on win 2012 R2.
It did its job, and created a certificate for the site I requested. All good there.
However, it also replaced the active certificate on one of the other sites that already had a certificate. That other site didn't have anything to do with this (nothing in common on domain name etc).
The thing that is different on the site where it incorrectly replaced the active certificate, compared with other sites on same IIS that also had certificates, is that this one had the "SNI" checkbox unchecked; https://www.dropbox.com/s/htwdc6694jpb0jf/160916_sni.png?dl=0
Kind of critical bug

Ideally then there should be an option to bind to a specific IP addresses even with SNI checked or unchecked which currently isn't the case.
@bitified by the way did you enter y as once it'd created the certificate or skip past and manually add it? (I've found pressing y as the last option will override the settings and I think it does give a warning about this).

I've just had the same happen to me. I agree its a critical bug. I don't remember seeing a warning. Is there a way to add a certificate on the server without this happening, or do I need to wait for a fix before running it again?

I too am having this issue with version 1.9.1, Windows Server 2012 R2 Standard.
@SgtOddball does your suggestion affect automatic renewals in any way?

Nope, I've never had any problem with it renewing other than I use one of the certs for a mail server which doesn't catch on that the certificate has been updated - but that's really a moot point.

Just had this happen to me as well. Also 2012 R2. I created a new certificate for a site that previously did not have SSL and it worked fine. Then we got a notification from our customer that their site wasn't secure. I looked and it was sending the wrong certificate. I looked at the bindings and it had not only changed the certificate for the www https binding, but it disabled SNI for the same binding.
Also using 1.9.1. I haven't seen this problem with automatic renewals (I haven't seen this problem before at all, actually).

Same here..

I've also seen this behaviour. The underlying issue I believe is that not all manually created HTTPS bindings specify a certificate hash and therefore the certificate can change based on IIS internal logic, which appears to be affected by changes in seemingly unrelated bindings/websites.
Setting SNI might trigger the IIS GUI to also set the hash for that binding, but I haven't tested that.
I think I should run some tests and at least give a warning that something like this might happen if not all existing bindings are SNI enabled and/or pinned to specific certificates.

Just saw this again using <IP_ADDRESS>06. I installed a certificate on a new site (ID 92) and it worked, but it also updated a different site that I set up a month ago (ID 68) with the certificate I just generated and turned off SNI.
Now, with the site with ID 68, I hadn't used the --san option because I only wanted the certificate on the test URL since the live domain isn't pointed there yet, but it has bindings for the live domain.

This should be fixed with #263


Some comments are not loaded / loaded several times

Porat's changes not there
Duo1 multipe times, comment is repeated

Somehow this got fixed, probably I was using an outdated version of either file.


Please configure the Appcenter apps to work with Android Work Profile

Describe the solution you'd like
Please configure the apps to work with Android Work Profile
https://microsoft.sharepoint.com/teams/meconnection/SitePages/Android-App-publishing-for-use-with-Work-profiles.aspx
For me it is Outlook for Android and Teams Alpha, Beta, Pilot, Dogfood for Android.
Likely it should be configured for all apss
Thank You

Hi Team
We are also looking for similar feature .


[Feature] Multi user editing support

Summary
Today the editor will not support two developers working on the same app/page. We need to add some multi user editing support or at least warn against the same.

We'll be handling this as part of Collaboration & Version Control #3199. Each developer's changes will be in a separate commit that needs to be merged


use wercker deploy step to push built images

https://app.wercker.com/#build/54b92e53f7eddb0b3408d512 is clean


FIX - DEPLOY ONLY - BRANCHED FROM PROD

PREVIEW:PRODUCTION
can be OFF, DEVELOP or STAGING

Closing this PR as we don't want to merge changes


the +/- buttons on the toolbar do not zoom to the center of the view when the selection is not visible on the view

When we zoom in with the +/- button on the toolbar, the zoom is always to the center of the selection range, but it should be to the center of the selection if that selection is visible in the range we see. If the selection is not in the range we see, it must zoom to the middle of the view.

this issue is fixed when we did this PR #463 https://github.com/theia-ide/theia-trace-extension/pull/463


FetchProjector: Handle setNextRow return value

The return value of downstream.setNextRow was ignored. So the
FetchProjector kept emitting more rows even if the Downstream didn't
want anymore.
This currently isn't an issue because there is never a projector after
the FetchProjector which isn't consuming all rows.
But it's against the contract and might cause a bug in the future.
Test boiler-plate is mostly copied from the psql_nolimit branch.

lgtm. good catch!


[doc]add release note link at entry page

Coverage increased (+15.6%) to 67.509% when pulling 90f7a6626f8fc4a4dc01f6be3e6a00b67cda047e on yanjga/release_note into 36ec012c8396c1b6441182e894cb6743556e389a on master.


Create ArcBot organization.

Was just thinking of this, but maybe we could split off some things? Like plugins and future web ui into separate repositories in one unified ArcBot organization?
As an existing example: https://github.com/CloudBotIRC/

Will likely do this when I feel comfortable to declare a 'release' and announce the bot to a lot of people.
At the moment, I'm still working out a lot of kinks and adding core features; but will likely create an org in the future


Turning tab_bar translucency off breaks view size

On iPad, for some reason turning off tab bar translucency creates a grey bar above the tab bar where it appears to be calculating the height - the height of the tab bar.
I'm using create_split_screen for each tab, so not sure how I'd recalculate the view dimensions - the grey bar appears across both the master and detail screens.
I'll try and get a dummy app setup soon.

Hi @chrise86, were you ever able to get an example app set up? Is this still an issue, or has it been resolved?

Hi @andrewhavens honestly I'm not sure, it was so long ago and I'm no longer with that project - haven't really touched RM since either, so I'll close :+1:


Is there a way to change the return promise message?

Hi Benjamin,
Love this plugin and very easy to implement mailchimp with gatsby thanks to this.
I'm wondering if there's a way to change the returned promise messages? The error message I get right now when the user is already subscribed is:
msg<EMAIL_ADDRESS>is already subscribed to list Famiglia Newsletter. Click here to update your profile"

I'd like it to only be something like "It seems that you already are subscribed!".
Thank you,
Joakim

can you wrap the call in a try/catch, then key off the string is already subscribed to list then reformat to a string you prefer?

Got it. That worked. Thank you!


Make arguments for add and filter transactions optional, other fixes for filter

Fixes #120 , closes #121 , resolves #122

Right now I'm left with the addtx part of #120 , which actually requires quite a bit of change


Support Python 3.12

Closes None.

Pending Numba 0.59 release to support Python 3.12

Thanks for working on this, looks like the blocker is now the cognitive atlas dependency: https://github.com/CognitiveAtlas/cogat-python/issues/13


Phone/Tablet Testing Screenshots

Computers (everything, including admin):

Your Mac
[ ] See if we can dig up a monitor with the dimensions/resolution from the city. Maybe Laura can send us a screencap?

Tablet (everything, including admin):

[ ] iPad
[ ] iPad Mini

Phone (public-facing stuff only):

[ ] iPhone 4
[ ] iPhone 5
[ ] iPhone 6
[ ] iPhone 6+
[ ] Galaxy s3
[ ] Galaxy s4
[ ] Galaxy Note 3

City computer monitor, possibly reasonable facsimile:

City computer, possibly reasonable facsimile of resolution/dimensions:

Slight table wonkiness on ipad, landscape:
Dramatic margins on ipad, portrait. Do we want mobile to kick at this width?

iPad Mini
Same issues as iPad

iPhone 4
Splash looks pretty huge:

Margins work pretty well, heading appropriately sized:

Nav dropdown still a bit wonky, not as bad as ipad:

Forms look good:

iPhone 6/6+
Same as above, without splash issues

Galaxy S3
Same as above
Galaxy S4 & Note
Same as above, minus splash issues

Tasks

[ ] fix button issue for tablets
[ ] decrease margins for tablets, especially in portrait mode
[ ] unsuck mobile navbar dropdown
[ ] decrease splash text size for smaller smartphones
[ ] add some padding for mobile splash
[ ] decrease margin on opportunities page

Tasks

[ ] fix button issue for tablets
[ ] decrease margins for tablets, especially in portrait mode
[ ] unsuck mobile navbar dropdown
[ ] decrease splash text size for smaller smartphones
[ ] add some padding for mobile splash
[ ] decrease margin on opportunities page

@hamhands i'm going to open a second issue to keep track of those tasks.

@bsmithgall :ok_hand: :ok_woman: :+1: :ok:

@hamhands can you verify this works on your phone on staging/production? If so, feel free to close this issue. #178 still needs to be resolved, though.

@bsmithgall :+1:

See #183


Overflow icon is a grey but title/search/filter icon are white

Working as intended. Want to emphasize the overflow as the contained items are less important.


Vmail is down, but I am not finished migrating my accounts

I have a LOT of accounts, so migrating takes a very long time. I just got to an account which needs activation from my old email to be changed though, but I can't access Vmail as the server seems to be down.

I don't have any issue accessing vmail. Could you be more specific, what happens exactly ?
Just don't flood the server with authentication or you'll get blocked automatically.
For example if you try to login more than 30 times in less than 10 minutes you'll get ban 1h.
To test if you're ban you can ping vmail.me, if you don't get any answer then there is a high chance you're on the ban list, or you have a network issue.

Daheck? It started working again, but I just realised that that's only because I turned Tor back on…
Now I'm not wondering why my home PC address is blocked when all of my proxies aren't…


[1926] Fix link for accredited bodies validation error link

Context
:shipit:
Changes proposed in this pull request
:shipit:
Guidance to review
:shipit:

 [?] Link validations errors for accredited bodies descriptions


gdb not working with distrod

When I run a program in gdb I get the following error message:
[Distrod][ERROR] Failed to drop_privilege. Aborting.
If I disable distrod debugging goes fine without any problems.
For the time being I simply disable distrod whenever I have to use gdb however a permanent solution would be greatly appreciated.

Thanks for reporting. Yeah, I didn't think of the situation where Distrod's shell is invoked by the debugger. I'll fix it.
By the way, I appreciate it if you could follow the template from next time for a bug report. This time I was able to guess the cause regardless of the environment, but I can't do that every time.

I created a fix for this in https://github.com/nullpo-head/wsl-distrod/pull/48

Hi thanks so much for trying to fix it and the workaround, @fredizzimo !
Yes actually it needs two fixes; one is fix drop privilege, the another is bind-mounting the real shell on /opt/distrod/alias/usr/bin/*sh. I was working on it before getting busy, and now I have time and am resuming the work.

Has this problem been fixed now?
I need to debug through clion + WSL, but I still report an error.
I use distrod version 0.1.4
The error message is:
com. jetbrains. cidr. execution. debugger. backend. gdb. GDBDriver$GDBCommandException: Warning:
Cannot insert breakpoint 1.
Cannot access memory at address 0x1e216

this problem still persists. When will it be resolved?


Update docs to the latest UI

The UI has had a lot of improvements recently. Now that the interface has stabilized a bit, its time to update docs. This PR updates all the relevant images and also modifies wording in a few places.
Reference Issues or PRs

Resolves https://github.com/nebari-dev/jhub-apps/issues/411
What does this implement/fix?
Put a x in the boxes that apply

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds a feature)
[ ] Breaking change (fix or feature that would cause existing features not to work as expected)
[x] Documentation Update
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build related changes
[ ] Other (please describe):

Testing

[ ] Did you test the pull request locally?
[ ] Did you add new tests?

Documentation

Access-centered content checklist
Text styling

[ ] The content is written with plain language (where relevant).
[ ] If there are headers, they use the proper header tags (with only one level-one header: H1 or # in markdown).
[ ] All links describe where they link to (for example, check the Nebari website).
[ ] This content adheres to the Nebari style guides.

Non-text content

[ ] All content is represented as text (for example, images need alt text, and videos need captions or descriptive transcripts).
[ ] If there are emojis, there are not more than three in a row.
[ ] Don't use flashing GIFs or videos.
[ ] If the content were to be read as plain text, it still makes sense, and no information is missing.

Any other comments?

This is ready for review whenever someone has time :)

@aktech I've made all the suggested modifications. This is ready for another look.


TinaCMS | When a file is renamed / deleted, update content that references it

[x] When renaming a file, update the content that references it
[x] When deleting a file, warn user that "X pages reference the content" before removing the references

This is done except for handling nested reference fields: https://github.com/tinacms/tinacms/pull/5218

Handling nested references is implemented now.
Demo video https://www.youtube.com/watch?v=v6yZQmol9fo

Remaining work:

[ ] Updated documentation

✅ Done - Feature released in version 2.5.0 of tinacms


Investigate non-deterministic hang with >1 hugepage on frequent pipeline Falcon WH on slow dispatch

We found this issue with Falcon on SD on frequent when trying to upgrade machines to use more than 1 HP per MMIO on WH. This is to enable @abhullar-tt + @DrJessop changes on multiple queues.
I initially thought that 2 HP per mmio (N300) were good for the model runner WH BM. This runner is N300. I'm specifically looking at whether multiple HP is ok for the frequent model pipelines.
Here are the runs. You can see we ran them quite a few times without incident. Ignore the failure and cancellations in each - those are other things
FD: https://github.com/tenstorrent-metal/tt-metal/actions/runs/7225522273
SD: https://github.com/tenstorrent-metal/tt-metal/actions/runs/7225521424/job/19761169441I n
What we were seeing before were hangs on the falcon test in the frequent pipeline on SD with 4HP per MMIO. Which is weird because this shouldn't touch SD.
Falcon seemed to not hang as of yesterday on SD, as shown by above links.
However, today I wake up and I see a falcon SD hang on this machine running on main: https://github.com/tenstorrent-metal/tt-metal/actions/runs/7256117029/attempts/1
The original run (check attempt 1) on 4 HP per MMIO WH:
https://github.com/tenstorrent-metal/tt-metal/actions/runs/7225521424/job/19761169441
Ultimately, we decided to file this issue for the frequent pipeline with P2 and merge the cq per device + hugepage infra changes.
cc: @boris-drazic @farbabi @jvasilje @davorchap @abhullar-tt

The full test in here: tests/scripts/run_models.sh
in slow dispatch mode. you could prob just pluck the command at line 67
a more recent example since logs are gone for the original ones:
https://github.com/tenstorrent-metal/tt-metal/actions/runs/7578214629/job/20640433405
cc: @vtangTT I sent this to you in private on slack

Update: ran 100 interations of
pytest models/demos/falcon7b/tests/test_falcon_end_to_end.py::test_FalconCausalLM_end_to_end_with_program_cache[BFLOAT16-L1-falcon_7b-layers_32-prefill_seq128]
and encountered no hangs. Not sure if we want to close this issue or if I should run some with the whole test to see if I can recreate.

https://github.com/tenstorrent-metal/tt-metal/actions/runs/7706989651/job/21003434040
models/demos/falcon7b/tests/test_falcon_end_to_end.py::test_FalconCausalLM_end_to_end_with_program_cache[BFLOAT16-L1-falcon_7b-layers_32-prefill_seq128] still fails here with a hang 9 hours ago.
I believe you're right and we'll have to start looping over the models script. @farbabi was not able to reproduce this way, so perhaps we can loop with the slow dispatch unit tests with python api unit tests.
Try first looping the unit tests line in tests/scripts/run_pre_post_commit_regressions_slow_dispatch.sh:25 with just that falcon test together and see where that gets us

I was able to observe a timeout on the 2nd iteration of running
python tests/scripts/run_tt_metal.py --dispatch-mode slow
followed by
pytest models/demos/falcon7b/tests/test_falcon_end_to_end.py::test_FalconCausalLM_end_to_end_with_program_cache[BFLOAT16-L1-falcon_7b-layers_32-prefill_seq128]

Hurray, we can observe this easily.
We'll need to fix before further LLM work can start, probably.
cc: @tt-aho @TT-BrianLiu @boris-drazic

@tt-rkim is this resolved?

@jvasilje Nope - still under investigation. If we can't find anyone to assign this full time to for investigation, we'll have to move it to P2. Which may be not desirable because it's Falcon.

assigning to @jliangTT per his request for further triage

is this issue still present?


buttons not sticky enough on android phone

Received Oct 2022
"When I open the book, the playback buttons are hidden at the bottom of screen and do not appear. So I need to scroll down to open the book. (from 0:03 to 0:05 on the video file)
If I try to scroll up, the playback buttons move to the bottom and disappear from view. (from 0:32 to 0:36 on the video file)
When the screen is scrolled by moving before a phrase, the playback buttons move to the bottom and disappear from view as well. (from 0:23 to 0:27 on the video file)
If I set to "Announce page number" un-ticked, continue to repeatedly read the phrase before the page number and page number. The voice reads the phase before the page number and "pag..."."

Also noticed on windows by another tester
"Yes at the beginning of the page, I see "Show Navigation Sidebar" icon and can open the TOC, can select and move to the chapters.
However, once I move to the other chapters at the middle of the page, I can't see "Show Navigation Sidebar" icon and need to scroll up to the top of the page.
"
(Windows 10 Pro)

This should be fixed here:
440aac49f735be7e2476d5492ee808d51ac06eb2

This should be re-tested on Android phones. A similar issue could be seen on the desktop and has been resolved.


Back sides

The illustrations for the back sides are tied to the type it is. But how do we store that best so that it easy to generate them when doing print files, whilst not having it hardcoded in a script?

First step, create all backgrounds as svg files in the size of the template mentioned in #2 . I'm on it!

First step, create all backgrounds as svg files in the size of the template mentioned in #2 . I'm on it!

:heavy_check_mark: Done!

Fixed by #30


Server option pingInterval

I can't find any automatic ping/timeout support in ws? To properly track disconnections you need to ping and this is very inefficient from the JavaScript interface (you need to keep a vector of all the sockets and iterate over them and keep track of timeouts and remove/add to this vector which is all very inefficient).
pingInterval could be a simple integer option you pass, pingInterval: 10000 will disconnect any client not sending a pong within 10 seconds from getting a ping.
Does a similar thing exist in ws? Would this feature be helpful? I could use the optimized broadcast internally to broadcast the ping in a much more efficient way than possible with the JavaScript interface.

IIRC, in the ws module, the pings have to be manual, for some reason.
Also, it might be a good idea to automatically pong on ping (if it already doesn't exist), emitting a "ping" event.
The feature would definitely be useful.

https://github.com/websockets/ws/pull/635

Also, it might be a good idea to automatically pong on ping from the client (if it already doesn't exist), emitting a "ping" event.

NB: This is already implemented (I actually proposed a PR for the 'ping' event). When the server receives a ping, it'll automatically send back a 'pong'.

By the way, handling client pings from the native server may reduce a lot of overhead, although I think that most users (me anyway) still have to keep track of connections anyway. Otherwise, there would be no way of sending a client something, would there?


unable to use StructuredArguments with akka.event.slf4j.Slf4jLogger

Hi!
First of all I guess that this is not a problem related with this fantastic library , but maybe there is a workaround for this.
I'm using Spray.io that is using the akka.event.slf4j.Slf4jLogger:
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = INFO
everything is working fine until I try to use StructuredArguments that is not working, they are being taken as NonStructuredArguments
The point is that if I use directly the akka.event.slf4j.Logger:
Logger.root.info("log message {}", keyValue("aaaa", "bbbb"))
is working but is a blocking logging
It's supposed that the log in akka.event.slf4j.Slf4jLogger is the same type as the log in akka.event.slf4j.Logger  that is an org.slf4j.Logger
Thanks

bf
76541

Unfortunately, logstash-logback-encoder cannot do anything about this.  This problem is in akka.event.slf4j.Slf4jLogger.
Slf4jLogger collapses everything down into a string.
See here


API Key login

Is there a way to login with API keys instead of username/password?

No. This API provides a simulation of the normal user's connection. It does not provide official programmer interface of Instagram.
Sorry :)


Fix several issues related to type narrowing

Purpose
$title
Fixes #34160
Fixes #34647
Fixes #34607
Approach

Describe how you are implementing the solutions along with the design details.

Samples

Provide high-level details about the samples related to this feature.

Remarks

List any other known issues, related PRs, TODO items, or any other notes related to the PR.

Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Merged to a new branch