feat(deployment) replace static secret with projected volume

What this PR does / why we need it:
This PR replaces the static service account secret with a projected volume. The projected volume is the standard way to authenticate against the K8s API since v1.21.
With this change we keep the token mounted only on the ingress controller container and gain the security improvements that the TokenRequests API brings.
Which issue this PR fixes

fixes https://github.com/Kong/kubernetes-ingress-controller/issues/2731

Special notes for your reviewer:

Rotating tokens.

These tokens rotate. Our existing code has nothing to handle this, though it's possible that either client-go or controller-runtime support it natively. We need to confirm behavior after a rotation and build support for it if none exists in libraries.

client-go introduced support for rotating tokens in https://github.com/kubernetes/kubernetes/pull/67359

Expiration time

The expiration time has been set to 3607 following the Kubernetes default value.
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] PR is based off the current tip of the main branch.
[x] Changes are documented under the "Unreleased" header in CHANGELOG.md
[x] Commits follow the Kong commit message guidelines

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

@rainest, yes, you are right. this change breaks on 1.19 and older when Values.deployment.serviceAccount.automountServiceAccountToken is enabled (default).
One option is to increase the K8s required version to 1.20 (https://github.com/Kong/charts/blob/main/charts/kong/README.md#prerequisites) and document somewhere that older versions would work disabling automountServiceAccountToken.
Alternatively, we could check for the KubeVersion and use the static secret instead.
WDYT?

helm supports restricting kubernetes versions by specifying field kubeVersion: ">=1.22.0-0" in Chart.yaml.
https://helm.sh/docs/topics/charts/#the-kubeversion-field

Hi @ubergesundheit @mcharriere 👋

Alternatively, we could check for the KubeVersion and use the static secret instead.

If possible I'd much rather prefer this route at this point to not break our users. What do you think about introducing this capabilities check (via helm) in this PR?
BTW: what specific change in k8s is this leveraging that breaks 1.19 and older? I've looked through various docs and couldn't find anything specific that would point to that version.

If possible I'd much rather prefer this route at this point to not break our users. What do you think about introducing this capabilities check (via helm) in this PR?

Sounds good.

BTW: what specific change in k8s is this leveraging that breaks 1.19 and older? I've looked through various docs and couldn't find anything specific that would point to that version.

In 1.20, the RootCAConfigMap graduated to beta, which enabled it by default. Meaning that this configMap mount fails:
            - configMap:
                items:
                - key: ca.crt
                  path: ca.crt
                name: kube-root-ca.crt

I didn't check if there are alternatives for <1.19, as I think for those cases keeping the current behavior should be fine having in mind that the ingress controller itself doesn't support 1.19 since v2.6.

In 1.20, the RootCAConfigMap graduated to beta, which enabled it by default. Meaning that this configMap mount fails in previous versions:
            - configMap:
                items:
                - key: ca.crt
                  path: ca.crt
                name: kube-root-ca.crt

This was the missing bit. Thanks!

I didn't check if there are alternatives for <1.20, as I think for those cases keeping the current behavior should be fine having in mind that the ingress controller itself doesn't support 1.19 since v2.6.

We can retain the old behaviour for those versions, no?

We can retain the old behaviour for those versions, no?

yes, I just pushed a commit with the change. I tested it on k8s versions 1.19, 1.20 and 1.25 and it works as expected in all of them.

Just added https://github.com/Kong/charts/pull/725 to test across versions, so if ya'll can fetch rebase onto our current main it should confirm the new and legacy behavior.
@pmalek should we indeed need some additional CI values to test this? Although this isn't configured explicitly in any I know of, that shouldn't be an issue since we create the account by default: https://github.com/Kong/charts/blob/892774eb2780794e0cf7522d16a27f3dd621f0a7/charts/kong/values.yaml#L26-L27

@pmalek should we indeed need some additional CI values to test this? Although this isn't configured explicitly in any I know of, that shouldn't be an issue since we create the account by default:
https://github.com/Kong/charts/blob/892774eb2780794e0cf7522d16a27f3dd621f0a7/charts/kong/values.yaml#L26-L27

Yes, this should be enough for this PR since we want to test the old and new behaviours for pre 1.20 and 1.20 and up.

Will this change make its way over into the manifests that sit in the deploy directory of the Kong/kubernetes-ingress-controller repository?

@seh there's no reason it shouldn't. https://github.com/Kong/kubernetes-ingress-controller/issues/3475 to track that.


Ginkgo VMs: start Kubernetes after vagrant halt <VM Name>

I would like to be able to halt the Ginkgo Kubernetes test VMs so I don't have to go through the time-intensive task of starting them from scratch.
When I do the following:
Ians-MacBook-Pro:test ianvernon$ vagrant halt k8s2-1.9
==> k8s2-1.9: Attempting graceful shutdown of VM...
Ians-MacBook-Pro:test ianvernon$ vagrant halt k8s1-1.9
==> k8s1-1.9: Attempting graceful shutdown of VM...
Ians-MacBook-Pro:test ianvernon$ vagrant up k8s1-1.9
Bringing machine 'k8s1-1.9' up with 'virtualbox' provider.
...
Ians-MacBook-Pro:test ianvernon$ vagrant ssh k8s1-1.9

vagrant@k8s1:~$ kubectl get pods
The connection to the server <IP_ADDRESS>:6443 was refused - did you specify the right host or port?
vagrant@k8s1:~$ ps aux | grep kube
vagrant   2655  0.0  0.1  16712  2176 pts/0    S+   18:38   0:00 grep --color=auto kube
vagrant@k8s1:~$ docker ps -a
CONTAINER ID        IMAGE                                                    COMMAND                  CREATED             STATUS                          PORTS                    NAMES
38199b0843d0        k8s1:5000/cilium/cilium-dev                              "cilium-agent --debu…"   About an hour ago   Exited (0) About a minute ago                            k8s_cilium-agent_cilium-7g8hb_kube-system_2d7fe162-22f8-11e8-9dc6-08002795cd5f_0
d28e8d780d54        gcr.io/google_containers/pause-amd64:3.0                 "/pause"                 About an hour ago   Exited (0) About a minute ago                            k8s_POD_cilium-7g8hb_kube-system_2d7fe162-22f8-11e8-9dc6-08002795cd5f_0
98f5a86edd29        gcr.io/google_containers/kube-proxy-amd64                "/usr/local/bin/kube…"   About an hour ago   Exited (2) About a minute ago                            k8s_kube-proxy_kube-proxy-tz5kc_kube-system_50919e2b-22f4-11e8-9dc6-08002795cd5f_0
523548f5b12b        gcr.io/google_containers/pause-amd64:3.0                 "/pause"                 About an hour ago   Exited (0) About a minute ago                            k8s_POD_kube-proxy-tz5kc_kube-system_50919e2b-22f4-11e8-9dc6-08002795cd5f_0
f45c94b75dbd        gcr.io/google_containers/etcd-amd64                      "etcd --listen-clien…"   About an hour ago   Exited (0) About a minute ago                            k8s_etcd_etcd-k8s1_kube-system_7278f85057e8bf5cb81c9f96d3b25320_0
8df94b806d85        gcr.io/google_containers/kube-scheduler-amd64            "kube-scheduler --ad…"   About an hour ago   Exited (2) About a minute ago                            k8s_kube-scheduler_kube-scheduler-k8s1_kube-system_6502dddc08d519eb6bbacb5131ad90d0_0
18f84cd4f2d3        gcr.io/google_containers/kube-apiserver-amd64            "kube-apiserver --al…"   About an hour ago   Exited (0) About a minute ago                            k8s_kube-apiserver_kube-apiserver-k8s1_kube-system_0f2a214dc21a3d684f32b88ebce38a98_0
23883312f0c9        gcr.io/google_containers/kube-controller-manager-amd64   "kube-controller-man…"   About an hour ago   Exited (2) About a minute ago                            k8s_kube-controller-manager_kube-controller-manager-k8s1_kube-system_8af14758f6dbd838b241a83557314e61_0
3778556b39e9        gcr.io/google_containers/pause-amd64:3.0                 "/pause"                 About an hour ago   Exited (0) About a minute ago                            k8s_POD_kube-scheduler-k8s1_kube-system_6502dddc08d519eb6bbacb5131ad90d0_0
710bd86fbdc3        gcr.io/google_containers/pause-amd64:3.0                 "/pause"                 About an hour ago   Exited (0) About a minute ago                            k8s_POD_etcd-k8s1_kube-system_7278f85057e8bf5cb81c9f96d3b25320_0
a64510842124        gcr.io/google_containers/pause-amd64:3.0                 "/pause"                 About an hour ago   Exited (0) About a minute ago                            k8s_POD_kube-controller-manager-k8s1_kube-system_8af14758f6dbd838b241a83557314e61_0
d85f6c89cb92        gcr.io/google_containers/pause-amd64:3.0                 "/pause"                 About an hour ago   Exited (0) About a minute ago                            k8s_POD_kube-apiserver-k8s1_kube-system_0f2a214dc21a3d684f32b88ebce38a98_0
bd75a0ea3fa0        registry:2                                               "/entrypoint.sh /etc…"   12 days ago         Up 20 seconds                   <IP_ADDRESS>:5000->5000/tcp   registry

No Kubernetes processes are started. I would like to just be able to start Kubernetes and not rebuild the Cilium Docker image. This is useful as I can keep the VMs around, boot them quickly with an already built Cilium docker image, and get to writing tests quickly.

@ianvernon The issue is that we disabled the swap on start, but we don't disable permanently, so when restart the system is not starting correctly.
I added the change in packer-ci-build, and I'll update the base image as soon is available.

@eloycoto I don't think this is related with swap. I think the containers are stopped and then kubeadm doesn't re-creates them because kubeadm is not running anymore.

@aanm
I'm 100% sure that it's the swap:
-- The start-up result is done.
Mar 09 12:51:17 k8s1 kubelet[2670]: I0309 12:51:17.607183    2670 feature_gate.go:226] feature gates: &{{} map[]}
Mar 09 12:51:17 k8s1 kubelet[2670]: I0309 12:51:17.608884    2670 controller.go:114] kubelet config controller: starting controller
Mar 09 12:51:17 k8s1 kubelet[2670]: I0309 12:51:17.608917    2670 controller.go:118] kubelet config controller: validating combination of defaults and flags
Mar 09 12:51:17 k8s1 kubelet[2670]: I0309 12:51:17.629264    2670 server.go:182] Version: v1.9.3
Mar 09 12:51:17 k8s1 kubelet[2670]: I0309 12:51:17.629441    2670 feature_gate.go:226] feature gates: &{{} map[]}
Mar 09 12:51:17 k8s1 kubelet[2670]: I0309 12:51:17.629541    2670 plugins.go:101] No cloud provider specified.
Mar 09 12:51:17 k8s1 kubelet[2670]: E0309 12:51:17.659428    2670 certificate_manager.go:314] Failed while requesting a signed certificate from the master: cannot create certificate signing request: Post https://<IP_ADDRESS>:6443/apis/certificates.k8s.io/v1beta1/certificatesigningrequests: dial tcp <IP_ADDRESS>:644
Mar 09 12:51:17 k8s1 kubelet[2670]: I0309 12:51:17.748938    2670 server.go:428] --cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /
Mar 09 12:51:17 k8s1 kubelet[2670]: error: failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false. /proc/swaps contained: [Filename                                Type                Size        Used        Priority /dev/dm-1
Mar 09 12:51:17 k8s1 systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE
Mar 09 12:51:17 k8s1 systemd[1]: kubelet.service: Unit entered failed state.
Mar 09 12:51:17 k8s1 systemd[1]: kubelet.service: Failed with result 'exit-code'.
lines 25-102/102 (END)

ah right. makes sense!


Should we create some interview "hooks" to let us add more dynamic behavior in the future?

Maybe like a hook_on_start, hook_on_name and hook_on_completion?
#237 is revealing the value of adding some new code that is triggered by reaching certain points in the interview. But adding that code to existing interviews requires a lot of manual effort.
Adding these hooks could also help communicate to interview authors which behavior they should leave alone. Right now, the code for saving some anonymous statistics, for example, is inline in the interview order block. This is a little confusing for authors and they may accidentally delete it.
See also #522

Closing in favor of just pursuing #522 for now


feat: consolidate templates

add ebl
add coo

get rid of other repos ?

yeah want to, after i shift them over


Font Request: Hauora Sans

Hauora Sans
Hauora is an open-source sans-serif font family. Hauora is derived from Manrope — designed by @sharanda — and modified by WCYS for the Tiaki Hauora Project.

Source: WCYS-Co/Hauora-Sans
License: SIL Open Font License 1.1

Just wanted to update this. I can publish the NPM packages next week because I have no access to my desktop for that period of time.

@DecliningLotus Thank you for let me know, but don't worry about time.
I appreciate your hard work on this project and I hope you are on holidays. Take your time! 🙌

@hmaesta, I ended up writing an entire new publisher replacement for Lerna and it worked! The previous Lerna setup limited it to my desktop only due to the onslaught of bugs caused by it, but this one finally works in the GitHub Actions without an issue!
You should be able to find the package on NPM now.


fix: absolute /active-directory/ link

Also removed BOM

@nschonni : Thanks for your contribution! The author, @lleonard-msft, has been notified to review your proposed change.

#sign-off


Write tests

Tests for all packages

[x] Test a11y in all packages.
[ ] auth
[ ] banner
[ ] button
[ ] card
[ ] collapse
[ ] data-table
[ ] forms
[ ] hooks
[ ] hotkeys
[ ] input-right-button
[ ] layout
[ ] list
[ ] menu
[ ] modals
[ ] nprogress
[ ] number-input
[ ] palette
[ ] password-input
[ ] persona
[ ] pin-input
[ ] property
[ ] provider
[ ] radio
[ ] search-input
[ ] select
[ ] snackbar
[x] web3

I would like to write some tests. Prolly would be making a pr for this?
@Pagebakers

@elcharitas Oh this would be really amazing, any help is highly appreciated!

I would like to write some tests. Prolly would be making a pr for this? @Pagebakers

Still want to help with this?
I started freeing up time for this, as this is the last stretch for the release candidate, but could def use some extra hands.

Yes I def want to 💯 . It's a matter of getting a format of how you would want the tests to be


HDXDSYS-707 HAPI SQL Alchemy refactor for A+B and schema changes

In conftest.py use local Postgres instead of SQLite (Postgres can be in Docker image or installed in the system)
def engine():
    engine = create_engine(
        url="postgresql+psycopg://postgres:postgres@localhost:5432/hapi"
    )

    # Create an empty schema
    with engine.connect() as connection:
        connection.execute(DropSchema("public", cascade=True, if_exists=True))
        connection.commit()
        connection.execute(CreateSchema("public", if_not_exists=True))
        connection.commit()

Postgres requires Enums be named. This answer describes how to do it with mapped_column eg.
    gender: Mapped[Gender] = mapped_column(
        Enum(
            *get_args(Gender),
            name="gender",
            create_constraint=True,
            validate_strings=True, ), nullable=True, primary_key=True
    )

In the above we have a problem, nullable is True (where NULL represents all genders), but we also want it to be part of a primary key which demands that it be NOT NULL.
class Gender(str, enum.Enum):
    FEMALE = "f"
    MALE = "m"
    NONBINARY = "x"

I think we will need to add something like ALL = "all" to the above.
Trivially, I've also updated the precommit config, in particular to use uv-pre-commit which is much faster at updating the requirements.txt file.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

52 of 52 (100.0%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.02%) to 98.953%

Totals

Change from base Build<PHONE_NUMBER>:
-0.02%

Covered Lines:
378

Relevant Lines:
382

💛  - Coveralls

I added a function that programmatically finds the views and builds them for the tests so we don't have to manually add views to a list in code. That function, build_hapi_views, can be used in hapi-pipelines. For it to work, we will have to stick to the current naming convention for the Python files and view_params (or update the function if we change).

"What do you think of adding a docker-compose file to support with setting up the testing environment? And maybe a line or two CONTRIBUTING.md to explain the setup."
I will do this in a separate PR as this already has a lot in it


Demo: Latest Version

Need to produce a video, of getting it up and running (etc).

http://azureimaging.azurewebsites.net/


remove GooseAttack.number_of_cpus

The GooseAttack.number_of_cpus struct field was originally added so we could specify a default number of users when defining a StructOpt configuration structure. This logic has since been reworked and this struct field is no longer necessary, as we can invoke the num_cpus library directly when setting the Users default.

#180 was merged and fixed this


Datagrid design review: Horizontal scrolling and responsiveness

Design review

Component epic #1607 #2499
Designers/reviewers: Virginia Nicholson, Jennifer Jennings (@jjennings7)
Links: PAL guidance / Storybook v2 / Storybook v1 — for unfrozen rows, see batch actions or actions dropdown

Standards

[x] All pattern updates/changes/iterations have been discussed with the
component developer
[x] Patterns have been approved by either DSAG or another approving entity

Pattern and behavior

[ ] The component behaves according to the guidelines set by the pattern
maintainer
[x] The component’s UI matches the pattern specifications set by the pattern
maintainer
[x] The component’s motion matches the specifications set by the pattern
maintainer(s)
[x] The UI produced is responsive, cross-browser, and responds to the
currently set Carbon theme.
[x] Colors, themes, sizes and additional props are true and correct, aligning
with Carbon set tokens (unless otherwise specified by the pattern)
[x] Paddings/margins/spacings are true and correct, in both desktop and mobile
views

Storybook

[x] A functioning component renders in Storybook
[ ] The Storybook displays multiple scenarios that show how the component can
be used
[x] Changing props in the Storybook updates the component

• Rename Sticky column story to Frozen columns

^ FYI @Ratheeshrajan

@matthewgallo @elycheea @Ratheeshrajan I'm unable to check the boxes in the design review section for some reason. Can one of you please check them off for me? With the exception of the following, all the rest can be marked:

[ ] The component behaves according to the guidelines set by the pattern maintainer

See Matt's comment above with the few small changes needed

[ ] The Storybook displays multiple scenarios that show how the component can be used

There are no controls or knobs for this component. As we mentioned to Matt, it would be nice to include a control or knob so the storybook user can freeze or unfreeze the first column, or the last column (actions), or both. Currently, both are frozen in the example.
Regarding @matthewgallo 's comment above:

To think about:
• Row index labels to left of selectable row/checkbox

Here's an example screenshot of what he's referring to from my product, DataStage:

One last thing I noticed is the title on the table, "click action menu". I don't think that's supposed to be there?

@jjennings7 We left off the row index changes for now since it caused some unexpected behaviors and felt like it’s out of scope for our first release. We can open a separate issue as an enhancement later. If the current changes look good, feel free to close this out. 🙆♀

Thank you @jjennings7!!

@jjennings7 or @vsnichols just reopened so we can double check the behavior in v2 and check for accessibility.

@kristastarr to review for accessibility.
Feel free to remove any checks that don’t apply.

Accessibility review
Keyboard
Level 1

[ ] Properly code the navigation order

[ ] Ensure interactive elements are reachable with the keyboard
[ ] Where possible, achieve the desired tab order by adjusting the DOM,
rather than overriding the tabindex
[ ] When overriding the default focus indicator, confirm focus is highly
visible

[ ] Implement established keyboard conventions

[ ] Use standard HTML elements where possible, using CSS to alter appearance
not behavior
[ ] Be familiar with established keyboard conventions
[ ] Implement keyboard operation for custom elements

Level 2

[ ] Ensure keyboard access to complex interactions

[ ] Make custom media player and animation controls keyboard accessible

Level 3

[ ] Code screen updates predictably

[ ] Use "activate" rather than "focus" as a trigger
[ ] Use an onchange event without disorienting the user

Dynamic updates
Level 1

[ ] Provide errors accessibly

[ ] Use accessible methods to implement error messages
[ ] Implement validation and notification to minimize interruptions

Level 2

[ ] Make content accessible that appears on hover or focus

[ ] Ensure Esc dismisses new content
[ ] If content appears on hover, the new content needs to remain visible
until dismissed
[ ] Moving the pointer away from the trigger should not be the action that
dismisses the new content
[ ] Ensure custom tooltips and similar hover text can be triggered by
keyboard
[ ] Discuss alternatives to hover text
[ ] Use caution where interactive controls appear in the hover text

[ ] Code cancellation actions accessibly

[ ] Provide accessible ways of cancelling pointer interaction

[ ] Properly code status messages

[ ] Use role=status to advise on the success or results of an action
[ ] Use role=alert or an ARIA live region to convey a suggestion or
warning

Level 3

[ ] Allow reduced motion

[ ] Implement motion media queries to reduce user risk

Text and non-text
Level 1

[ ] Implement text alternatives for meaningful images, sound, and visual data

[ ] Give decorative images an ALT attribute with an empty string (alt="")
[ ] Use HTML, ARIA, or technology-specific techniques to add short text
alternatives
[ ] Where relevant text exists in the UI, use aria-labelledby and
aria-describedby to reference
[ ] Provide an accessible method for exposing long text alternatives
[ ] Embed multimedia content that supports closed captions

[ ] Implement correct structure and metadata

[ ] Code headings according to specifications
[ ] ~Code the <title> element on every page according to specifications~
[ ] ~Set the language for each page~

Level 2

[ ] Add additional structure where appropriate

[ ] Use <figcaption> and <caption> elements where figures and tables are
titled
[ ] Add additional context to generic link names
[ ] Consider adding regions and other ARIA roles to distinguish text
groupings

Level 3

[ ] ~Mark up foreign words and abbreviations~

[ ] ~Use the lang attribute for foreign words and phrases~
[ ] Use <abbr> elements and title attributes to expand abbreviations

[ ] Achieve necessary reading order

[ ] Order content appropriately in the DOM
[ ] Only use CSS to alter text position without altering meaning

User input
Level 1

[ ] Associate labels with inputs

[ ] Programmatically associate inputs with labels
[ ] Add accessible names for inputs lacking visible labels

[ ] Provide correct name, role, and value

[ ] If repurposing a standard component, use ARIA to set the correct name
and role
[ ] On custom components, use ARIA to expose name, role, and value

Level 2

[ ] Reduce conflict between the visible label and a component's accessible
name

[ ] Match the accessible name to the visible label
[ ] Include the text of the label in the accessible name

Level 3

[ ] Indicate the purpose of common inputs

[ ] Use HTML autocomplete attributes, where appropriate

Styling comments:

When resizing columns such that the text is truncated in one or more of the columns, on hover, the text in both columns shows and is overlapping

When hovering the mouse on the table header text, the cursor appears as a text cursor which makes it look editable.  The title text does show on hover of the header text, but not on hover of the rest of the cell.  Is that the desired behavior?

I re-sized the table in various ways and also used browser zoom to simulate a screen enlarger. I didn't investigate exactly when/why but sometimes there is an empty column between the headers, and sometimes the overflow menu column is the incorrect width, as shown here at 200% browser zoom:

The L/R arrow keys correctly scroll the parts of the table that are not sticky.  However, depending on the width of the table, it's possible that it isn't evident that there are more columns than what are shown.  To me it's not really clear from a visual standpoint that the table is scrollable in those cases.   Example: here, it's not evident that there are 7 more columns in the table

Keyboard and Mac Voiceover testing:
5.  As discussed in other issues (like https://github.com/carbon-design-system/ibm-products/issues/3118) we have the situation where the contents of each cell are a group, so you have to arrow three times to move to the next cell.  In this component, this behavior is present in table header and all table items here.  In the Sort component, it is not present in the table header but is there in the table items.

In this component as well as Batch actions, https://github.com/carbon-design-system/ibm-products/issues/3118 when a checkbox is selected, voiceover gives no indication that the blue "X items selected" bar appears and offers additional actions.  Could look at using aria-live to provide live updates that new content has been added to the screen
https://github.com/carbon-design-system/ibm-products/issues/3118

In addition to the styling issues Krista noted:
The tooltip for the action button seems to be within the table and not above it, so it gets cut off but you can scroll to see it, causing a white column to appear:

The vertical border to delineate the frozen columns seems to be missing in the header, so the header text looks cut off if it's partially scrolled:

Regarding the scroll bar issue Krista noted, not sure if it would exactly help that issue, but I noticed the scroll bar spans the entire width of the table instead of being contained within the scrollable area. Could/should it be contained?

And lastly, I would still like to see controls or knobs so that people checking out the component know they have a couple choices of which columns to freeze and they can try it out in the storybook.

after reviewing the most up to date version of datagrid it appears that all of these concerns have been addressed with the exception of this note

And lastly, I would still like to see controls or knobs so that people checking out the component know they have a couple choices of which columns to freeze and they can try it out in the storybook.

we've had some initial conversations about providing more sandboxes or codepens with datagrid examples so that users are able to interact more with the code. unfortunately, due to the nature of the mechanisms that datagrid is built on, storybook controls aren't well suited to allow users to turn things on and off.
closing this as complete 🥳


Cthulhu Eternal -- Updated to v1.06

Cthulhu Eternal Multi-Era Sheet Updated to v1.06 (changes to skills for five eras -- Elizabethan, Renaissance, Medieval, Islamic, and Classical)

Submission Checklist
Required

[X] The pull request title clearly contains the name of the sheet I am editing.
[X] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[X] The pull request makes changes to files in only one sub-folder.
[X] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

New Sheet Details

The name of this game is:  (i.e. Dungeons & Dragons 5th Edition, The Dresden Files RPG)

The publisher of this game is:  (i.e. Wizards of the Coast, Evil Hat)

The name of this game system/family is:  (i.e. Dungeons & Dragons, FATE)

[X] I have followed the Character Sheets Standards when building this sheet.

[X] This sheet has been made on behalf of, or by, the game's publisher.
[ ] This game is not a traditionally published game, but a copy of the game rules can be purchased/downloaded/found at: <   >
[ ] This sheet is for an unofficial fan game, modification to an existing game, or a homebrew system.

Changes / Description

The skills section of the sheet has been updated for FIVE different eras supported by Cthulhu Eternal (Elizabethan, Renaissance, Medieval, Islamic, Classical). These changes reflect updates to the game rules. No skills for other eras were updated and no other parts of the sheet were modified in this update.

Character Sheet Info Roll20 Internal Use only.


Failure to compile the C code crashes rebar3

I just noticed that if there is an issue in the C code that causes compilation to fail that the plugin fails when trying to do a regex:
Error: badarg
[{re,replace,
    [[....],
      "c_src/pnvalidator_nif.cpp",
      ".../c_src/pnvalidator_nif.cpp",
      [{return,list},global]],
     [{file,"re.erl"},{line,362}]},
 {pc_compilation,exec_compiler,4,
                 [{file,"..../_build/default/plugins/pc/src/pc_compilation.erl"},
                  {line,192}]},
 {pc_compilation,compile_each,5,
                 [{file,"..../_build/default/plugins/pc/src/pc_compilation.erl"},
....

https://github.com/blt/port_compiler/pull/72


Is server-side fetch cost effective?

Chapter about internal API was pretty esoteric for me, so I started digging deeper.
Here is how it looks for me now:

For SSR we call our API with node-fetch (via universal-unfetch)
Node-fetch makes an additional HTTP request to our own Express server
In response it imports api modules with mongoose models inside
makes requests to mlab
processes data from mongoDB and returns it back to getInitialProps method.

Is it correct?
Will such request be billed as a bandwidth by hosting provider?
Or it will be considered as local traffic?
Can we save some money and some extra CPU load generated by yet another Express request,
If for SSR we will use our internal API directly?
We can distinguish if getInitialProps was called on server side,
if so - dynamically iimport api modules and use it directly without node-fetch/express intermediaries.
We just need to make sure this conditionally imported api modules will not be tried to push to client side by webpack, I believe it can be easily done by the same way, as it was done in universal-unfetch module for example, but instead of importing node-fetch we will import our own api modules.

Click to see Hill for issue #199

Click to see Hill for all issues

created by Async

Answer from zeit about billing such things
https://spectrum.chat/zeit/now/will-local-http-request-billed-as-bandwidth

@YuriGor Thanks for the interesting question.
Answer will be different for CSR case.
For SSR, let's focus on particular page, say ReadChapter page (book/8-end/pages/public/read-chapter.js)
User does initial load on browser (not browsing links on already loaded web app but loading page in new tab).
For initial load, our app will do SSR (unlike in case of clicking links on already loaded web app).
See below image. I labeled the part you asked about internal calls.
 Click to see ssr.png
User does initial load on ReadChapter page, after request is received by server, here is a chain of events that are all happen on server:

getInitialProps is called
getChapterDetails is called
getChapterDetails sends request to Express route /get-chapter-detail on the same server
Express route /get-chapter-detail calls static method on Chapter model: Chapter.getBySlug
The above Express route waits for data that is retrieved by Chapter.getBySlug by calling mongoose method(s)
Express route then send JSON-format data to getChapterDetails
getChapterDetails passes data to getInitialProps
getInitialProps passes data to page's props
ReadChapter page is rendered with data
server sends rendered page with data to the browser

The step:

getChapterDetails sends request to Express route /get-chapter-detail on the same server
happens on the same server

This app https://github.com/async-labs/saas have Next/Express server separated from API (just Express) server.
In this case, step:

getChapterDetails sends request to Express route /get-chapter-detail on the same server
would happen between two servers via network. If you deploy, put these two servers close to each other, in the same region.
Not sure about pricing in this case, check with particular cloud for cost of traffic via internal network.

@YuriGor Just to add to my above answer. I guess in case of builderbook app you could make getChapterDetails call Chapter.getBySlug without fetch and Express route for SSR.
But then you will end up having two codebases, one for SSR and one for CSR. Too much work to maintain.

If your app has many internal APIs, you should split app into two apps: React/Next/Express (pages and components) and Express (internal and external APIs).
So using fetch for SSR is justified.
Hope this helps.

Thank you for reply!
I just want to get this topic deeper, to make architectural decisions consciously.
May be it's out of scope of builderbook, but let me please recap my current vision here in this issue, just to make it clear for myself.
I suppose splitting UI and API into separate servers physically makes sense in context of

performance: in case of high loaded app UI server willl
maintenance: separated versioning, backups, shutdown time
scalability: it's easier to start/stop extra instances with UI and API separately as needed
reusability: to let multiply apps (web, mobile, IoT, etc, external customers) share same API
compatibility: this v1 slug in our API URLs - it can be incremented later to add/change API but keep backward compatible for some client apps, which we don't want to/can't update.

Classic Single Page App is almost static HTML/JS/CSS/JSON/Images files.
This kind of content loads very fast with simple static web server, may be plenty of them behind the balance loader, or with help of CDN. Browser caches such content perfectly, so consequence UI loads become almost instant.
Since this is a static files, and they cannot do anything on backemd, it's a vital requirement to have separate dynamic API server, to run complex business logic securely and fetch data.
Hybrid apps with SSR cannot be fully static. Such app runs both on client and server side. So it's still needs API accessible from client side, but it also need it, relatively rare, from server side too.
All the benefits of physically separated API server is still actual for hybrid apps, especially if it's going to be popular.
But in case of smaller lightweight apps(like builderbook) it may be enough to run all the code on the same server.
Doing so makes thing simpler and easier: less deployment frictions, less projects to keep in mind of developer, less hosting expenses.
In this specific case it's possible to avoid extra HTTP requests between server side of UI and API, and save some bits/coins/flops.
It's an optimization we can do only for limited cases.
Builderbook itself is educational project at first.
Its purpose to teach most common modern web-development techniques,
but no to be most optimal little book publishing platform ever.
That's why it still uses API from backend via HTTP, like if it's a separate server - because in common case such app will do the same.
It's also makes source code more readable and maintainable, so saving a couple of bit/coins will not be a really profit in case of builderbook. But if some of readers is going to build small app deployed to the single server, he can consider the possibility of such optimization.
Please add/correct me, if I missed something above.
May be it will be good to highlight this ideas about API development in the text of book?

@YuriGor All correct.
I gotta reiterate CSR/SSR point though.
Next does both CSR and SSR. Skipping fetch and Express route for SSR is possible but not for CSR.
So you will end up with two codebases in a single project.
Too much work, this would be a bad decision in my opinion (internal networking usually free and very fast).

@tima101 I think it will be pretty easy to automate such CSR/SSR division. We will need just extract url mapping from server/app.js into separate module and make our own version of universal-fetch lib, it will make HTTP requests for CSR and import correct code for SSR.
Most of work is done already, it just need to be moved to higher abstract level.
But yes, in terms of costs saving it may be does not make so much sense, since developers's time is expensive too.


Added School Charter School East Dulwich

School website: https://www.chartereastdulwich.org.uk/

@SherbertL1 Pull request merged. Thank you!


block js not loading

Hi, I have the problem, that the js files from the block are not loaded. I have tried both cases, using and not using a custom stack with the block. I searched a little and found that there might be problems  with hard coded blocks and autoloading the js/css assets from that block. I am using <IP_ADDRESS> right now. Any idea what might be the cause?

The assets are required in the on_page_view event:
https://github.com/mainio/c5_free_cookies_disclosure/blob/master/src/PackageServiceProvider.php#L89-L90
I'd look into that event's logic and first of all see whether the assets are required at all. In case they are not required, debug the logic in that event handler and see what might be the problem. In case they are loaded, look at what might have changed in the core.
In case you figure out that something has changed in the core about how they handle asset loading, we would obviously be interested in hearing back about this.

Ok, found it. In line 90 in Src/PackageServiceProvider the js asset for the ajax_form is required. However, it is only loaded, if the hide_interval is set to something other than 0. I always had this setting set to 0, so I did not get the asset loaded. To me it seems, that the js asset disclosure_ajax_form should be loaded no matter what the value for the hide interval is.

OK cool. I think this is on purpose since if the hide interval is 0, it basically means the same as do not display the element in which case I see it logical that the JS is not even loaded.

Hm, but in the description of the field it says: "n seconds (leave empty if you don't want to hide the notification)". To me this reads like it is shown forever, if 0 is chosen.

Yeah, you are perfectly right, I'll reopen this issue.
The JS is correctly omitted for the hiding script but the problem is that the AJAX form script is not loaded either in this case. This would mean that this line would probably need to be changed outside of the if clause:
https://github.com/mainio/c5_free_cookies_disclosure/blob/master/src/PackageServiceProvider.php#L90
The CSS still seems to be properly loaded judging solely by reading the code.
But yeah, you are right about the AJAX form script which should be loaded in your case.
We'd be happy to welcome a pull request for this!

Fixed by #4. Many thanks @johannesdold !


chore(deps): upgrade dev-deps

What: Upgrade all deps (just devDeps)

Why: Good to keep up to date (no, I don't want to do greenkeeper)

How: yarn upgrade-interactive

Codecov Report

Merging #103 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master   #103   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          10     10
  Lines         123    123
  Branches       32     32
=====================================
  Hits          123    123

Continue to review full report at Codecov.

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


DAG, stderr, stdout logs not being retrieved and displayed in Metaflow UI

Description
We've got metaflow and metaflow UI deployed on AWS (on local IP, so not publicly accessible), but the logs aren't being retrieved. There was an initially an issue with our ServiceInfoUI container not having enough memory, but this was upped. The RDS burst balance was also too low, but upping the storage to 1000 GiB removed this queue, and changed the error message to a generic error, so I don't think this is the issue any more.
The RDS is accessible, and appears to be storing the logs. The logs are also available from the relevant S3 buckets, Step Functions and Batch.
I can't find exactly where the UI is trying to pull data from, so not sure whether it's a permissions issue with access to the RDS, but the S3 bucket seems to be accessible. As far as I can see, the permissions/configuration is the same as the metaflow UI CF template, so was interested to know if anyone else had had/is having this issue.
Steps to Reproduce

Not exactly certain, after running a few flows for a while, view the metaflow UI

Expected behavior:
DAG, stderr and stdlog display the error messages being logged in CloudWatch in the UI.
Actual behavior:
Error messages don't appear:

Reproduces how often:
Every time the UI is used. I've previously looked at a public example from Outerbounds, but can't view that at the moment. This one wasn't having the same issue a couple of months ago.
Versions
Application version: 1.1.4
Service version: 2.3.2
My machine: MacOS 12.6
Viewing on Safari: v16.0

Do you see the tasks for each run in the UI?  When you go to the DAG tab, what do you see? Do you see stderr, stdout, or cards showing on the task view?

Thanks for getting back to me. This is what I get on the DAG tab:

Then the timeline is loading correctly, but as soon as I click on a task, it loads very slowly, and if it eventually loads then it loads the error card of above, but if not, looks like this:

Interestingly, the task details seem to be loading though:

Have a look at the javascript console? Do you see any errors? Also take a look at the Network tab in your developer tools. Can you see any errors for requests (e.g. to /dag)?
If you'd like, you can move this discussion across to the #ask-metaflow slack channel at https://outerbounds-community.slack.com/

Yep, so I'm getting a 504, as below:

but then if I leave it longer there's also a web socket connection error:

And then looking into it in cloud front, getting a lot of errors - as far as I can tell, the 5xx errors are when I'm loading it, and the 4xx errors seem to just be continual. I had a look into this further in the logs, but couldn't tell what was wrong - found some failed access from IPs globally, but they all seem to be in AWS datacenter locations/say datacenter on IP lookup, but wasn't sure if that played into it too

On the network side, it's timing out for out, err and dag after 1.5mins.

Can you take a look at the metaflow-service logs? For around the time that the request to runs/80332/dag gave a 504?
Logs look like -
metaflow-service-ui_backend-1  | INFO:aiohttp.access:<IP_ADDRESS> [25/Oct/2022:17:55:47 +0000] "GET /flows/TextToImages/runs/78/metadata?step_name=start HTTP/1.1" 200 3889 "http://localhost:3000/?_group_limit=30&_limit=30&_order=-ts_epoch&status=completed%2Cfailed%2Crunning&timerange_start=1664064000000" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
Generally this type of error is because MFGUI can't talk to S3 due to permissions and/or auth. Hopefully we can see some evidence in the metaflow-service logs.


Updated cluster name

Description
replaced unsupported characters from the cluster name
Fixes

Codecov Report

Merging #239 (b8acbc4) into master (043a6f5) will decrease coverage by 0.28%.
The diff coverage is 94.11%.

@@            Coverage Diff             @@
##           master     #239      +/-   ##
==========================================
- Coverage   93.33%   93.05%   -0.29%
==========================================
  Files          24       24
  Lines        1005     1022      +17
==========================================
+ Hits          938      951      +13
- Misses         67       71       +4

Flag
Coverage Δ

gha
93.05% <94.11%> (-0.29%)
:arrow_down:

python-3.9
93.05% <94.11%> (-0.29%)
:arrow_down:

unit
93.05% <94.11%> (-0.29%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...shift_nightlies/tasks/install/openstack/jetpack.py
100.00% <ø> (ø)

...t_nightlies/tasks/install/hypershift/hypershift.py
90.00% <90.00%> (-10.00%)
:arrow_down:

dags/openshift_nightlies/util/manifest.py
96.68% <94.44%> (+0.23%)
:arrow_up:

dags/openshift_nightlies/dag.py
94.71% <100.00%> (ø)

dags/openshift_nightlies/models/release.py
97.67% <100.00%> (ø)

dags/openshift_nightlies/util/var_loader.py
91.83% <100.00%> (ø)

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

:shipit:


Automated Package Upgrade

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


⚠ SceneTime has degraded performance

In e9dcfdf, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 1464 ms

Resolved: SceneTime performance has improved in 0e22afb after 6 minutes.


Feature(Planner): Removed node_types from DAM

This PR adds the code to remove node_types inside the DAM and to add the import containing such node_types.
@kiuby88 can you take a look?

Thanks @PaoloCifariello, this PR completes the  initial step of #257
It looks good but a lot of test should be necessary.

Thanks @kiuby88, I will add some tests ASAP.

Current coverage is 37.66%

Merging #259 into master will increase coverage by +0.93% as of db860a5

@@            master    #259   diff @@
======================================
  Files          329     331     +2
  Stmts        12064   12189   +125
  Branches      1548    1561    +13
  Methods          0       0
======================================
+ Hit           4432    4591   +159
+ Partial        449     438    -11
+ Missed        7183    7160    -23

Review entire Coverage Diff as of db860a5

Powered by Codecov. Updated on successful CI builds.

Paolo, close this PR please

Thanks @PaoloCifariello


Feature/#119 UI Occurrence Map Fine Tune

Applies a series of UI improvements accordingly to the Design but also adds new sizes of lettering, blocks, and spacing.
This changes applies to the Map and some to the Bottom bar.

Next time please put screenshots in the PR :P


Your workflow syntax is broken,

I'm not sure what is broken, CI isn't running automatically since I'm a first-time contributor:

and you're missing a bunch of $ signs.

Added them, thanks!

This is ready for review @inducer . Before merging, you'll probably need to adjust the 'Required' CI checks in the settings.


[hotfix] Remove minor unused deprecated method/class

What is the purpose of the change
Remove minor unused deprecated method/class
Brief change log

remove deprecated HiveBulkFormatAdapter
remove deprecated HiveSourceSplit#HiveSourceSplit construct method
remove deprecated ExecutionConfig#PARALLELISM_AUTO_MAX
remove deprecated CsvReaderFormat#forSchema
remove deprecated Constants#LABEL_CONFIGMAP_TYPE_KEY and Constants#LABEL_CONFIGMAP_TYPE_HIGH_AVAILABILITY
remove deprecated CommittableMessage#getCheckpointId
remove deprecated SerializableFunction

Verifying this change
This change is a code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): yes
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

@flinkbot run azure

@flinkbot run azure


flexget: 3.11.29 -> 3.11.30

Diff: https://github.com/Flexget/Flexget/compare/refs/tags/v3.11.29...v3.11.30
Changelog: https://github.com/Flexget/Flexget/releases/tag/v3.11.30
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 307510 run on x86_64-linux 1

2 packages built:

flexget
flexget.dist


Plugin management plugin

Adds a @voxel51/plugins plugin that allows for installing plugins from GitHub URLs or from the plugin zoo (aka fiftyone-plugins README), enabling/disabling plugins, and checking plugin package requirements.
The manage_plugins operator is migrated out of @voxel51/utils to complement the new install_plugin operator.
https://github.com/voxel51/fiftyone-plugins/assets/25985824/9ff746ef-4b4d-47fa-b149-fff7c0adc7b9

@jacobmarks I made an editing pass over the plugin builder operators. Looks good!
One note: I updated the operator labels to be consistent with how the other @voxel51/XXX plugin operators are named. LMK if you have any concerns about that:


Bar code EAN quality

We are trying to use the ean 13 bar code but we observed some issue.
First of all, the numbers are unreadale, but when print on pdf there's no issue.
The bar code seem correct but the bar code reader has some trouble to read. The bars look well defined .
We add some other text to show that there is not any printer quality issue.
Images attached ( acquired with scanner) .

Hiya. I can see that the numbers are not rendering correctly. However can you see how there are some vertical lines missing from the ZZZZZZZ this could also point to an additional printing issue compounding the problem.
Just to be 100% sure you should print the bar-codes perpendicular to the direction of print. that way any vertical lines through the print will no longer affect the readability of the bar codes.

Ok, but I'm sure at 100% of the issue.
The white line on ZZZZZZ is due to the ribbon and now We are changing supplier to fix this secondary issue.


Fix otel-collector logging repeat error

The otel-collector pod log shows repeat entries of duplicate timeseries error that takes up logging quota. Although the metris are correctly being sent, the error message can be confusing to users.
The removal of type tag is causing one timeseries being processed multiple times in batch, both with and without the tag, which causes the above error.
This change uses aggregation in metricstransfrom processor to eliminate the type tag from Monarch pipeline. Format follows otel-collector-contrib 0.54.0.
b/290678742

/hold
Not merging until RC is promoted.

/retest-required

/unhold

This merged during code freeze... is it needed for v1.16.0?

It is no longer targeting for 1.16. It was merged after the projected preview date, in theory the release candidate is confirmed by then.


CI is not running properly on Pull Requests

As titled.

is it not? https://github.com/clinicjs/node-clinic-heap-profiler/blob/main/.github/workflows/ci.yml#L1

is it not? https://github.com/clinicjs/node-clinic-heap-profiler/blob/main/.github/workflows/ci.yml#L1

That's weird because it was triggered neither in https://github.com/clinicjs/node-clinic-heap-profiler/pull/50 nor  https://github.com/clinicjs/node-clinic-heap-profiler/pull/45

that's because actions are not enabled. this needs to be changed

they were only enabled on a few repos. I have now enabled them on all repos across the org

Thanks!


Metastore resilience for invalid view mounts

Closes: #2340

@wemrysi suggestions appreciated — ready for another look.

@wemrysi Ready


resource.customizations is deleted from argocd-cm configmap

Describe the bug
Applying resource.customizations via argocd-cm configmap only works for a minute or two before being removed from the configmap and returning to having no health check customisations. The resource.customizations key is left in the configmap with an empty value.
I see an earlier description of the same symptom in this issue, though I am seeing the problem with recent versions of OpenShift:

OpenShift 4.6 + GitOps operator 1.0.0 (Argo CD 1.8.4)
OpenShift 4.7 + GitOps operator 1.1.0 (ArgoCD 2.0.0)

To Reproduce
(assuming OpenShift 4.7, but exact same behavior in 4.6)

Deploy the OpenShift GitOps operator (1.1.0 currently) and wait for all pods to be up and running (less than a minute)
Patch the configmap/argocd-cm object with the sample from https://argo-cd.readthedocs.io/en/stable/operator-manual/health/

health_file=/tmp/argo-health.yaml
cat<<EOF > ${health_file}
data:
  resource.customizations: |
    cert-manager.io/Certificate:
      health.lua: |
        hs = {}
        if obj.status ~= nil then
          if obj.status.conditions ~= nil then
            for i, condition in ipairs(obj.status.conditions) do
              if condition.type == "Ready" and condition.status == "False" then
                hs.status = "Degraded"
                hs.message = condition.message
                return hs
              end
              if condition.type == "Ready" and condition.status == "True" then
                hs.status = "Healthy"
                hs.message = condition.message
                return hs
              end
            end
          end
        end

        hs.status = "Progressing"
        hs.message = "Waiting for certificate"
        return hs
EOF

kubectl patch configmap/argocd-cm \
            --namespace openshift-gitops \
            --type merge \
            --patch-file "${health_file}"

sleep 10

kubectl get configmap/argocd-cm --namespace openshift-gitops -ojsonpath='{.data.resource\.customizations}'
<empty line>

Expected behavior
kubectl get configmap/argocd-cm --namespace openshift-gitops -ojsonpath='{.data.resource\.customizations}'
should return the resource customization applied as a patch.
Screenshots
Version
argocd: v2.0.0+unknown
  BuildDate: 2021-04-09T04:17:22Z
  GitCommit:
  GitTreeState: clean
  GoVersion: go1.15.7
  Compiler: gc
  Platform: linux/amd64
argocd-server: v2.0.0+unknown
  BuildDate: 2021-04-09T04:17:22Z
  GitTreeState: clean
  GoVersion: go1.15.7
  Compiler: gc
  Platform: linux/amd64
  Ksonnet Version: unable to determine ksonnet version: exec: "ks": executable file not found in $PATH
  Kustomize Version: unknown 1970-01-01T00:00:00Z
  Helm Version: v3.5.0+6.el8+g77fb4bd
  Kubectl Version: v0.20.4
  Jsonnet Version: v0.17.0

Logs
logs.zip

Hi @nastacio , Thanks for raising issue with us.
Operator reconciles on changes made to the argo cd resources and sets them back to default. This is an expected behaviour. Any changes that you require should be rather made as part of Argo CR.
Please add your customizations to argocd CR
cr.Spec.ResourceCustomizations

https://github.com/redhat-developer/gitops-operator/blob/6583f71f6525c2c03e0b59ea4924b7ebb9486971/deploy/crds/argoproj.io_argocds_crd.yaml#L677
This is the piece of code which sets the argo cd config map back to default.
https://github.com/argoproj-labs/argocd-operator/blob/3aa839b023883b564ac5bfd6012f16f9ce19797b/pkg/controller/argocd/configmap.go#L437

@iam-veeramalla your solution works, which is fantastic for our immediate needs.
There is an odd inconsistency with other patches to that same argocd-cm, since I could patch the repositories parameter without it being reset.
I can understand the need to restructure the way the configuration is managed (moving it up from the ConfigMap to the ArgoCD object), but it seems like letting some portions of argocd-cm behave like in ArgoCD (e.g. repositories can be patched and is not reset) , but not others, will confuse a lot of people familiar with ArgoCD.

Thanks @nastacio .. I will take a look at why changes in repositories is not reset by the controller.

Hi @iam-veeramalla,
I'm encountering the same issue as @nastacio was facing, but in the ArgoCD CR rather than the ConfigMap.
I am updating the CR, but it will occasionally reset and completely remove my resource customizations.


NoReverseMatch at /admin/django_news/entry/add/

In admin panel i get this error:
Reverse for 'ckeditor_upload' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Request Method:	GET
Request URL:	http://<IP_ADDRESS>:8000/admin/django_news/entry/add/
Django Version:	1.10.3
Exception Type:	NoReverseMatch
Exception Value:
Reverse for 'ckeditor_upload' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Exception Location:	/usr/lib/python3.5/site-packages/django/urls/resolvers.py in _reverse_with_prefix, line 392
Python Executable:	/usr/bin/python3
Python Version:	3.5.2
Python Path:
['/home/egor/MyProjects/cashback_project',
 '/usr/lib/python3.5/site-packages/inlinestyler-0.2.0-py3.5.egg',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-linux',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/lib/python3.5/site-packages']

@bzzzzzz ping

Hello.
Sorry for not responding for too long, I've been on vacation away from my laptop.
It seems that you're getting this error because you have misconfigured django_ckeditor. Please read https://github.com/django-ckeditor/django-ckeditor#required-for-using-widget-with-file-upload and check that CKEDITOR_UPLOAD_PATH setting is correct and you have provided valid urls.py for this app. If it does not help you, please post here parts of your settings.py and urls.py files, connected to django-simple-news-app so I can reproduce this error

Понял. Добавьте, пожалуйста, в readme секцию об полной установке модуля.


fix(goctl model file): change model template file type

All model template variables are stored in tpl format files with the
same name as the template generated using the template init command.
The ultimate purpose is to facilitate the customization of goctl users to upgrade the model template

closed as requested.


Move settings under project dir, using live, stage, test, local roles instead of flat settings dir

Done on  https://github.com/lamby/takeyourmeds-web/tree/cleanup


Hand tracking input on 3D objects/buttons

When touching the 3D object with onClick() function there is no input tracked. Instead have to aim with a pointer and pinch to a desired object to activate the function.
Using controllers and pressing triggers allows to interact with object though. I have a feeling the bug might be related to recent update of Quest to v62, I noticed bad hand-tracking and the overall fps drops in the new version of OS.
Attaching a video showing the bug.
https://github.com/Volumetrics-io/mrjs/assets/28908217/ee0b40ef-8816-4433-8761-7733885ba72c

This has been implemented, closing!


fixed issue 3 'Unable to resolve the request "notes/noteconfig/index"'

FIxed this issue:https://github.com/humhub/humhub-modules-notes/issues/3
It was caused by incorrect name "noteconfig". The correct name is "noteConfig".

Should be also fixed here. https://github.com/humhub/humhub-modules-notes/commit/32f0be4874a7a8501171f1f76b1c71d2629a7997


Reified Types for "multi" Providers.

As implemented today, multi providers have a problem with Dart 2.0 compatibility:
class SomeValidator implements Validator { ... }

const validationModule = const [
  const Provider(NG_VALIDATORS, useClass: SomeValidator, multi: true),
];

@Component()
class UseValidators {
  UseValidators(@Inject(NG_VALIDATORS) List<Validator> validators) {
    ...
  }
}

In DDC, and upcoming in Dart 2.0, this is a runtime error 😿 - I think all multi providers are always reified as List<dynamic>. Here is the current implementation in ReflectiveInjector:
List<dynamic> _resolveWithReflectorMulti(RuntimeProvider<dynamic> provider) {
  final results = <dynamic>[];
  for (final multiProvider in _multiProviders) {
    if (identical(multiProvider.token, provider.token)) {
      results.add(_resolveWithReflector(multiProvider));
    }
  }
  return results;
}

... and the current implementation in AppView:
if (isMulti) {
  resolvedProviderValueExpr = o.literalArr(providerValueExpressions);
  type = new o.ArrayType(o.DYNAMIC_TYPE);
} else {
  ...
}

... not including the in-progress GeneratedInjector.
tl;dr, in Dart 2.x type system implementations, we always try to use List<dynamic>, but user code as often structured to be List<T>, where T is the type the provider provides. In the above example, we'd expect to get List<Validator>.

Proposal

Add MultiProvider<T> to dependency injection.
Add a private _listOf method to MultiProvider.
Treat MultiProvider<T> special in both generated implementations.
Remove multi: ... as an option from AngularDart.

MultiProvider<T>
abstract class MultiProvider<T> implements Provider<T> {
  const factory MultiProvider(
    Object token,
    Type useClass,
    ... etc ...
  ) = ...

  /// Creates a reified `List<T>`, where `T` is the `MultiProvider`'s expected type.
  List<T> _listOf() => <T>[];
}

Changes to ReflectiveInjector
List<T> _resolveWithReflectorMulti<T>(MultiProvider<T> provider) {
  final /* List<T> */ results = internalMultiListOf(provider);
  for (final multiProvider in _multiProviders) {
    if (identical(multiProvider.token, provider.token)) {
      results.add(_resolveWithReflector(multiProvider));
    }
  }
  return results;
}

Changes to AppView (via compile_element)
if (isMulti) {
  resolvedProviderValueExpr = o.literalArr(providerValueExpressions);
  type = new o.ArrayType(providerTypeParameter);
} else {
  ...
}

I imagine this would take about a week of work, not including deprecations.
/cc @vsmenon @jmesserly @ferhatb @chalin for input.

I'm moving ahead with this.

Landed.


TypeError: Cannot read properties of null (reading 'guards')

Hello, I was trying to have the ui mint example to run. And I got the following message:
TypeError: Cannot read properties of null (reading 'guards')

The error happens at line 79 of MintNFTs.js.
const guard = candyMachine.candyGuard.guards;

My sugar config is like this:
{
  "number": 5,
  "symbol": "XX",
  "sellerFeeBasisPoints": 500,
  "isMutable": true,
  "isSequential": false,
  "creators": [
    {
      "address": "<address>",
      "share": 100
    }
  ],
  "uploadMethod": "pinata",
  "awsConfig": null,
  "nftStorageAuthToken": null,
  "shdwStorageAccount": null,
  "pinataConfig": {
    "jwt": "<token>",
    "apiGateway": "https://api.pinata.cloud",
    "contentGateway": "https://gateway.pinata.cloud",
    "parallelLimit": 1
  },
  "hiddenSettings": null,
  "guards": null
}

address and token are of course are changed to my wallet and key
I believe it assumes there will be guards? How can I get the UI to run?

Looks like you left out a step when setting up your candy machine. You have to add guards to the config file. Wasn't always the case but I believe this minting tutorial is based on Candy Machine V3, where it's necessary.

Hey @yukosgiti,
did @falbanese90 post help you? Are you still seeing issues?

Thanks! I assumed if I didn't provide it, it would automatically do it (because there is an option withoutCandyGuard)

Currently stuck on this, what fixed it?

If you scroll to this part in documentation https://docs.metaplex.com/programs/candy-machine/how-to-guides/my-first-candy-machine-part1#candy-guards---further-configuration
You will see the guards part with those parameters
"guards": {
    "default": {
      "mintLimit": {
        "id": 1,
        "limit": 3
      },
      "solPayment": {
        "value": 0.5,
        "destination": "Tes1zkZkXhgTaMFqVgbgvMsVkRJpq4Y6g54SbDBeKVV"
      },
      "startDate": {
        "date": "2022-10-23T20:00:00Z"
      }
    }

Add this guard section updating those guards with what you wanna a do in your config.json and the run those command
sugar guard add && sugar guard update
Hope it's clear

You can add some available guards like the above comment to pass the error. But to handle this case, we can ignore the guard handlers in case it does not exits.


Updated type verification and enhanced file validation

Expanded the type check for 'mkvmerge_path' to now include list, os.PathLike, and None aside from string. Improved the interface of the 'file_path' setter of the MKVTrack to better handle unsupported files. Added a verification step when initializing an MKVFile to ensure that the file is a supported Matroska file. Updated the 'MKVFile' class and unit tests to reflect these changes.

Codecov Report
Attention: Patch coverage is 80.00000% with 2 lines in your changes are missing coverage. Please review.

Project coverage is 49.30%. Comparing base (27bc4c4) to head (f6b8ca2).

Files
Patch %
Lines

pymkv/MKVTrack.py
66.66%
1 Missing :warning:

pymkv/Verifications.py
50.00%
1 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master      #10      +/-   ##
==========================================
+ Coverage   49.12%   49.30%   +0.17%
==========================================
  Files          10       10
  Lines         861      864       +3
==========================================
+ Hits          423      426       +3
  Misses        438      438

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


Tests are really bad

I'm sorry about tests/test_frontend.py.
It's one giant function that rolls through use cases on the app and asserts things along the way. It's hard to understand it, and even harder to test new things.
This file should be a bunch of distinct test cases, that each test one piece of logic. If we have small tests with some helper functions, then it should be easy to add new tests when we change the app.

Closed by #51


omit query parameter on null value in projects api

closes #259

@dariuskt  This pull request would also be resolved by my pull request: #281


Shutdown is blocked if called before gettxoutsetinfo is finished

Ported from https://github.com/bitcoin/bitcoin/issues/13217.
Steps to reproduce:

Open QT console.
Run gettxoutsetinfo.
Exit the debug window (no blocking) -> exit the program (will block).

This is what is shown on Windows (10) for several minutes:
https://i.imgur.com/AyexgkC.png

On the current master (bd40cd81083a5bde15b90e66855255457c8fb58c) this bug is no longer reproducible. However, the blocking call QThread::wait() is still present in the RPCConsole::setClientModel function.
Tested on Linux Mint 20.2 (Qt 5.12.8) and on Windows 10 Pro 20H2 (MSVC build).
Closing for now.

Got on Windows:

Reopening.


Allow a Query to iterate over all elements that are not the current element of an existing iteration

What problem does this solve or what need does it fill?
In the case I'm looking at, I have a set of TeamMembers and there are times where a single TeamMember needs to consider all other TeamMembers. When the data in question is mutable, this creates aliasing issues and is currently difficult to resolve - I've personally been using Events to do it, but that comes with the cost of a frame delay and a separation of logic.
What solution would you like?
Something like this is sort of how I could imagine it working:
query: Query<(Entity, &mut Transform), With<TeamMember>>

for element in query.iter_mut() {
    let mut best_support = None;
    let mut closest = f32::MAX;

    // iter_except() returns an iterator over all elements *except* the one given to it
    for mate in query.iter_except(element.0) {
        // if mate is closest (this reads the mate Transform),
        // save it as best_support and update closest
    }

    // move our translation closer to the best support
}

What alternative(s) have you considered?
It's possible that this could be resolved with ParamSet, but I'm not certain if it would work given that both queries would be querying the same data. As noted, I've solved it currently using Events, but the frame delay and logic separation that comes with that doesn't feel very good.

Does Query::iter_combinations(_mut) not work here? Seems like it would do exactly what you want.

By my understanding, I don't believe so. iter_combinations gives you all of the 1:1 combinations but what I want is every 1:many combination. I could be wrong tho, but every time I try to write what it would look like with iter_combinations it falls apart.

I suppose for soundness reasons, my example probably has to look more like this:
query: Query<(Entity, &mut Transform), With<TeamMember>>

for (mut element, others) in query.this_new_iter_mut() {
    let mut best_support = None;
    let mut closest = f32::MAX;

    for mate in others {
        // if mate is closest (this reads the mate Transform),
        // save it as best_support and update closest
    }

    // move our translation closer to the best support
}

that way the "others" iterator isn't having to trust what's given to it.
I tried looking for something similar to this in itertools and didn't see anything.


New package: Alakazam v0.1.5

Registering package: Alakazam
Repository: https://gitlab.com/B0bGary/alakazam.jl
Created by: https://gitlab.com/B0bGary
Version: v0.1.5
Commit: 72f79d670447d54b8a118b80a74ac3b7fc4c2fee
Git reference: HEAD

Don't do multiple registrations!
I've blocked all of them. Once you figure out which one you actually want to go through, let me know, and I can unblock it.

Don't do multiple registrations!
I've blocked all of them. Once you figure out which one you actually want to go through, let me know, and I can unblock it.

Hi goerz! Apologies, didn't realise I was causing issues by resubmitting, since the other attempts failed. Since my project is hosted on gitlab, I was using the juliahub.com tool to register, and wasn't sure how to update my request. Tips for updating the package in future would be greatly appreciated! Apologies again for the trouble.

[noblock] No problem! I'm not really sure how retriggering a registration works with the web interface. I'd recommend asking on the Discourse or in the #pkg-registration channel on the Julia Slack.
Although, if this PR is the final/correct one, I can just unblock it.
Normally, I would ask for a package to have at least a usage example before registration, but I saw the note "I'll give you an intro soon :)" in your README. Just please do that sooner rather than later. Packages in General are intended to be useful to the wider community, and a reasonable amount of documentation is an important part of that.

[noblock] No problem! I'm not really sure how retriggering a registration works with the web interface. I'd recommend asking on the Discourse or in the #pkg-registration channel on the Julia Slack.
Although, if this PR is the final/correct one, I can just unblock it.
Normally, I would ask for a package to have at least a usage example before registration, but I saw the note "I'll give you an intro soon :)" in your README. Just please do that sooner rather than later. Packages in General are intended to be useful to the wider community, and a reasonable amount of documentation is an important part of that.

Brilliant, thankyou! This version is the correct one. I hope to adapt some documentation I already have, very soon.

[noblock] Great!
You have to edit every one of your own comments to contain the word [noblock], though, in order for the automatic merge to proceed.


createjs.com website is down

The website https://createjs.com/ is currently unavailable. This has led to inconvenience for us users who rely on this domain for accessing CreateJS resources, documentation, and related materials. Can you guys please have a look? Thanks!

Seems to me that the issue is resolved, closing this.


Ensure CosmosDB Components have enough testing

#359 added support for CosmosDB components. We should ensure these components have all the necessary test coverage - for example logging and tracing tests.
The other components have 2 modes:

Can Connect to server
Can't Connect to server (typically this is run in CI)

I didn't see any tests that actually connect to a server. We should see what it takes to enable that class of tests.
cc @Pilchie

By the tests that actually connect to a server you mean the stuff in tests/testproject?

@mitchdenny added a test in https://github.com/dotnet/aspire/pull/1668 for this.
My original intention was to follow the same pattern as we do in the other Azure components - if the test is configured to a service that can be connected to, it runs more tests.
For example, for Storage Blobs:
https://github.com/dotnet/aspire/blob/e8288d729880141c062cfea474b59239895732b4/tests/Aspire.Azure.Storage.Blobs.Tests/ConformanceTests.cs#L21
https://github.com/dotnet/aspire/blob/e8288d729880141c062cfea474b59239895732b4/tests/Aspire.Azure.Storage.Blobs.Tests/ConformanceTests.cs#L122-L132

@eerhardt Ok that seems quite logical, but where should the server be running?
When looking at the Storage blob it seems like it connects to this service: https://aspirestoragetests.blob.core.windows.net/
MongoDb on the other hand is connecting to something local: mongodb://root:password@localhost:27017/test_db
Why is one of them running locally while the other uses a remote connection? What should be used for the cosmosdb? As there is an emulator (which is used in TestProject) i would guess it should be running locally?
This leads to my next question: If it should run locally, where should it be started? I couldn't figure that out looking at the other tests

Getting component tests running against a local container / emulator is something that has been on our list. Weare actively working on figuring out how to do more and better testing here.
For this, my hope is that we can spin the local emulator up at the beginning of the tests and then run the suite of tests hitting it. However we don't have the test infrastructure to do this easily, yet.

@eerhardt Isn't there an issue for that? I think i rember that i've read something about resuing parts of the app host logic or something similar for this?
Should i work the tests for the cosmosdb now? Or should we wait until the infrastructure is created?

I think the CosmosDB tests can be written now like the rest of the tests are. That part doesn't need to wait until the infrastructure is created. The tests can follow the existing pattern.

@eerhardt Where should the cosmosdb server be running? Locally as in the mongodb tests or some remote server as in the storage blob tests?

For now, I'd do it as a remote server as in the storage blob tests.

@eerhardt Ok, which server should I use?

@eerhardt Ok, but what server should we use?

We started using "Test Containers" - See https://github.com/dotnet/aspire/pull/2345. Can we use the local CosmosDB emulator using test containers?

@eerhardt I tried adding the Testcontainers.CosmosDb to the test project. This breaks all nuget-Dependencies:

All dependencies were marked in the solution explorer (but no actual warnings were shown)
The usings in the code were marked as unused and the corresponding classes were not found

Did this also happen to the RabbitMQ tests?


SceneTreeEditor Don't ignore renaming scene's root node

SceneTreeEditor::_node_renamed() was returning early if the renamed node isn't descendant of the scene's root node. Such condition is true if the renamed node is the scene's root node itself (so it was ignored). Added check for the scene's root node.
Fixes #52746.
Cherry-pickable 3.x, 3.3.

Ignore these force pushes, I pushed into wrong branch (already restored this branch to the previous, correct state).

This seems to be the same fix as #52962 which has been merged already.


Docker daemon fails to start if events.log is corrupted

Duplicating https://github.com/moby/moby/issues/35331
Hey,
Running node crash scenarios with docker daemon version 17.03.2-ce.
The crash is performed using 'echo c > /proc/sysrq-trigger' command.
Sometimes, after the node reboots, docker daemon fails to start.
Tried to run it manually and got the following error:
[root@stratonode1 ~]# strace -s 2000 -o ./docker.log /usr/bin/dockerd
INFO[0000] libcontainerd: new containerd process, pid: 27558
WARN[0000] containerd: low RLIMIT_NOFILE changing to max  current=1024 max=4096
FATA[0000] invalid character '\x00' looking for beginning of value
INFO[0001] libcontainerd: new containerd process, pid: 27592
WARN[0000] containerd: low RLIMIT_NOFILE changing to max  current=1024 max=4096
FATA[0000] invalid character '\x00' looking for beginning of value
Then using strace ( strace -s 2000 -o ./docker.log -f /usr/bin/dockerd
events.log
docker.log
) I looked into what the daemon tries to do and from where he gets the '\x00' values.
Apparently, it happened to be
28285 openat(AT_FDCWD, "/var/run/docker/libcontainerd/containerd/events.log", O_RDONLY|O_CLOEXEC) = 6
Looking into the file, I did see that it's corrupted (caused during node crash of course):
{"id":"34a5cfaa4c9578719e24f1cd24556608c415db7d4e68257971a61ab570a56663","type":"start-container","timestamp":"2017-10-29T08:22:28.459115157Z"}
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
After removing the file, docker spawned successfully.
I would expect that if the event log is corrupted, it would not affect docker ability to spawn.
Thanks,
Rom
Attached the events log file and strace output.

Looks like the write had space allocated in the file but failed to flush the actual values through when the node went down.
You didn't happen to save the corrupted file? If we had it, we could use it as a test case.
@crosbymichael At this point, do we have the event log in the new version, at all?

No event logs on 1.x, it's a 0.2.x mechanics only
On Mon, Oct 30, 2017, 2:32 PM Stephen Day<EMAIL_ADDRESS>wrote:

@rom-stratoscale https://github.com/rom-stratoscale Thanks for the
report!
Looks like the write had space allocated in the file but failed to flush
the actual values through when the node went down.
You didn't happen to save the corrupted file? If we had it, we could use
it as a test case.
@crosbymichael https://github.com/crosbymichael At this point, do we
have the event log in the new version, at all?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/containerd/containerd/issues/1699#issuecomment-340591160,
or mute the thread
https://github.com/notifications/unsubscribe-auth/APUifiWHbIXbpw3INXuJ1LqvmhzHRX8oks5sxkBsgaJpZM4QLxvM
.

--
Sent from my phone.

@stevvooe the events log is attached. Just use xxd on it and you'll see that the last bytes are 00.
 Not sure what's the plan there regrading upgrading containerd.
For now, what I did is adding a PreExecStart to docker systemd file:
ExecStartPre=-/usr/bin/bash -c '/bin/mv -v /var/run/docker/libcontainerd/containerd/events.log /var/run/docker/libcontainerd/containerd/events.log.$$(date +"%%Y%%m%%d-%%H%%M%%S")'
Is it fine to remove (back up) the events log before restarting docker? what does it affect on?
Thanks,
Rom

@rom-stratoscale Thanks!
Have you seen this happen more than once? We think this is a fairly rare write corruption problem. Are you able to produce this on every crash or does it happen rarely?

Its an append only log, I'm not sure we can make writes atomic if the log line is over the buffer size.  We could maybe look into direct_io but i'm not sure.
Isn't there a reason why we shutdown machines correctly? Oh ya, file corruption ;P  echo c is extreme as its forces a kernel crash/panic so its kinda expected that something is going to get corrupted if you are doing this repeatedly as a test.
I think the best we can do is not abort start when reading the log but you will miss events if one of these corrupted lines was an exit event.

@dsheets suggested opening the WAL with O_DSYNC but I am not sure if we need to fix this.

@stevvooe it's pretty easy to reproduce (at least with centos7, ext4, ssd - you have more info above). Manage to do it about 20%. At Stratoscale, we're building a super resilient and flexible system, hence we should be able to overcome an accidental crash.
@crosbymichael the best practice is to write the file to a temporary location, and then perform a mv which is atomic.
In my opinion, if the log is corrupted (and if should not if you follow the above mentioned suggestion), just move it a side and keep on running. In my opinion, its better to loose some events rather than freeze the system.

Its an append only log, you cannot write temp and mv.

@crosbymichael  I guess you can copy the whole log, append, and mv it back. But I must to admit that I'm not very familiar with containerd logic, so not sure that my advice is worth :)
Regrading my question  above - is it fine to delete this file in systemd preexec start? What will it affect except from logging?

@rom-stratoscale i'd rather make a patch to containerd to log the error and continue.
See:
https://github.com/containerd/containerd/blob/v0.2.x/supervisor/supervisor.go#L136
If you want to make a PR to the 0.2.x branch to make the change let me know.  It should be straight forward and you can verify your fix.  If not, I can push a PR with the change.

@crosbymichael sure, I can. Will take me few days to get familiar with the process though.
BTW, who relies on those events?
Regarding the systemd deletion workaround (we're using official docker version) - will it affect anything?

The events are used when docker comes back online.  I keeps its last known event and then asks containerd, give me every event from X till now.  The log persists the events incase containerd goes down as well.  For a reboot it shouldn't matter, but if you are just restarting services I'm not sure if it would cause any issues or not.  I think docker is start enough when it reconciles the state that even if it does not have an event, it will know that a container exited while it was down and provide a generic 255 exit status for that container without an event.

@crosbymichael https://github.com/containerd/containerd/pull/1720
Thanks!

The fix is pushed. Closing.


CDN

[Enter feedback here]
issue is about AZ CLI to enable HTTPS cx domain with key vault.
az cdn custom-domain enable-https --endpoint-name
--name
--profile-name
--resource-group
[--min-tls-version {1.0, 1.2, none}]
[--subscription]
[--user-cert-group-name]
[--user-cert-protocol-type {ip, sni}]
[--user-cert-secret-name]
[--user-cert-secret-version]
[--user-cert-subscription-id]
[--user-cert-vault-name]
document show that:
--user-cert-secret-version
The secret version of the KeyVault certificate, If not specified, the "Latest" version will always been used and the deployed certificate will be automatically rotated to the latest version when a newer version of the certificate is available
I have a case, cx is using verizon CDN, when cx az cli is with "--user-cert-secret-version", Verizon CDN can accept and get the cert from key vault. But if AZ cli is without this parameter, Verizon will rejected the request. Verizon say that they received a invalid request from Azure, which is different from the one with parameter ""--user-cert-secret-version""
######################
verizon log:  -- verizon log got from Verizon PG.
CreateDate DomainName SecretId
2022-01-12 02:44:13.830 repo.test.hypervisor.cloudburrito.com https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus
2022-01-18 06:27:42.013 repo.test.hypervisor.cloudburrito.com https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus
2022-01-19 08:38:01.160 repo.test.hypervisor.cloudburrito.com https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus
2022-01-24 09:16:50.120 repo.test.hypervisor.cloudburrito.com https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus
2022-01-24 09:53:20.447 repo.test.hypervisor.cloudburrito.com https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus
2022-01-24 10:45:55.453 repo.test.hypervisor.cloudburrito.com https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus
2022-01-25 00:40:36.017 repo.test.hypervisor.cloudburrito.com https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus
2022-01-26 01:49:45.880 repo.test.hypervisor.cloudburrito.com https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus
2022-02-09 16:02:09.547 repo.test.hypervisor.cloudburrito.com https://cdnprodusegkvvmverizon1.vault.azure.net/secrets/cb95195f9d974e1c8fd086955a81e656
The last entry as you can see has the secret id provided by the customer that looks completely different. All the secret rejected have the same key vault URL, which is https://keyvault-atlas-hcp.vault.azure.net/secrets/-atlas-hydra-hcp-test-certificate--hydra-certificates-hypervisor-repo-cdn-binary-eastus and the last key vault URL was https://cdnprodusegkvvmverizon1.vault.azure.net/secrets/cb95195f9d974e1c8fd086955a81e656 so, not sure about the tool they use to generate the latest version of the key vault URL this is not a matter of auto-rotate or latest version. Basically, the key vault is a different one https://keyvault-atlas-hcp.vault.azure.net/ is not the same key vault as https://cdnprodusegkvvmverizon1.vault.azure.net/.
########
what is needed:
whether we can modify the explaination for this sentence below on documentation?
--user-cert-secret-version
The secret version of the KeyVault certificate, If not specified, the "Latest" version will always been used and the deployed certificate will be automatically rotated to the latest version when a newer version of the certificate is available

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

ID: ed8c61db-b294-77fb-0e92-eae01d07b776
Version Independent ID: 958b6e8d-609b-2a58-dbe1-240d3fd894bb
Content: az cdn custom-domain
Content Source: latest/docs-ref-autogen/cdn/custom-domain.yml
Service: cdn
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

route to CXP team

@tinwa0007 Apologies for the late reply. This looks like a bug. Verizon BYOC doesn’t support auto rotation yet. This is applicable for Microsoft CDN SKU only. I have got an update from the Product owners about the plan to release a fix in CLI or at the Resource Provider level to block such requests. No ETA on the fix yet. Please let me know if you have any queries on this.


Danielmschmidt/enable system tests

CURRENTLY 💔
TODO
For now we're trying to find out, why our cluster won't start.

[ ] inspect *journald.log-files to see what gives. last commit tries to archive those.

CI is green 🎉


DictConfig is not behaving like typing.MutableMapping

DictConfig is not behaving like typing.MutableMapping
The DictConfig methods I'm talking about are: keys and __getitem__. Both of these methods are part of the typing.Mapping specification  from which DictConfig indirectly inherits (via typing.MutableMapping). The keys method however gives back keys, which cannot be retrieved by using __getitem__(self, key) (or equivalently [key] accessor). This is true for DictConfig which have missing values ('???'). I want to understand why the keys method gives back keys which have missing values. Is this unintended or by design? Furthermore it should be noted that this gives an incompatibility with tensorflow, which I will discuss in the reproduction scenario.
To Reproduce
import omegaconf as oc

d = oc.OmegaConf.create({"a" : "???"})
assert "a" in d.keys # no issue
d["a"]

"""
d["a"] statement throws:
lib/python3.8/site-packages/omegaconf/basecontainer.py", line 63, in _resolve_with_default
    raise MissingMandatoryValue("Missing mandatory value: $FULL_KEY")
omegaconf.errors.MissingMandatoryValue: Missing mandatory value: a
    full_key: a
    object_type=dict
"""

import tensorflow as tf
import omegaconf as oc

d = oc.OmegaConf.create({"a" : "???"})
tf.nest.flatten(d)
"""
tf.nest.flatten throws:

lib/python3.8/site-packages/tensorflow/python/util/nest.py", line 417, in flatten
    return _pywrap_utils.Flatten(structure, expand_composites)
RuntimeError: Mapping was modified during iteration over it
"""

The error is thrown because tensorflow first does a 'd.keys()' call and then loops over the items while accessing the values using 'd[key]', which subsequently throws the omegaconf error.
Note that tf.nest.flatten is executed everytime an attribute is set on a keras model, as can be shown below:
import tensorflow as tf
import omegaconf as oc

class DummyModel(tf.keras.Model):
    def __init__(self):
        super().__init__()
        self.config = oc.OmegaConf.create({"a" : "???"})

DummyModel()
"""
The assignment of self.id throws:
lib/python3.8/site-packages/tensorflow/python/util/nest.py", line 417, in flatten
    return _pywrap_utils.Flatten(structure, expand_composites)
RuntimeError: Mapping was modified during iteration over it
"""

This is because tf.keras.model overrides the __setattr__ method and executes tf.nest.flatten in it, as can be seen here:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/keras/engine/training.py#:~:text=for v in-,nest.flatten(value),-)%3A
Because the flatten function thinks the DictConfig is a proper Mapping, it tries to flatten it accordingly and runs into problems because of the missing value.
Expected behavior
DictConfig.keys doesn't return keys which have a missing value as value.
Additional context

OmegaConf version: 2.1.1
Python version: 3.9
Operating system: Linux
Tensorflow version: 2.6.0

Hi @MattiasDC,
Throwing omegaconf.errors.MissingMandatoryValue is by design.
In essence, OmegaConf's missing values are sentinel placeholder values; they should be taken care of before the config is passed to application logic. The intention is that OmegaConf objects containing missing values are to be regarded as incompletely-specified, and attempts to access a missing value should cause fast failure.
The OmegaConf v2.2 release will include an OmegaConf.missing_keys function that can be used to recursively traverse an OmegaConf object to ensure that no missing keys are present. Using OmegaConf v2.1, you can call OmegaConf.to_container(..., throw_on_missing=True) or OmegaConf.to_object(...) to ensure that no missing values are present in the OmegaConf object.
I don't think changing the MissingMandatoryValue behavior here is possible because it would be a big breaking change.

Hi @Jasha10,
I was indeed leaning towards the idea that it was by design. It was indeed a misconfiguration that led to this error of tensorflow. I however had a though time debugging this, looking for the reason for this tensorflow error.
I hope that if someone also experiences this behavior with tensorflow, someone may in the future bump on this closed issue and see the reason/find the fix. :)
Thanks for adding the possibilities to resolve this.


[Demo] splice.nix: hybrid implementation of Gentoo-like use-flags

See https://github.com/NixOS/nixpkgs/pull/56110#issuecomment-466107720.

Sounds like an actual RFC might be in order.

Sure, but Code > Literature. Let's explore all alternatives first.

wow, such clean, much use! No patches were required to make mpv example work.

@oxij Writing literature would hopefully clarify the requirement trade-offs, and without a few decisions on trade-offs the enumeration space for code is even larger. Requirements > Generic Literature.
… But this version is indeed nice.

Closed in favor of #56227.

@7c6f434c I think RFCs make sense for something non-trivial, massive, or controversial. This and #56227 are neither.


New mapper: Bnrom

I was missing the bnrom mapper for the multi-region version of our game.
I started implementing it and quickly noticed that I am way too unexperienced with the details around memory mapping and mirroring in tetanes 😅
It works for our game, but I have honestly no idea if it is implemented correctly.
My biggest unknown is around the mirroring, what could cause it to change, how should it relate to mapping memory?
If you have the time and think that this is a good start perhaps you could take it from here?
I used this as inspiration: https://github.com/zeta0134/rustico/blob/master/core/src/mmc/bnrom.rs

This looks like a great start! I'll take a look over the bnrom docs and just verify everything but in general switchable mirroring for a mapper is just controlled via a register and it only really gets super complicated if four screen mirroring is supported as that requires the mapper to manage the memory reads differently instead of just letting the PPU handle it

I'll merge and then test it out some more, making any tweaks needed. Thanks for the contribution!

It was mostly good - just had to adjust to fixed mirroring based on iNES header, allow 8MB PRG-ROM and support the NINA-001 variant based on the presence of CHR-ROM.

Awesome, works great. Thank you!


[#51] update gravitino-fileset-example.ipynb with latest python api

After the Java and Python client be updated in the main branch (will release in 0.6.0), some of the code in gravitino-playground need be updated to make it work, such as the gravitino-fileset-example.ipynb. The related issue in gravitino repository is https://github.com/apache/gravitino/issues/3731

Do you need to update the version of python client?

Have you already updated this @jerqi ?

Have you already updated this @jerqi ?

This pull request is not needed.

I tested the latest version, this PR is not needed, so close it.


Firebase URL should be customizable

e.g. https://github.com/Fankserver/atom-firepad/blob/dd0c3cb699d322346b94f7b689ba8d5704600bd1/lib/firepad.coffee#L26 which is currently hardcoded.

@mikelehen I choose you as contact: Is it possible to host an local Firebase server?
I found the following tutorial how to use Firebase.

@Fank Unfortunately it's not possible.  Firebase is a cloud service and there's no way to install it locally.  You can of course create your own Firebase instances though.  But they'll still be hosted on our servers.
FYI- Firebase should generally work fine behind proxies unless it's exceptionally restricted.  If you're having problems, I'd be curious to know about it.

Ah ok, yea currently the atom package doesn't support proxy.
So ill need to focus on this too.