Remove all global css pollution

Have you read the Contributing Guidelines on issues?

[X] I have read the Contributing Guidelines on issues.

Motivation
Global css messes up many things, please consider removing them (rewrite in classes), it will save the day.

Self-service

[ ] I'd be willing to do some initial work on this proposal myself.

Agree that this is a valid concern that I have been asked on Discord. However, several things missing from the proposal that I wish we can get response on:

Impact. Is there a really strong use-case that's hindered by the global CSS? Won't all: revert work if you want a part of the page unstyled?
Possible implementation. How would we work to implement your proposal? Many of these elements are directly generated from Markdown (e.g. ), which is also the primary focus of Docusaurus. Does that mean we should map all Markdown elements to one with a class name?

Global css messes up many things

This is an assertion and I don't see exact what it messes up

please consider removing them (rewrite in classes)

You should report that on the Infima side, the CSS framework developed alongside Docusaurus. In Docusaurus we are more concerned about how CSS classes can interoperate with the current way that HTML is generated.

IMHO we could scope those rules under a .infima-app class or something used at the root of the Docusaurus app.
But would this solve your problem @Airkro ?

we could scope those rules under a .infima-app class or something used at the root of the Docusaurus app.

The OP wants to easily opt-out from Infima. Scoping probably doesn't prevent the tag selectors from being applied to every element within the <Layout>

I meet this problem too
We are building our own React component library. There are a lot of documents based on docusaurus. Thanks to the mdx of docusaurus, we can easily render React components in the document. We need to create a lot of demos. We have a [pagination component]( http ://design.shuyun.com/portal/docs/components/navigation/pagination), the li element is used, but in the demo, the style is a bit abnormal. I found out that it was a problem with the global styles of docusaurus.
I created a discussion css style isolation about it,  with detailed instructions and screenshots, and I tried all:revert, but it didn't work.
While we can override the relevant styles to solve this kind of problem temporarily, I really feel that this is not the best solution and is a bit ugly. Soon after I discovered the problem, another colleague had the same problem, a calendar demo in which the style of the tables in the component was contaminated, and it took him a lot of time to find out the cause.
I hope there is a once and for all way to be free from global styles.
After discussing it with @Josh-Cena , I tried to use [react-shadow-root]https://www.npmjs.com/package/react, but in the end, it failed, and for our component library, our styles were also global and blocked by shadow-dom. I gave up
In the end, I still hope that the official will come up with an elegant plan, and I hope to hear a response as soon as possible.

Agree, it should be possible to mount a component library in Docusaurus and expect it to not be affected by Docusaurus styles (without requiring the usage of an iframe)
We'll look into this.
In the meantime please report any Docusaurus style that is affecting the styling of your components.

What about having a special class in Infima that reverts all Infima styles? I still find value in certain global styles instead of moving everything to class names.

Sorry for not responding. I integrated Swagger UI with Docusaurus. I have to put Swagger UI in shadow dom to avoid CSS pollution.

Closing this. We can discuss in Infima instead, see also https://github.com/facebookincubator/infima/issues/8
I think the easiest solution is to provide an OOTB Sandbox component which is basically a shadow DOM? A reset utility class can do the job as well.

I'll re-open because we can also do something on Docusaurus side, such as providing another theme (likely Tailwind) that does not have this problem in the first place.
It should be possible to mount MDX components in your doc and have those components not affected by Docusaurus theme unscoped styles.
Now we can also open another discussion on Infima to ensure all styles there are scoped properly.

I still don't understand this. First is "why", second is "how".
Infima is more comparable to Bootstrap than Tailwind. We don't ask users to compose class names to get any useful styles; we directly target elements. If user write foo she should immediately get styling that looks consistent with the rest of the design, instead of having to compose layers of class names to adjust the margin, the border, the color... Its goal of driving content-centric website effectively means users should stop caring about styling in all and delegate everything to the default styles.
Let's say the use-case of showcasing custom components is justified. How do we scope Infima? We inevitably have to do it "the Tailwind way", i.e. use class names instead of tag selectors everywhere. But does that sound like the best solution?
It instantly means we have to do A LOT more MDX component mapping because literally everything, from ul to table to hr, has Infima-default styles.
Furthermore, it means React pages also have to have extra class names just to get the same styling as Markdown pages. I already have a hard time explaining to people that MDX != HTML != JSX because there can be build-time transformations. Simply transforming asset links has already confused users when [link](./asset.pdf) works in Markdown but link doesn't work in JSX. (Which led to my doc addition that Markdown is declarative). Now we not only want to take the intuition of Markdown -> JSX mapping away, but also the JSX -> JSX mapping intuition away. Being intuitive—not being perfect for every use-case—is what makes us competitive.
Now, can this be done WITHOUT "remove all global css polution"? Yes. We can do it in userland today with iframes and/or shadow DOM and/or a reset class. Those all sound like viable use-cases.
Taking a step further back, how can Docusaurus help with this use-case? This should be discussed in Infima instead of Docusaurus. Until we decide which path we want to take within an Infima thread, there doesn't seem to be anything Docusaurus can do, if we need to do anything at all.

It instantly means we have to do A LOT more MDX component mapping because literally everything, from ul to table to hr, has Infima-default styles today. We have to transform them to something like .

We'll likely have to do all that anyway if we want to support a tailwind theme, unless you also want Tailwind to apply global classes?

We can do it in userland today with iframes and/or shadow DOM and/or a reset class.

iframes is not really a good solution. People want to embed native runnable code in their doc.
shadow DOM: looks like an interesting
reset: why not but then do we want users to have to maintain this class themselves over time?

I'm open to exploring the shadow DOM solution.
Maybe the issue is not global CSS, but simply the inability to embed natively your lib's code in your doc without having any styling conflicts?
If we have a solution to this problem, with documentation and some dogfooding, maybe we don't have to handle the global unscoped CSS issue

Yeah, if we decide to go with shadow DOM it could be most relevant to Docusaurus (we can even offer a theme component like Sandbox). I think someone did tell me they solved it this way.

unless you also want Tailwind to apply global classes?

That I'm actually not sure. Tailwind is really reusable styles rather than reusable components (which Bootstrap/MUI/Infima are more of). To some degree, that contradicts with the goal of a content-centric rather than design-centric site. Maybe I'm okay with the Tailwind theme doing more MDX component mapping? Certainly don't want it to be a widespread pattern though.

Also note that if a user opts into Tailwind I'd assume she's already aware of the Tailwind system (which may not be at all apparent to other casual developers), so the JSX/MDX behavior deviation may be less important. But for the classic theme, which I still aim to be the most accessible for everyone in the long term, should be intuitive enough.

Thanks for reopening this!
Please note this is not just related to the markdown rendering. Even outside the markdown docs, there are selectors polluting the global scope, which affects also regular pages/routes. So I'm not sure if the "shadow" solution would work.
For example, this is a route in Docusaurus: https://react-day-picker.js.org/render?example=start. The style is not correct because the CSS overrides the table head style:
table th {
  background-color: var(--ifm-table-head-background);
  color: var(--ifm-table-head-color);
  font-weight: var(--ifm-table-head-font-weight);
}

We shouldn't see these selectors in the CSS. However, reverting them would affect the existing implementations, so fixing this is impracticable.
Maybe it's time to develop a new theme? I evaluated https://docusaurus-theme-no-style.netlify.app, to start  implementing my own, but that is a lot of work.

Now, can this be done WITHOUT "remove all global css polution"? Yes. We can do it in userland today with iframes and/or shadow DOM and/or a reset class. Those all sound like viable solutions that (a) is extensible (b) is robust (c) doesn't require any work from Docusaurus

@Josh-Cena those are not viable solutions. Iframe is still affected by CSS pollution, and a "reset" class will never work well. To me, writing the CSS that way has been a bad choice from start, and it has nothing to do with MDX mapping or the "tailwind" way.
I understand that Infima intends to replicate Bootstrap philosophy (even if Bootstrap splits the global CSS classes in a "reboot" CSS). I question if Infima is the right choice for Docusaurus: importing a components in MDX, and having its style overridden by Docusaurus, makes the MDX feature much less useful.

Shadow DOM should be the way to go, because that's literally the purpose of shadow DOM. I didn't investigate, but I do know of successful integration cases.

Infima is developed for Docusaurus, so asking if Infima is the right choice is asking if theme-classic is the right choice

Infima has tons of quirks, I've spent countless hours trying to workaround them. It is not the right theme for documenting a components library – in this case, it would be nice a note in the docs. Anyway here we are, reporting our issues with it. Hopefully soon we can have an alternative theme!

Yes, Infima is not designed with component library docs in mind—we do not expect such use-case. Using an alternative theme like Tailwind should be able to fix it.

Yes, Infima is not designed with component library docs in mind—we do not expect such use-case.

I can spot few use cases in the Showcase gallery - e.g https://ionicframework.com/docs/components
I'm sure they just run into our issues, give up and/or solved it using Codesandbox.
The case of react-day-picker.js.org is not even a component library - is just a single component.

Ionic solved it through shadow DOM which is what I've been saying all along:

Plus they are a native component library so they have a different battle.

Looks like upcoming CSS @scope this could be a good solution:

https://twitter.com/sebastienlorber/status/1533767305875824641

Our team has been using ReactShadow to workaround this issue. But we haven't been able to get it to work with Emotion yet (tried creating a separate cache and having the styles be inserted in the shadow root, but haven't managed to get it to work yet).

Just reporting here that at Discord we've had some success using shadow DOM as well. We had to tell webpack to split the bundle into three CSS files:

docusaurus-styles.css (all the styles inside our doc site)
discordapp-styles.css (all the app styles, except for the reset styles)
discordapp-reset.css (our own app's reset)

In the head, we load docusaurus-styles.css and discordapp-styles.css (because we want to use our components in doc pages), but in the shadow DOM, we only load discordapp-*.css (because we don't want Docusaurus' global styles to pollute the component playgrounds, which need to look exactly the same as they do in Discord).
The only issue we've faced with Shadow DOM is that some event handlers needed to be changed. For example, for a popup component (think popper, context menus, dropdowns, etc.), we had a mouseup listener on document, and it checked if popupContainer.contains(event.target). With shadow DOM, this doesn't work, because event.target is always the shadow root, so we had to change it to popupContainer.contains(event.composedPaths()[0]).
I'll report back if I see other issues. I agree that it would be great to not have to use Shadow DOM, but it sounds far worse to have to import some
 component rather than just using HTML
. @scope is really the answer.

A new interesting solution from @bluwy
Whyframe permits to easily isolate the rendering of a React component inside an iframe.
There's a Docusaurus plugin to try

We took an approach similar to @stevenpetryk and wanted to post the rough outline for anyone else who finds this thread below.
On a side note, I think there's a possibility that a contribution to @docusaurus/theme-live-codeblock could be made to have a toggleable Shadow DOM approach, the primary coordination could be that Docusaurus's splitChunks configuration for CSS files is altered such that infima and @docusaurus css files are chunked separately, and "everything else" is in a separate well-named chunk that, if shadow dom is enabled in the live codeblock, could be pulled in whole-sale for a ... "quick and dirty" isolated codeblock experience. Will see if I can carve out some time to put together the skeleton of the idea.

In the theme that we ship, our basic approach was to tweak the splitChunks cacheGroups to isolate our component library styles:
const DEFAULT_LIVE = {
  enableShadowDOM: true,
  includeSplitChunks: c => {
    return /@package-namespace[\\/].+\.s?css/.test(c.identifier());
  }
};

module.exports = function (context, options) {
  const { /* ...snip...*/, live = DEFAULT_LIVE } = options || {};

  return {
    name: 'our-theme',
    // ...snip...
    configureWebpack(config, isServer, utils) {
      const updateConfig = {};

      if (!isServer && live.enableShadowDOM) {
        // Utilize split chunks to ensure CSS assets from Docusaurus are separated from others
        updateConfig.mergeStrategy = updateConfig.mergeStrategy ?? {};
        updateConfig.mergeStrategy['optimization.splitChunks.cacheGroups'] = 'merge';
        updateConfig.optimization = {
          ...updateConfig?.optimization,
          splitChunks: {
            cacheGroups: {
              liveStyles: {
                name: 'styles-live',
                test: c => {
                  // Additionally include any styles that may have been pulled in by ReactLiveScope overrides
                  return /ReactLiveScope[\\/].+\.s?css/.test(c.identifier()) || live.includeSplitChunks(c);
                },
                chunks: 'all',
                // enforce: false feels weird to have, but it DOES result in the CSS outputs we need.
                // @see https://github.com/thecrypticace/webpack-css-chunks-test/blob/master/webpack.config.js
                enforce: false,
                priority: 60 // The default `styles` cacheGroup from Docusaurus is set to priority 50
              }
            }
          }
        };
      }

      return updateConfig;
    },
    // ...snip...
  };
}

And then we ejected the Playground component from @docusaurus/theme-live-codeblock into our custom theme and made some tweaks to mount the <LivePreview /> in a shadow root (there is a lot of snipping below, we have a heavily customized Playground component)
// @see https://github.com/facebook/docusaurus/blob/master/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.js
import React, { useState, useRef, useEffect, useMemo } from 'react';
import { LiveProvider, LiveEditor, LiveError, LivePreview } from 'react-live';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import ShadowRoot from 'react-shadow';

export default function Playground({ children, transformCode, ...props }) {
  // ...snip...
  const {
    siteConfig: {
      themeConfig: { live = {} }
    }
  } = useDocusaurusContext();

  // We assume that shadowDOM is enabled by default
  const enableShadowDOM = live?.enableShadowDOM ?? true;

  const sheets = useMemo(() => {
    if (!enableShadowDOM) return [];

    const sheets = typeof document !== 'undefined' && document?.styleSheets?.length && Array.from(document.styleSheets);
    if (!sheets) return [];

    return sheets.filter(sheet => {
      if (!sheet.href) return false;
      const sheetHref = new URL(sheet.href);
      return sheetHref.pathname.match(/styles-live/i);
    });
  });

  return (

      <LiveProvider /* ...snip... */ >

          {enableShadowDOM ? (
            <ShadowRoot.div ref={root} mode='open'>
              <LivePreview />
              {sheets.map(sheet => (

              ))}
            </ShadowRoot.div>
          ) : (
            <LivePreview />
          )}
          {showEditor && <LiveError />}

        <LiveEditor className={styles.playgroundEditor} />
        {/* ...snip... */}
      </LiveProvider>

  );
}

Note
The above approach is currently naïve especially in regards to pulling in the stylesheet for the live playground (effectively only once on mount and maybe a second time if React clears the memoization cache).
We'll be spending more effort over time improving / bullet proofing the solution but for now it works "good enough".

We took an approach similar to @stevenpetryk and wanted to post the rough outline for anyone else who finds this thread below.
On a side note, I think there's a possibility that a contribution to @docusaurus/theme-live-codeblock could be made to have a toggleable Shadow DOM approach, the primary coordination could be that Docusaurus's splitChunks configuration for CSS files is altered such that infima and @docusaurus css files are chunked separately, and "everything else" is in a separate well-named chunk that, if shadow dom is enabled in the live codeblock, could be pulled in whole-sale for a ... "quick and dirty" isolated codeblock experience. Will see if I can carve out some time to put together the skeleton of the idea.

In the theme that we ship, our basic approach was to tweak the splitChunks cacheGroups to isolate our component library styles:
const DEFAULT_LIVE = {
  enableShadowDOM: true,
  includeSplitChunks: c => {
    return /@package-namespace[\\/].+\.s?css/.test(c.identifier());
  }
};

module.exports = function (context, options) {
  const { /* ...snip...*/, live = DEFAULT_LIVE } = options || {};

  return {
    name: 'our-theme',
    // ...snip...
    configureWebpack(config, isServer, utils) {
      const updateConfig = {};

      if (!isServer && live.enableShadowDOM) {
        // Utilize split chunks to ensure CSS assets from Docusaurus are separated from others
        updateConfig.mergeStrategy = updateConfig.mergeStrategy ?? {};
        updateConfig.mergeStrategy['optimization.splitChunks.cacheGroups'] = 'merge';
        updateConfig.optimization = {
          ...updateConfig?.optimization,
          splitChunks: {
            cacheGroups: {
              liveStyles: {
                name: 'styles-live',
                test: c => {
                  // Additionally include any styles that may have been pulled in by ReactLiveScope overrides
                  return /ReactLiveScope[\\/].+\.s?css/.test(c.identifier()) || live.includeSplitChunks(c);
                },
                chunks: 'all',
                // enforce: false feels weird to have, but it DOES result in the CSS outputs we need.
                // @see https://github.com/thecrypticace/webpack-css-chunks-test/blob/master/webpack.config.js
                enforce: false,
                priority: 60 // The default `styles` cacheGroup from Docusaurus is set to priority 50
              }
            }
          }
        };
      }

      return updateConfig;
    },
    // ...snip...
  };
}

And then we ejected the Playground component from @docusaurus/theme-live-codeblock into our custom theme and made some tweaks to mount the <LivePreview /> in a shadow root (there is a lot of snipping below, we have a heavily customized Playground component)
// @see https://github.com/facebook/docusaurus/blob/master/packages/docusaurus-theme-live-codeblock/src/theme/Playground/index.js
import React, { useState, useRef, useEffect, useMemo } from 'react';
import { LiveProvider, LiveEditor, LiveError, LivePreview } from 'react-live';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import ShadowRoot from 'react-shadow';

export default function Playground({ children, transformCode, ...props }) {
  // ...snip...
  const {
    siteConfig: {
      themeConfig: { live = {} }
    }
  } = useDocusaurusContext();

  // We assume that shadowDOM is enabled by default
  const enableShadowDOM = live?.enableShadowDOM ?? true;

  const sheets = useMemo(() => {
    if (!enableShadowDOM) return [];

    const sheets = typeof document !== 'undefined' && document?.styleSheets?.length && Array.from(document.styleSheets);
    if (!sheets) return [];

    return sheets.filter(sheet => {
      if (!sheet.href) return false;
      const sheetHref = new URL(sheet.href);
      return sheetHref.pathname.match(/styles-live/i);
    });
  });

  return (

      <LiveProvider /* ...snip... */ >

          {enableShadowDOM ? (
            <ShadowRoot.div ref={root} mode='open'>
              <LivePreview />
              {sheets.map(sheet => (

              ))}
            </ShadowRoot.div>
          ) : (
            <LivePreview />
          )}
          {showEditor && <LiveError />}

        <LiveEditor className={styles.playgroundEditor} />
        {/* ...snip... */}
      </LiveProvider>

  );
}

Note
The above approach is currently naïve especially in regards to pulling in the stylesheet for the live playground (effectively only once on mount and maybe a second time if React clears the memoization cache).
We'll be spending more effort over time improving / bullet proofing the solution but for now it works "good enough".

Thanks for the feedbacks! I am still not happy with the workarounds described here.
What we need is the ability to create a blank HTML page in Docusaurus, but without any styles. We could them link this page with a standard iframe. Can we do this without forking the whole classic theme?

What we need is the ability to create a blank HTML page in Docusaurus, but without any styles. We could them link this page with a standard iframe. Can we do this without forking the whole classic theme?

If you don't need SPA navigation, you can add any html file in /static/xyz.html and link to it with pathname:///xyz.html or display it inside an iframe

Note to myself: cascade layers can also be a good alternative to opt-out of the style we apply by default.
This article explains how to use all: revert-layer for that purpose:
https://www.mayank.co/blog/revert-layer

One example where I think the global CSS introduces some display problems is with theme-live-codeblock. The global pre { border-radius: var(--ifm-pre-border-radius); } produces a visual gap where the "LIVE EDITOR" title bar and code block meet:

Zooming in a bit:

I've ejected the component so I can modify styles.module.css locally and disable the border-radius.


bugfix: patternProperties raised errors when the pattern has slashes

Now the delimiter to evaluate the regex is chosen dynamically.

@ribeiropaulor please rebase on master. Thanks for adding the tests.

rebased!

should be good to merge

+1


autocommit and fetch size

The statement fetch size (set via setFetchSize()) is ignored on execution if autocommit (set via setAutoCommit()) is true (which is default).
These changes will allow to set autocommit to false (only in non-strict mode) which previously lead to an exception.
upstream pr: https://github.com/crate/pgjdbc/pull/27

@andreidan still try to figure out why the crate nodes in the new test don't shut down properly https://travis-ci.org/crate/crate-jdbc/jobs/195177799#L691-L705

cause of the exceptions in the tests: https://github.com/crate/crate/pull/4802


.Net 8 not in CentOs 7.x repo

.Net 8 seems to be missing from Microsoft's CentOS 7.X repo: https://packages.microsoft.com/centos/7/prod/Packages/d/

Hey @kingmotley - .NET 8 is incompatible with CentOS 7 (and RHEL 7 + relatives). Complete .NET 8 OS compat list at https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md.


Feat: logging without store

Removes all variables from ModLoaderStore to ModLoaderLog - as static variables
also added @tool since there are a few cases popping up that make use of the logger in editor (like the mod tool)
that should also let us remove is_silent from a few functions like is_name_or_namespace_valid if we want to.
supersedes and closes #456
works towards

#452

replaced by #500


python311Packages.garth: 0.4.36 -> 0.4.37

Description of changes

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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/)
23.11 Release Notes (or backporting 23.05 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.

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

8 packages built:

python310Packages.garminconnect
python310Packages.garminconnect.dist
python310Packages.garth
python310Packages.garth.dist
python311Packages.garminconnect
python311Packages.garminconnect.dist
python311Packages.garth
python311Packages.garth.dist


Use images.AutoOrient filter

Instead of trying to calculate the image orientation, use the new images.AutoOrient filter from Hugo 0.121.2.
https://gohugo.io/functions/images/autoorient/
-       {{ $thumbnail := ($image.Fit (printf "%s %s" "600x600" .rotation)) }}
-       {{ $full := ($image.Fit (printf "%s %s" "1600x1600" .rotation)) }}
+       {{ $thumbnail := $image.Fit "600x600" | images.Filter images.AutoOrient }}
+       {{ $full := $image.Fit "1600x1600" | images.Filter images.AutoOrient }}

This would require to bump the minimal Hugo version.

Fixed in v4.0.2


Scroll Sync position not correct

Version
1.0.4

Test Environment

chrome 64.0.3282.186
with page https://nhnent.github.io/tui.editor/api/latest/tutorial-example05-scrollsync.html
set next code
Current Behavior

# head 1
## head 2
*test*
*tui.editor*
## head 3
```bash
# install
npm install tui.editor
```

## head 4
```bash
# install
npm install tui.editor
npm install tui.editor
```

## head 5
```bash
# install
npm install tui.editor
npm install tui.editor
```
## head 6
```bash
# install
npm install tui.editor
npm install tui.editor
npm install tui.editor
npm install tui.editor
npm install tui.editor
npm install tui.editor
npm install tui.editor
npm install tui.editor
```

Expected Behavior

left and right should be same

I would say this is still the most problematic issue and makes me disable autoscroll almost always


-HiddenFromExchangeClientsEnabled Is not accepting $true or $false as an argument

Hi Microsoft,
I've found an issue with the -HiddenFromExchangeClientsEnabled parameter, which does not accept $true or $false as a parameter; unlike the rest of the document's parameters.
However, I have found a workaround below.
Example Group/Identity: Sales
The powershell command that does not work:
Set-UnifiedGroup -Identity Sales -HiddenFromExchangeClientsEnabled $false
The powershell command works with the following modification:
Set-UnifiedGroup -Identity Sales -HiddenFromExchangeClientsEnabled:$false
I had to navigate a few threads online to discover this.
Can you please update the documentation to reflect?
Kind Regards,

@officedocsbot assign @yogkumgit

Hi @NickJongens, thank you for your feedback.
HiddenFromExchangeClientsEnabled is a swith parameter, not a boolean.
If you want to enable/true it you should use in in this way:
Set-UnifiedGroup -Identity Sales -HiddenFromExchangeClientsEnabled
In the parameter description you can see:
"To enable this setting, you don't need to specify a value with this switch."
"To disable this setting, use this exact syntax: -HiddenFromExchangeClientsEnabled:$false"

@dariomws306  Thank you very much for the contribution and sharing this explanation. @NickJongens Hope this comment is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


Support signature generation using algorithms other than MD5-Hash

It looks like RequestSigning only supports MD5-Hash. I think this is an oversight, and the HMAC signing methods should be supported as well.

Hi, I would like to work on this issue. I would like to know how to determine which signing method is to be used(md5 or sha1 or sha256).

Sure, have at it.


[BUG REPORT]:- Song gets wrong time remaining

Duplicate Issues

[X] There are no existing posts relating to my problem
[ ] There are existing posts relating to my problem, but the solution given, doesn't work for me.

What happened?
In #345 , @sharmavivek223 made it so that the time left will display on the page, however after the song ends, if we tap the play button, which plays "All Of The Above" the time displays beside the last song played, instead of displaying in all of the above.

Release version
18.4.7
Steps to reproduce

Play a song
Finish the song/stop the song
Tap the play button on top.

What platform are you seeing this problem on?
Windows
Relevant console log (if any)
No response

on it


Collision detection at startup issue

I am really hesitant to report this, but I ran out of options.
The issue is that at running the project, when Godot logo with splash screen appears, the nodes _fixed_process() function starts. All fine and dandy, but the problem is at the same time collisions doesn't work if there is one at startup! I used manual collision checking for RayCast2D or even Area2D, they fail to report collisions or overlapped areas when there is already one at startup. The collision objects ends up half way through the ground.
I suspected that physics server is not yet loaded and running when the nodes are already moving. What I did and seems to fix it:
onready var testTime = 0

func _read():
	set_fixed_process(true)

func _fixed_process(delta):
	testTime += delta
	if (testTime < 1):
		return

 ... rest of processing, collision checking .. etc!..

Is this the proper way of fixing it? Why _ready() is called when in fact it is not ready?

physics generally runs one frame behind to logic, and collisions are
processed all at once. This way a lot of cpu time is saved and both of them
can run simultaneously when multi thread configuration is selecte. It also
helps that you have enough time to move objects by code before any
collision is reported and detected.
It' s kind of a catch22, but it's generally preferred to adapt to this way
of thinking to later have less performance problems
On Tue, May 31, 2016 at 2:37 PM, RebelliousX<EMAIL_ADDRESS>wrote:

I am really hesitant to report this, but I ran out of options.
The issue is that at running the project, when Godot logo with splash
screen appears, the nodes _fixed_process() functions starts. All fine and
dandy, but the problem is at the same time collisions doesn't work if there
is one at startup! I used manual collision checking for RayCast2D or even
Area2D, they fail to report collisions or overlapped areas when there is
already one at startup. The collision objects ends up half way through the
ground.
I suspected that physics server is not yet loaded and running when the
nodes are already moving. What I did and seems to fix it:
onready var testTime = 0
func _read():
set_fixed_process(true)
func _fixed_process(delta):
testTime += delta
if (testTime < 1):
return
... rest of processing, collision checking .. etc!..
Is this the proper way of fixing it? Why _ready() is called when in fact
it is not ready?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/4959, or mute the thread
https://github.com/notifications/unsubscribe/AF-Z2yPD0HguWJ4q_SjeYav6EsyM7C2Pks5qHHHDgaJpZM4IqxkC
.

Thanks @reduz for the explanation :+1: Good to know that.


build microservices containers from main branch

This adds a job/workflow to build container images from the microservices branch too. Fixes #66

@joshgav we can't merge this yet as there is no Makefile on main

@AlexsJones the problem is that it's not possible to test the microservices branch (and merge it to main) till its images are pushed to the GitHub registry for testing; but to have the GitHub Action push to the registry requires something in the main branch - a chicken-and-egg problem.
This PR proposes a workaround for now to get them into the registry from their current non-main branch. This extra task would be removed when the microservices branch itself is merged to main.
@AlexsJones does docker pull ghcr.io/podtato-head/podtato-main:v0.1.0 work for you in a clean environment?
If you can push the images manually that would also work!
The additional task checks out and works on the 'microservices' branch ( with.ref: microservices) so it would use the Makefile there.
Thanks for the consideration!

Resolved similarly in https://github.com/cncf/podtato-head/commit/addb1497c984ec96c140ac2aa63207bed6089fb7
Thanks @thschue, @AlexsJones, @AloisReitbauer for your help.


Add warnings to logs for unknown configuration options

Contributor @rootfs reported that a static route wasn't created as expected. Thank you for the report!
This could be a regression, also possibly the unit tests need to be updated to catch this
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: net-conf
  namespace: playground
spec:
  config: '{
    "cniVersion": "0.4.0",
    "name": "bridge-firewalld",
    "plugins": [
       {
          "name": "my-whereabouts",
          "type": "bridge",
          "bridge": "br1",
          "ipMasq": true,
          "ipam": {
            "type": "whereabouts",
            "range": "<IP_ADDRESS>/24",
            "route": [
               {"dst": "<IP_ADDRESS>/24", "gw": "<IP_ADDRESS>"}
             ]
           }
       },
       {
        "type": "firewall",
        "backend": "iptables"
       }
    ]
  }'

also if route can accept interface name as below, that'll be great
{"dst": "<IP_ADDRESS>/24", "gw": "<IP_ADDRESS>", "dev": "br1"}

Hello @dougbtv , first of all thanks very much for your effort developing this code.
Would you mind sharing when this issue could be solved?, being able to change the default route of a pod or add static routes is core for our use case.
Thanks in advance.

Thanks for bubbling this back up @iaas365-dev -- I lost track. Let me try to get it on my list for next week before the holidays :+1:

@iaas365-dev (and cc: @rootfs )
I think this actually a typo in the given configuration. It uses route instead of routes (plural!)... this could use better error messaging, possibly. But, I believe the functionality works.
However, changing the default route might be a kind of special case -- there's a couple options here... When I made attempts in whereabouts, linux would complain that it failed to add route '{<IP_ADDRESS> ffffff00} via <IP_ADDRESS> dev net1': network is unreachable -- which maybe I'm doing something dumb with my initial setup.
Option A: You should be able to change the default route with Multus CNI, in run time configurations (see the spec example in section <IP_ADDRESS>.9 in the npwg spec, working doc.)
Option B: You can use route-override CNI as part of your plugin chain, and set the default route there.
Working example below:
[centos@kube-singlehost-master whereabouts]$ kubectl exec -it samplepod -- ip route
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/24 dev eth0 scope link  src <IP_ADDRESS>
<IP_ADDRESS>/16 via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/24 dev net1
<IP_ADDRESS>/28 dev net1 scope link  src <IP_ADDRESS>
[centos@kube-singlehost-master whereabouts]$ cat fix
cat: fix: No such file or directory
[centos@kube-singlehost-master whereabouts]$ cat fixed.example.nad.yml
#  {"dst": "<IP_ADDRESS>/24", "gw": "<IP_ADDRESS>"}
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: macvlan-conf
spec:
  config: '{
    "cniVersion": "0.4.0",
    "name": "macvlan-conf",
    "plugins": [
       {
          "name": "my-whereabouts",
          "name": "whereaboutsexample",
          "type": "macvlan",
          "master": "eth0",
          "ipam": {
            "type": "whereabouts",
            "range": "<IP_ADDRESS>/28",
            "routes": [
               { "dst": "<IP_ADDRESS>/24" }
             ]
           }
       }
    ]
  }'

However, changing the default route might be a kind of special case -- there's a couple options here... When I made attempts in whereabouts, linux would complain that it failed to add route '{<IP_ADDRESS> ffffff00} via <IP_ADDRESS> dev net1': network is unreachable -- which maybe I'm doing something dumb with my initial setup.

Yes，i also get this error. This is only add the dst subunt,right? not for the default route.
So, above said it's related with the default route, is it right?

            "range": "<IP_ADDRESS>/28",
            "routes": [
               { "dst": "<IP_ADDRESS>/24" }  // if add this to the net-attach-def, is it duplicate?

Another method is SBR:
kubectl exec -it muti-cni-pod -- ip route add <IP_ADDRESS>/0 via <IP_ADDRESS> table 100
RTNETLINK answers: File exists
command terminated with exit code 2
kubectl exec -it muti-cni-pod -- ip rule add from <IP_ADDRESS>/24 table 100

kubectl exec -it muti-cni-pod -- bash -c "ping -c 1 <IP_ADDRESS> -I <IP_ADDRESS>"
PING <IP_ADDRESS> (<IP_ADDRESS>) from <IP_ADDRESS>: 56 data bytes
64 bytes from <IP_ADDRESS>: seq=0 ttl=64 time=17.330 ms

--- <IP_ADDRESS> ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 17.330/17.330/17.330 ms

kubectl exec -it muti-cni-pod -- ip rule s
0:      from all lookup local
32763:  from <IP_ADDRESS>/24 lookup 100
32764:  from <IP_ADDRESS>/24 lookup 100
32765:  from <IP_ADDRESS>/24 lookup 100
32766:  from all lookup main
32767:  from all lookup default

kubectl exec -it muti-cni-pod -- ip r s t 100
default via <IP_ADDRESS> dev net1


Using md5sum of master password as key is insecure

I will replace it with scrypt - A key derived function.
See wiki/scrypt for detail about scrypt.

PR #7


Proposal: Add Optional Code Package visual studio project template for WinUI 3

Proposal: Add Optional Code Package visual studio project template for WinUI 3

Summary

We currently have a way to create optional package for UWP applications, we need feature parity so as to create and package plugins easily.
Rationale

Allows us to create plugins and package them for main application

Scope

Capability
Priority

Project template for optional package
Must

Automatically link it with the main application
Could

Important Notes

Open Questions

At this time a workaround would also be helpful.

@harvinders  This is sounds like a project reunion proposal rather than WinUI

@marb2000 I thought it goes with the tooling for WinUI 3. When we install the vsix for WinUI 3 we get all the project templates (Blank App, Class library) and optional package project template is just one more template to be packaged within the vsix.

This would be really useful for me too, so I thought I'd tack my comment on the end of this issue as the project template docs point in this direction, rather than to the repo for Project Reunion.
I'd like to be able to have a Project Reunion host app that loads plugin assemblies from installed Optional Packages. The current Optional Package template for Visual Studio is tied to .NET Framework and UWP, and there seems to be no way to build an MSIX Optional Package for .NET 5.

@marb2000 Any update on this?

Is there any option to load an external plugin into a WinUI 3 application https://github.com/microsoft/WindowsAppSDK/discussions/2073

The only possible way is to change few things as mentioned in#6299. This is just a work around and don't work if you use third-party controls or define string resources in the plug-in.


fix: missing React imports in multiple JSX/TSX files

Description
This pull request will fix the issue of missing React imports in multiple JSX/TSX files.
Related issue(s)
Fixes #3286

Please let me know what's the issue, I'll fix it.

@coderabbitai full review

Hey @akshatnema, I made changes in all 203 files. but when I sorted imports using eslint, it removed some of them. Above PR tests failed before sorting imports. How should I proceed now ?

@coderrabbitai summarize

@coderabbitai summarize

How should I proceed now ?

@raj17ce Leave it. I will merge this with these changes only.

/rtm

@all-contributors please add @raj17ce for code


Auto Refresh token - Before access token expires?

Can you use the auto refresh token feature to refresh before the access token is expired?
If the access token is still alive I know who that user is and I can restrict the WebAPI call to authorized users.
At the moment I have to allow anonymous users to refresh token. I also have to decode the token before I know who that user is.

@reft You're supposed to send the token along in the request, so you can still verify who they are. The old token has an id, which is part of the refresh token to indicate a pair. For that reason you should always send it along, and you should always know the identity of the client.

@RWOverdijk  Right now I'm sending the current refresh token when I want to refresh the access_token, I don't use the expired access_token. Should I validate the expired access_token aswell? If I validate the expired access_token I get an "token has expired". What am I supposed to do with the old access_token? Should I compare the old access_token JTI claim with the current refresh token or should I compare something else? Thanks :)

Aha.. So this token id is generated automatically, (i dont set any id when I create a new token), when i create a JWT token and both the access_token and refresh_token share the same id? Is that the only thing i should compare with the two?

Also, should this id be hashed or encrypted in both access and refresh?

It's the iat, you want to set the iat on the payload of the refresh token.

@RWOverdijk iat = issued at, (datetime). Are you sure you didn't mean jti, (unique identifier)? Should I be comparing the two dates instead? :S Im using the same guid for the jti on both tokens. Should I be hashing them? Thanks again.

@reft That's an option, too. In case you do't have that ID, you can use the iat. https://github.com/SpoonX/sails-hook-authorization/blob/master/api/services/AuthService.js#L218
That's fine, too. Whatever secret you wish to use so you can send them both in.

Ah perfect thanks


No clear history button in calculator activity

there should be a button in calculator activity to clear the user history on the screen of the calculator activity

It's intentional, you could remove history by creating a new instance of the activity.


Support for References in Map values

Feature Request 🛍

Extend Map Declarations to allow reference types for values.
e.g.
map AddressBook {
  o GUID
  --> Person
}

Use Case

Today, Concerto supports two types of properties in declarations

Child properties, using o notation, https://concerto.accordproject.org/docs/design/specification/model-properties
Relationship properties, using --> notation, https://concerto.accordproject.org/docs/design/specification/model-relationships

Map Declarations are a new feature (which haven't been fully released, draft documentation is here). However, Map declarations only allow map value types to use child objects, e.g.
map AddressBook {
  o GUID
  o Person
}

However, for many scenarios, it would be more semantically correct to allow foreign key relationships to objects rather than forcing containment in the map. For example, an AddressBook doesn't conceptually contain people, it should be a pointer to them instead.
The design for maps does not include relationship types for Map keys.
Possible Solution

Implementing this change requires touching multiple places in the code:

Updating the metamodel to allow Relationship types for Map Values, https://github.com/accordproject/concerto-metamodel
Extending the parser to allow the new syntax, and printing of a model back to CML (concerto-cto)
Extending the introspection API to validate models when they are added to a ModelManager (concerto-core)
Entity validation against a model definition, e.g. are map values in an instance valid relationship references.
Extending all of the other modules to include support for relationships in Map Declarations (E.g. code generation in concerto-codegen)

Context

Detailed Description

@mttrbrts
Can you please elaborate this issue?

@kailash360 I've extended the issue description above with a high-level description. This is quite a big piece of work that touches many parts of the stack. I recommend decomposing it into phases.

Hi @mttrbrts . I've been looking into this issue and would like to take it up.

Hi there. I have a doubt. I extended the metamodel definition and was looking through the parser.pegjs file. I came across this grammar definition for - ObjectMapValueTypeDeclaration

This already includes handling of the relationship property syntax.
Also, ObjectMapValueTypeDeclaration is included in MapValueType

I think the relationship property syntax should be able to parse relationship properties in the current state. To verify this, I tried testing the parser on the online version of peggy. I tested it using this model.
namespace test

concept Person identified by email {
  o String email
  o DateTime dob
}

map m {
  o String
  --> Person
}

which contains the new syntax.
The input was parsed successfully.

Am I correct in assuming that the parser does not require any changes to support the new syntax?

Also, when compiling the model with concerto-cli, the following error is received.

which I think is not a syntax error, but rather a "validation(?)" error.

Having gone through concerto-metamodel and  concerto-cto, I think that the functionality to handle relationship properties is already implemented in the metamodel, the parser and the printer.
I modified mapdeclaration.js to support relationship map values in introspect and am now able to compile models containing the relationship property syntax such as -
namespace test

concept Person identified by email {
  o String email
  o DateTime dob
}

map m {
  o String
  --> Person
}

Also, when compiling the model with concerto-cli, the following error is received.  which I think is not a syntax error, but rather a "validation(?)" error.

You're right @apoorvsxna. The concerto compile command is for transforming concerto models to other formats. For parsing, try the concerto parse command.
It looks like you're right, the parsing logic appears to already be there. The next step if to extend the introspection API to validate the AST JSON that parsing produces.

I've made some changes in the metamodel and validation and am now able to compile models containing map values that have the relationship property syntax.
However, there is no change in the resulting compiled model. Does the issue require me to add logic for code generation using the equivalent reference types in each language?

Hi @apoorvsxna
Can you please confirm by compiling do you mean parsing?
If not which target language are you compiling it to?
If you are just parsing the cto model to get JSON AST, (if you man compiling = parsing). I don't believe that's going to change.

@sanketshevkar I am referring to compiling using concerto compile.  I tried compiling two example models- one containing the relationship property syntax and one without it.

og-syntax.cto-

namespace org.example

concept Person identified by email {
  o String email
  o DateTime dob
}

map m {
  o String
  o Person #child property
}

updated-syntax.cto

namespace org.updated

concept Person identified by email {
  o String email
  o DateTime dob
}

map m {
  o String
  --> Person # relationship property
}

I compiled these to Java, and the result was identical, apart from the package name of course.

Compiled code for og-syntax.cto

// this code is generated and should not be modified
package org.example;

import concerto.Concept;
import concerto.Asset;
import concerto.Transaction;
import concerto.Participant;
import concerto.Event;
import com.fasterxml.jackson.annotation.*;

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "$class")
@JsonIgnoreProperties({"id"})
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "email")
public class Person extends Concept {

   // the accessor for the identifying field
   public String getID() {
      return this.getEmail();
   }

   private String email;
   private java.util.Date dob;
   public String getEmail() {
      return this.email;
   }
   public java.util.Date getDob() {
      return this.dob;
   }
   public void setEmail(String email) {
      this.email = email;
   }
   public void setDob(java.util.Date dob) {
      this.dob = dob;
   }
}

Compiled code for updated-syntax.cto

// this code is generated and should not be modified
package org.updated;

import concerto.Concept;
import concerto.Asset;
import concerto.Transaction;
import concerto.Participant;
import concerto.Event;
import com.fasterxml.jackson.annotation.*;

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "$class")
@JsonIgnoreProperties({"id"})
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "email")
public class Person extends Concept {

   // the accessor for the identifying field
   public String getID() {
      return this.getEmail();
   }

   private String email;
   private java.util.Date dob;
   public String getEmail() {
      return this.email;
   }
   public java.util.Date getDob() {
      return this.dob;
   }
   public void setEmail(String email) {
      this.email = email;
   }
   public void setDob(java.util.Date dob) {
      this.dob = dob;
   }
}

The design for maps does not include relationship types for Map keys.

I think this issue requires to add maps to support relationship types as keys. That means we need concerto to parse cto file, generate the JSON AST and validate the metamodel in the AST. This all would reside in Concerto repo.
The compile process is basically code-generation/code-conversion process. This resides in Concerto-Codegen repo.
Once the parsing+validation support is build, then we need to add support for this to codegen repo.


allow api key usage for llama.cpp

official llama.cpp server supports api keys

Thank you for your contribution!


Add documentation for Shift Registers in Wiki

Is your feature request related to a problem? Please describe.
As a user I have a documentation for shift registers
Describe the solution you'd like
I want to understand how they work.
I want to understand how to configure them.
I want to understand which devices are supported.
Documentation is in the Wiki.
Describe alternatives you've considered
None.
Additional context
None.

First draft written: https://github.com/Mobiflight/MobiFlight-Connector/wiki/Controlling-LEDs-with-a-shift-register

This is now done and linked to the various places on the wiki.

@danecreekphotography Thank You so much - that's awesome! Great job!!!


LSM: fixing Compaction interactions with iterators

MergeIterator stream_peek()
There are times when peek() on the TableIterator (and transitively, the LevelIterator) will return null without being empty. This happens if it runs out of values buffered in memory and needs to tick() again. Unfortunately, the MergeIterator currently assumes that peek() returning null means the iterator is completed and stops accessing it / removes it from its heap data structure.
MergeIterator.stream_peek() now can return a third state of Pending which means that, on the given iterator being merged, peek() would return null but buffered_all_values() would return false. This ensures iterators are accessed until they are truly empty.
Compaction iterator IO tracking
There was a bug in the order IO was tracked during Compaction. tick() would be called on an iterator which would initiate IO on the Grid. The Grid would service the IO from the cache and complete it inline. This bubbles up and calls Compaction.io_finish() early. tick() returns true that IO started and does Compaction.io_start() but it was too late.
A fix is to do Compaction.io_start() before calling tick(). If it returns true, io_finish() will be called either inline or eventually. If it returns false, Compaction calls io_finish() itself to cancel it out.
Manifest invisible table iterator issues
One of the last issues is that assert_no_invisible_tables() is being hit at a checkpoint(). When the even/odd compactions complete, they end up calling remove_invisible_tables for their level, which all happens before the checkpoint. It seems as though some invisible tables still remain according to the ManifestLevels.
Changing remove_invisible_tables to iterate all levels and not use the KeyRange as a hint seems to address this for lsm/test.zig but it's still an issue in the rafiki tests. Other attempts (to no luck in rafiki) include re-creating the iterator in a loop to get the next table to mitigate the possibility of invalidation by removal, and removing from all levels at the end of the fourth beat instead of when Compactions are done.
This bug is left unresolved in this PR until a good fix can be found, but the other changes are still worth getting merged in the mean time.

Thanks for the awesome write-up @kprotty.

In addition, can you verify that this fixes https://github.com/tigerbeetledb/tigerbeetle/issues/183, https://github.com/tigerbeetledb/tigerbeetle/issues/186, and https://github.com/tigerbeetledb/tigerbeetle/issues/188? When I checked those last week it looked like all 3 would be addressed by this PR.

#183 should be fixed by making Grid.read_block async to avoid reordered io_finish()
#186 should be fixed by reporting error.Drained from the iterators & handling all of that
#188 should be fixed by using buffered_all_values() in peek() (which does the same assert), then fixing that usage by #186
The merge iterator tests are currently failing I believe due to the heap update changes (think I implemented it wrong).

This branch is still running into crashes on lsm_forest_fuzz that appear related to iterator buffering, e.g.:
/home/djg/Code/tb/tb-lsm-iterators/src/lsm/level_iterator.zig:304:57: 0x2841bd in lsm.level_iterator.LevelIteratorType(lsm.table.TableType(u64,tigerbeetle.Account,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).compare_keys,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).key_from_value,18446744073709551615,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone_from_key),test.storage.Storage).pop (lsm_forest_fuzz)
            const table_iterator = &it.tables.head_ptr().?.table_iterator;
                                                        ^
/home/djg/Code/tb/tb-lsm-iterators/src/lsm/compaction.zig:99:51: 0x283e24 in lsm.compaction.MergeStreamSelector.pop (lsm_forest_fuzz)
                    1 => compaction.iterator_b.pop(),
                                                  ^
/home/djg/Code/tb/tb-lsm-iterators/src/lsm/k_way_merge.zig:109:37: 0x480b29 in lsm.k_way_merge.KWayMergeIterator(lsm.compaction.CompactionType(lsm.table.TableType(u64,tigerbeetle.Account,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).compare_keys,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).key_from_value,18446744073709551615,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone_from_key),test.storage.Storage,lsm.table_immutable.TableImmutableIteratorType),u64,tigerbeetle.Account,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).key_from_value,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).compare_keys,2,lsm.compaction.MergeStreamSelector.peek,lsm.compaction.MergeStreamSelector.pop,lsm.compaction.MergeStreamSelector.precedence).pop_internal (lsm_forest_fuzz)
            const value = stream_pop(it.context, root);
                                    ^
/home/djg/Code/tb/tb-lsm-iterators/src/lsm/k_way_merge.zig:88:35: 0x43dd72 in lsm.k_way_merge.KWayMergeIterator(lsm.compaction.CompactionType(lsm.table.TableType(u64,tigerbeetle.Account,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).compare_keys,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).key_from_value,18446744073709551615,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone_from_key),test.storage.Storage,lsm.table_immutable.TableImmutableIteratorType),u64,tigerbeetle.Account,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).key_from_value,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).compare_keys,2,lsm.compaction.MergeStreamSelector.peek,lsm.compaction.MergeStreamSelector.pop,lsm.compaction.MergeStreamSelector.precedence).pop (lsm_forest_fuzz)
            while (it.pop_internal()) |value| {
                                  ^
/home/djg/Code/tb/tb-lsm-iterators/src/lsm/compaction.zig:432:49: 0x3f7406 in lsm.compaction.CompactionType(lsm.table.TableType(u64,tigerbeetle.Account,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).compare_keys,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).key_from_value,18446744073709551615,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone_from_key),test.storage.Storage,lsm.table_immutable.TableImmutableIteratorType).cpu_merge (lsm_forest_fuzz)
                const value = merge_iterator.pop() orelse break;
                                                ^
/home/djg/Code/tb/tb-lsm-iterators/src/lsm/compaction.zig:402:37: 0x3cf91e in lsm.compaction.CompactionType(lsm.table.TableType(u64,tigerbeetle.Account,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).compare_keys,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).key_from_value,18446744073709551615,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone_from_key),test.storage.Storage,lsm.table_immutable.TableImmutableIteratorType).cpu_merge_start (lsm_forest_fuzz)
                compaction.cpu_merge();
                                    ^
/home/djg/Code/tb/tb-lsm-iterators/src/lsm/compaction.zig:381:71: 0x3a55e5 in lsm.compaction.CompactionType(lsm.table.TableType(u64,tigerbeetle.Account,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).compare_keys,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).key_from_value,18446744073709551615,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone,lsm.groove.ObjectTreeHelpers(tigerbeetle.Account).tombstone_from_key),test.storage.Storage,lsm.table_immutable.TableImmutableIteratorType).io_finish (lsm_forest_fuzz)
            if (compaction.io_pending == 0) compaction.cpu_merge_start();
                                                                      ^
/home/djg/Code/tb/tb-lsm-iterators/src/lsm/compaction.zig:348:42: 0x3cf690 in lsm.compaction.write_callback.callback (lsm_forest_fuzz)
                    _compaction.io_finish();
                                         ^

Can you check it out? (The above is seed<PHONE_NUMBER>5172149209).


shifted an-explanation-of-creative-commons.html to its correct directory (_resources)

Fixes

Fixes #273  by @Murdock9803

Description
All the resource pages are stored in the docs/_resources directory. The an-explanation-of-creative-comons.html resource was present in the docs/ directory directly. The pull request shifts the file to its correct position (docs/_resources)
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main or master).
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no
visible errors.

Developer Certificate of Origin

For the purposes of this DCO, "license" is equivalent to "license or public domain dedication," and "open source license" is equivalent to "open content license or public domain dedication."

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@possumbilities please have a look 🙌


Option to specify Cluster ID

Hello,
I'm trying to interact with Python and Go through NATs.  I'm able to publish and subscribe with Python just fine. And I can also publish and subscribe with Go just fine.
The issue comes when trying to publish with Python and subscribe with Go. Or Vesa Versa.
I'm pretty sure I've tracked this down to nats-python not supporting the Cluster ID parameter.
The Go code requires a Cluster ID and using the default test-cluster doesn't seem to get Go on the same page as Python.
Here is the Trace and Debug output from GO:
[1] 2020/09/18 05:17:20.694421 [DBG] <IP_ADDRESS>:48332 - cid:5 - Client connection created
[1] 2020/09/18 05:17:20.696551 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [CONNECT {"verbose":false,"pedantic":false,"auth_token":"defaultFissionAuthToken","tls_required":false,"name":"NATS Streaming Example Publisher","lang":"go","version":"1.9.1","protocol":1,"echo":true}]
[1] 2020/09/18 05:17:20.696599 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [PING]
[1] 2020/09/18 05:17:20.696607 [TRC] <IP_ADDRESS>:48332 - cid:5 - ->> [PONG]
[1] 2020/09/18 05:17:20.698750 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [SUB _INBOX.pcTKl0ZQpfrPR1xTXq9Biu  1]
[1] 2020/09/18 05:17:20.698864 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [SUB _INBOX.pcTKl0ZQpfrPR1xTXq9Bo9  2]
[1] 2020/09/18 05:17:20.698940 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [SUB _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.*  3]
[1] 2020/09/18 05:17:20.698998 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [PUB _STAN.discover.fissionMQTrigger _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.Q3com5rU 72]
[1] 2020/09/18 05:17:20.699044 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- MSG_PAYLOAD: ["\n\tclientPub\x12\x1d_INBOX.pcTKl0ZQpfrPR1xTXq9Biu\x18\x01\"\x16pcTKl0ZQpfrPR1xTXq9Bdf(\x050\x03"]
[1] 2020/09/18 05:17:20.699098 [TRC] <IP_ADDRESS>:40994 - cid:2 - ->> [MSG _STAN.discover.fissionMQTrigger 2 _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.Q3com5rU 72]
[1] 2020/09/18 05:17:20.699393 [TRC] <IP_ADDRESS>:40994 - cid:2 - <<- [PUB _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.Q3com5rU 224]
[1] 2020/09/18 05:17:20.699450 [TRC] <IP_ADDRESS>:40994 - cid:2 - <<- MSG_PAYLOAD: ["\n _STAN.pub.8mwG6lwarlU4fIK08vltmD\x12 _STAN.sub.8mwG6lwarlU4fIK08vltmD\x1a\"_STAN.unsub.8mwG6lwarlU4fIK08vltmD\"\"_STAN.close.8mwG6lwarlU4fIK08vltmD2%_STAN.subclose.8mwG6lwarlU4fIK08vltmD:%_STAN.discover.fissionMQTrigger.pings@\x05H\x03P\x01"]
[1] 2020/09/18 05:17:20.699481 [TRC] <IP_ADDRESS>:48332 - cid:5 - ->> [MSG _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.Q3com5rU 3 224]
[1] 2020/09/18 05:17:20.702273 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [SUB _STAN.acks.pcTKl0ZQpfrPR1xTXq9Byd  4]
[1] 2020/09/18 05:17:20.702303 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [PUB _STAN.pub.8mwG6lwarlU4fIK08vltmD.tv-request _STAN.acks.pcTKl0ZQpfrPR1xTXq9Byd 88]
[1] 2020/09/18 05:17:20.702313 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- MSG_PAYLOAD: ["\n\tclientPub\x12\x162X8mH7xCDBwpJGbL1oujwD\x1a\ntv-request*\x0fTesting with Go2\x16pcTKl0ZQpfrPR1xTXq9Bdf"]
[1] 2020/09/18 05:17:20.702345 [TRC] <IP_ADDRESS>:40994 - cid:2 - ->> [MSG _STAN.pub.8mwG6lwarlU4fIK08vltmD.tv-request 3 _STAN.acks.pcTKl0ZQpfrPR1xTXq9Byd 88]
[1] 2020/09/18 05:17:20.702467 [INF] STREAM: Channel "tv-request" has been created
[1] 2020/09/18 05:17:20.702661 [TRC] <IP_ADDRESS>:40992 - cid:1 - <<- [PUB _STAN.acks.pcTKl0ZQpfrPR1xTXq9Byd 24]
[1] 2020/09/18 05:17:20.702672 [TRC] <IP_ADDRESS>:40992 - cid:1 - <<- MSG_PAYLOAD: ["\n\x162X8mH7xCDBwpJGbL1oujwD"]
[1] 2020/09/18 05:17:20.702708 [TRC] <IP_ADDRESS>:48332 - cid:5 - ->> [MSG _STAN.acks.pcTKl0ZQpfrPR1xTXq9Byd 4 24]
[1] 2020/09/18 05:17:20.705680 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [UNSUB 1 ]
[1] 2020/09/18 05:17:20.705751 [TRC] <IP_ADDRESS>:48332 - cid:5 - <-> [DELSUB 1]
[1] 2020/09/18 05:17:20.705785 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [UNSUB 2 ]
[1] 2020/09/18 05:17:20.705831 [TRC] <IP_ADDRESS>:48332 - cid:5 - <-> [DELSUB 2]
[1] 2020/09/18 05:17:20.705903 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [UNSUB 4 ]
[1] 2020/09/18 05:17:20.705954 [TRC] <IP_ADDRESS>:48332 - cid:5 - <-> [DELSUB 4]
[1] 2020/09/18 05:17:20.706006 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- [PUB _STAN.close.8mwG6lwarlU4fIK08vltmD _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.S1IbDJVg 11]
[1] 2020/09/18 05:17:20.706089 [TRC] <IP_ADDRESS>:48332 - cid:5 - <<- MSG_PAYLOAD: ["\n\tclientPub"]
[1] 2020/09/18 05:17:20.706170 [TRC] <IP_ADDRESS>:40994 - cid:2 - ->> [MSG _STAN.close.8mwG6lwarlU4fIK08vltmD 7 _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.S1IbDJVg 11]
[1] 2020/09/18 05:17:20.706432 [TRC] <IP_ADDRESS>:40996 - cid:3 - <<- [PING]
[1] 2020/09/18 05:17:20.706464 [TRC] <IP_ADDRESS>:40996 - cid:3 - ->> [PONG]
[1] 2020/09/18 05:17:20.706694 [TRC] <IP_ADDRESS>:40994 - cid:2 - <<- [PUB _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.S1IbDJVg 0]
[1] 2020/09/18 05:17:20.706719 [TRC] <IP_ADDRESS>:40994 - cid:2 - <<- MSG_PAYLOAD: [""]
[1] 2020/09/18 05:17:20.706736 [TRC] <IP_ADDRESS>:48332 - cid:5 - ->> [MSG _INBOX.pcTKl0ZQpfrPR1xTXq9BtO.S1IbDJVg 3 0]
[1] 2020/09/18 05:17:20.712840 [DBG] <IP_ADDRESS>:48332 - cid:5 - Client connection closed: Client Closed
[1] 2020/09/18 05:17:20.712958 [TRC] <IP_ADDRESS>:48332 - cid:5 - <-> [DELSUB 3]

Notice on line 8 that it mentions the Cluster ID (which is: fissionMQTrigger)
Now here is the very small Python Trace and Debug output:
[1] 2020/09/18 05:15:46.950857 [DBG] <IP_ADDRESS>:50942 - cid:4 - Client connection created
[1] 2020/09/18 05:15:46.951992 [TRC] <IP_ADDRESS>:50942 - cid:4 - <<- [CONNECT {"name": "nats-python", "lang": "python", "protocol": 0, "version": "0.8.0", "verbose": false, "pedantic": false, "auth_token": "defaultFissionAuthToken"}]
[1] 2020/09/18 05:15:46.952640 [TRC] <IP_ADDRESS>:50942 - cid:4 - <<- [PUB tv-request  45]
[1] 2020/09/18 05:15:46.952689 [TRC] <IP_ADDRESS>:50942 - cid:4 - <<- MSG_PAYLOAD: ["{\"user\": null, \"text\": \"Testing with Python\"}"]
[1] 2020/09/18 05:15:46.952736 [DBG] <IP_ADDRESS>:50942 - cid:4 - Client connection closed: Client Closed

Any advice on being able to specify the Cluster ID to make these guys line up?
Thank you,
Cody Hill

Hi!
Can you please provide:

example of Go code
example of Python code
and describe your cluster setup, version of NATS, number of nodes, maybe docker-compose.yaml

I want to reproduce your case on my local, so I need all those details.
Thanks!

Hello @Gr1N,
Here is an example of the Python Code:
import json
from pynats import NATSClient

def publish_message(text, user):
    message = {}
    message['user'] = user
    message['text'] = text
    with NATSClient("nats://defaultFissionAuthToken@nats-streaming.fission:4222") as client:
        client.publish("tv-request", payload=json.dumps(message))

def main():
    publish_message(text, user)

if __name__ == "__main__":
    main()

And the Go Code to try and subscribe and read the message is coming from fission.io: https://github.com/fission/fission/blob/master/pkg/mqtrigger/messageQueue/nats/nats.go
If I publish the message using this: https://github.com/fission/fission/blob/d20dc9aa644e1983642db905bf39e60cb85823b3/test/tests/mqtrigger/nats/stan-pub.go
Everything seems to work great.
It looks like we're using NATS version 2.1.7
[1] 2020/09/18 05:14:08.283185 [INF] STREAM: Starting nats-streaming-server[fissionMQTrigger] version 0.18.0
[1] 2020/09/18 05:14:08.283226 [INF] STREAM: ServerID: 8mwG6lwarlU4fIK08vltip
[1] 2020/09/18 05:14:08.283231 [INF] STREAM: Go version: go1.14.4
[1] 2020/09/18 05:14:08.283235 [INF] STREAM: Git commit: [026e3a6]
[1] 2020/09/18 05:14:08.284087 [INF] Starting nats-server version 2.1.7

Here is the output of kubect get deploy nats-streaming:
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "8"
    meta.helm.sh/release-name: fission
    meta.helm.sh/release-namespace: fission
  creationTimestamp: "2020-09-15T17:17:32Z"
  generation: 8
  labels:
    app.kubernetes.io/managed-by: Helm
    svc: nats-streaming
  managedFields:
  - apiVersion: apps/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:meta.helm.sh/release-name: {}
          f:meta.helm.sh/release-namespace: {}
        f:labels:
          .: {}
          f:app.kubernetes.io/managed-by: {}
          f:svc: {}
      f:spec:
        f:progressDeadlineSeconds: {}
        f:replicas: {}
        f:revisionHistoryLimit: {}
        f:selector:
          f:matchLabels:
            .: {}
            f:svc: {}
        f:strategy:
          f:rollingUpdate:
            .: {}
            f:maxSurge: {}
            f:maxUnavailable: {}
          f:type: {}
        f:template:
          f:metadata:
            f:labels:
              .: {}
              f:svc: {}
          f:spec:
            f:containers:
              k:{"name":"nats-streaming"}:
                .: {}
                f:image: {}
                f:imagePullPolicy: {}
                f:livenessProbe:
                  .: {}
                  f:failureThreshold: {}
                  f:httpGet:
                    .: {}
                    f:path: {}
                    f:port: {}
                    f:scheme: {}
                  f:initialDelaySeconds: {}
                  f:periodSeconds: {}
                  f:successThreshold: {}
                  f:timeoutSeconds: {}
                f:name: {}
                f:ports:
                  .: {}
                  k:{"containerPort":4222,"protocol":"TCP"}:
                    .: {}
                    f:containerPort: {}
                    f:protocol: {}
                  k:{"containerPort":4223,"protocol":"TCP"}:
                    .: {}
                    f:containerPort: {}
                    f:protocol: {}
                f:readinessProbe:
                  .: {}
                  f:failureThreshold: {}
                  f:httpGet:
                    .: {}
                    f:path: {}
                    f:port: {}
                    f:scheme: {}
                  f:initialDelaySeconds: {}
                  f:periodSeconds: {}
                  f:successThreshold: {}
                  f:timeoutSeconds: {}
                f:resources: {}
                f:terminationMessagePath: {}
                f:terminationMessagePolicy: {}
            f:dnsPolicy: {}
            f:restartPolicy: {}
            f:schedulerName: {}
            f:securityContext: {}
            f:serviceAccount: {}
            f:serviceAccountName: {}
            f:terminationGracePeriodSeconds: {}
    manager: Go-http-client
    operation: Update
    time: "2020-09-18T04:39:01Z"
  - apiVersion: apps/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:spec:
        f:template:
          f:spec:
            f:containers:
              k:{"name":"nats-streaming"}:
                f:args: {}
    manager: kubectl
    operation: Update
    time: "2020-09-18T05:14:07Z"
  - apiVersion: apps/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          f:deployment.kubernetes.io/revision: {}
      f:status:
        f:availableReplicas: {}
        f:conditions:
          .: {}
          k:{"type":"Available"}:
            .: {}
            f:lastTransitionTime: {}
            f:lastUpdateTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
          k:{"type":"Progressing"}:
            .: {}
            f:lastTransitionTime: {}
            f:lastUpdateTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
        f:observedGeneration: {}
        f:readyReplicas: {}
        f:replicas: {}
        f:updatedReplicas: {}
    manager: k3s
    operation: Update
    time: "2020-09-18T05:14:38Z"
  name: nats-streaming
  namespace: fission
  resourceVersion: "420609"
  selfLink: /apis/apps/v1/namespaces/fission/deployments/nats-streaming
  uid: 86e8f977-06f4-448b-9b72-787c04d23a9c
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      svc: nats-streaming
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        svc: nats-streaming
    spec:
      containers:
      - args:
        - --cluster_id
        - fissionMQTrigger
        - --auth
        - defaultFissionAuthToken
        - --max_channels
        - "0"
        - --http_port
        - "4223"
        - -DV
        image: nats-streaming
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /streaming/serverz
            port: 4223
            scheme: HTTP
          initialDelaySeconds: 30
          periodSeconds: 5
          successThreshold: 1
          timeoutSeconds: 1
        name: nats-streaming
        ports:
        - containerPort: 4222
          protocol: TCP
        - containerPort: 4223
          protocol: TCP
        readinessProbe:
          failureThreshold: 30
          httpGet:
            path: /streaming/serverz
            port: 4223
            scheme: HTTP
          initialDelaySeconds: 30
          periodSeconds: 1
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: fission-nats-streaming
      serviceAccountName: fission-nats-streaming
      terminationGracePeriodSeconds: 30
status:
  availableReplicas: 1
  conditions:
  - lastTransitionTime: "2020-09-15T17:18:24Z"
    lastUpdateTime: "2020-09-15T17:18:24Z"
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available
  - lastTransitionTime: "2020-09-15T17:17:33Z"
    lastUpdateTime: "2020-09-18T05:14:38Z"
    message: ReplicaSet "nats-streaming-645477fd45" has successfully progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
  observedGeneration: 8
  readyReplicas: 1
  replicas: 1
  updatedReplicas: 1

I hope this helps.
Thanks for the quick Response!!
Cody Hill

As I see you use NATS Streaming and nats-python library not support it. You can try to use https://github.com/nats-io/stan.py

Ahh... I think you’re right. Although I’m not trying to use Asyncio. I think that library might have what I need to publish to that Cluster ID. I’ll give it a shot today.


Frontpage events ingress stops abruptly

The ingress in frontpage events stops mid-word when the text is too long. It should end with ... instead to signal that this is not the entire text.

We're fixing it in OWF.


elasticsearch.config.plugins does not work

example.tf
  elasticsearch {
    config {
      plugins = ["analysis-icu"]
    }

    topology {
      size       = "1g"
      zone_count = 2
    }
  }

terrform diff
~ elasticsearch {
      # (7 unchanged attributes hidden)

    + config {
        + plugins = [
            + "analysis-icu",
          ]
      }

      # (1 unchanged block hidden)
  }

Readiness Checklist

[x] I am running the latest version
[x] I checked the documentation and found no answer
[x] I checked to make sure that this issue has not already been filed
[x] I am reporting the issue to the correct repository (for multi-repository projects)

Expected Behavior

Adds analysis-icu like it says it does.
Current Behavior

Doesn't add analysis-icu, and if it already is present on the cluster, it will remove it.

Your Environment

Version used: 0.1.0-beta
I did not build from source, this is your binary running in Terraform Cloud.

It seems that the topology specific option is not being set, but the overall stack option is. How do we set the topology specific option?

It seems that the topology specific option is not being set, but the overall stack option is. How do we set the topology specific option?

Actually, it appears that after recreating the topology, analysis-icu is there but not in the GUI. I imagine because the frontend looks at a different chunk of the API response.

Actually, it appears that after recreating the topology, analysis-icu is there but not in the GUI. I imagine because the frontend looks at a different chunk of the API response.

@arbourd i have the same issue, its not setting it on the the instance. how did you solve this?

@wouter-toppy are you using the Terraform provider?
If you create a new instance with the TF provider and it is properly set it will work but it won't appear on the web UI.

@arbourd
im using this:
terraform {
  required_version = ">= 0.13"
  required_providers {
    ec = {
      source  = "elastic/ec"
      version = "0.1.0-beta"
    }
  }
}

provider "ec" {}

resource "ec_deployment" "elastic_search" {
  name      = "${local.prefix}-${lower(var.environment)}-deployment"

  version                 = var.elasticsearch_version
  region                  = var.elasticsearch_region
  deployment_template_id  = var.elasticsearch_deployment_template_id

  elasticsearch {
    topology {
      instance_configuration_id = var.elasticsearch_instance_configuration_id
      size                      = var.elasticsearch_size
      zone_count                = var.elasticsearch_zone_count
    }

    config {
      plugins = var.elasticsearch_plugins
    }
  }
}

where my vars are these:
  elasticsearch_version                   = "7.11.0"

  elasticsearch_region                    = "gcp-europe-west4"
  elasticsearch_deployment_template_id    = "gcp-io-optimized"
  elasticsearch_instance_configuration_id = "gcp.data.highio.1"

  elasticsearch_size                      = "2g"
  elasticsearch_zone_count                = "1"
  elasticsearch_plugins                   = [
    "analysis-icu",
    "analysis-phonetic",
    "ingest-geoip",
    "ingest-user-agent",
  ]

but if its true what you said that the plugins are enables but not visible in the GUI its fine for now. is there any way to verify that the plugins are actually enabled?

is there any way to verify that the plugins are actually enabled?

you can make an API call directly to get the settings. the easiest way i found to do this is the Equivalent API request button when editing a deployment. It will show you a JSON blob with the current settings. In our case:
"elasticsearch": {
  "version": "6.8.14",
  "enabled_built_in_plugins": [
    "analysis-icu"
  ]
}

@arbourd yeah, I already saw that entry there, but when I set the plugins via the GUI is see the plugin namens on more places in the json, but I guess than its working propertly ;-)
Thanks for the explaination ;-)

According to this comment the provider sets configuration at a global space, but the UI does it per instance.
I think the fix they might do is improve the UI so our changes are reflected.


Update helpers.ts for auth/callback

Storing the user's session in a cookie does not work without this code.
This makes sure that getURL() when called in AuthUI.tsx redirects to the auth/callback endpoint.
Is this correct thinking? I noticed with out this I would have a buggy experience in my app

Thanks for noticing this! In our case it still works because we can also perform the code exchange client side, but you're right, better to do it in the callback. Fixing here: https://github.com/vercel/nextjs-subscription-payments/pull/218


Notebooks - Kernels Not Enumerated

Themes:

Venv not showing up in kernel quick pick, users attempting to input path in input box to work around it. Likely doing this because of how the "Select Python Interpreter" command works.
Users potentially not realizing that finding new kernels requires a reload

Accounted for via #7901 and #7583


Added support for custom headers

/claim #994
Fixes: #994

@walseb Will it work? Please take a look.

Sure, I will try it. Thoughts @maxgurewitz?

I'll take a look! In the meantime, we ask that all PR's including frontend changes include a short screen recording demoing the feature. @vikashsprem Thank you!

Hi all, was gonna be hard to communicate the necessary work to get this over the finish line, so I issued a PR
https://github.com/dittofeed/dittofeed/pull/1022/files


Conflicts with HammerLib/HammerCore 1.12.2

Hello, I wanted to add this mod cause it seemed silly but it seems to have compatibility issues with the modpack im using. After some trouble shooting I have seemed to bring it down to just HammerLib (Formerly HammerCore ig). I have tried the 3 newest versions of HammerLib for Minecraft Forge 1.12.2 and ive even tried different forge versions to nyo avail. I am unsure as to why this would cause any issues honestly and am just curious if maybe there is a way to fix it. Thank you in advance! ^w^
(attatched is a screencap of the console/log while loading, my mods folder with JUST HammerLib and lOwOcalization, and my minecraft nyot responding)

i should also add, after it hangs like this for a while it just straight up crashes.

Thanks a lot for the investigation and the report.
The issue seems to be that HammerLib's implementation of its language shenanigans is incompatible with the way this mod works. Specifically, this mod injects a custom implementation of Map that applies transformations (the OwOs) dynamically to fetched strings, and wraps the underlying storage of a ClientLanguage when it is constructed. However, HammerLib replaces this with a HashMap that it exposes for modification. It seems to do this to post a language event that can insert additional translations. I'm not sure where exactly it hangs and crashes, it's not hugely important but the crash log would help give more info.
I'm not sure enough about the specific workings and uses of HammerLib (and, crucially, don't remember well enough the details of the Minecraft code) to think of a way that I can fix this on my end; I would likely have to entirely overhaul where I apply the transformations. I might be missing something quite obvious though, since I haven't looked at the Minecraft code in a while, so I might check.
@Zeitheron I wonder if you have any ideas? Would it be possible to move your event to modify the language map earlier? If you're willing to add some code to fix the compatibility more directly, you could also perhaps extract and modify the underlying map by reflection. If you have any ideas for what I could do I'd also be happy to hear them.

It looks like ClientLanguage now has an easier hook for me to use to modify translations, I'll do away with the map and see if it still works.

Sorry, I entirely missed that you're on 1.12, I'll have to look around more.

Ill get a fresh log so i can make sure that i have just those two mods enabled (so there's less clutter.). I appriciate the very quick response!! ^w^
im sorry that it's a possibly difficult or just odd issue .

crash-2024-02-21_14.09.09-client.txt
okei, so after 52 mins and 13 secs of being frozen at bootup i have a fresh crash log xD
it appears it's trying to say it's a memory error, but it did the same thing even with more memory before so im unsure if that's REALLY the reason.


Error linking game

Steps to Reproduce
Opened the quick start for html/javascript
Went through tutorial
Clicked Run => On my channel Page
Clicked off because I didn't want to mess with my existing game configs
Created new game on mixer dev lab
Clicked Run => On my channel Page
Get this error before being able to choose a game.
Error
{
"message": "Unexpected status code 404 Not Found from https://mixer.com/api/v1/interactive/versions/39637: {"message":"InteractiveBundle not found.","statusCode":404,"error":"Not Found"}",
"stack": "Error: Unexpected status code 404 Not ...
Editor Details
Version: 1.0.0
Mixer User ID: 486466

Encrypted Editor State: {"id":"c7face4856b5ada0","password":"JjHX/9OEDIr/b9RYip1Sw5RuL5aWhmuECnDUoIWvU5Y="}

Could not reproduce on v1.0.1, marking as fixed pending further reproductions.


server/tso: prevent the same millisecond

If the previous leader has used the millisecond of the last saved
timestamp, the new leader may use that millisecond too.
So we wait one more millisecond, make sure that the previous and
the new leader will never use the same millisecond.

LGTM

LGTM

CI failed


[SPARK-6352] [SQL] Custom parquet output committer

Add new config "spark.sql.parquet.output.committer.class" to allow custom parquet output committer and an output committer class specific to use on s3.
Fix compilation error introduced by https://github.com/apache/spark/pull/5042.
Respect ParquetOutputFormat.ENABLE_JOB_SUMMARY flag.

Can one of the admins verify this patch?

Jenkins, this is ok to test.

Test build #30538 has started for   PR 5525 at commit 472870e.

Test build #30538 has finished for   PR 5525 at commit 472870e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30538/
Test PASSed.

/cc @liancheng

@liancheng 1.4.0 will freeze at May 1st, does this PR has chance to get in?

@ypcat Sorry for the late reply. This LGTM except for a minor issue.

Can one of the admins verify this patch?

ok to test

add to whitelist

Test build #31119 has started for   PR 5525 at commit 54c6b15.

Test build #31119 has finished for   PR 5525 at commit 54c6b15.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Thanks for working on this! Merging to master.

cool


Database Engine Tuning Advisor does not support Azure SQL Database.

The statement “Applies to: yesSQL Server (all supported versions)” is misleading.
According to https://stackoverflow.com/questions/51495477/how-to-measure-the-performance-of-the-azure-sql-db
Database Engine Tuning Advisor does not support Azure SQL Database.
It will be good to have a highlighted note for it.

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

ID: 6210c109-cc8c-3516-65f0-ba165d891f8c
Version Independent ID: 2affb6d6-6b5c-02a2-50f7-d4b609599168
Content: Basic navigation in DTA - SQL Server
Content Source: docs/tools/dta/lesson-1-basic-navigation-in-database-engine-tuning-advisor.md
Product: sql
Technology: performance
GitHub Login: @markingmyname
Microsoft Alias: maghan

@MNF -- Michael, thank you for your feedback.
@markingmyname -- Mark, please look into this issue.


test: display unused output if unused source found

unused will non-zero exit if it finds unused source which causes test's
set -e to close out of the test script

/cc @gyuho

lgtm. thanks!

failure tracked here https://github.com/coreos/etcd/issues/5037. not related, I believe.


Terminal: command should be added to recent list on execution not on completion

Testing #143430

Open terminal, vscode repo, run yarn watch - this will never finish
Open another terminal, F1 > run recent command
yarn watch is not in the list since it never actually finished

Related: https://github.com/microsoft/vscode/issues/143832


Branch 150085723

@gunan btw, one idea of making some of these flaky numeric tests less flaky is to always run nodes in the same order. We improved determinism of our stuff by adding control deps that force computation to use deterministic execution order (https://github.com/yaroslavvb/stuff/tree/master/linearize)

@yaroslavvb Thanks for the suggestion.
When we previously looked into this there were some issues we ran into when making the run order deterministic.
@aselle I think you took a look at this, right?
Maybe we should reconsider this using the code @yaroslavvb shared as a starting point?


Add SnippetGenerator for highlighting

Add SnippetGenerator for getting highlighted snippets from documents
Also updates to tantivy 0.16.1 and fixes the build by updating Cargo.toml.

Many thanks @jgreene, after eons your work has eventually been merged in #122 🙏🏼


Upgrade to SGX SDK 2.6

We should upgrade to the new SGX SDK. This is related to #99 as version 2.6 comes with reproducible enclave builds.

PR #168 upgrades to SGX SDK 2.6

(Note, though, PR #168 only updates the docker FPC CC runtime image to SDK 2.6, i.e., we also have to update the docu correspondingly to capture the build time.  (although docu update we might probably best combine with dcap update as it simplifies the install procedure, see the [corresponding change in PDO](corresponding https://github.com/hyperledger-labs/private-data-objects/pull/229/files)

(Note, though, PR #168 only updates the docker FPC CC runtime image to SDK 2.6, i.e., we also have to update the docu correspondingly to capture the build time.

SGX SDK 2.6 is listed under Requirements in the main README.md. Is something else missing?

(although docu update we might probably best combine with dcap update as it simplifies the install procedure, see the corresponding change in PDO

Regarding DCAP, I would like to move your comment to Issue #15 and close this here. WDYT?

(Note, though, PR #168 only updates the docker FPC CC runtime image to SDK 2.6, i.e., we also have to update the docu correspondingly to capture the build time.

SGX SDK 2.6 is listed under Requirements in the main README.md. Is something else missing?

I thought we included installation info. Realize now that we  just link to the sgx sdk docu and the install-from-source variant.  In particular with dcap there is now a debian install for the base packages and dkms for auto-kernel-rebuild on upgrades.  But best to update docu correspondingly when addressing #175

(although docu update we might probably best combine with dcap update as it simplifies the install procedure, see the corresponding change in PDO

Regarding DCAP, I would like to move your comment to Issue #15 and close this here. WDYT?

Moved DCAP enablement to issue (#175 ) separate from #15 but otherwise agree and hence close this


feat: add paymentDetails within handle-payment operation

Description
solves  Support Ticket (#SWAG-278302)
Type of change

ToDo's

Screenshots (if applicable)

Additional context

I've created this PR to show how the additional parameter can be added in the api client and the schema itself.
However, the core API does not support any additional parameter in the payment handler (processor) - see the code. That's why merging the PR is not recommended.
To solve that problem in the end-project there are required steps:

ensure that openapi schema of a payment extensions alters the default definition (added additional parameter to handle payment)
sync your schema using api-gen package
there is also a possibility to ignore the backend part, and edit only the project's schema by changing storeApiTypes.overrides.ts locally. then regenerated types will contain the newly added params ready to use in your project.

Hi @mkucmus,
Is this fix related to a feature shopware release ? or is it blocked because of a feature showpare release ?
could you please add the shopware version,you're using.

@golliholzland, from my understanding, @mkucmus is saying that we can not merge the changes because they are not supported in the core payment handler. But depending on what kind of plugin or payment provider you are using, there could be this new parameter. To avoid TypeScript errors, you can extend the TypeDefinition, as shown in the changed files of this MR. Currently, he is on vacation, so his feedback will be delayed.

@BrocksiNet, the code referenced by @mkucmus comes with shopware version: v6.7.0 (not released yet). that was the reason behind my question.

Sure, I got it. But also in older versions, only parameters like orderId, finishUrl, and errorUrl were used.

Sure, I got it. But also in older versions, only parameters like orderId, finishUrl, and errorUrl were used.
So, I do not see the paymentDetails parameter in the core code. It is something added by plugins/apps?

Apparently it's only reason why it was present in the schema before - because it was added by some extension or a plugin. Currently the API client contains only the core-ish stuff so if you need such parameter you would need to override the schema manually or provide a plugin containing a proper openapi schema defined.
I created the PR that exaplains how to add this kind of things when your plugin does not support OpenAPI Schema and you have to take care of it by your own. Of course there is no need to do it like in this PR - I added paymentDetails globally, and it was added to the related project by a special command.
To override a schema definition in your project check this: https://github.com/shopware/frontends/discussions/471 (Overriding types chapter)

@BrocksiNet @mkucmus I'm a little bit confused, maybe you can help me out.
Shopware documented how to transmit additional payment information for handle-payment endpoint here.
When you check the code base the parameter paymentDetails is not handled or validated at all, BUT the whole request data bag is passed down to the handlers and could be accessed accordingly.
Did I miss something?

@BrocksiNet @mkucmus I'm a little bit confused, maybe you can help me out.
Shopware documented how to transmit additional payment information for handle-payment endpoint here.
When you check the code base the parameter paymentDetails is not handled or validated at all, BUT the whole request data bag is passed down to the handlers and could be accessed accordingly.
Did I miss something?

hey! thanks for pointing the actual core's code to see what's inside 👍🏼
the problem is not that the core does or doesn't handle the additional parameters. The actual issue is that in order to keep the types safe, we don't allow to leave anything as any. to trust the code, we need to ensure it reflects the actual state, without any doubts or guesses. If anything can be passed down in the request's payload, it needs to be documented in open api schema. thanks to this, the client will be aware of that without getting any static errors or warning.
If you are sure that there are some additional parameters allowed by some plugin - please contain the information in openapi schema (like overriding point from this doscussion) and everything will be fine, and you will able to use it 🙌🏼


Improve testerina report

Purpose

Contains imporvements related to testerina report
Resolves #22096

Check List

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

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

[ ] Increased Test Coverage
[ ] Added necessary documentation

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

Codecov Report

Merging #22322 into master will not change coverage by %.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #22322   +/-   ##
=======================================
  Coverage   14.59%   14.59%
=======================================
  Files          51       51
  Lines        1411     1411
  Branches      219      219
=======================================
  Hits          206      206
  Misses       1189     1189
  Partials       16       16

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 0124956...ee70751. Read the comment docs.


GraphQL

(Java porting)

How are You getting doc_id? Is it changing?
If i set before(value not matters) i AM getting error. Without that value everything works. That's interesting.

We are getting it from requests from browser
It shouldn't change.. But it happened once times already

You didn't specify request you were trying to send... So I can't help yet

This seems answered