Web server for OTA configuration

Hello,
When the Web server has been activated once, it is never possible to activate it again for any modification, excepted by flashing again the device.
Then, on my local version of bootstrapper library, I have added a boolean parameter "forceWebServer" that force the OTA configuration when set.
I use this feature to activate OTA configuration when the device is switched ON/OFF twice quickly.
I use a json file to store power ON information that allows specific ON/OFF sequence detection.
If you feel this could be useful for a future version of your library, I can provide additional information on the code.
Also, it would be useful to add the gateway IP in the config.json file.
I was not able at the beginning to set a static IP address for the controller device because the gateway IP was not set correctly.
Regards.
Patrick

Hi Davide,
I have used a very basic method, surely not very elegant but it works.
Fisrt I have added at the end of BootstrapManager.h the following variable declaration:
boolean forceWebServer; // if true, forces the use of launchWebServerForOTAConfig
Then in the void BootstrapManager::bootstrapSetup code inside BootstarpManager.cpp, I have changed
if (isWifiConfigured()) into  if (isWifiConfigured() && !forceWebServer)  (line 33 in the original file).
My user code is for example the following:
  const uint32_t shortPowerOn = 10; // threshold in s for identification of short power On

  // Datastore management
  // try to read a datastore file
  if (readDS(true) != NO_ERROR)
  {
    // file does not exists or integrity error
    // Then init datastore information
    devicePowerUp = 1;
    currentDeviceActivity = max(millis() / 1000, 1UL);
    deviceActivity_1 = 0;
    deviceActivity_2 = 0;
    cumulativeDeviceActivity =  millis() / 1000;
    cumulativeDeviceActivityAtPowerOn = 0;
    saveDS(); // save datastore (use readSPIFFS & data integrity checking with hash code)
  }
  else
  {
    // detection of double short power ON sequence
    bootstrapManager.forceWebServer = ((deviceActivity_1 < shortPowerOn) && (deviceActivity_1 > 0) && (deviceActivity_2 < shortPowerOn) && (deviceActivity_2 > 0));
    // note: deviceActivity_1 and deviceActivity_2 are the power ON duration of the 2 previous sequences
    // update power on information
    if (bootstrapManager.forceWebServer)
    {
      currentDeviceActivity = 120; // takes into account the webserver activity because as the ESP will be restarted, DS will not be updated - typical duration 120 s
    }
    else
    {
      currentDeviceActivity = max(millis() / 1000, 1UL);  // takes into account current elapsed time
    }
    cumulativeDeviceActivityAtPowerOn = cumulativeDeviceActivity;
    cumulativeDeviceActivity +=  currentDeviceActivity;
    // save immediatly datastore for the case of a short power ON
    saveDS(); // save datastore (use writeToSPIFFS)
  }

  // bootstrap manager setup
  bootstrapManager.bootstrapSetup(manageDisconnections, manageHardwareButton, callback);

A better method would be to add an optional parameter forceWebServer in the function bootstrapSetup , with false as default value.
Alternatively, you could add a function setWebServerOption to configure the variable forceWebServer or a function eraseSetupFile that could be called before bootstrapSetup.
For information, my code for saveDS and readDS
void saveDS()
// save current context in datastore file
{
  DynamicJsonDocument DSdoc(1024);
  DSdoc["header"] = "Header";
  DSdoc["cumulativeDeviceActivity"] = String(cumulativeDeviceActivity);
  DSdoc["lastDeviceActivity_1"] = String(currentDeviceActivity);
  DSdoc["lastDeviceActivity_2"] = String(deviceActivity_1);
  DSdoc["devicePowerUp"] = String(devicePowerUp);
  DSdoc["lastEvent"] = lastPumpControlerEvent;
  // computes and stores hash code for data integrity monitoring
  DSdoc["HC"] = "null";  // hash code is calculated on the data including the CS, then this one must be set to a fix value before
  String hashDS = hashPayload(DSdoc);// computes the hash code
  DSdoc["HC"] = String(hashDS);
  // save the file
  bootstrapManager.writeToSPIFFS(DSdoc, "DS.json");
}```
```CPP
boolean readDS(boolean initValue)
// try to read datastore file and return true if successfull
{
  enum fileErrorCode fileError = NO_ERROR;
  // retrieve DS file informations
  DynamicJsonDocument DSdoc = bootstrapManager.readSPIFFS("DS.json");
  const char* header = DSdoc["header"];
  if (header)
  {
    // file already exists and contains a header, then retrieve number of power up and cumulative up time
    if (initValue)
    {
      // init global parameter when readDS at power ON
      Serial.println("---- Init time parameters from DS file ----");
      cumulativeDeviceActivity = helper.getValue(DSdoc["cumulativeDeviceActivity"]).toInt() + millis() / 1000;
      deviceActivity_1 = helper.getValue(DSdoc["lastDeviceActivity_1"]).toInt();
      deviceActivity_2 = helper.getValue(DSdoc["lastDeviceActivity_2"]).toInt();
      devicePowerUp = 1 + helper.getValue(DSdoc["devicePowerUp"]).toInt();
      lastSavedEvent = "Last saved event : " + helper.getValue(DSdoc["lastEvent"]);
    }
    // check data integrity
    String readHashDS = helper.getValue(DSdoc["HC"]);
    Serial.println("Read hash code: " + readHashDS);
    DSdoc["HC"] = "null";  // hash code is calculated on the data including the CS, then this one must be set to a fix value before
    String hashDS = hashPayload(DSdoc);// computes the hash code
    if (hashDS == readHashDS)
    {
      Serial.println("file hash code OK");
    }
    else
    {
      lastPumpControlerEvent = "Integrity error in data store";
      Serial.println(lastPumpControlerEvent);
      fileError = INTEGRITY_ERROR;
    }
  }
  else
  {
    // files does not exist or does not contain a header
    fileError = OPENING_ERROR;
    lastPumpControlerEvent = "DS file opening error";
    Serial.println(lastPumpControlerEvent);

  }
  return fileError;
}

These are preliminary versions. Later on I will add information on pump running time and use duplicated DS file storage to prevent total loss of information in the case of power supply lost during file writing and then corruption of the file.

Thank you for the reply,
Arduino Bootstrapper is a generic lib and can't have the "logic on a pump" inside it but I'll get the idea to implement the possibility to change the wifi settings.
I have so many things to do, it will take some time but I'll do it. :)
Thank you.

Hi Davide,
Thank you for your reply.
Actually, I imagine that the connected things that can be developed with the help of your generic library, might be given later on to people having no software skill nor any software tools (my parents, my friends, the future buyer of my house, ...).
Then I think that these smart things should be reconfigurable easily through their interfaces if any (keyboard, touch screen) or through a web server as it is the case for example with smart lamps or weather stations.
This OTA function does exist in your library and this is very appreciable but it is activated only after the initial flashing.
Then I think that a mechanism that would allow to activate it on demand would be a good enhancement.
Of course, the code that would set this activation (with double short power ON, push buttons, ...) should be in the user application and not the library.
If you agree, I could commit a new version with this feature (something more elegant than my current local version).
I just need some training with the use of Github as I don't have yet much experience.

pending pull request


unrecognized argument--input_path and attribute error for new test image prediction

I tried to detect the objects in a random line chart diagram with "python pipeline.py --input_path = sample_input/"
But it resulted in unrecognized arguments error(screenshot attached).
Then I just ran the command as "python pipeline.py" , the sample image files were processed, but when it came to parsing the new diagram that I uploaded in the sample_input folder, it resulted in an attribute error.  The diagram I used looked similar to the diagrams that had been used for training the model.

I had these problems too. Here're my solutions:

There must be no Spaces around the bash operator =, i.e. the command should be like:

python pipeline.py --input_path=sample_input/

tolist is a method of the numpy.ndarray class, and the variable x_coords here is expected to be a numpy.ndarray object. But in the case of this specific graph, no numerical tick labels are detected along the x-axis, causing the x_coords variable to become an empty list object (that is []). You may manually convert it to a numpy.ndarray object to get the code running:

    temp[6] = np.array(x_coords).tolist() + y_coords.tolist()

@Jerry191202 suggestion should fix the issue. Closing due to inactivity.


fix: re-added onClick to button storybook

Description
The event onClick is re-added to button storybook so it can be tested properly on the storybook test side
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] Other:

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my code
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

Add [skip ci].

Add [skip ci].

Done


Adding vuejs package example

resolves (https://github.com/threefoldtech/jumpscaleX_threebot/issues/76)

backend readme:  https://github.com/threefoldtech/jumpscaleX_threebot/blob/development_vuejs_package/ThreeBotPackages/examples/vuejs/README.md

fronend readme: https://github.com/threefoldtech/jumpscaleX_threebot/blob/development_vuejs_package/ThreeBotPackages/examples/vuejs/newproject/README.md

Such a great job!! Thank you so much @waleedhammam

@waleedhammam @rkhamis @xmonader
We cannot install NPM in a 3bot, it will increase memory footprint.
We have developed a way to include Vue.js packages without building, so that the source can indeed be added to the package without using webpack or any other binary.
@coeneivan is adding it to 3bot right now will soon be pull requested.
Please always consult with KDS if you add external binaries, every binary will increase memory footprint.

This is an example package for documentation purposes - won't be running in a production server by default anyhow- covering typical aspects for every 3bot package author.
feel free to update it with all of the relevant information or document your process.

We have developed a way to include Vue.js packages without building, so that the source can indeed be added to the package without using webpack or any other binary.

that's already the case for all of our production packages in svelte

This is a very bad example, since NPM should not be in the 3bot at all. If you don't want this to end up in production we don't need examples from it.
More info about our Vue.JS approach:
https://github.com/jimbertools/vue-apps/blob/master/Readme.md
Will be added to 3bot packages on monday.

It's not very bad. I found only 1 mistake it assumes the existence of npm to build the the html directory while it should be only done on the developer machine, other than that nothing. that doesn't render the effort useless.
all of the examples packages aren't to be meant to be used in production they're meant to teach you and other package authors how to write packages and how to write the frontend to the backend. If you want to improve things be my guest


Update module_loaders.md

Try to make shorter title not to break rendered mkdocs site menus:

vs

Codecov Report
Base: 77.97% // Head: 77.97% // No change to project coverage :thumbsup:

Coverage data is based on head (06d0547) compared to base (12fda5e).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #238   +/-   ##
=======================================
  Coverage   77.97%   77.97%
=======================================
  Files          27       27
  Lines        2820     2820
=======================================
  Hits         2199     2199
  Misses        514      514
  Partials      107      107

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

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Included in #239

/ok-to-test
/lgtm
/assign @qbarrand

/ok-to-test

/lgtm

/assign @qbarrand

/hold
Addressed in #235


Custom colors aren't working in presetUno

UnoCSS version
0.57.2
Describe the bug
Custom colors added to configs aren't working.
import extractorSvelte from "@unocss/extractor-svelte";
import transformerDirectives from "@unocss/transformer-directives";
import transformerVariantGroup from "@unocss/transformer-variant-group";
import { defineConfig, presetIcons, presetUno } from "unocss";

export default defineConfig({
  presets: [
    presetUno({
      theme: {
        colors: {
          cool: "#0000ff",
        },
      },
    }),
    presetIcons(),
  ],
  extractors: [extractorSvelte()],
  transformers: [transformerVariantGroup(), transformerDirectives()],
});

Welcome to SvelteKit

Reproduction
Here is a repo for reproduction https://github.com/moaali/unocss-custom-color
System Info
No response
Validations

[X] Read the Contributing Guidelines.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

You have a few issues in your config.

You should add %unocss-svelte-scoped.global% to your app.html above %sveltekit.head%.
You should add a hooks.server.js file in /src with the following code:

/** @type {import('@sveltejs/kit').Handle} */
export async function handle({ event, resolve }) {
  const response = await resolve(event, {
    transformPageChunk: ({ html }) => html.replace('%unocss-svelte-scoped.global%', 'unocss_svelte_scoped_global_styles'),
  })
  return response
}

You should move the theme config to the same level as presets so it looks like this:

presets: [
  theme: {
    colors: {
      cool: "#0000ff",
    },
  },
  presetUno(),

You should remove extractorSvelte and the transformers since this is already handled by Svelte-scoped.

After doing all of that it should work.
It would be nice if trying to add a theme inside of a preset gave an error though.

presetUno has hasn't theme options. Refer to theme or extendTheme option in root configuration.


Clarifying automatic package versioning and include referenced projects limitations

Hi @alexmullans, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Alex Mullans). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

:shipit:


Compile errors

Hello,
Just tried compiling your repo, but it failed w following errors:
pi@rpi2w:~/alsa-playback $ ./build.sh
+ pkg-config --libs alsa
+ gcc -Wall -Werror -std=c11 -pedantic -o playback -lasound -lm main.c
/usr/bin/ld: /tmp/ccTS0dBn.o: in function `check':
main.c:(.text+0x28): undefined reference to `snd_strerror'
/usr/bin/ld: /tmp/ccTS0dBn.o: in function `square_wave':
main.c:(.text+0xf4): undefined reference to `floorf'
/usr/bin/ld: main.c:(.text+0x11c): undefined reference to `floorf'
/usr/bin/ld: /tmp/ccTS0dBn.o: in function `sine_wave':
main.c:(.text+0x23c): undefined reference to `sinf'
/usr/bin/ld: /tmp/ccTS0dBn.o: in function `main':
main.c:(.text+0xae4): undefined reference to `snd_pcm_open'
/usr/bin/ld: main.c:(.text+0xaf4): undefined reference to `snd_pcm_hw_params_sizeof'
/usr/bin/ld: main.c:(.text+0xb24): undefined reference to `snd_pcm_hw_params_sizeof'
/usr/bin/ld: main.c:(.text+0xb4c): undefined reference to `snd_pcm_hw_params_any'
/usr/bin/ld: main.c:(.text+0xb6c): undefined reference to `snd_pcm_hw_params_set_access'
/usr/bin/ld: main.c:(.text+0xb8c): undefined reference to `snd_pcm_hw_params_set_format'
/usr/bin/ld: main.c:(.text+0xbac): undefined reference to `snd_pcm_hw_params_set_channels'
/usr/bin/ld: main.c:(.text+0xbcc): undefined reference to `snd_pcm_hw_params_set_rate'
/usr/bin/ld: main.c:(.text+0xbec): undefined reference to `snd_pcm_hw_params_set_periods'
/usr/bin/ld: main.c:(.text+0xc0c): undefined reference to `snd_pcm_hw_params_set_period_time'
/usr/bin/ld: main.c:(.text+0xc2c): undefined reference to `snd_pcm_hw_params'
/usr/bin/ld: main.c:(.text+0xd08): undefined reference to `snd_pcm_writei'
/usr/bin/ld: main.c:(.text+0xd68): undefined reference to `snd_pcm_writei'
/usr/bin/ld: main.c:(.text+0xf24): undefined reference to `snd_pcm_writei'
/usr/bin/ld: main.c:(.text+0xf5c): undefined reference to `snd_pcm_drain'
/usr/bin/ld: main.c:(.text+0xf74): undefined reference to `snd_pcm_close'
collect2: error: ld returned 1 exit status

I guessed this was due to the lack of the alsa-lib dependency. The only thing I could find that "matched" alsa-lib in the apt sources I use (for raspberry pi bookworm) was libdssialsacompat-dev and libdssialsacompat0. I downloaded those, but they didn't help. I've recently built bluez-alsa & thought maybe they were installed as part of that? Anyway, I checked & found I already had alsa-lib:
$ whereis alsa-lib
alsa-lib: /usr/lib/arm-linux-gnueabihf/alsa-lib

Anyway - my compile fails despite the fact that I seem to have all the dependencies. Any suggestions??

OK - updated the build.sh based on @Soily's recommendations (REF #1 ), and got a successful compile.
But, trying to execute also failed:
$ ./playback --raw skyhigh.raw --fade 3000
error: Unknown error 524 (-524)

My speaker (a JBL Flip 5) is paired, trusted & connected to the host that I ran the command from.
Houston - we have a problem. :)

I only tested this on x86_64 so you might have to debug or add some print statements to figure out which is the first call to ALSA which is giving problems in your particular platform.
You can also try to run the alsa-info script from alsa-utils to collect some information from your alsa configuration.


Fix a typo in the benchmarks

I was running this benchmark in "type": "module" and it caught this error due to modules running in strict mode.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 89.01%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1259

Relevant Lines:
1344

💛  - Coveralls


go.mod: al.essio.dev/pkg/shellescape v1.5.0

github.com/alessio/shellescape was renamed to
al.essio.dev/pkg/shellescape:
https://github.com/alessio/shellescape/compare/v1.4.2...v1.5.0
Fix #2545

Can we merge this PR anyway, so as to unblock dependabot?
We may consider removing this dependency in a follow-up PR


TypeError: Attempting to configurable attribute of unconfigurable property.

Hello guys!
I'm using polymer 0.5.3 and core/paper components 0.5.3.
I've got an error in Safari (8.0.2), Mobile Chrome (IPad), Mobile Safari (IPad) that causes something on
webcomponents.js:317 - defineProperty.
function defineGetter(constructor, name, getter) {
      getterDescriptor.get = getter;
      defineProperty(constructor.prototype, name, getterDescriptor);
    }

After debug, I found out that it fails with:
constructor.prototype -> GeneratedWrapper
name -> ownerSVGElement
getterDescription -> Object({configurable: true
enumerable: true})

I get the same issue in Safari 7.1.2 on Mavericks (10.9.5).

0.5.4 is now out. It's the same as 0.5.3 except it reverts the problematic change.
Please update.


Fix AlluxioJniFuseFileSystemTest chown related cases

What changes are proposed in this pull request?
Fix AlluxioJniFuseFileSystemTest chown related cases

chown
chownWithoutValidGid
chownWithoutValidUid

Why are the changes needed?
These test cases failed after merging #16177 and #16146, as the CI of them were running without the changes of each other.
Does this PR introduce any user facing changes?
No

alluxio-bot, merge this please


Force DriverEndpoint for odsp

Description
Addressing AB3768 by forcing the endpointName on the ODSP run.

I already have a PR out to fix this the right way: https://github.com/microsoft/FluidFramework/pull/14869

I already have a PR out to fix this the right way: #14869

Awesome!  I will close this one. BTW. Just looked at your PR and don't we need to change the package.json as well ? I mean, to enforce the endpointName ?

@Vlad @.>   Did you look at @Tony's PR : https://github.com/microsoft/FluidFramework/pull/14869? I agree it is confusing and perhaps @@.> can share some light and background here before we take some action.

From: Vlad Sudzilouski @.>
Sent: Wednesday, April 5, 2023 8:44 PM
To: microsoft/FluidFramework @.>
Cc: Nicholas Couri @.>; Mention @.>
Subject: Re: [microsoft/FluidFramework] Force DriverEndpoint for odsp (PR #14984)
@vladsud commented on this pull request.

In packages/test/test-service-load/package.jsonhttps://github.com/microsoft/FluidFramework/pull/14984#discussion_r1159252845:

@@ -38,7 +38,7 @@
"start": "node ./dist/nodeStressTest.js",
"start:frs": "node ./dist/nodeStressTest.js --driver routerlicious --driverEndpoint frs --profile ci_frs",
"start:mini": "node ./dist/nodeStressTest.js  --profile mini",

          "start:odsp": "node ./dist/nodeStressTest.js --driver odsp",

          "start:odsp": "node ./dist/nodeStressTest.js --driver odsp --driverEndpoint odsp",

@NicholasCourihttps://github.com/NicholasCouri , can you please help me understand how it works? When I search for "driverEndpoint" in our repo, I see things like type DriverEndpoint = RouterliciousEndpoint | OdspEndpoint.
I do see places where we use odsp-df strings in code, but it feels like it's a bit messed up.
I feel like we driverEndpoint should be either frs or odsp.
But we also need to add "ring" sub-item, that can be odsp or odsp-df (and OdspEndpoint should be OdspRing, not end-point).
What do you think? Should we open an item to do so? It's not just about using consistent names, it also makes it much easier to work with telemetry, as today we search for "driver" when searching for odsp data, and for "driverEndpoint" when searching for afr data - very inconsistent and confusing.
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/FluidFramework/pull/14984#pullrequestreview-1374009968, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGIMYCBCBOQ3JQXSDSXGUNTW7Y32DANCNFSM6AAAAAAWUQRHEE.
You are receiving this because you were mentioned.Message ID: @.***>

It all comes down to our test drivesr:
FluidFramework/interfaces.ts at main * microsoft/FluidFramework (github.com)https://github.com/microsoft/FluidFramework/blob/main/packages/test/test-driver-definitions/src/interfaces.ts
In the beginning we only had driverType. Then it was expanded to include endpoint, but endpoint has always been optional, and has been haphazardly iterated on.
If I were to improve this, I would keep driver type, which is more about which classes we use. I would make endpoint required, and let test drivers put whatever they want their, so a combination of server for something like frs, and ring for odsp, it could be a combo, like frs-canary (not real, just example). This would at least suffice for current usage. If ring and server need to be separated, it would be a bigger change, but I don't see a distinct need for that at the moment.
-Tony
From: Nicholas Couri @.>
Sent: Thursday, April 6, 2023 1:11 PM
To: microsoft/FluidFramework @.>; microsoft/FluidFramework @.>; Vlad Sudzilouski @.>; Tony Murphy @.>
Cc: Mention @.>
Subject: Re: [microsoft/FluidFramework] Force DriverEndpoint for odsp (PR #14984)
@Vlad @.>   Did you look at @Tony's PR : https://github.com/microsoft/FluidFramework/pull/14869? I agree it is confusing and perhaps @@.> can share some light and background here before we take some action.

From: Vlad Sudzilouski<EMAIL_ADDRESS>Sent: Wednesday, April 5, 2023 8:44 PM
To: microsoft/FluidFramework<EMAIL_ADDRESS>Cc: Nicholas Couri<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [microsoft/FluidFramework] Force DriverEndpoint for odsp (PR #14984)
@vladsud commented on this pull request.

In packages/test/test-service-load/package.jsonhttps://github.com/microsoft/FluidFramework/pull/14984#discussion_r1159252845:

@@ -38,7 +38,7 @@

           "start": "node ./dist/nodeStressTest.js",

           "start:frs": "node ./dist/nodeStressTest.js --driver routerlicious --driverEndpoint frs --profile ci_frs",

           "start:mini": "node ./dist/nodeStressTest.js  --profile mini",

         "start:odsp": "node ./dist/nodeStressTest.js --driver odsp",

         "start:odsp": "node ./dist/nodeStressTest.js --driver odsp --driverEndpoint odsp",

@NicholasCourihttps://github.com/NicholasCouri , can you please help me understand how it works? When I search for "driverEndpoint" in our repo, I see things like type DriverEndpoint = RouterliciousEndpoint | OdspEndpoint.
I do see places where we use odsp-df strings in code, but it feels like it's a bit messed up.
I feel like we driverEndpoint should be either frs or odsp.
But we also need to add "ring" sub-item, that can be odsp or odsp-df (and OdspEndpoint should be OdspRing, not end-point).
What do you think? Should we open an item to do so? It's not just about using consistent names, it also makes it much easier to work with telemetry, as today we search for "driver" when searching for odsp data, and for "driverEndpoint" when searching for afr data - very inconsistent and confusing.

Reply to this email directly, view it on GitHubhttps://github.com/microsoft/FluidFramework/pull/14984#pullrequestreview-1374009968, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGIMYCBCBOQ3JQXSDSXGUNTW7Y32DANCNFSM6AAAAAAWUQRHEE.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>


addUnknownSymbolResolver to expose more than name

Problem
addUnknownSymbolResolver accepts a resolver that receives ts.Symbol.name, however the name is insufficient to identify the symbol in cases where the symbol is namespaced such as the following:
declare namespace foo.bar {
  class Baz {}
}

in the resolver this is only identified as Baz and not foo.bar.Baz
Suggested Solution
1. allow the resolver to access ts.Symbol
app.renderer.addUnknownSymbolResolver("my-package", (symbol: Symbol) => {
  // get namespace from Symbol.parent
   return '';
 });

This would be a breaking change and may expose a more complex interface than needed(?).
2. pass the namespaced name joining ts.Symbol.parent resulting in foo.bar.Baz.
This option would not be a breaking change and is sufficient for my use case.

ts.Symbol.parent is marked @internal for a reason, it's behavior isn't perfectly consistent in all cases (there's an issue about exposing it in Microsoft/TypeScript... somewhere where this was brought up)
I don't want to give resolvers access to the symbol since really they ought to be able to execute without access to the compiler (will be required if I ever get around to making it possible to generate docs from JSON, which is a rather important next step for making the packages entry point strategy usable for repos which don't release every package whenever one releases)
I've pushed a tentative fix for this, but want to look at it again this weekend before merging.

Thanks for the quick turnaround!


Add Mesh::merge

Objective
It can sometimes be useful to combine several meshes into one. This allows constructing more complex meshes out of simple primitives without needing to use a 3D modeling program or entity hierarchies.
This could also be used internally to increase code reuse by using existing mesh generation logic for e.g. circles and using that in cylinder mesh generation logic to add the top and bottom of the cylinder.
Note: This is not implementing CSGs (Constructive Solid Geometry) or any boolean operations, as that is much more complex. This is simply adding the mesh data of another mesh to a mesh.
Solution
Add a merge method to Mesh. It appends the vertex attributes and indices of other to self, resulting in a Mesh that is the combination of the two.
For example, you could do this:
let mut cuboid = Mesh::from(shape::Box::default());
let mut cylinder = Mesh::from(shape::Cylinder::default());
let mut torus = Mesh::from(shape::Torus::default());

cuboid.merge(cylinder);
cuboid.merge(torus);

This would result in cuboid being a Mesh that also has the cylinder mesh and torus mesh. In this case, they would just be placed on top of each other, but by utilizing #11454 we can transform the cylinder and torus to get a result like this:
https://github.com/bevyengine/bevy/assets/57632562/557402c6-b896-4aba-bd95-312e7d1b5238
This is just a single entity and a single mesh.

IMO we should just return a Result and then let the user decide how to handle the errors.

I would add mention in the docs that if self have a missing attribute or indices, they will be ignored when merging.

This is already kinda mentioned:
/// Note that attributes of `other` that don't exist on `self` will be ignored.

Not a great milestone candidate at this stage (it's not vital), but I'm happy to merge it regardless.


self-deployed rule-evaluator "One or more TimeSeries could not be written"

Hi, I currently have deployed the self-managed rule-evaluator. We have seen the error shown below for all of our recording rules since our migration to GMP.
{
  "jsonPayload": {
    "caller": "export.go:946",
    "size": 5,
    "msg": "send batch",
    "level": "error",
    "ts": "2024-07-18T13:56:45.907003101Z",
    "err": "rpc error: code = InvalidArgument desc = One or more TimeSeries could not be written: One or more points were written more frequently than the maximum sampling period configured for the metric.: prometheus_target{location:xxx,cluster:xxx,instance:,job:,namespace:xxx} timeSeries[0-4]: prometheus.googleapis.com/slo:current_burn_rate:ratio/gauge{owner:xxx,tenant_id:xxx,sloth_window:5m,sloth_service:rest,sloth_id:rest-best-effort-availability,sloth_slo:best-effort-availability}\nerror details: name = Unknown  desc = total_point_count:5  success_point_count:2  errors:{status:{code:9}  point_count:3}"
  },
  "timestamp": "2024-07-18T13:56:45.907648378Z",
  "severity": "ERROR",
  "labels": {
    "k8s-pod/gmp/scrape": "1m",
  },
}

This error, multiplied by our number of recording rules, produces several thousand of these errors per hour.
Here is a sample recording rule:
groups:
  - name: app_overview
    rules:
      - record: route_rate:app_response_count:sum5m
        expr: sum(rate(app_response_count[5m])) by (route)

Modifying how we aggregate the metric, to include project_id, location and namespace will make the error go away. However, this means every recording rule we have/create going forward will need to be mindful and include this.
Our rule-evaluator config is relatively simple:
global:
  external_labels: {} # we have a few labels here
  evaluation_interval: 60s
rule_files: []

As well as the args we pass at runtime
args:
  - "--config.file=/prometheus/config_out/config.yaml"
  - "--web.listen-address=:9092"

I have tried leveraging the external_labels property here to ensure project_id, location, and namespace are present however that made the error more frequent.
Additional context:

we deploy a single rule evaluator per project, we have multiple projects, the error occurs in each
these metrics all originate from a single namespace, rule-evaluator is deployed to a different namespace
we are using the managed collector, the error appears to only come from recording rules.

If there any additional information that will be helpful, please let me know.

we deploy a single rule evaluator per project, we have multiple projects, the error occurs in each

I believe this statement points out your issue: if you don't have a project field in your recording rule, each project is writing to the same time-series. Hence, you are having collisions because to Google Cloud Monitoring, it looks like you're writing to the same time-series more frequently than 60 seconds. For example, if you have 2 projects each writing that metrics, it's as if you're sending the time-series every 30 seconds (once for each project over your 60 period interval).
The public documentation points out that adding some of those labels is the correct solution here: https://cloud.google.com/stackdriver/docs/managed-prometheus/troubleshooting#timeseries-collisions
I believe this is working as designed. Before you migrated to GMP, your metrics were likely local to your cluster so there were no collisions. With GMP, your metrics are global so this is something you would have to update.

I have tried leveraging the external_labels property here to ensure project_id, location, and namespace are present however that made the error more frequent.

Can you confirm whether you used a different combination in each project, or did you apply the same config to each project?

Also see the sections "Multi-project and global rule evaluation" and "preserve labels when writing rules": https://cloud.google.com/stackdriver/docs/managed-prometheus/rules-unmanaged#multi-project_and_global_rule_evaluation
tl;dr you can have one rule evaluator that aggregates across all projects and writes the output to one project, or you can have one rule eval per project that preserves the project ID. But having multiple rule evals that don't preserve project ID will almost certainly lead to collisions.

Can you confirm whether you used a different combination in each project, or did you apply the same config to each project?

when using the external_labels property to set project_id, location and namespace; this was unique per project.
another thing perhaps worth pointing out, I was receiving this error for recording rules that was only missing namespace as well, once adding that to the aggregation the error went away.
On your point:

each project is writing to the same time-series

Just want to make sure I am on the same page, Is this the case when we have a single rule evaluator deployed in each project? (ie project-a has it's own rule evaluator, project-b has it's own etc.)

Just want to make sure I am on the same page, Is this the case when we have a single rule evaluator deployed in each project?

Yes, in that case you'll have conflicts, which is where @lyanco's suggestion helps.

another thing perhaps worth pointing out, I was receiving this error for recording rules that was only missing namespace as well,

Was it the same error message in this case about the sampling period? If it was then I wonder if the problem is just that the label has to be set. Maybe @pintohutch would know?

Was it the same error message in this case about the sampling period? If it was then I wonder if the problem is just that the label has to be set.

Yeah the error is the same.
Coincidentally, the error popped up again in the past 30 mins for 5 recording rules. This is the first occurrence since I've added the labels last week. The volume is much smaller (5 today, whereas there was 480k over the course of the last 7d with the error stopping on Thursday). There hasn't been any change to the rules since.
As per the docs:

We strongly recommend that you write rules so that the project_id, location, cluster, and namespace labels are preserved appropriately for their aggregation level

Is it sufficient to preserve the labels when aggregating? (ie sum by (project_id, namespace, location, ...) or is there a preferred approach such as setting the labels via the labels property or something else?

Preserving while aggregating is not just sufficient, it's recommended! :-)

Automatic grouping to avoid resource collisions is one of the things the managed rule evaluator does automatically, FWIW. This is just one of those things that has to be done when you move from server-scoped rules (OSS Prom) to global-scoped rules (GMP). Having time series in different clusters/namespaces that are identical except for the cluster/namespace/project they are in is very common.

Hi folks. I work on the same team with @jlaberge-league . Thanks for helping us sort through the differences between the OSS Prometheus and GMP! :)
The key thing we're trying to understand here is why setting the project_id + location labels via the external_labels config isn't working as we expect. Our thinking is that if we have a rule like sum(rate(app_response_count[5m])) by (route) and the rule-evaluator is configured with project_id: apple, location: us-east4, the resulting time series wouldn't collide with another rule-evaluator in a different project configured with project_id: pear, location: us-central1. It should be fine even if the query itself doesn't aggregate by project_id+location, because those are set as external_labels, right? We're still getting errors in this setup, though. Is this a wrong assumption? If so, is there a way to avoid these collisions via another configuration change rather vs. updating every rule's expression?

Are the rule evaluators pointing to a metrics scope that fans out to multiple projects? It's possible that they're pulling in data from other projects.
Another possibility is that you have identical time series in different namespaces in the same project, so really it's the namespace grouping that's the most important, and can't be set statically by an external label. Since most recording rules aggregate away the uniquely defining resource label instance, having duplicate time series in a project aside from namespace is super common.

Are the rule evaluators pointing to a metrics scope that fans out to multiple projects? It's possible that they're pulling in data from other projects.

We're running in GKE, and from the code it looks like by default it restricts the query scope to the project it runs in. This is also what I'm observing in the metrics themselves (they're different by project and their values align with my expectations). Moreover, the issue here is with the export, not the query.

you have identical time series in different namespaces in the same project

I can confirm that we don't. All the time series are exported from namespaces that are unique per project.

I can confirm that we don't. All the time series are exported from namespaces that are unique per project.

Right, so if you drop "namespace" then it's possible you lose the uniquely distinguishing value of namespace.
If you're collecting the same job in multiple namespaces, and you drop namespace and instance (instance being fine to drop as it's a rule), then your data is bound to conflict.

We don't collect the same job in multiple namespaces. But even if we were, would that be relevant to this issue? The error is coming from rule-evaluator's export. Even if it was reading duplicated metrics from multiple projects, it's the only rule-evaluator instance running in a project, and the time series it generates are implicitly exported to the same project, no?

Ah sorry, yes, you're right, you should only see the issue when writing data back, not when reading. And writing data back will only collide if multiple rule evaluators are exporting the same data, not querying the same data. Sorry, usually when this error happens it's due to issues on the collection side, got confused.
As I said, I don't know where the conflicts in your metrics might be. But if you preserve the project and location labels, and ideally the cluster and namespace labels too (although there are situations where you intentionally don't want to do that), then all should work.


New version: SeawaterPolynomials v0.2.2

Registering package: SeawaterPolynomials
Repository: https://github.com/glwagner/SeawaterPolynomials.jl
Created by: @glwagner
Version: v0.2.2
Commit: 758be938f6d5beb1e27a136caa5d12dcfdddb90b
Reviewed by: @glwagner
Reference: https://github.com/glwagner/SeawaterPolynomials.jl/commit/758be938f6d5beb1e27a136caa5d12dcfdddb90b#commitcomment-39189430

@glwagner can this pull request be closed?

I assume this has been superseded by #13746.


use correct plurals in schematodes

See https://github.com/CASCI-lab/schematodes/pull/7
I mixed up "schema" and "schemata" in several places in schematodes, but have now fixed it. This PR fixes an issue caused by this renaming in CANA.

I'm going to close this PR and make a separate one that also has a version increment, which we will use as the submission version.


RBAC

What RBAC module are you using, from the outside it looked like https://github.com/spatie/laravel-permission
But when I look at the generated tables it is totally different
Or did you create your own RBAC ?

own, build-in. not third module.


how can I add external files in my vuejs-cli ? I put the files in the src folder in assets. I still getting this error

script.js Failed to load resource: the server responded with a status of 404 (Not Found)

Please use forum.vuejs.org or chat.vuejs.org


Berlin Validator Checklist

Berlin upgrade tracker, ref #75 https://github.com/ethereum/eth1.0-specs/pull/14 https://github.com/ethereum/pm/issues/248
Minimum client versions

Geth 1.10.0+ to be released
OpenEthereum v3.2.0-rc.1 https://github.com/openethereum/openethereum/releases/tag/v3.2.0-rc.1
Besu 21.1.0+ https://github.com/hyperledger/besu/releases/tag/21.1.0
Nethermind TBA

Please confirm client and version after upgrading the validator to a Berlin-ready release.

[ ] 0x000000568b9b5a365eaa767d42e74ed88915c204 POA Network
[x] 0x22ea9f6b28db76a7162054c05ed812deb2f519cd ConsenSys/Besu (Besu 21.1.0 ✅)
[ ] 0x4c2ae482593505f0163cdefc073e81c63cda4107 Nethermind
[ ] 0x8b24eb4e6aae906058242d83e51fb077370c4720 Infura
[ ] 0x9d525e28fe5830ee92d7aa799c4d21590567b595 Goerli/Ronin
[ ] 0xa6dd2974b96e959f2c8930024451a30afec24203 Ethereum/Geth
[ ] 0xd9a5179f091d85051d3c982785efd1455cec8699 Prysmatic Labs
[x] 0xe0a2bd4258d2768837baa26a28fe71dc079f84c7 Goerli/Afri (Besu 21.1.0 ✅)

You'll need Geth 1.10.0 stable for Berlin fork numbers. It's not released yet.

@q9f Please see my updated post above

I'm aware. Looking forward to the call tomorrow. THanks

6 days to go!

done,
thanks for reminding

Nethermind 1.10.37 for POA validator
nethermind    | ======================== Nethermind initialization completed ========================
nethermind    | Version      : 1.10.37-0-068e5c399-20210312/X64-Linux/5.0.4

EF validator on Geth/v1.10.2-unstable-faacc8e0-20210315/linux-amd64/go1.16.2

prysm and EF are done from my perspective-
ready to be closed now?

Thanks, that is all. Hardfork ETA tomorrow morning.

ding fertsch!


Updated InterSystems IRIS JDBC driver location

Updated InterSystems IRIS JDBC driver location due to a reorganization of files in the repo, plus an update to the driver.

Fixes #17234

Hello @isc-rsingh
Did you test your PR?

The link is outdated.

I'm not sure about using driver from JDK18 folder as we just switches to JDK17 recently. @LonwoLonwo @ShadelessFox don't you think it may affect something?

18 stands for 1.8, or (Java) 8. I've confirmed that by looking at the language version of the compiled binary.

Verified


feat: population structure, confidence refactor, quiet lints

Population chips added + dictionary for tooltip
Quiet linters
Confidence stars moved + tooltip


zoom button in  cesium viewer not zooming to right location

should zoom to model

DEFAULT_VIEW_RECTANGLE is a static property on Cesium.Camera. ... you can only assign the value before Viewer is constructed, which is no good in our case
the Sandcastle Camera Demo shows a number of ways to fly or snap the camera to locations at runtime, after construction.
Use the drop-down box selector (upper-left of the globe) to see the different options there.
http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Camera.html&label=Showcases


calculate md5 hash of .gz files based on file content

This  PR changes the way that md5 hashes are calculated from gzip files as described in #141. In short: for .gz files only, the md5 hash is now calculated on the decompressed file contents, equivalent to:
gunzip -c file.gz | md5sum

As mentioned in the issue, this will break previously defined assertions/snapshots on gzip files

Thanks, Koen! 👍 This PR definitely helps with working with gz files.

Glad to be able to contribute to such a hugely useful project!

Hi @lukfor I do not have the permissions to merge this, so if you want to merge at this moment, you have to do it yourself ;-)


Re-established previous behaviour without a default limit for 'decode_size_limit_bytes'

Release notes
Update behaviour of decode_size_limit_bytes to do not apply any limitation to the length of a line, eventually tagging the event if it's set.
What does this PR do?
If decode_size_limit_bytes is unset re-establish the behaviour like before version 3.2.0 so that if a long line, close to the heap available space, is processed by the codec then it would throw an OOM and kill Logstash. If the such config is instead explicitly set then instead of continue looping with a warning log, it still produces an event but it's tagged with an error and the content of the message clipped at the first decode_size_limit_bytes bytes.
Why is it important/What is the impact to the user?
With #43 which configured a default 20Mb limit on the size of the line to parse, it introduced a breaking change in the behaviour of existing installations. If a Logstash was parsing correctly lines wide 30Mb, then after that change it would encounter an error.
With this PR the existing behaviour is re-established but let the use to explicitly set a limit that once passed, instead of make a continuous iteration on the error, still produces an event but it's tagger with error and contains a slice of the offending input.
Checklist

[x] My code follows the style guidelines of this project
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[ ] I have made corresponding change to the default configuration files (and/or docker env variables)
[x] I have added tests that prove my fix is effective or that my feature works

Author's Checklist

[x] do a real test with same setup as described in #43

How to test this PR locally

Use a pipelines with the codec that limit at 512 bytes, such as:

input {
  stdin {
    codec => json_lines {
      decode_size_limit_bytes => 512
    }
  }
}

output {
  stdout {
    codec => rubydebug
  }
}

very that generates a an event tagging it with the _jsonparsetoobigfailure and a message clipped at 512, as sample file you  can use
1kb_single_line.json
launch Logstash like

cat /path/to/1kb_single_line.json | bin/logstash -f /path/to/test_pipeline.conf

Related issues

Closes #44

Logs
[2024-09-02T14:45:51,796][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
{
    "@timestamp" => 2024-09-02T12:45:51.801192Z,
         "event" => {
        "original" => "{\"field_1\": [{\"name\":\"Jannik\",\"surname\":\"Sinner\"},{\"name\":\"Novak\",\"surname\":\"Djokovic\"},{\"name\":\"Rafa\",\"surname\":\"Nadal\"},{\"name\":\"Roger\",\"surname\":\"Federer\"},{\"name\":\"Pete\",\"surname\":\"Sampras\"},{\"name\":\"Andr\xC3\xA9\",\"surname\":\"Agassi\"},{\"name\":\"Rod\",\"surname\":\"Laver\"},{\"name\":\"Ivan\",\"surname\":\"Lendl\"},{\"name\":\"Bjorn\",\"surname\":\"Borg\"},{\"name\":\"John\",\"surname\":\"McEnroe\"},{\"name\":\"Jimmy\",\"surname\":\"Connors\"}],\"field_2\": [{\"name\":\"Jannik\",\"surname\":\"Sinner\"},{\"name\":\"Novak\",\"surname\":\"Djokovic\"},{\"name\":\"Rafa\",\"surname\":\"Nadal\"},{\"name\":\"Roger\",\"surname\":\"Federer\"},{\"name\":\"Pete\",\"surname\":\"Sampras\"},{\"name\":\"Andr\xC3\xA9\",\"surname\":\"Agassi\"},{\"name\":\"Rod\",\"surname\":\"Laver\"},{\"name\":\"Ivan\",\"surname\":\"Lendl\"},{\"name\":\"Bjorn\",\"surname\":\"Borg\"},{\"name\":\"John\",\"surname\":\"McEnroe\"},{\"name\":\"Jimmy\",\"surname\":\"Connors\"}],\"field_3\": [{\"name\":\"Jannik\",\"surname\":\"Sinner\"},{\"name\":\"Novak\",\"surname\":\"Djokovic\"},{\"name\":\"Rafa\",\"surname\":\"Nadal\"},{\"name\":\"Roger\",\"surname\":\"Federer\"},{\"name\":\"Pete\",\"surname\":\"Sampras\"},{\"name\":\"Andr\xC3\xA9\",\"surname\":\"Agassi\"},{\"name\":\"Rod\",\"surname\":\"Laver\"},{\"name\":\"Ivan\",\"surname\":\"Lendl\"},{\"name\":\"Bjorn\",\"surname\":\"Borg\"},{\"name\":\"John\",\"surname\":\"McEnroe\"},{\"name\":\"Jimmy\",\"surname\":\"Connors\"}]}\r\n"
    },
      "@version" => "1",
          "host" => {
        "hostname" => "andreas-MBP-2.station"
    },
          "tags" => [
        [0] "_jsonparsetoobigfailure"
    ],
       "message" => "{\"field_1\": [{\"name\":\"Jannik\",\"surname\":\"Sinner\"},{\"name\":\"Novak\",\"surname\":\"Djokovic\"},{\"name\":\"Rafa\",\"surname\":\"Nadal\"},{\"name\":\"Roger\",\"surname\":\"Federer\"},{\"name\":\"Pete\",\"surname\":\"Sampras\"},{\"name\":\"Andr\xC3\xA9\",\"surname\":\"Agassi\"},{\"name\":\"Rod\",\"surname\":\"Laver\"},{\"name\":\"Ivan\",\"surname\":\"Lendl\"},{\"name\":\"Bjorn\",\"surname\":\"Borg\"},{\"name\":\"John\",\"surname\":\"McEnroe\"},{\"name\":\"Jimmy\",\"surname\":\"Connors\"}],\"field_2\": [{\"name\":\"Jannik\",\"surname\":\"Sinner\"},{\"name\":\"Novak\",\"surname\":\"Djokovic\"},{\"name\":\"Rafa\",\"su"
}
[2024-09-02T14:45:51,966][INFO ][logstash.javapipeline    ][main] Pipeline terminated {"pipeline.id"=>"main"}
[2024-09-02T14:45:51,968][INFO ][logstash.agent           ] Pipelines running {:count=>0, :running_pipelines=>[], :non_running_pipelines=>[:main]}
[2024-09-02T14:45:51,970][INFO ][logstash.pipelinesregistry] Removed pipeline from registry successfully {:pipeline_id=>:main}
[2024-09-02T14:45:51,972][INFO ][logstash.runner          ] Logstash shut down.

I tried locally, and breakpointing at https://github.com/elastic/logstash/blob/ac034a14ee422148483d42a51b68f07d1a38494c/logstash-core/src/main/java/org/logstash/common/BufferedTokenizerExt.java#L80 and in the first iteration I would expect that entities contains just one element with the first 1000 chars (the as) but instead has the full payload so it contains 6 elements:

{"a":"a.....a"}
{"b": "bbb"}
{"c":"c....c"}
{"c":"c....c"}
{"c":"c....c"}
<empty string>

So a couple of observations:

TCP input doesn't bubble up the packets of 900 chars as we expected, in such case maybe it does some merging of TCP packets (maybe up to 32Kb?)
the implementation of BufferedTokenizerExt loose subsequent fragments once the first throws an error, dropping the segments instead of storing for further processing. This make think that maybe the bug resides in the BufferedTokenizerExt than the usage of it.

After the merge of the BufferredTokenizer fix, I think we could proceed with the review of this PR.

We cannot use the logstash to logstash integration before this PR is done. It completely stalls the pipeline until then.
Tempoary we reverted back to Logstash 8.15.2.

I did a write up of what I believe the problem to be, here: https://github.com/logstash-plugins/logstash-codec-json_lines/issues/44#issuecomment-2520232162


Is there anyway to load a secret at runtime?

Steps to reproduce
I have been trying to override app.set('auth', authOptions); and app.set('authentication', authOptions);. Which none have worked authenticate('jwt') already stores what authOptions it cares about already. I could pass in the authenticate('jwt', OPTIONS_HERE), but would have to delay the whole process just to wait for the promise to return for the key.
Possibly I am going about this the wrong way.
This is how I am trying to get my key.
  const Datastore = require('@google-cloud/datastore');
  const datastore = new Datastore();
  datastore.runQuery(datastore.createQuery('Settings').select('MY_SECRET'))
  .then((res) => {
    console.log('Successfully loaded secret');
    const authOptions = app.get('authentication');

    // This doesn't using the proper secret when trying to verify JWT token
    authOptions.secret = res[0][0]['MY_SECRET'];
    app.set('auth', authOptions);
    app.set('authentication', authOptions);
    console.log('New secret:', app.get('authentication').secret);
  })

Expected behavior
The new secret should be used to throughout feathers app.
Actual behavior
The secret that was loaded in at runtime isn't being used since authenticate was called prior to loading the secret and didn't want to slow down the rest of the process.
System configs were omitted since this seems more like how do you really do it than a properly with feathers.

Have you tried setting the nested secret property?
app.get('authentication').secret = '12324';

Feathers v4 authentication supports dynamically setting options in a single place and at runtime.
Please see the migration guide for more information. Closing this issue in order to archive this repository. Related issues can be opened at the new code location in the Feathers main repository.


Fixed url "patterns" error on django >=1.10.

I tested this change and hit some other problems with 1.10 (mainly with running this project's own tests), I'm working on a PR to fix all of it.  Also hit what seems to be a Django bug in the process: https://code.djangoproject.com/ticket/27316 .  I'll try to get that PR up in the next day or two, I'm making the same fixes in sbo-selenium also.


What's the correct way to shutdown the Redis Server through node-redis?

What's the correct way to shutdown the Redis Server through node-redis?
The following :
import redis from "redis";
const redis_client = redis.createClient();

redis_client.sendCommand("SHUTDOWN", function() {
  console.log("Shutting down Redis Server ...");
});

doesn't produce the desired effect
OS: Ubuntu 18.04
redis: v 6.2.3
node-redis:  v. 3.1.0

The following line is mentioned in the readme

This library is a 1 to 1 mapping of the Redis commands.

So I think it should be:
import redis from "redis";
const redis_client = redis.createClient();

redis_client.shutdown(function(err, res) {
  console.log("Shutting down Redis Server ...");
});

For more information you can refer this redis.io/commands/shutdown.

@Thanks @Dhyeythumar !!
Before I solved using this "trick":
const childProcess = require('child_process');
const redisServerShutdown = () => {
  childProcess.exec("src/scripts/redis/redis-cli shutdown", (error) => {
    if (error) {
      console.log(error);
    }
  });
};


Badges - too many if's

📑 Description
Remove if clauses for readability.
✅ Checks

[x] My pull request adheres to the code style of this project
[ ] My code requires changes to the documentation
[ ] I have updated the documentation as required
[x] All the tests have passed
[x] My pull request is based on the latest commit/version

I merged it but GitHub doesn't reflect in this page. Weird.
Thank you for your PR. As you see here it is merged.
Can you confirm that I can close the issue?
Keep coming more PRs.


Encountered "NotesException: Cannot create a session from an agent" in NSFSessionClonerSetupParticipant

I saw this when using invokeAll on an injected ManagedExecutorService. It's possible that this could be worked around by doing the session cloning when the ClassLoader is swapped out.
java.lang.RuntimeException: NotesException: Cannot create a session from an agent
	at org.openntf.xsp.cdi.concurrency.NSFSessionClonerSetupParticipant.lambda$0(NSFSessionClonerSetupParticipant.java:75)
	at java.security.AccessController.doPrivileged(AccessController.java:691)
	at org.openntf.xsp.cdi.concurrency.NSFSessionClonerSetupParticipant.setup(NSFSessionClonerSetupParticipant.java:66)
	at org.openntf.xsp.jakarta.concurrency.DominoContextSetupProvider.lambda$2(DominoContextSetupProvider.java:63)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at org.openntf.xsp.jakarta.concurrency.DominoContextSetupProvider.setup(DominoContextSetupProvider.java:63)
	at org.glassfish.enterprise.concurrent.internal.ManagedFutureTask.setupContext(ManagedFutureTask.java:97)
	at org.glassfish.enterprise.concurrent.internal.ManagedThreadPoolExecutor.beforeExecute(ManagedThreadPoolExecutor.java:85)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:827)
	at org.glassfish.enterprise.concurrent.ManagedThreadFactoryImpl$ManagedThread.run(ManagedThreadFactoryImpl.java:227)
	at org.openntf.xsp.jakarta.concurrency.NotesManagedThreadFactory$ManagedNotesThread.run(NotesManagedThreadFactory.java:76)
Caused by: NotesException: Cannot create a session from an agent
	at lotus.domino.local.Session.checkSecurityManagerExtender(Unknown Source)
	at lotus.domino.local.Session.createSession(Unknown Source)
	at lotus.domino.NotesFactory.createSession(Unknown Source)
	at org.openntf.xsp.cdi.concurrency.NSFSessionClonerSetupParticipant.lambda$0(NSFSessionClonerSetupParticipant.java:73)
	... 12 more

Oddly, I do changed the ClassLoader for the current thread, and even set the security manager to null. It's possible that this is a threading issue, where the swapping of the SecurityManager butts up against another thread setting it back.


Add client_cidr alongside mgmt_cidr as a list of dns_novpn allowed accounts

Mutley: @chadgeary would it be possible to specify multiple mgmt-cidrs in the config?   Thinking about the idea of having a friend make use of this, and their router pointing to my CloudBlock.

595c710513b530fecb5f8b8c59366905ed43b0af adds support for this with OCI, will update with AWS, Azure, and GCP within the next few days / as time permits.

6090fd3457b1a300c332402f8c5d95f2365e53fb adds support for AWS
1195ce622673acfa09ec7d7a14950d01fe9978df adds support for Azure and GCP


Add Login Authentication

We need to add a login authentication that mentioned in issue #9.

Decision: Passport.js


The animation is added!

The #2 issue is solved. The dice are rolled with a good animation.

Could you please merge it please!

Could you merge it please!


Login with wrong credentials does not abort login process

Exception is thrown, but the login screen keeps on "loading".

This will be fixed along with #189


upgrade to Ωedit™ v0.9.76

Upgrade to Ωedit™ v0.9.76.  This upgrade contains Windows fixes.
Closes #903.

The Windows builds are failing CI with java.lang.RuntimeException: Non zero return code from xjc

@scholarsmate So the issue that is causing your CI to fail is due to an issue that should be fixed in main. Are you sure this branch is fully in sync with main? I don't think it is because it should actually have more CI stages than what it has currently, meaning it should have stages for different Java versions. So try rebasing off the latest of the Apache main branch and this should be good to go 👍

Rebased on main as suggested.

@rthomas320, well that's come a long way.  It opens, closes, and we have now have informative logs.  The logs are stating that the client cannot connect to <IP_ADDRESS> on port 9000.  I'm going to merge this in as it is an improvement, then we can drill down farther on the connection refused issue more in a different ticket/PR.


FB Form Leads Access

Hi, is this package able to grab the lead(s)/submission(s) data thats stored in FB Ads Manager from running an ad that uses a FB form?
...e.g. When someone fills out the FB form, Id like to receive the data that they submitted..

i think this is is not provided i also want leads data


[Feature request] Statically compiled binary

Hello,
I've searched a bit and found out, that you wouldn't make an AppImage. Would you perhaps compromise on a statically compiled binary, that would include all dependencies? I would love to eliminate an additional (and pretty slow) link, which is repositories.

Hi! The arguments I gave in https://github.com/newsboat/newsboat/issues/1116 apply to the statically compiled binary too.


chore: update official driver name and status of community driver

The official driver name should be Google Cloud Spanner to correspond with the name of the database and the corresponding JDBC driver.
The community driver has been deprecated and does not receive any updates anymore. Users should therefore whenever possible use the offically supported driver instead of the community driver. See also https://github.com/olavloite/spanner-jdbc#deprecated

Thanks for the update.
Is there any value in the community driver?
If it is 100% replaceable by Google driver then we can add tag
<replace provider="google_spanner" driver="spanner_jdbc"/> to the Google driver definition. It will replace community driver automatically (and it won't accessible anymore).

Is there any value in the community driver?

No, not really. It should not be used anymore and all its features are supported by the Google driver.

If it is 100% replaceable by Google driver then we can add tag
<replace provider="google_spanner" driver="spanner_jdbc"/> to the Google driver definition. It will replace community driver automatically (and it won't accessible anymore).

I'm not exactly sure how that works, but I assume that there would be an issue with the fact that the connection string formats between the two drivers differ significantly. So a connection string that worked for the community driver will not work for the Google driver.

Ok, I see. Then let's leave Community driver there.


feat(UI): disable access management ui when no roles are linked to entity

Disable access management ui when no roles are linked to entity
See https://datahubspace.slack.com/archives/CV2UXSE9L/p1704699920392329 for reference.
Checklist

[ ] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[ ] Links to related issues (if applicable)
[ ] Tests for the changes have been added/updated (if applicable)
[ ] Docs related to the changes have been added/updated (if applicable). If a new feature has been added a Usage Guide has been added for the same.
[ ] For any breaking change/potential downtime/deprecation/big changes an entry has been made in Updating DataHub

also - do you think it would make more sense to hide the tab entirely if there's no roles associated with it? i could go either way

I don’t mind either way :) would you want a 2nd (or 3rd) opinion on this? If so, feel free to @
Otherwise I’d probably keep it as-is. Wdyt?

I guess since there was no veto regarding disabling the tab instead of hiding it, I'd keep it as-is? Then this behaves the same as e.g. the Validation tab

Unfortunately Cypress seems to have some issue currently:
URL: https://download.cypress.io/desktop/12.5.1?platform=linux&arch=x64 Error: Failed downloading the Cypress binary. Response code: 502 Response message: Bad Gateway

any updates? :)


libAnalytics.a

Where can I find this file to link it?

@talkain /cc

@hojberg Did you add the pod "Analytics" line to your Podfile?
after doing so, you need to close the project and run "pod install" again. (I will add it to the instructions)

@talkain Thanks! I found it. The key was to use the workspace file (duh) :D

Still facing this issue? Any suggestions? Cant find libAnayltics.a

Can you please, please remove the requirement to use POD?
It complicates matters (it is the only package that uses POD), all others use react-native link.
Thanks!

after trying a lot i finally decided to go with https://github.com/neiker/analytics-react-native . It really works out of the box.


Renaming of python methods leads to confusion

What version of OR-Tools and what language are you using?
Version: 9.9.3963
Language: python
Which solver are you using (e.g. CP-SAT, Routing Solver, GLOP, BOP, Gurobi)
CP-SAT
What operating system (Linux, Windows, ...) and version?
Windows, Linux
It seems that the new version has renamed all the python methods from PascalCase to camel case.  The docs were updated, but are inconsistent. For example, the job scheduling example at https://developers.google.com/optimization/scheduling/job_shop uses camel case in the example code, but the words that describe how this works use PascalCase.  I will bet there are other places where this inconsistency is present in the documentation.  For members of my team that are learning CP-SAT, this is very confusing.
Are there release notes that explain changes like these so we know how much of our existing code we need to change to be compliant with the new API?
While it's true that the old API works with our current code, I see that people are reporting issues, e.g.

#4131 and
#4137,
and I'm concerned that more will possibly turn up.

Fix the docs.  Provide release notes (or maybe you did and they are not easy to find)

https://github.com/google/or-tools/discussions/4119

Note: here is the sed rules to change the code to the new API.
s/\bAddAbsEquality\b/add_abs_equality/g
s/\bAddAllDifferent\b/add_all_different/g
s/\bAddAllowedAssignments\b/add_allowed_assignments/g
s/\bAddAssumption\b/add_assumption/g
s/\bAddAssumptions\b/add_assumptions/g
s/\bAddAtLeastOne\b/add_at_least_one/g
s/\bAddAtMostOne\b/add_at_most_one/g
s/\bAddAutomaton\b/add_automaton/g
s/\bAddBoolAnd\b/add_bool_and/g
s/\bAddBoolOr\b/add_bool_or/g
s/\bAddBoolXOr\b/add_bool_xor/g
s/\bAddCircuit\b/add_circuit/g
s/\bAddCumulative\b/add_cumulative/g
s/\bAddDecisionStrategy\b/add_decision_strategy/g
s/\bAddDivisionEquality\b/add_division_equality/g
s/\bAddElement\b/add_element/g
s/\bAddExactlyOne\b/add_exactly_one/g
s/\bAddForbiddenAssignments\b/add_forbidden_assignments/g
s/\bAddHint\b/add_hint/g
s/\bAddImplication\b/add_implication/g
s/\bAddInverse\b/add_inverse/g
s/\bAddLinearConstraint\b/add_linear_constraint/g
s/\bAddLinearExpressionInDomain\b/add_linear_expression_in_domain/g
s/\bAddMapDomain\b/add_map_domain/g
s/\bAddMaxEquality\b/add_max_equality/g
s/\bAddMinEquality\b/add_min_equality/g
s/\bAddModuloEquality\b/add_modulo_equality/g
s/\bAddMultipleCircuit\b/add_multiple_circuit/g
s/\bAddMultiplicationEquality\b/add_multiplication_equality/g
s/\bAddNoOverlap2D\b/add_no_overlap2_d/g
s/\bAddNoOverlap\b/add_no_overlap/g
s/\bAddReservoirConstraintWithActive\b/add_reservoir_constraint_with_active/g
s/\bAddReservoirConstraint\b/add_reservoir_constraint/g
s/\bAdd\b/add/g
s/\bAssertIsBooleanVariable\b/assert_is_boolean_variable/g
s/\bBestObjectiveBound()\b/best_objective_bound/g
s/\bBooleanValue\b/boolean_value/g
s/\bBooleanValues\b/boolean_values/g
s/\bBounds\b/bounds/g
s/\bClearAssumptions\b/clear_assumptions/g
s/\bClearHints\b/clear_hints/g
s/\bClearObjective\b/clear_objective/g
s/\bClone\b/clone/g
s/\bCoefficient\b/coefficient/g
s/\bCoefficients\b/coefficients/g
s/\bConstant\b/constant/g
s/\bDisplayBounds\b/display_bounds/g
s/\bEndExpr\b/end_expr/g
s/\bEvaluateBooleanExpression\b/evaluate_boolean_expression/g
s/\bEvaluateLinearExpr\b/evaluate_linear_expr/g
s/\bExpandGeneratorOrTuple\b/expand_generator_or_tuple/g
s/\bExportToFile\b/export_to_file/g
s/\bExpression\b/expression/g
s/\bExpressions\b/expressions/g
s/\bFlattenedIntervals\b/flattened_intervals/g
s/\bFromFlatIntervals\b/from_flat_intervals/g
s/\bFromIntervals\b/from_intervals/g
s/\bFromValues\b/from_values/g
s/\bGetBoolVarFromProtoIndex\b/get_bool_var_from_proto_index/g
s/\bGetFloatVarValueMap\b/get_float_var_value_map/g
s/\bGetIntVarFromProtoIndex\b/get_int_var_from_proto_index/g
s/\bGetIntegerVarValueMap\b/get_integer_var_value_map/g
s/\bGetIntervalIndex\b/get_interval_index/g
s/\bGetIntervalVarFromProtoIndex\b/get_interval_var_from_proto_index/g
s/\bGetOrMakeBooleanIndex\b/get_or_make_boolean_index/g
s/\bGetOrMakeIndexFromConstant\b/get_or_make_index_from_constant/g
s/\bGetOrMakeIndex\b/get_or_make_index/g
s/\bHasObjective\b/has_objective/g
s/\bHasResponse\b/has_response/g
s/\bIndex()\b/index/g
s/\bIsEmptyOrAllNull\b/is_empty_or_all_null/g
s/\bIsEqualTo\b/is_equal_to/g
s/\bLeft\b/left/g
s/\bMaximize\b/maximize/g
s/\bMinimize\b/minimize/g
s/\bModelStats\b/model_stats/g
s/\bName()\b/name/g
s/\bNegated\b/negated/g
s/\bNewBoolVarSeries\b/new_bool_var_series/g
s/\bNewBoolVar\b/new_bool_var/g
s/\bNewConstant\b/new_constant/g
s/\bNewFixedSizeIntervalVarSeries\b/new_fixed_size_interval_var_series/g
s/\bNewFixedSizeIntervalVar\b/new_fixed_size_interval_var/g
s/\bNewIntVarFromDomain\b/new_int_var_from_domain/g
s/\bNewIntVarSeries\b/new_int_var_series/g
s/\bNewIntVar\b/new_int_var/g
s/\bNewIntervalVarSeries\b/new_interval_var_series/g
s/\bNewIntervalVar\b/new_interval_var/g
s/\bNewOptionalFixedSizeIntervalVarSeries\b/new_optional_fixed_size_interval_var_series/g
s/\bNewOptionalFixedSizeIntervalVar\b/new_optional_fixed_size_interval_var/g
s/\bNewOptionalIntervalVarSeries\b/new_optional_interval_var_series/g
s/\bNewOptionalIntervalVar\b/new_optional_interval_var/g
s/\bNot\b/negated/g
s/\bNumBooleans()\b/num_booleans/g
s/\bNumBranches()\b/num_branches/g
s/\bNumConflicts()\b/num_conflicts/g
s/\bObjectIsAFalseLiteral\b/object_is_a_false_literal/g
s/\bObjectIsATrueLiteral\b/object_is_a_true_literal/g
s/\bObjectiveValue()\b/objective_value/g
s/\bOnSolutionCallback\b/on_solution_callback/g
s/\bOnlyEnforceIf\b/only_enforce_if/g
s/\bParseLinearExpression\b/parse_linear_expression/g
s/\bProto()\b/proto/g
s/\bRebuildConstantMap\b/rebuild_constant_map/g
s/\bRebuildFromLinearExpressionProto\b/rebuild_from_linear_expression_proto/g
s/\bResponseProto\b/response_proto/g
s/\bResponseStats\b/response_stats/g
s/\bResponse\b/response/g
s/\bRight\b/right/g
s/\bSearchForAllSolutions\b/search_for_all_solutions/g
s/\bSetName\b/set_name/g
s/\bShortExprName\b/short_expr_name/g
s/\bShortName\b/short_name/g
s/\bSizeExpr\b/size_expr/g
s/\bSolutionCount\b/solution_count/g
s/\bSolutionInfo\b/solution_info/g
s/\bSolveWithSolutionCallback\b/solve_with_solution_callback/g
s/\bSolve\b/solve/g
s/\bStartExpr\b/start_expr/g
s/\bStatusName\b/status_name/g
s/\bStopSearch\b/stop_search/g
s/\bSufficientAssumptionsForInfeasibility\b/sufficient_assumptions_for_infeasibility/g
s/\bSum\b/sum/g
s/\bTerm\b/term/g
s/\bUserTime()\b/user_time/g
s/\bValidate\b/validate/g
s/\bValue\b/value/g
s/\bValues\b/values/g
s/\bVarIndexToVarProto\b/var_index_to_var_proto/g
s/\bWallTime()\b/wall_time/g
s/\bWeightedSum\b/weighted_sum/g
s/\bWithName\b/with_name/g

I fixed the doc and made sure the 2 copies of the release notes are up to date.


layer.data() - server feature limit

If you server is configured with a query feature limit (1000 features by default), it will only return the first 1000 features. Does it make sense to have layer.data() make multiple queries in this case to get all the data? Or at least allow that as an option?

my instinct is that it would be the default behavior to return all features and just page internally if necessary.


apb write protocol violation

for writes, psel needs to be active for 2 cyles and penable/pwrite for 1

corrected driver


Fixed the unusual movement of filter header

Fixes issue:
#432
Changes proposed:
Initially the filter header was changing its position according to the width of block bottom to it, that was very unusual movement. Hence, in this pull request I have solved that issue. Now filter header is fixed at center, it will not change its position with respect to the width of cards.
Screenshot:

Hi @Srishtikumari2002, As I can see there are a lot of conflicts coming up in your PR. Can you please take a pull from the latest dev branch and then create a new branch from the dev branch and add your code there? Then raise the PR again.

Sure, I will do it.


esp_println::println! over rtt doesn't work with defmt-raw

Consider the following loop and output:
loop {
      defmt::println!("Loop... {}", x);
      x += 1;
      delay.delay_ms(500u32);
      if x > 10 {
          defmt::println!("About to use println!");
          esp_println::println!("Loop {}", x);
      }
  }

Loop... 0
Loop... 1
Loop... 2
Loop... 3
Loop... 4
Loop... 5
Loop... 6
Loop... 7
Loop... 8
Loop... 9
Loop... 10
 WARN session_drop: probe_rs::session: Could not clear all hardware breakpoints: Riscv(AbstractCommand(HaltResume))
 WARN session_drop: probe_rs::session: Failed to deconfigure device during shutdown: Riscv(AbstractCommand(HaltResume))
 INFO probe_rs: Wrote log to "/home/mabez/.local/share/probe-rs/1699374676691.log"
Error: Unrecoverable error while decoding Defmt data and some data may have been lost: Malformed

By extension of this issue, esp-backtrace is broken in this configuration because it uses esp_println::println!.

So, the problem is:

esp-backtrace depends on esp-println and uses the println! macro extensively
esp-println can't simply re-export the defmt macros - esp-backtrace would need to conditionally import defmt
non-defmt println! outputs serial data without defmt's formatting, which is a no-no for defmt-raw

Possibilities I see to resolve the issue:

make esp-backtrace defmt-aware (i.e. add a feature and optional dependency). This isn't ideal for the users
merge esp-backtrace and esp-println - this isn't ideal because the crates have different responsibilities
move the panic/exception handling code to esp-println, while keeping strictly backtrace-related functionality in esp-backtrace. This is a weird worst of both worlds option.
add print-panic and print-exception features to esp-println, and make esp-println depend on esp-backtrace instead of the other way around. This way, users don't have to depend on esp-backtrace at all and we can move code between them however we like. This allows making esp-backtrace defmt-aware without user-facing feature hell, and also simplifies things as users don't have to take care to configure print drivers on two crates.
move esp-backtrace into esp-hal - this would create an esp-hal/esp-println dependency which currently doesn't exist

I wonder if we need the defmt-raw feature at all 🤔
I guess one would only use it with RTT and probe-rs?
But then one could just use defmt-rtt and not use esp-println at all
Does probe-rs include that host-side backtrace support which probe-run had? Then we wouldn't need esp-backtrace, either. (But I think it was only for cortex-m back then)
If using defmt-raw via one of the serial comms that would mean we'd need a silent bootloader and ROM code boot messages turned off - otherwise it will fail during boot?

Maybe we could even question RTT support in esp-println? It was very useful in the beginning (because all the other crates had some problems on ESP32-C3 back then and IIRC they were unmaintained at that time) but it seems things changed for the better now (or am I wrong?)

I agree, I think my only hesitation is that we won't get panic messages when defmt-rtt; we need panic-probe to support RISCV/Xtensa.

I agree, I think my only hesitation is that we won't get panic messages when defmt-rtt; we need panic-probe to support RISCV/Xtensa.

Related: https://github.com/esp-rs/esp-backtrace/pull/40#issuecomment-1828154123


Tutorial restructuring

Hi @chris48s, I started editing. If you like, you can merge. I would also like to cooperate with you on your repository, we add things wildly and then review when we are ready. What do you think?

Hi. I've not merged this exactly as-is, but the additional info on base classes and edits to the section on file layout are useful. I've cherry-picked those into https://github.com/badges/shields/pull/2042 with some additional edits.
I'm not a big fan of leaving TODO comments in docs. If there are additional edits you'd like to see or make, I think its better to open an issue. That provides a better way to discuss the proposed changes and it is more clear to contributors that it is available to be worked on :)
Closing this, but thanks for the additional work on it :+1:


Image Naming

https://github.com/cybertraining-dsc/fa20-523-301/tree/master/project/images
Please make sure the image extension names are in lower case. For instance, we see there are two images with
PNG extension. Please rename it to .png and update the project.md.

Roger that. I'm updating on Github now. I will update the notebook and the report tonight.

I fixed your project.md with lower case .png
check the build and review, it may take up to 10 minutes for the changes to show in the web page, also make sure to clear your cache when viewing your report on cybertraining-dsc as we see some students that seem not to know how browser caches work and are confused why they do not see the updates.

Thank you, Dr. Laszewski. I appreciate the help!
I'll verify the build tonight after work.


Implement IntegerWrapping protocol

Current coverage is 80.31% (diff: 0.00%)

Merging #49 into master will decrease coverage by 6.21%

@@             master        #49   diff @@
==========================================
  Files            32         33     +1
  Lines           594        640    +46
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            514        514
- Misses           80        126    +46
  Partials          0          0

Powered by Codecov. Last update 57814bd...562296e


ModuleNotFoundError: No module named 'inventree_part_import.error_helper'

You're vendoring in error_helper as a submodule, but it's not getting packaged and pushed to PyPI, hence this whole package doesn't run. Since you already packaged it on PyPI, just add it to the reqs.
For the AUR package I fixed it by just packaging and find ... -exec sed, but the fix should be here.

Are you sure about that? It is present in the
inventree_part_import-1.6.tar.gz from https://pypi.org/project/inventree-part-import/#files.
The workflow I'm using is also configured to checkout submodules before building via hatch, so I don't see why it wouldn't be present in the wheel either: https://github.com/30350n/inventree_part_import/blob/22ff74053531fb4a7b4c8f5e01ede160f6927dc4/.github/workflows/publish.yaml#L12-L25

Ah, TIL wheels are also just .zip files (could have expected that I guess ^^). And yeah error_helper is also present in the wheel.

Seems like this is probably just a problem with your PKGBUILD for the -git version. You should probably be using hatch there and also force checking out all submodules (not sure how that'll work exactly, never messed with Arch packages before).

You seem to be correct, I'm pulling the source package (https://files.pythonhosted.org/packages/source/i/inventree_part_import/inventree_part_import-1.6.tar.gz as per the Python packaging guidelines) and now I can't seem to replicate the issue, the folder is there; however, somehow the first time around the error_helper dir didn't end up in the package. Strange.

Seems like this is probably just a problem with your PKGBUILD for the -git version. You should probably be using hatch there and also force checking out all submodules (not sure how that'll work exactly, never messed with Arch packages before).

Yeah, this is true, there's a roundabout way to download submodules, but I didn't do it; I will, now.

Yeah, false alarm; I can't seem to replicate it now. Will undo the find/sed thing.

I was looking at the wrong package, the -git one.


Add an emptyDir for etcd in the helm chart

so that etcd won't try to mkdir its own data dir

@pmorie

Seems ok - but what's wrong with it creating it owns data dir? Isn't it just as ephemeral in both cases?

LGTM

Yeah its still ephemeral. Depending on the user/permissions/capabilities
that container is running under the etcd process may not be able to mkdir,
which is what I hit in my env.
On Mon, Mar 6, 2017 at 8:42 AM, Doug Davis<EMAIL_ADDRESS>wrote:

LGTM
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-incubator/service-catalog/pull/477#issuecomment-284398656,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABZk7TtuIYDk1Z2j0nlESlqBt-h9ZN0tks5rjA1RgaJpZM4MStG0
.

Now you got me curious. W/o the mention of "user" in the yaml won't it always run as the same user in all cases (and I presume 'root') ? In what cases was it different for you?

I was running within openshift which does affect what uid the container is
running as.  I didn't dig too far into what the specific problem was
@pmorie might have a better idea.
On Mon, Mar 6, 2017 at 8:52 AM, Doug Davis<EMAIL_ADDRESS>wrote:

Now you got me curious. W/o the mention of "user" in the yaml won't it
always run as the same user in all cases (and I presume 'root') ? In what
cases was it different for you?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-incubator/service-catalog/pull/477#issuecomment-284400932,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABZk7RemEWi5zFQMLu9AyhoDdrQIBGbjks5rjA-YgaJpZM4MStG0
.

sounds like an openshift issue to me :-) LOL

I don't have time to test this right now, so I trust that it has been already (not sure if CI does it for us). LGTM, merging


Why does my D455 measure a larger range at the edge and a smaller range at the center？

Required Info

Camera Model
D455

Firmware Version
<IP_ADDRESS>

Operating System & Version
ubuntu18.04

Kernel Version (Linux Only)
4.15.0-123-generic

Platform
PC

SDK Version
v2.36.0 }

Language
c++

Segment
Robot

Issue Description
When looking for a flat plate four meters away, it was found that the center area could not be measured, but by turning the camera, the edge area could be measured.
This is when the camera is centered on the plate
no plate

This is when the tablet appears at the edge of a deep image
you can see there is a dark red plate

The distance is about 4m,
So , why do I meet this problem.
This is that plate.

Hi @AmazingSealock   If you are observing the set of six plates in a black framework, it is possible that the camera is interpreting it as a repetitive pattern.  Having horizontal or vertical repeating patterns in a scene (such as window blinds or a row of fence posts) can confuse the camera.  Turning the camera may disrupt that repetitive pattern.
The subject is discussed in the link below.
https://github.com/IntelRealSense/librealsense/issues/6713
Within that case, links to resources about methods that may help to negate the effect are provided.
https://github.com/IntelRealSense/librealsense/issues/6713#issuecomment-651114720
Repetitive patterns are also discussed in the link below.
https://github.com/IntelRealSense/librealsense/issues/4082

Thank you @MartyG-RealSense, I've now switched to looking for a bucket in the depth Image, but there's still a problem. It doesn't look like the repetitive pattern caused this.
I've already calibrated my D455.

For the D455, the recommended optimal depth accuracy resolution is 848x480 rather than the 1280x720 in your Viewer image above.   Do your results improve if you use 848x480 please?

Hi @AmazingSealock   Do you require further assistance with this case, please?   Thanks!

Case closed due to no further comments received.

Thank you, I sovlede this problem!

Great to hear - thanks for the update   :)


document _internal values

https://github.com/influxdata/influxdb/issues/5616

Hello,
I would like to have some stats about the DB
the only documentation ressource I found is: https://influxdata.com/blog/how-to-use-the-show-stats-command-and-the-_internal-database-to-monitor-influxdb
Can you please describe the values for each measurement.
there are some self-explanatory values like (batchesTx, batchesTxFail, pointsRx, queryFail, queryOk, ....)
but becomes more complicated with
engine:
pointsWrite, pointsWriteDedupe ?, blksWriteBytes, blksWriteBytesC ?
what's the difference ?
and most of the runtime, wal, write values
This may be time consuming. but at least few words for the most complicated ones
thank you !

Size on disk:
select sum(diskBytes)/(1024*1024) as db_size_mb from "_internal"."monitor"."shard" where time > now() - 10s group by hostname,"database"
metaseries cardinality
SELECT sum(numSeries) AS "total_series" FROM "_internal".."database" WHERE time > now() - 10s

closing in favor of #758

Hello,
I've been trying to search for the unit of each value for each measurement in the _internal database but didn't find them. Does anyone know where I can find them ?
Thank you in avance

@Hamelina a better place to ask this question would be http://community.influxdata.com/
It seems like according to this issue https://github.com/influxdata/docs.influxdata.com/issues/758#issuecomment-400380981 they are not documented. A better place to ask this question would be http://community.influxdata.com/

Resolved in https://github.com/influxdata/docs.influxdata.com/pull/1908


[fix] grafana deploy create configmap check

Coverage decreased (-16.8%) to 63.487% when pulling 6d5151509a181a696ae4c50ebe3aed23fc562a5d on yanjga/grafana-fix into a97798ab429fb11d040e019ac2872eb8778d4818 on master.


Proto perf

Brings server_benchmark up to date, and improves response generation efficiency for protobuf.
Before:
jk@holly$ python scripts/server_benchmark.py --profile none WyIxa2ctcDMtc3Vic2V0IiwidnMiLCJtdm5jYWxsIl0
1.929188

After:
jk@holly$ python scripts/server_benchmark.py --profile none WyIxa2ctcDMtc3Vic2V0IiwidnMiLCJtdm5jYWxsIl0
0.392116

Can I get some review please @macieksmuga, @david4096, @dcolligan?

Looks good and necessary, but I see some fixes not directly related to the performance fix. Perhaps bundle this PR together with #1245 as a general miscellaneous fixes PR?

I don't think we gain much from bundling this together with #1245, these are two closely related changes. I couldn't profile performance until I brought server_benchmark up to date, and the second change uses this benchmark to show that performance has been greatly improved.

+1 Sounds good! - if you don't mind quickly updating this branch, I'll merge it in.

Thanks @macieksmuga, updated.


feat: add SYNCED to ClusterExternalSecretStatusCondition

Problem Statement
What is the problem you're trying to solve?
Add SYNCED to ClusterExternalSecretStatusCondition to show the amount of synced secret.
Related Issue
Resolves https://github.com/external-secrets/external-secrets/issues/2419
Proposed Changes
Before change:

After change:

When the secret in both two namespaces are synced:

How do you like to solve the issue and why?
When clusterexternalsecret_controller reconciles, it checks whether the secret is synced in each namespace.
Checklist

[x] I have read the contribution guidelines
[x] All commits are signed with git commit --signoff
[x] My changes have reasonable test coverage
[x] All tests pass with make test
[x] I ensured my PR is ready for review with make reviewable

/ok-to-test sha=fefc1a3

Hi, thank you for putting together the PR, @Hayden-Chang! Let me describe what I think

As I commented here, ClusterExternalSecretController's responsibility is not making sure each child ExternalSecret is ready or not. It is ExternalSecretController's concern. So storing ExternalSecret statuses in ClusterExternalSecret's status does not seem to align with the design decision to me.
The name SYNCED does not seem right to me because what it means is not only the ExternalSecret is synced but also the ExternalSecret is ready.

Hi, thank you for putting together the PR, @Hayden-Chang! Let me describe what I think below

As I commented here, ClusterExternalSecretController's responsibility is not making sure each child ExternalSecret is ready or not. It is ExternalSecretController's concern. So I'm not too sure if storing ExternalSecret statuses in ClusterExternalSecret's status aligns with the design decision.
The name SYNCED does not seem right to me because what it means is not only the ExternalSecret is synced but also the ExternalSecret is ready.

Hi, @shuheiktgw , Thanks for your reply.

As we know, ClusterExternalSecret could create multiple ExternalSecrets, so I think it's reasonale to have an UX of ClusterExternalSecret to check the final status of all its related ExternalSecrets. At least it's friendly to our users.

A synced ExternalSecret must be ready(code), it is the final status of ExternalSecret. That's why I skip the ready status.

As we know, ClusterExternalSecret could create multiple ExternalSecrets, so I think it's reasonale to have an UX of ClusterExternalSecret to check the final status of all its related ExternalSecrets. At least it's friendly to our users.

Hmm, yes I agree that there is a case that shows the number of READTY statuses is helpful, but that is not the responsibility of the ClusterExternalSecret controller, so I still have to disagree with storing it to ClusterExternalSecret status.

A synced ExternalSecret must be ready(code), it is the final status of ExternalSecret. That's why I skip the ready status.

For example, when I see 2/3 in the "SYNCED" column, that looks like 3 out of 2 ExternalSecrets are synced, but what it actually means is that 3 out of 2 ExternalSecrets are ready.


Delegate => AssertionRequirement sugar

Tweaks RequireDelegate a bit to make it simplier:
RequireAssertion(authContext => bool) is used to register a handler
directly without any of the mechanical methods/classes.
Intended to make it pretty easy to do simple validations against the context.User ClaimsPrincipal
cc @blowdart @divega

Hi @HaoK, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

How does this look for end users? i.e. what are they writing in code?

Something like this where you replace the context => true with something less trivial :)
                services.AddAuthorization(options =>
                {
                    options.AddPolicy("Basic", policy => policy.RequireAssertion(context => true));
                });

We could yet one more layer of sugar on top to support registering a policy consisting entirely of this one func as well:
   services.AddAuthorization(options => {
      options.AddAssertionPolicy("Assertion1", context => context.User.Identity.HasClaim("SuperUser"))
   }

@HaoK FWIW, that extra layer of sugar looks much nicer to me, but I feel that I lack enough context in this area. Did you decide on handling async lambdas?

I'll merge what I have and file bugs for the extra layer of sugar and async sugar...
https://github.com/aspnet/Security/issues/657

2e1a8b31cd0c520ffd69ba7818313ae9a9f688a4


bugs in binary-oracle-pair

Is this the same thing? https://github.com/solana-labs/solana-program-library/tree/master/binary-oracle-pair

No, as far as I can tell, these programs are sufficiently different. I'll try to respond as objectively as I can by reading through that source code.
At first glance, the structures are similar, but I'm not getting any notions of the actual "trading" of positions from the binary-oracle-pair module. I wrote a really detailed README describing the mechanics of how this betting pool protocol manages transactions between 2 parties based on their different starting positions (proper management of position transfer is important because in real-life betting markets, decisions are binding and you can only exit when another person as agreed to take on your risk):
https://github.com/jarry-xiao/solana-program-library/blob/betting-pool-primitive/betting-pool/
Here is my understanding of how the binary-oracle-pair works:
InitPool Creates a pool object with metadata, initializes mints for a PASS and FAIL token. seems like you can only mint new tokens before the mint_end_slot, you can only decide between the mint_end_slot and the decide_end_slot
Deposit If you are in a slot < mint_end_slot you can transfer some of your tokens into a deposit_account and the protocol mints an equal number of PASS and FAIL tokens.
Withdraw If the pool is decided there are 3 cases.

UNDECIDED: If a decision hasn't been reached yet, you can burn all of your "fail" and "pass" tokens (again no mint check) and pull back an equivalent amount of collateral.

Decide will decide the winner if there is one (assuming mint_end < slot_time < deposit_end)
I can sort of see how you can turn this in to a betting pool-esque protocol, but IMO it's convoluted. A deposits x, and B deposits y to an escrow account, escrow invokes Deposit with amount x + y into the pool, A receives x+y PASS tokens and B receives x+y FAIL tokens. This higher level logic still needs to be handled somewhere.
In isolation (ignoring rug possibility), there is no risk in calling Deposit, because you can always pull out the same amount you deposited assuming that you don't burn or transfer your FAIL or PASS tokens. There's only risk if they are distributed (like in the above escrowed bet example between A and B, A risks x to win x+y and B risks y to win x+y)
Question:
Isn't the Withdraw function essentially just a rug (pass in a burner tokens, collect honeypot). I think it allows you to burn any token type (pass/fail never checked AFAICT)? The burn and transfer functions don't actually use the PDA to sign, so my attack would be to mint 2 random tokens in account I control, pass them into Withdraw, and collect the very real collateral stored in the pool deposit account. Only safety is whether you have the proper authority_id but I think you can derive that with a client library as you know the base seeds used for that PDA. Happy to be wrong here, maybe there's something in the source that prevents this that I don't know about.
TL;DR:
The betting pool protocol deals with users transacting with different bets and has complex logic wrapping this.
binary-oracle-pair can be used as the core "pool" primitive, but has 0 position management logic implemented.
The betting-pool also opens up betting indefinitely and leaves settlement to an higher level protocol.
binary-oracle-pair has slot time constraints.
Originally posted by @jarry-xiao in https://github.com/solana-labs/solana-program-library/pull/2056#issuecomment-877658305

Tag @jstarry @joncinque wdyt?

Oops, yeah that's definitely a bug to fix.  Nice spot @jarry-xiao !

@jarry-xiao can this be closed?

Closing as stale, I believe this was resolved in https://github.com/solana-labs/solana-program-library/pull/2056

I don't think this was resolved unfortunately, there's still the bug in the binary-oracle-pair program where the mints aren't checked:

Isn't the Withdraw function essentially just a rug (pass in a burner tokens, collect honeypot). I think it allows you to burn any token type (pass/fail never checked AFAICT)? The burn and transfer functions don't actually use the PDA to sign, so my attack would be to mint 2 random tokens in account I control, pass them into Withdraw, and collect the very real collateral stored in the pool deposit account. Only safety is whether you have the proper authority_id but I think you can derive that with a client library as you know the base seeds used for that PDA. Happy to be wrong here, maybe there's something in the source that prevents this that I don't know about.

Essentially, very few of the inputs around https://github.com/solana-labs/solana-program-library/blob/fd662e5f878d58ad06d3cb6365171ebaec41b39d/binary-oracle-pair/program/src/processor.rs#L403 are checked :sweat_smile:

Ah, sorry about that! I misunderstood

Added a fix

@jarry-xiao This should be ready to close, correct?

Closing, I think these bugs were fixed up


(WIP) event/core: string interning and context resolver for metrics

Work in progress.

Very cool. I like the miri addition; I do think loom or other concurrency tests would be valuable as the safety conditions require nontrivial context to maintain but that's the way of string interners.

I ended up adding a Loom test (6a7447b) for the concurrent dropping/interning of the same underlying string, which seems to pass... but I've got a feeler out to examine my test and make sure it's actually doing what I want it to be doing.