trigger test action on PR or push to master

Until figuring out what's wrong 😁 or at least one test case present on the master.


After cloning repo and serving I get "ERROR: Your browser does not support WebVR"

Why does this work (https://webvr.info/samples/03-vr-presentation.html) but on another tab on the same device this (https://rjsteinert.github.io/webvr.info/samples/03-vr-presentation.html) results in "ERROR: Your browser does not support WebVR."? All I did was fork this repo and then set master to publish on github pages.
Perhaps webvr.info is not based on master branch?

Btw, I'm using a Pixel 2 with Chrome 65.

Inspecting using Chrome remote debugging, I see this message is reached because navigator.getVRDisplays is undefined at https://rjsteinert.github.io/webvr.info/samples/03-vr-presentation.html but a function at https://webvr.info/samples/03-vr-presentation.html.

Hmm, no difference between what is on the webvr.info server and what is in master branch.

After enabling the WebVR flag, (https://rjsteinert.github.io/webvr.info/samples/03-vr-presentation.html now works as expected. How does https://webvr.info/samples/03-vr-presentation.html get around the WebVR flag in disabled mode?

Oooooh you have to be part of the Origin Trial https://github.com/GoogleChrome/OriginTrials/blob/gh-pages/developer-guide.md

Yep, it's via the Origin Trial tokens in the <meta> tags. https://webvr.rocks/chrome_for_android#what_is_the_webvr_origin_trial has more info.
Hope that helps!


Toast.podspec

s.resource_bundles = {'Toast' => ['Resources/PrivacyInfo.xcprivacy']}

@scalessec check this requset please

you can refer to this issue for some clarification on why this is needed.
https://github.com/vonovak/react-native-simple-toast/issues/79

Fixed with #144


Configuration for Adyen environment (testing / live)

Replace hardcoded values for Adyen environment when creating client with configuration stored in Saleor privateMetadata:
https://github.com/saleor/react-storefront/blob/f335b48882bedfcb3ec5e7f9375d3e8710a65577/apps/saleor-app-checkout/backend/payments/providers/adyen/webhookHandler.ts#L46
Configuration to add:

Environment (live / test)
Live endpoint URL prefix

https://docs.adyen.com/development-resources/libraries?tab=node_3#using-the-library-js

This issue is no longer relevant: we're replacing payment handling in saleor-app-checkout in favor of separate Payment Provider Apps (Changes description).
Payments configuration will be soon removed from saleor-app-checkout: https://github.com/saleor/react-storefront/issues/809
New app for handling Adyen paymetns has this config already implemented


The option --strict-types also causes custom properties to be flagged

it would be nice to have another option:  --strict-properties, so you can control if custom properties are flagged with warning messages.  A custom object type is a much bigger deal that a custom property.

See https://github.com/oasis-open/cti-stix-validator/blob/dd7e12c45d30ef7a7110fe99ae8e44c5a113e9ee/stix2validator/musts.py#L391

I feel like we talked about this before (whether to use separate flags for custom object types and custom properties), and decided at the time we could use the same thing for both.
I'm open to revisiting, if we think there's a strong case to keep them separate (and accept the additional complexity).

I can definitely see an implementation of something that easily accepts custom properties, but not custom objects.  But maybe we are thinking this too much :-)


Poets Pen socketed spells damage

Is it possible to overwrite the cast speed of the socketed spell in Poets Pen to have the same cast speed as the attack speed of the attack skill in the chest peice so that we can more accurately see the damage of the socketed spells :D

I also noticed that attack leech is not shown for spells socketed in Poets Pen's sockets while I see that life is actually leeched in the game.
It seems that Poets Pen transforms spells into attacks for that purpose

@ephankim no it doesn't!
You get leech for your attack which you are doing and that does damage.

Yes, that's what I read in Path of Building calculations but I tried with lv1 Frenzy without support gems as trigger for a couple of AOE and got from 20% life to full life (about 4500) with a single attack against a mob

With closer analysis, I guess the leech is coming from the Slayer's Endless Hunger ascendency skill "20% of Overkill Damage is Leeched as Life"


Bump Go to 1.23.1

Issue:

Problem

The new stable BCI golang image registry.suse.com/bci/golang:1.23 is now available.
Solution

Start building with Go 1.23 using the latest available toolchain in the BCI image.
Testing

Engineering Testing
Manual Testing

Automated Testing

Test types added/modified:
N/A

QA Testing Considerations

Regressions Considerations

N/A
Existing / newly added automated tests that provide evidence there are no regressions:
N/A

For visibility, this PR is currently blocked by https://github.com/rancher/rancher/issues/47207.

The bci image now uses toolchain 1.23.4
docker run -it registry.suse.com/bci/golang:1.23 go version
go version go1.23.4 linux/arm64


docs: Update guide of counting sort implementation heading add specif…

…ic language(#26859)

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Thank you @Ankit0158 for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 🎉


docs: update devServer.https example

update example for documentation https key and cert only needs paths to certificate files

🔗 Linked issue

❓ Type of change

[x] 📖 Documentation (updates to the documentation or readme)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description

📝 Checklist

[ ] I have linked an issue or discussion.
[x] I have updated the documentation accordingly.

Thanks! this saved me a bunch of time messing around....
Until new docs are deployed, in case anyone is Googling:

s.startsWith is not a function


Wrapped extension categories don't look good

Actual:

Expected:

Hi, I'm new to vscode's code base, but I'm interested in contributing. Can I take a stab at this?

Definitely

My apologies @danilhendrasr 🙏, made a pull request, did not notice that the task was already taken.
Btw, the request has not been accepted yet, I think there may be several iterations of improvements

Well that was unfortunate, I was looking forward to my first contribution to vscode 😕

I guess it's okay, I'll keep an eye on other issues.

I don't think it's possible to achieve what's being attempted in the linked PR with CSS alone. It seems like you would need some JS event listeners to calculate when the style should collapse.
Alternatively, you could just set the width to max-content and avoid the blocks all-together:
https://user-images.githubusercontent.com/40288183/183332374-d1b96e41-e64f-432f-9bba-81aca97ab44e.mov

I was going to suggest the same thing of using width: max-content;, seems like a good solution.

can i take up this task ? If it is still unresolved and needs correction

We closed this issue because we don't plan to address it in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.
If you wonder what we are up to, please see our roadmap and issue reporting guidelines.
Thanks for your understanding, and happy coding!


[Autocomplete] Allow comma key to create new entry in freeSolo

Currently in the Autocomplete field with multiple values and freeSolo enabled, pressing the enter key on a custom value will create a chip and add the option. I would like there to be a way to implement this same functionality when the comma key is pressed.

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Summary 💡
Pressing the comma key in a freeSolo Autocomplete field should enter the current input as an additional option in the field.
If this could be done for the space key or when the user clicks out of the field when there is text, that would be great. I know there may be some use cases where users would want multiple word options, so the space key would most likely have to be an additional prop to specify whether or not this action is desired.
Examples 🌈
https://material-ui.com/components/autocomplete/#multiple-values
There is an example of a freeSolo field for multiple values in the documentation.
Motivation 🔦
I would like to make it easier for users to enter options into the Autocomplete field as some may think that pressing the enter key will instead submit an entire form as opposed to just adding a new option.

Duplicate of #18563


Dexie-cloud-addon default UI

Would you be willing to put a class or id attribute on the LoginDialog component? Otherwise there doesn't appear to be a way to identify the component for styling without reimplementing it.

Definitely

In latest version<EMAIL_ADDRESS>LoginDialog has class "dxc-login-dlg".


Failed to load the semanticolor package

[Enter steps to reproduce below:]
This happened after I changed the "keywords" setting and reloaded the window.
Atom Version: 1.8.0
System: Mac OS X 10.11.5
Thrown From: semanticolor package, v3.0.0
Stack Trace
Failed to load the semanticolor package
At variable @hues is undefined in /Users/mlaibowkoser/.atom/packages/semanticolor/styles/semanticolor.atom-text-editor.less:19:19

LessError: variable @hues is undefined
  at /Users/mlaibowkoser/.atom/packages/semanticolor/styles/semanticolor.atom-text-editor.less:19:19

Commands

Config
{
  "core": {
    "customFileTypes": {
      "HTML (Mustache)": [
        "jst"
      ]
    },
    "disabledPackages": [
      "atom-refactoring-tools",
      "fonts",
      "source-preview-babel",
      "language-babel"
    ],
    "packagesWithKeymapsDisabled": [
      "open-on-github",
      "git-diff",
      "git-diff-details"
    ],
    "themes": [
      "one-dark-ui",
      "monokai"
    ]
  }
}

Installed Packages
# User
apm-publish, v0.3.0
atom-emblem, v0.2.3
atom-typescript, v10.1.5
browser-plus, v0.0.67
coffee-compile, v0.21.1
cucumber, v0.5.0
ember-tabs, v2.2.2
fancy-bracket-matcher, v0.4.1
file-type-icons, v1.3.2
git-diff-details, v1.3.0
git-log, v0.4.1
git-tabs, v0.3.0
haskell-pointfree, v0.1.3
imdone-atom, v1.3.29
indent-detective, v0.1.0
language-csv, v1.1.2
language-haml, v0.24.0
language-haskell, v1.7.18
language-shakespeare, v0.2.1
linter, v1.11.14
linter-coffeelint, v1.1.2
linter-jshint, v2.1.0
markdown-table-formatter, v2.8.3
merge-conflicts, v1.4.4
monokai, v0.18.0
new-tab, v0.5.1
opentype-feature-bundle, v0.2.4
package-cop, v0.2.10
pigments, v0.31.2
project-manager, v2.9.7
regex-railroad-diagram, v0.16.0
remote-atom, v1.3.9
resize-indent, v0.3.0
revert-buffer, v0.5.0
ruby-block, v0.3.5
semanticolor, v3.0.0
tablr, v1.3.2
tabs-to-spaces, v1.0.2
tree-view-git-status, v1.0.2

# Dev
No dev packages

Was this with the new build? I was getting that message when I would reload the window but had an older version still loaded on a different open Atom window.

@sharedprophet This was version 3.0.0. I think you are right about the cause, since restarting Atom seems to have made this go away.


Provide Bash completion for watson aggregate

This commit provides complete Bash completion for watson aggregate.
The completion supports:

completing the 'aggregate' command itself
suggesting projects or tags after the respective options
suggesting available long options when at least a dash was typed
doing nothing otherwise (i.e. not suggesting long options for valid
command lines)

I am not too satisfied with the structure of the completion code. For my taste, there is too many small scale code duplication and a bit too much branching. If someone knows how to do better, I would love to learn!

This PR should be obsolete as soon as #276 got merged. Therefore I close it.


[USelectMenu] when using custom #option slot, width w-full on root causes items to be "barelly" visible

Environment

Node Version: v20.10.0
Package Manager<EMAIL_ADDRESS>Nuxt Version:  v3.8.2

Version
v2.11.1
Description
When using the slot #option to customize the items rendered within the USelectMenu popover.
When slot #default (trigger component that opens the select) of USelectMenu is small (e.g., 32px)
Then the items within the popover will barelly be visible because w-full will only take 32px, even if the items are rendered within an absolut container.
The Trigger of USelectMenu, can be for example, a Button that just contains an Icon instead of a Icon + Currently Selected Value Text.
Suggestion: better default should be min-w-max.
Reproduction
<template>
  <USelectMenu v-model="selectedChoice" as="div" by="key" :options="choices">
    <template #label>

        {{ $t('common.theme.label', { themeName: colorMode.preference }) }}

    </template>
    <template #default>
      <UButton
        class="transition-colors duration-300"
        :aria-label="$t('common.theme.change_theme')"
        icon="i-mdi-lightbulb-on-outline"
        size="sm"
        color="gray"
        variant="soft"
      />
    </template>
    <template #option="{ option: choice }">
      <UIcon :key="choice.key" dynamic class="icon-sm" :name="choice.icon" />

        {{ choice.text }}

    </template>
  </USelectMenu>
</template>

Additional context

Logs
No response

@benjamincanac rewrote to simplify.

You'd need both w-full and min-w-max otherwise it wouldn't fill the content when the menu content is smaller.
However, this could cause a breaking change if someone specifically set a width on the SelectMenu with intent of truncated labels. You can simply use :ui-menu="{ width: 'min-w-max' }", it will add up to w-full.

I've extended selectMenu on app.config.ts as you suggested, thanks for your time!


Q: Graph-node subscriptions

Q: Is there any way to subscribe (e.g via websocket) for event (eth contract's event) which is handled in subgraph/graph-node?

Let's say we have following event defined in subgraph.yaml under eventhandlers.event:
- event: Transfer(indexed address,indexed address,indexed uint256)
handler: handleTransfer

Such event ( Transfer(indexed address,indexed address,indexed uint256) ) is also defined in contract's ABI (and so it is published by eth network).

Is there any way to subscribe for it directly via graph-node, so that every transfer which results in saving some data/entity in graph-node and which we may query for will be immediately published? Or does this kind of publishing logic has to be included in the event handler? (or as I understood its subgraph which shall define type Subscription in its schema.graphql, so we may then listen for it through graph-node, yes?)
I would like to not have to make any kind of polling and get real-time data from the graph-node when it does save data/entities.

Is there any example/doc regarding how we may subscribe through WS? I've managed to register for WS data but I could not subscribe for any events.

I'll close it as there's no activity.

Same here, may be websocket is not implement.

Hello, is there any documentation for the above one? Cause i would like to use graphql subscriptions to subscribe to entities changes when events are emitted and handlers modify entities, instead of using graphql polling


Apollo Federation

Oh wow! I've known this has existed for a long time but I didn't understand what "generate a compatible resolvers signature for Apollo Federation" meant in the docs — I thought this was mostly just about dealing with graphql files that don't declare the federation directives. I didn't realize it had support for @requires etc in resolver signatures! I look forward to porting my projects from apollo codegen to this.

@glasser  you should join our shared Slack channel with Apollo!
We keep sharing new things there to get feedback :)

@dotansimha sounds fun, is that on our Slack or yours? drop me a line at<EMAIL_ADDRESS>perhaps.

@dotansimha sounds fun, is that on our Slack or yours? drop me a line at<EMAIL_ADDRESS>perhaps.

@glasser it's a shared channel, called #apollo-guild ;)


adding documentaion

First, thanks for your great work on automating the MQTT integration of Shelly devices to home-assistant.
After recently replacing a failed Shelly 1PM device, I tried to add the new device to home-assistant
I must have done something wrong, as I can't see the new device in home-assistant, the old (failed) device, which was removed from the Shelly app is still showing in home-assistant (naturally, it is inactive), and what's worse another working 1PM device stopped responding from home-assistant (works from the Shelly app)
I'd appreciate a step-by-step guide on how to add/replace/remove devices

how to add

Everything you need is here https://github.com/bieniu/ha-shellies-discovery-gen2/blob/master/README.md

replace

There is no (and will not be) a way to migrate/replace a device configured by the gen1 script to a device configured by the gen2 script.

remove devices

thanks @bieniu !
Removing the old device worked.
However, the new device (new 1PM) and older 1PM device that used to work (and I somehow ruined it) are still not working in home-assistant
What should the MQTT settings be for 1PM?

in the shellies_announce_gen2 automation, I added the 1PM devices under device_ids as "shellies/shellyplus1pm-............"
Is there anything else I need to do to get the devices to appear in home-assistant?


Jakarta Annotations

Replaces Javax annotations for Kiota-Java Components in favor of Jakarta annotations.

@baywet is this annotation effectively used by one or more compile/runtime components?
I think this SO answer is pretty relevant here.

In this case I would say that it's safe to remove the annotation.

@andreaTP Ramses was able to identify a replacement com.google.errorprone.annotations.Immutable, we already have that dependency here so it's a easy swap.

Imposing errorprone to users is a big toll imho, I would not be in favor of expanding it's usage, especially if explicit.

alright I guess we can just remove it then. CC @ramsessanchez (immutable)


added clearViewingHistory(movieID,seriesAll,callback) addressing issue #14

Issue #14 mentions both adding and removing from a user's watching.
This pull request simply removes an item from /viewingactivity and the whole series if that's required.
Example usage: clear the whole series of "Stranger Things" from the viewing history (assuming login has completed):
netflix.clearViewingHistory(80057281, true, (error, result) => {

	if(error) {
		console.error(error);
	}else{
		console.log(JSON.stringify(result));
	}

});

This is the equivalent of selecting "Hide from viewing history" (⊘) then "Hide series?" from /viewingactivity.
This pull request does not support adding anything to the watching

Hey @orgicus!
First of all, thanks for your contribution! I'm always grateful for help. However, next time please comment on or open an issue to make sure everyone is on the same page. In this case, for example, I already wrote functions to remove items from the viewing history and just forgot to commit and push them. That is absolutely my bad, but just writing a quick comment could have saved you some time.
That said, I took a brief look at your changes and over all, I'm really happy with them (especially the added documentation, thank you for that!). There are a few things I'd like to change and I still need to test your code and make sure it works, but I'm pretty confident it does.
There will be a code review coming up specifying the exact changes I'd like to see. Also, you should know that @genderquery and I are currently looking into transferring this repository's ownership to me. That will hopefully have no effect on your PR, but you never know.

Hey @orgicus,
I just wanted to check in with you about this PR. Are you going to adress the changes I requested or should I do it myself? That would have to be in a separate PR, though.
Please don't feel pressured or anything, I just want to perform some larger changes some time soon and those changes would lead to merge conflicts if they are merged before this PR.

@LBBO Thank you very much for your patience and taking your time to carefully address each point.
I have pushed changes that address most of your comments except the naming suggestions.
I'll reply to each comment one by one.

Hey @orgicus,
sorry for taking so long to get back to you! I'm pleased with your changes so far and I've commented on the naming topic. Once that is resolved, your PR will be ready to be merged.

@LBBO No worries at all (totally get it) and thank you for the feedback.

@LBBO I've pushed a few changes addressing the naming discussed above.
Unfortunately I didn't manage to test properly as Netflix had some issues today and login() didn't return the correct information.

Hey @orgicus,
the reason why login() didn't work was a bug that has been fixed in #23. Your branch is not up to date, but there aren't any conflicts so I can easily merge it into master. You forgot a few minor details such as updating the README after changing the function's names, but I'll take care of that for you. I tested your code and it seems to work so there is nothing keeping me from merging anymore!
Thanks again for your help!


kid3: 3.5.1 -> 3.6.0

Semi-automatic update generated by https://github.com/ryantm/nix-update tools. These checks were done:

built on NixOS
/tmp/tmp.FSRC6h0qrp /home/ryantm/.cache/nixpkgs
/home/ryantm/.cache/nixpkgs
ran /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/bin/kid3-cli -h got 0 exit code
ran /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/bin/kid3-cli --help got 0 exit code
ran /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/bin/kid3-cli -h and found version 3.6.0
ran /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/bin/kid3-cli --help and found version 3.6.0
found 3.6.0 with grep in /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0
found 3.6.0 in filename of file in /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0
directory tree listing: https://gist.github.com/55e96f99bdc127e8e0ab453dc59880e8

cc @AndersonTorres for review

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: kid3
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowBroken = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowBroken = true; }
to ~/.config/nixpkgs/config.nix.

Success on aarch64-linux (full log)
Attempted: kid3
Partial log (click to expand)
shrinking /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0/lib/kid3/plugins/libmusicbrainzimport.so
shrinking /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0/lib/kid3/plugins/libfreedbimport.so
shrinking /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0/lib/kid3/plugins/libdiscogsimport.so
shrinking /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0/lib/kid3/plugins/libamazonimport.so
gzipping man pages under /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0/share/man/
strip is /nix/store/3zq400fri5dv7d30lpxlqm2v9y1iis6j-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0/lib  /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0/bin
patching script interpreter paths in /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0
checking for references to /build in /nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0...
/nix/store/d1phv1wxpdym2dh2ac7cfm9564xig3mv-kid3-3.6.0

Success on x86_64-linux (full log)
Attempted: kid3
Partial log (click to expand)
shrinking /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/lib/kid3/plugins/libmusicbrainzimport.so
shrinking /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/lib/kid3/plugins/liboggflacmetadata.so
shrinking /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/lib/kid3/plugins/libtaglibmetadata.so
shrinking /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/lib/kid3/plugins/libacoustidimport.so
gzipping man pages under /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/share/man/
strip is /nix/store/fzcs0fn6bb04m82frhlb78nc03ny3w55-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/lib  /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0/bin
patching script interpreter paths in /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0
checking for references to /build in /nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0...
/nix/store/b7qyswz8glvmami13ij30d7xxsi6631n-kid3-3.6.0


HADOOP 17290 to 17811. ABFS Backports

PR contains cherry-pick of the following ABFS driver commits:

https://github.com/apache/hadoop/pull/2520
https://github.com/apache/hadoop/pull/3153
https://github.com/apache/hadoop/pull/3221

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
12m 58s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  1s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+0 :ok:
markdownlint
0m  0s

markdownlint was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

+1 :green_heart:
test4tests
0m  0s

The patch appears to include 44 new or modified test files.

_ branch-3.3 Compile Tests _

+1 :green_heart:
mvninstall
37m 20s

branch-3.3 passed

+1 :green_heart:
compile
0m 33s

branch-3.3 passed

+1 :green_heart:
checkstyle
0m 25s

branch-3.3 passed

+1 :green_heart:
mvnsite
0m 39s

branch-3.3 passed

+1 :green_heart:
javadoc
0m 29s

branch-3.3 passed

+1 :green_heart:
spotbugs
1m  4s

branch-3.3 passed

+1 :green_heart:
shadedclient
19m 22s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 37s

the patch passed

+1 :green_heart:
compile
0m 33s

the patch passed

+1 :green_heart:
javac
0m 33s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
checkstyle
0m 22s

the patch passed

+1 :green_heart:
mvnsite
0m 34s

the patch passed

+1 :green_heart:
javadoc
0m 22s

the patch passed

+1 :green_heart:
spotbugs
1m 20s

the patch passed

+1 :green_heart:
shadedclient
20m 39s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
unit
2m 14s

hadoop-azure in the patch passed.

+1 :green_heart:
asflicense
0m 37s

The patch does not generate ASF License warnings.

101m  2s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3253/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3253

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell markdownlint

uname
Linux e96fdeec2246 4.15.0-128-generic #131-Ubuntu SMP Wed Dec 9 06:57:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
branch-3.3 / 1ff850ad6d5f1433fd119eab12af380d28378f7f

Default Java
Private Build-1.8.0_292-8u292-b10-0ubuntu1~18.04-b10

Test Results
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3253/1/testReport/

Max. process+thread count
549 (vs. ulimit of 5500)

modules
C: hadoop-tools/hadoop-azure U: hadoop-tools/hadoop-azure

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3253/1/console

versions
git=2.17.1 maven=3.6.0 spotbugs=4.2.2

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

TEST RESULTS:
HNS Account Location: East US 2
NonHNS Account Location: East US 2, Central US
AppendBlob-HNS-OAuth

[ERROR] Failures:
[ERROR]   ITestAbfsStreamStatistics.testAbfsStreamOps:140->Assert.assertTrue:42->Assert.fail:89 The actual value of 99 was not equal to the expected value
[ERROR] Errors:
[ERROR]   ITestAzureBlobFileSystemLease.testTwoWritersCreateAppendNoInfiniteLease:178->twoWriters:166 » IO
[ERROR] Tests run: 558, Failures: 1, Errors: 1, Skipped: 98
[ERROR] Errors:
[ERROR]   ITestAbfsFileSystemContractSecureDistCp>AbstractContractDistCpTest.testDistCpWithIterator:635 » TestTimedOut
[ERROR] Tests run: 271, Failures: 0, Errors: 1, Skipped: 76

HNS-OAuth

[ERROR] Failures:
[ERROR]   TestAbfsClientThrottlingAnalyzer.testManySuccessAndErrorsAndWaiting:171->fuzzyValidate:49 The actual value 9 is not within the expected range: [5.60, 8.40].
[ERROR] Tests run: 103, Failures: 1, Errors: 0, Skipped: 1
[WARNING] Tests run: 558, Failures: 0, Errors: 0, Skipped: 98
[ERROR] Errors:
[ERROR]   ITestAbfsFileSystemContractSecureDistCp>AbstractContractDistCpTest.testDistCpWithIterator:635 » TestTimedOut
[ERROR] Tests run: 271, Failures: 0, Errors: 1, Skipped: 52

HNS-SharedKey

[WARNING] Tests run: 103, Failures: 0, Errors: 0, Skipped: 2
[ERROR] Failures:
[ERROR]   ITestAbfsRestOperationException.testCustomTokenFetchRetryCount:93->testWithDifferentCustomTokenFetchRetry:122->Assert.assertTrue:42->Assert.fail:89 Number of token fetch retries (4) done, does not match with fs.azure.custom.token.fetch.retry.count configured (0)
[ERROR] Tests run: 558, Failures: 1, Errors: 0, Skipped: 54
[ERROR] Errors:
[ERROR]   ITestAbfsFileSystemContractDistCp>AbstractContractDistCpTest.testDistCpWithIterator:635 » TestTimedOut
[ERROR]   ITestAbfsFileSystemContractSecureDistCp>AbstractContractDistCpTest.testDistCpWithIterator:635 » TestTimedOut
[ERROR] Tests run: 271, Failures: 0, Errors: 2, Skipped: 40

NonHNS-SharedKey

[ERROR] Failures:
[ERROR]   TestAbfsClientThrottlingAnalyzer.testManySuccessAndErrorsAndWaiting:171->fuzzyValidate:49 The actual value 14 is not within the expected range: [5.60, 8.40].
[ERROR] Tests run: 103, Failures: 1, Errors: 0, Skipped: 2
[WARNING] Tests run: 558, Failures: 0, Errors: 0, Skipped: 276
[ERROR] Errors:
[ERROR]   ITestAbfsFileSystemContractDistCp>AbstractContractDistCpTest.testDistCpWithIterator:635 » TestTimedOut
[ERROR]   ITestAbfsFileSystemContractSecureDistCp>AbstractContractDistCpTest.testDistCpWithIterator:635 » TestTimedOut
[ERROR] Tests run: 271, Failures: 0, Errors: 2, Skipped: 40

I've already merged the HADOOP-17811 retry one as it was painless; doing a distcp one next. The big troublespot is the paths one...can you provide that as a PR all on its own? thanks

I've already merged the HADOOP-17811 retry one as it was painless; doing a distcp one next. The big troublespot is the paths one...can you provide that as a PR all on its own? thanks

Sure! The paths one conflicts with the missing Correlation ID PR in 3.3, so that one (https://github.com/apache/hadoop/pull/2520) needs to go in first. Will raise backport PRs for both


Multi-site / Regional Resources

Multi-site Resources are resources you define once but exist in more than one network connectivity context (i.e. "Site")
One example would be a regional service you wish to expose to your work force, say an authoritative DNS service. This resource could be defined once, e.g. dns.company.com and then deployed regionally in each VPC you wish to serve as a point of presence (POP). You would only need to define this resource once in Firezone and attach a single access policy, but associate it to multiple Sites/Gateways.
- [ ] Expose "Add Multi-site Resource" feature flag
- [ ] #2801
- [ ] Document how multi-site resource routing works
- [ ] https://github.com/firezone/firezone/issues/6268
- [ ] https://github.com/firezone/firezone/issues/5446

Notes from customer call:
They have the same DNS resources in both staging and prod. So there are in fact 2 resources with the same DNS address seen by customer in his client. Multi-site won't quite solve the problem here because we would need PAM at the site level, not Resource level in this case. In other words, the actual address to use would be solved by Unlocking the prod site, prioritizing it for routing.

They have the same DNS resources in both staging and prod.

Does the DNS address resolve to the same IPs in both cases?

They have the same DNS resources in both staging and prod.

Does the DNS address resolve to the same IPs in both cases?

Yes, they also have CIDR resources corresponding to prod/staging that are numbered the same. This seems to be quite common for staging and prod if the customer is following the "make staging exactly like prod" ideology.

I think this pretty much works, just need to iron out any connlib edge cases.


BTE not resolving human-readable names for some UMLS identifiers

In the response to this query, BTE returns several results.  A snippet of the nodes is shown below.  BTE tries to populate the "name" field with human-readable names, but it fails on several of the nodes with UMLS as the primary identifier.  I'm guessing that this is because BTE is using mychem.info to determine the human-readable name, and it appears that some UMLS-only compounds are not found in mychem.info.  For example, from the query results below, mychem.info does return results for Homogentisic Acid via http://mychem.info/v1/query?q=pharmgkb.xrefs.umls:C0173083, but trying to resolve the other UMLS identifiers does not return any results (e.g., http://mychem.info/v1/query?q=pharmgkb.xrefs.umls:C0001128).  So I'm guessing this also comes back to https://github.com/biothings/mychem.info/issues/10
        "knowledge_graph": {
            "nodes": {
                "MONDO:0008753": {
                    "category": "biolink:Disease",
                    "name": "alkaptonuria",
                    "attributes": [...]
                },
                "UMLS:C0001128": {
                    "category": "biolink:ChemicalSubstance",
                    "name": "UMLS:C0001128",
                    "attributes": [...]
                },
                "MESH:D006713": {
                    "category": "biolink:ChemicalSubstance",
                    "name": "Homogentisic Acid",
                    "attributes": [...]
                },
                "UMLS:C0243076": {
                    "category": "biolink:ChemicalSubstance",
                    "name": "UMLS:C0243076",
                    "attributes": [...]
                },
                "UMLS:C0450442": {
                    "category": "biolink:ChemicalSubstance",
                    "name": "UMLS:C0450442",
                    "attributes": [...]
                }
            },

May be related to #242, #246, #247

Note that switching to Eric's SRI-based node normalization will not fix the UMLS IDs listed above, since it also finds no mappings for it...

Closing. As noted above, the SRI-based node normalization will not fix this issue because it doesn't recognize the UMLS IDs pasted above


fix: resolve incorrect redirect to 404 page on search fields

fix : resolve incorrect redirect to 404 page on search fields
Closes #3949
Description
The search functionality in explore was redirecting users to a 404 error page
when they entered a query. This was caused by incorrect URL routing
in the search handle function
This commit fixes the routing logic by ensuring the search terms
are correctly encoded, thus preventing the 404 error.
Related Tickets & Documents

Mobile & Desktop Screenshots/Recordings
https://github.com/user-attachments/assets/13ba7163-a350-4ace-8571-163aea59db28
Steps to QA

Tier (staff will fill in)

[ ] Tier 1
[ ] Tier 2
[ ] Tier 3
[ ] Tier 4

[optional] What gif best describes this PR or how it makes you feel?

Really sorry due to prettier some lines sorted unintentionally

@brandonroberts  sorry it  took look to apply changes, I am quite knew to open source, So I didn't knew what to do.

@Mandeep56Singh no problem, thanks


update testcafe version

/cc @inikulin @AlexanderMoskovkin
We have breaking change in https://github.com/DevExpress/testcafe/issues/650

I have a couple of late thoughts about https://github.com/DevExpress/testcafe/issues/650
@helen-dikareva said I'd better post them here
so, we have test{num} in the screenshot path, e.g. test-1, test-2, ...
if the test is quarantined, we use test{num}{run}, e.g. test-1-1, test-1-2, ...
One may think we are talking about tests number 1.1, 1.2, ...
I'd add some descriptive word like test-1-run-1, test-1-run-2, ...
What do you think?

May be attempt?

Nope, these are not attempts. Attempts is something we expect to either succeed or fail. From the point of view of testing framework, all runs are successful - we have determined the test status - failed or passed.

@inikulin so what do think about @VasilyStrelyaev comment https://github.com/DevExpress/testcafe/pull/732#issuecomment-241020421 ?

first of all we can't use different test-N dirs, which one you will specify in report? This is the only thing I care about here. Once you'll find how to deal with it - everything else will be just fine

lgtm
@inikulin let's merge this?


Suppress Log message for BC incorrect length

Hi - would it be possible to change the log message in KeyRingBuilder.java for the code:
        try {
            pgpKeyPair = ImplementationFactory.getInstance().getPGPKeyPair(type.getAlgorithm(), keyPair, new Date());
        } catch (PGPException e) {
            // When generating EdDSA keys, the private key has an encoding length of 33 instead of 34, which results
            //  in an exception. Therefore we just try again as a workaround.
            LOGGER.log(Level.INFO, "Private key has wrong length. Try again.", e);
            pgpKeyPair = generateKeyPair(spec);
        }

from info to debug?  Or at least drop passing the exception?
To a normal user who sees this:
INFO: Private key has wrong length. Try again.
org.bouncycastle.openpgp.PGPException: Exception constructing key
        at org.bouncycastle.openpgp.operator.bc.BcPGPKeyConverter.getPrivateKey(Unknown Source)
        at org.pgpainless.implementation.BcImplementationFactory.jceToBcKeyPair(BcImplementationFactory.java:164)
        at org.pgpainless.implementation.BcImplementationFactory.getPGPKeyPair(BcImplementationFactory.java:139)
        at org.pgpainless.key.generation.KeyRingBuilder.generateKeyPair(KeyRingBuilder.java:488)
        at org.pgpainless.key.generation.KeyRingBuilder$WithAdditionalUserIdOrPassphraseImpl$BuildImpl.build(KeyRingBuilder.java:356)
        at com.flowcrypt.shared.crypto.Pgp.generateKey(Pgp.kt:385)
        at com.flowcrypt.ekm.commands.GenPrivateKeys.processUid(GenPrivateKeys.kt:60)
        at com.flowcrypt.ekm.commands.GenPrivateKeys.access$processUid(GenPrivateKeys.kt:23)
        at com.flowcrypt.ekm.commands.GenPrivateKeys$genAndStoreForCsvFile$1.accept(GenPrivateKeys.kt:45)
        at com.flowcrypt.ekm.commands.GenPrivateKeys$genAndStoreForCsvFile$1.accept(GenPrivateKeys.kt:23)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
        at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.lang.RuntimeException: private key encoding has incorrect length
        at org.bouncycastle.crypto.util.PrivateKeyFactory.getRawKey(Unknown Source)
        at org.bouncycastle.crypto.util.PrivateKeyFactory.createKey(Unknown Source)
        at org.bouncycastle.openpgp.operator.bc.BcPGPKeyConverter.implGetPrivateKeyPKCS8(Unknown Source)
        ... 20 more

it gives the strong impression something has gone wrong, but you've already got it covered.

Sure I can fix that :)

I opted to INFO-log that key generation failed and that we try again, but move the exception logging into a FINER-log.

I think that's reasonable. Thanks!

Thanks very much @vanitasvitae !


Single & Multi Center Studies [API]

See ticket #39

Read https://wiki.cdisc.org/display/USDMIGv3/USDM+API and note the API notations on the changes diagram


version.py update for 0.9.0 release

I guess this branch doesn't need to be merged into master so I will close this PR.


Add PHP 7.4 support

Magento 2.4 has been out for a while, when can we expect to see php 7.4 support?

Hi Pepijn you are totally right. At this moment we are testing support for M2.4 and PHP 7.4 and we expect to release a newer version with some new features and this compatibility within a few weeks.

Bump :)

@Returnless-com  we have the module installed with M2.4.1, can the focus maybe be on only PHP 7.4?

We've just completed some tests and verified that the extension works properly using PHP 7.4 + M2.4.1 and M.2.4.2.
Do you currently have any issues with the extension on PHP 7.4?

We've released version 1.0.7 with compatibility for PHP 7.4. If you have any questions or issues please let us know. Thank you for your patience.


cann't download for chrome

cann't download for chrome

met the same issue.

met the same issue.

This is a duplicate of #37

Duplicate of #37 , let's track it there.


Chip cuts off text with mono spaced fonts inside Row

Package
google_fonts
Existing issue?

[X] I checked the existing issues

What happened?
Example
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorSchemeSeed: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatelessWidget {
  final String title;

  const MyHomePage({
    super.key,
    required this.title,
  });

  Widget chip(BuildContext context) => InputChip(
        labelStyle: GoogleFonts.inconsolata(
            textStyle: Theme.of(context).textTheme.bodyLarge),
        label: Text(
          'My awesome Chip iii',
        ),
      );

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          chip(context),
          Row(
            children: [
              chip(context),
            ],
          ),
        ],
      ),
    );
  }
}

Expected vs actual result:
The given example will result in the following picture where both chips are different.

Relevant log output
No response

Resolving my own issue:
This has to do with the Font not being loaded and being swapped without the Widget recalculating its width. Waiting for the fonts being loaded first resolves the issue:
GoogleFonts.inconsolata();
await GoogleFonts.pendingFonts();


Configure mockserver expectations using json file in Java (programmatically)

Hello,
I would like to know if it's possible to configure mockserver with a json file programatically?
This can be done using command line:
java -Dmockserver.initializationJsonPath="org/mockserver/server/initialize/initializerJson.json" -jar ~/Downloads/mockserver-netty-5.6.0-jar-with-dependencies.jar -serverPort 1080 -logLevel INFO
Can we load the file programmatically, create Expectations out of it and configure ClientAndServer?

yes for example the following command works on my local machine:
java -Dmockserver.initializationJsonPath=/Users/jamesbloom/git/mockserver/mockserver/mockserver-core/src/test/resources/org/mockserver/server/initialize/initializerJson.json -jar ~/Downloads/remotecontent.jar -serverPort 1080 -logLevel INFO

I have also added an extra log output to make it clearer what expectations have been created by the file initialiser.


Required Indicator got disappeared immediately after the page reload

The required configuration of the Select component does not work when I use requiredSelect.setRequiredIndicatorVisible(true).

The issue is still present in Vaadin version 14.4.2.

The issue is still present in Vaadin version 14.5.3


Details about the correspondence between 2D and 3D labels.

Hello waymo open dataset team,
Thanks for your nice work. I am interesting to the newly updated correspondence between 2D and 3D labels in v1.3. However, I cannot find any details or tutorials for it. Could you please provide more information on it?
Best regards

Hi Jihan,
the correspondence is stored as part of the Label proto in the association field. It is 2D-to-3D association, so a camera label stores object_id of the corresponding lidar label if the objects were associated.
Here is an example how it is used for finding corresponding 2D and 3D key point labels: group_object_labels .
Note, that at the moment we have the association information only for camera labels of human type objects (pedestrians, cyclists).
Please feel free to re-open the ticket if you need more info.
Regards,
Alexander

Thank you so much. Your reply is really helpful!


Cloud credentials support for Linode node driver

https://github.com/rancher/ui/pull/2834
https://github.com/rancher/rancher/pull/20281

Note, there is a known issue that we see other cloud creds when try to add Linode node template. This is a known issue and is addressed here: https://github.com/rancher/rancher/issues/21601

master-head (7/19/19) (4aa4e1ab)
This adds the ability to leverage Cloud Credentials with Linode.
Shown below is add Linode cloud credential via add node template method:

Shown is add Linode cloud credential via Cloud Credentials page:

Both these modals work as expected. I was successfully able to create Linode Cloud Credentials with my API key. I fuzzed data (plug in garbage data) and tried to break this. I could not identify any issues.
This cloud credential also features validation like with ec2 and digitalocean. If your API key does not validate you will get a message explaining the issue:

We basically make a call to https://api.linode.com/v4/profile to try to validate the API. If this fails the error of the issue is shown in the UI similar to how we handle validation with DO/EC2 api keys.
Supplying NO key results in UI taking no action. The field is not required (Access Token). As such I opened a separate issue for this here: https://github.com/rancher/rancher/issues/21651
The core functionality however is working without any issues.
UI/HTTP/API look good. UI conforms to API schema.

master-head (7/19/19) (4aa4e1ab)
Additional checks were performed per the internal node template test plan (it includes cloud credential checks). Also ensured can edit cloud credential and delete without any issues both as admin and regular users (also only creator can see their own cloud credentials). The internal test plan was updated to include Linode.
All of these passed except for existing known issues. I found one issue when edit a Linode node template, cloud credential is missing: https://github.com/rancher/rancher/issues/21652
Below are some other known issues.
https://github.com/rancher/rancher/issues/19759
https://github.com/rancher/rancher/issues/21601
https://github.com/rancher/rancher/issues/21651
https://github.com/rancher/rancher/issues/21503
https://github.com/rancher/rancher/issues/21215
https://github.com/rancher/rancher/issues/20577
https://github.com/rancher/rancher/issues/19756


Moved logo on top and added twitter and contributors badges

Resolving #501

Hello @myzeprog,Thanks again for the PR! It's HACKTOBERFEST! We want to show our appreciation by sending                                              you some special Hacktoberfest swag. If you have not already, could you please fill out                                              this form so we can send it to you? Thanks!                                             Team SendGrid DX

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: myzeprog:x: mbernierYou have signed the CLA already but the status is still pending? Let us recheck it.


JS bogus 'use of returnless function' with Function.prototype.call

See https://lgtm.com/projects/g/minj/foxtrick/snapshot/86707c213526a70e3a74b760ea06338715a23355/files/content/util/dom.js?sort=name&dir=ASC&mode=heatmap#x571bf5c1337646c:1

Yes, that is a false positive. Thanks for the report.
We have actually fixed it already (https://github.com/Semmle/ql/pull/2270), we are just waiting for the fix to deploy on LGTM.
That should happen within a few weeks.
I just ran a test locally, and the fix does remove the false positives in your foxtrick project.

Thanks for the quick response. Looking forward to it.

The fix has been deployed to LGTM, so the false positives you reported no longer appear.
I'm closing the issue.


Hook up the PyPI feed to PubSub.

Also a small fix to the XML handling.

Merging this since I've converted it to support Cloud Run and it should work 😄

Merging this since I've converted it to support Cloud Run and it should work 😄


Fix config overwrite

Removes the line which overwrites the config.

whoops, I forgot to remove it myself after testing :P
thank you!!


Merge all per-component replication components into 1?

We might need to store per entity/component replication metadata.
In which case it might make sense to group all the per-component replication components (OverrideTarget, ReplicateOnce, etc.) into one component

might be detrimental to multithreading


[android-exoplayer] play a m3u8 with 404 but trigger the onError callback method

try to set the
source={{uri:https://github.com/404.m3u8}}
onError ={()=>alert(1)}

onError will never call and the video will stuck.

I think this https://github.com/react-native-community/react-native-video/pull/799 will fix your problem.


IOError while performing random reads on Windows

Hi All,
I am running some tests doing random reads with LevelDBJni on Windows 2008 server. I am running into this exception stack trace consistently when I try to perform random reads. Any pointers would be really helpful.
Some of investigation that I have done:

The disk didn't run out of space, still there is lot of available space.
This is not specific to one machine, it is reproducible everywhere.

org.iq80.leveldb.DBException: IO error: D:\temp\leveldb\randomreadwrite\000785.sst: Could not create random access file.
at org.fusesource.leveldbjni.internal.JniDB.get(JniDB.java:78)
at org.fusesource.leveldbjni.internal.JniDB.get(JniDB.java:68)
at com.clearwell.persistentmap.leveldb.LevelDBPersistentMap.get(LevelDBPersistentMap.java:72)
at com.clearwell.persistentmap.leveldb.RandomReadWriteTest.searchData(RandomReadWriteTest.java:88)
at com.clearwell.persistentmap.leveldb.RandomReadWriteTest.testCreateAndSearch(RandomReadWriteTest.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:21)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:194)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:53)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:185)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:684)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:391)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.fusesource.leveldbjni.internal.NativeDB$DBException: IO error: D:\temp\leveldb\randomreadwrite\000785.sst: Could not create random access file.
at org.fusesource.leveldbjni.internal.NativeDB.checkStatus(NativeDB.java:200)
at org.fusesource.leveldbjni.internal.NativeDB.get(NativeDB.java:307)
at org.fusesource.leveldbjni.internal.NativeDB.get(NativeDB.java:300)
at org.fusesource.leveldbjni.internal.NativeDB.get(NativeDB.java:293)
at org.fusesource.leveldbjni.internal.JniDB.get(JniDB.java:73)
EDIT: Attaching a unit test which reproduces this issue consistently.
https://gist.github.com/bin01/5447282

Hi!,
I've been having this error for a while in Windows, which I use as a development environment. I modified the leveldb code to get the last error using GetLastError, and leveldbjni shows the problem: error 32, the file is being used by another process.
I think the main problem is leveldb trying to read from a sst that is being deleted during a compaction.
Retrying to read after an exception is thrown (which I filtered if  if the exception message contains error code 32 :S )  seems to fix the problem.
If it does fix the issue, is not a elegant solution. I had to modify the way I "get" and the way I iterate using "seek", to catch the exception and retry.

@acorbellini : Can you please elaborate a little bit ,
I get that problem (only on windows) and not using
any compaction.

I didn't try to disable the compaction algorithm to check if it breaks.
To clarify, just in case, I meant the inner compaction algorithm, not the compression algorithm. This algorithm joins sst files from one level with sst files in the next level. My guess is that, in Windows, LevelDB is trying to read a file that has been deleted because it was merged with the next level. If you retry the "get" operation (or "seek" if you're using a cursor), LevelDB reads from the right sst file.
You can read more about LevelDB's compaction algorithm here: https://htmlpreview.github.io/?https://raw.githubusercontent.com/google/leveldb/master/doc/impl.html)

@acorbellini : sorry you mean just to catch the exception and retry solved the problem ?

Sadly, yes. At least that worked for me. I don't know if this is fixed in newer versions of leveldb.

thanks will try it :+1:

Ok, this happened to me again, I tried using compactRange after opening the
db, and (maybe?) it started working again.
El mar., 14 jul. 2015 a las 15:19, Roman Mandeleil (<
<EMAIL_ADDRESS>escribió:

thanks will try it [image: :+1:]
—
Reply to this email directly or view it on GitHub
https://github.com/fusesource/leveldbjni/issues/28#issuecomment-121329077
.

Ok, this happened to me again and in a different context. The same error
was thrown when an iterator was not closed after use. Process Explorer
showed that the file that throws the error was being held by javaw.exe, so
I did a force close of the handle (in PE), but the handle was then opened
again by leveldb and never released. Hope it helps someone.
El jue., 20 ago. 2015 a las 17:05, Alejandro Corbellini (<
<EMAIL_ADDRESS>escribió:

Ok, this happened to me again, I tried using compactRange after opening
the db, and (maybe?) it started working again.
El mar., 14 jul. 2015 a las 15:19, Roman Mandeleil (<
<EMAIL_ADDRESS>escribió:

thanks will try it [image: :+1:]
—
Reply to this email directly or view it on GitHub
https://github.com/fusesource/leveldbjni/issues/28#issuecomment-121329077
.

I had the same issue on Windows (I am afraid this error did not happen on Linux).
The problem was solved by closing the iterator (which is closeable). In some case my (bugged) code forgot to close it.
I suppose that LevelDB keep the file open until the resource (iterator) is deallocated.
DBIterator iterator = db.iterator();
iterator.seek(myKey);
while (iterator.hasNext()) {
	/* ..some stuffs.. */
       /* Any exception here exit the function without closing the iterator */
}
iterator.close(); // potentialy missed line...

Closing it in any case definitely solved the issue.
try (DBIterator iterator = db.iterator()) { // Thx to autocloseable feature)
  iterator.seek(myKey);
  while (iterator.hasNext()) {
	/* ..some stuffs.. */
  }
}

Still here in win10 64 in leveldbjni 1.8

Still here in win10 64 in leveldbjni 1.8


[Resolves #27] Improve api in class init

require keyword-only arguments in init functions to make class instantiation more explicit
improve init docstrings
move update_docval utility function to a utils module and improve the docstring to better explain usage

I also tried to remove the need for init params columns and colnames in containers that derive from DynamicTable since those are defined at definition time, however, I discovered those are used when building the container from disk, so they need to remain.

Awesome, thanks for the review @rob-luke!


Less reset center

fix for #150

This is definitely better, but it still feels like a downgrade from how the stitch menu works on the main branch. I started refactoring the geometry library to see what I can do about this issue. I don't have anything ready enough to share yet though!

I don't understand. What exactly is different?

@courtneypattison I can tell you that whatever issue you are experiencing, it is most likely not due to the geometry library.
It is extremely difficult to have the following features co-exist:

Align to the left on long document load, align to center if the document fits in the grid
Document transform matrix is relative to the recenter of the document

Basically, it's difficult to trigger the recenter function once a new document is loaded but only once the layout states are completely finished being set. I was able to get away away with the left alignment by just calling resetTransformMatrix any time the layoutWidth or layoutHeight changed.
So possible solutions are:

stop trying to align the PDF to the left on load
make the document transform matrix origin be the upper left of the pdf (extremely annoying to do matrix operations if we go this route)
Figure out a way of triggering the resetTransformMatrix after layoutWidth and layoutHeight has finished being updated ONLY by a new document being loaded. This one seems simple on the surface but is actually difficult. Maybe not impossible though?

Take your pick I guess.

Figure out a way of triggering the resetTransformMatrix after layoutWidth and layoutHeight has finished being updated ONLY by a new document being loaded.

Went with this option.

Well nevermind I guess I broke it again.

okay I'm pretty sure it's actually fixed now 😅

I made a PR #158 for moving the origin to the top left!

I made a PR #158 for moving the origin to the top left!

I didn't realize this was desirable. I purposefully moved the origin to center.

I see. Makes sense to me.


[QUESTION] How to handle mutually exclusive options

First check

[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the Typer documentation, with the integrated search.
[X] I already searched in Google "How to X in Typer" and didn't find any information.
[X] I already searched in Google "How to X in Click" and didn't find any information.

Description
I often find myself making mutually exclusive options. I'm used to argparse, which has nice support for that. What is the best way to do this in Typer?
I.e. how to (best) achieve something like this argparse code:
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("--opt-A, action="store_true")
group.add_argument("--opt-B, action="store_true")

I found several mentions of ways to do it with Click, but none that were "built-in", nor I'm I clear on how I'd use that with Typer.
Any help would be much appreciated. I really like the feel of Typer!

In some cases (like the one you have here for simple values), you might just be able to get away with an enum implementation instead. I used typer.Option here but you could make it an Argument instead. It's not entirely the same but you can probably get creative with how you handle the enum values.
import typer
from enum import Enum

app = typer.Typer()

class SomeEnum(str, Enum):
    A = "optA"
    B = "optB"

@app.command()
def main(choice: SomeEnum = typer.Option(...)):
    print(choice.value)

if __name__ == "__main__":
    app()

If you wanted to pass values to optA or optB, you could cheat like this:
import typer
from enum import Enum
from typing import Tuple, List
from itertools import chain

app = typer.Typer()

def combinedEnum(enums: List[Enum]) -> Enum:
    if not all(issubclass(e, Enum) for e in enums):
        raise Exception(f"Not all Enums: {enums}")
    return Enum("CombinedEnumOptions", [(i.name, i.value) for i in chain(*enums)])

class SomeEnum(str, Enum):
    A = "optA"
    B = "optB"

class OptAOptions(str, Enum):
    go = "go"
    stop = "stop"

class OptBOptions(str, Enum):
    red = "red"
    green = "green"

MainCombinedOptions = combinedEnum([OptAOptions, OptBOptions])
@app.command()
def main(choice: Tuple[SomeEnum, MainCombinedOptions] = typer.Option((None, None))):
    option, arg = choice
    print(f"The exclusive option {option} has value of '{arg}'")

if __name__ == "__main__":
    app()

Is this the right way to do it? Absolutely not, but it works, and who knows when the next Typer release is? :P Also, for your help menu, you would probably have to let the user know what the valid options by supplying the text yourself. And you'd probably also need a callback to verify any options to optA/optB are the right ones. It's messy but sometimes you gotta just do things. 🗡

Are there any new solutions available in typer for this problem yet?

Are there any new solutions available in typer for this problem yet?

Hi all, any update on this?

Just as an additional workaround, you might be able to use subcommands instead. E.g. if the mutually exclusive options are aaa and bbb instead of:
foo --with-aaa --other-options arg1 arg2
foo --with-bbb --other-options arg1 arg2

you will have
foo aaa --other-options arg1 arg2
foo bbb --other-options arg1 arg2

I am not saying that this can always be used, but when choosing one of the mutually exclusive options is required, it feels quite natural.

Hey my fellow Pythonistas, I often comeback to this issue from time to time because I keep facing the issue so I took @daddycocoaman answer and came up with this:
import typer

app = typer.Typer()

def MutuallyExclusiveGroup(size=2):
    group = set()
    def callback(ctx: typer.Context, param: typer.CallbackParam, value: str):
        # Add cli option to group if it was called with a value
        if value is not None and param.name not in group:
            group.add(param.name)
        if len(group) > size-1:
            raise typer.BadParameter(f"{param.name} is mutually exclusive with {group.pop()}")
        return value
    return callback

exclusivity_callback = MutuallyExclusiveGroup()

@app.command()
def main(
        optA: str = typer.Option(None, callback=exclusivity_callback),
        optB: int = typer.Option(None, callback=exclusivity_callback)
    ):
    typer.echo(f"Option A is {optA} and Option B is {optB}")

if __name__ == "__main__":
    app()

Using the function MutuallyExclusiveGroup I return another function within a closure where there is state, a set called group as typer invokes the callbacks the logic will check if more than one option I have added the exclusivity_callback was called in the command line and raises an exception.
$ python cli.py --optb 3 --opta wow
Usage: cli.py [OPTIONS]

Error: Invalid value for '--opta': optA is mutually exclusive with optA

$ python cli.py --optb 3
Option A is None and Option B is 3

$ python cli.py --opta 3 --optb wow
Usage: cli.py [OPTIONS]
Try 'cli.py --help' for help.

Error: Invalid value for '--optb': wow is not a valid integer

$ python cli.py --opta wow --optb 3
Usage: cli.py [OPTIONS]

Error: Invalid value for '--optb': optB is mutually exclusive with optA

$ python cli.py --opta wow
Option A is wow and Option B is None

If you need to ensure at least one of the options are passed to the command line then manually check it in the body of your function for the command like so
@app.command()
def main(
        optA: str = typer.Option(None, callback=exclusivity_callback),
        optB: int = typer.Option(None, callback=exclusivity_callback)
    ):

    if not any([optA, optB]):
        raise typer.BadParameter("At least optA or optB is required.")

    typer.echo(f"Option A is {optA} and Option B is {optB}")

If there's a way to expose the functionality of click-option-group, that might be a good way to achieve this.

Just adding another "I'd like to see this too" comment.

My current use case: Options --quiet / -q and --verbose / -v that control how much output my cmd line tool displays: There is no point in passing / accepting them both; a way to make them mutually exclusive would help me a lot.

@cj81499: Thanks for your advice, much appreciated! 👍🏻. I use a --log-level Option now that uses an enum.

@dd-ssc That way, you can still say quiet, default, and verbose, clever!

I could - but I was lazy and just copied Python logging log levels, because there is already sample code for mapping a command line argument to a log level in the Python HOWTO (below the --log=INFO code bit).

Click has a "cls" kwarg that allows one to use custom classes in order to extend the Option class. It is really usefull to handle mutually inclusive/exclusive options (see below ⬇), and I think it would be nice if we could access to that argument (or something similar) when using typer.Option.
import click

class Mutex(click.Option):
    """Mutually exclusive options (with at least one required)."""

    def __init__(self, *args, **kwargs):
        self.not_required_if = kwargs.pop('not_required_if')  # list
        assert self.not_required_if, '"not_required_if" parameter required'
        kwargs['help'] = (f'{kwargs.get("help", "")}  [required; mutually '
                          f'exclusive with {", ".join(self.not_required_if)}]')
        super().__init__(*args, **kwargs)

    def handle_parse_result(self, ctx, opts, args):
        current_opt = self.name in opts  # bool
        if current_opt:
            i = 1
        else:
            i = 0
        for mutex_opt in self.not_required_if:
            if mutex_opt in opts:
                i += 1
                if current_opt:
                    msg = (f'Illegal usage: "{self.name}" is mutually '
                           f'exclusive with "{mutex_opt}".')
                    raise click.UsageError(msg)
                else:
                    self.prompt = None
        if i == 0:
            signature = ' / '.join(self.opts + self.secondary_opts)
            msg = (f"Missing option '{signature}' (or any of the following "
                   f"options: {', '.join(self.not_required_if)})")
            raise click.UsageError(msg)
        return super().handle_parse_result(ctx, opts, args)

@click.command()
@click.option('--optA', type=STRING, cls=Mutex, not_required_if=('optB',))
@click.option('--optB', type=INT, cls=Mutex, not_required_if=('optA',))
def main(optA, optB):
    click.echo(f'Option A is {optA} and Option B is {optB}')

if __name__ == '__main__':
    main()

Do you guys think this is something desirable/possible ?

Although there are many workarounds, none of these will give a helpful message to users about the right syntax the command will accept. Like the example below (autogenerated by argparse with a mutually exclusive group):
usage: MyCommand [-h] [-V | -v | -q] [-f | --fresh | --no-fresh] [--ptt | --no-ptt] [-p NAME]

To me this is a strong argument Typer needs to incorporate this functionality. My current solution is to check at runtime that no options violating the exclusivity constraints have been provided and error out if they have.

RE: quiet/verbose flags, has anyone else run into any issues implementing as described in the docs?
I have a callback defined as follows:
@app.callback(invoke_without_command=True)
def callback(
    version: Annotated[bool, typer.Option("--version", "-t", is_eager=True)] = None,
    verbose: Annotated[int, typer.Option("--verbose", "-v", count=True)] = 0,
    quiet: Annotated[bool, typer.Option("--quiet", "-q")] = False,
    ):
    if version:
        from monarch_py import __version__
        typer.echo(f"monarch_py version: {__version__}")
        raise typer.Exit()
    elif verbose > 0 and quiet:
        raise typer.BadOptionUsage("--verbose", "Cannot be used with --quiet.")
    elif quiet:
        app_state["log_level"] = "ERROR"
    else:
        app_state["log_level"] = "WARN" if verbose == 0 else "INFO" if verbose == 1 else "DEBUG"
    typer.secho(f"Verbose: {verbose}\nLog Level: {app_state['log_level']}", fg=typer.colors.MAGENTA)

But when I try to run monarch --verbose test i get:
><glass@rocinante> monarch --verbose test
Usage: monarch [OPTIONS] COMMAND [ARGS]...
Try 'monarch --help' for help.
╭─ Error ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Invalid value for '--verbose': '--verbose' is not a valid integer.                                                                                │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Additionally, it seems to be ignoring short options:
><glass@rocinante> monarch -v test
Usage: monarch [OPTIONS] COMMAND [ARGS]...
Try 'monarch --help' for help.
╭─ Error ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ No such option: -v                                                                                │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Hi all, is there any update on this topic?

A workaround I found, based on the proposition of @DanLipsitt to use click-option-group, leverages the ability to use a click app in a typer app (see official doc Including a Click app in a Typer app):
import click
import typer
from click_option_group import RequiredMutuallyExclusiveOptionGroup, optgroup

app = typer.Typer()

@app.command()
def top():
    """
    Top level command, form Typer
    """
    print("The Typer app is at the top level")

@app.callback()
def callback():
    """
    Typer app, including Click subapp
    """

@click.command()
@optgroup.group(
    "Exclusive options",
    cls=RequiredMutuallyExclusiveOptionGroup,
    help="Exclusive options, choose wisely.",
)
@optgroup.option("--optA", type=str, help="Option A")
@optgroup.option("--optB", type=str, help="Option B")
def hello(**params):
    print(params)

typer_click_object = typer.main.get_command(app)

typer_click_object.add_command(hello, "hello")

if __name__ == "__main__":
    typer_click_object()

If you run this, you get the following outputs :

only option A :

> python test.py hello --optA option_A
{'opta': 'option_A', 'optb': None}

only option B :

> python test.py hello --optB option_B
{'optb': 'option_B', 'opta': None}

both options :

> python test.py hello --optA option_A --optB option_B
Usage: test.py hello [OPTIONS]
Try 'test.py hello --help' for help.
╭─ Error ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Mutually exclusive options from 'Exclusive options' option group cannot be used at the same time:                                                                                │
│   '--optA'                                                                                │
│   '--optB'                                                                                │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

The only downside I saw at the moment was that the output of the click app --help has lost the typer formatting :
>   python test.py hello --help
Usage: test.py hello [OPTIONS]

Options:
  Exclusive options: [mutually_exclusive, required]
                                  Exclusive options, choose wisely.
    --optA TEXT                   Option A
    --optB TEXT                   Option B
  --help                          Show this message and exit.

vs
> python test.py top --help

 Usage: test.py top [OPTIONS]

 Top level command, form Typer

╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --help          Show this message and exit.                                                                                │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯


[Bug][config-ui] Current run is empty when there is in progress pipeline on blueprint detail page

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened

What do you expect to happen
The current run should be showing the In Progress pipeline.
Or, even better, show the last pipeline even if it has already finished.
How to reproduce
trigger blueprint, and reenter the page
Anything else
No response
Version
main
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

append, the Current Run keeps empty after click on Run now

my fault.


fix: formatToParts in early Safari versions #320

Fixes issue #320 regarding formatToParts in Safari versions < 13.

It seems like it was a bit too early to open a PR because there's another use of formatToParts function in src/components/utils/formatValue.ts:105. And so it looks challenging now to fix the issue, maybe the better solution would be using some library instead of it.
@cchanxzy your opinion is required on this.


Fix mobile design

show businesses in one column?
balances/buttons/logo -> flex col, change sizes, ?

completed with
https://github.com/sov3333/0xVenture-Capitalist/commit/9319deee4abe94ea8c504dbebf35dd626b240361
https://github.com/sov3333/0xVenture-Capitalist/commit/1827a29f01e8ea44e8a34768840485104291315e


change the test constructor to allow injecting an http engine to allo…

…w more configuration of the mockengine

I don't think the test constructor is needed anymore. Reverting fa9688a should achieve what you're looking for.

I don't think the test constructor is needed anymore. Reverting fa9688a should achieve what you're looking for.

I don't think that's sufficient, the public constructor does not allow me to pass an http engine, that constructor is internal only.


defer compressor.Close() causes incomplete compression

What version of the package or command are you using?

v0.0.0-20241216060121-23e0af8fe73d
What are you trying to do?

// Compress compresses input data using specified compressor.
func Compress(data []byte, compression archives.Compression) ([]byte, error) {
	var compressedBuf bytes.Buffer

	// Wrap the buffer with a compressor
	compressor, err := compression.OpenWriter(&compressedBuf)
	if err != nil {
		return nil, fmt.Errorf("Compress: Failed to create compressor: %w", err)
	}
	defer compressor.Close()

	// Writes to compressor will be compressed
	_, err = compressor.Write(data)
	if err != nil {
		return nil, fmt.Errorf("Compress: Write to compressor failed: %w", err)
	}

	// compressor.Close() without this line, the compressed data will be incomplete
	compressedBytes := compressedBuf.Bytes()

	return compressedBytes, nil
}

What steps did you take?

Compile and run the above function
What did you expect to happen, and what actually happened instead?

The input file should compress and then decompress without issue.
However, the compressed data is truncated and cannot be decompressed.
How do you think this should be fixed?

Using defer compressor.Close() will somehow close the writer before complete data is written.

There is a bug in your code. The defer compressor.Close(), which finalizes the compressed stream (necessary for decompressing it), doesn't run until after compressedBuf.Bytes(), so you're returning an incomplete stream.

Thanks for pointing out. But what's the recommended way of doing it?

I would just uncomment the line that makes it work 😌


add restartApp() method

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Use case
There is no canonical way to restart a flutter app in production. This is useful as part of a state clearing routine. There are multiple methods, but they all have drawbacks, and none of them are canonical
Why:

Useful for integration testing
Customer care troubleshooting
Allow user to get fresh state without uninstalling app
Auto reset app state if there is a crash loop on launch

Proposal:

add a restartApp() method to go with runApp()

Functionality:

relaunches the flutter instance with fresh state
does not reset stored state (shared_preferences, sqlite, etc)
does not quit the native app

Community suggestions:

use runApp() again -> no-op in testing
send SIGUSR2 -> doesn't work in prod
swap a GlobalKey on top level widget -> doesn't work for all DI systems
flutter_phoenix -> GlobalKey method

Ethos argument:
This is a primitive action that should be dependable, reliable, and opinionated
Community feedback in support:

https://twitter.com/peteralexbizjak/status/1660962150288965632
https://twitter.com/wamweaaa/status/1660894603321516034
https://twitter.com/mwhmyers/status/1661040773461319681
https://twitter.com/yasinilhan/status/1661079434881802241

I'm not against the idea but I have legitimately no idea how we would implement this without using the existing hot restart functionality.

I'm not against the idea but I have legitimately no idea how we would implement this without using the existing hot restart functionality.

runApp() could be modified to wrap the widget it gets into another with a GlobalKey and you just replace that key to restart.
It would be the same method as the phoenix package, just encapsulated into Flutter.

I am not sure if this will be enough. There are static global variables that won't change. They are not part of Flutter's State Management (element tree). The only way I can see is triggering a reload into the Flutter engine itself to reload the dart runtime.

This could be very useful for web apps as well

I'm looking for something that restarts the entire flutter instance, not just swapping keys. Basically quitting the entire flutter portion of the app and then running it again.

I'm not against the idea but I have legitimately no idea how we would implement this without using the existing hot restart functionality.

is that available in a production build? My assumption was no

It is not.

You can sort of accomplish this by shutting down the FlutterEngine and launching a new one. But you'd need to do this in native code for for each platform.

This seems like the shortest reasonable path to a feature?

The only thing I would cautious about is making sure we are specific about what state is lost/restored. Also there may be some complexities around keyboard and textfield input that you might want to double check. For example, if you're typing in a text field, call the apprestart method, make sure that they keyboard state is clean - otherwise more work would need to be done in the backend to clean that up. Same with key up/down combinations.

Shutting down the engine, while keeping the window open replacing the HWND/FlutterView should be relatively safe I think, though IIRC macOS still don't have any kind of cleanup API still so there might be some memory leaks with native plugins.
Doing actual hot restart in production though might be tricky. I've seen weird keyboard state errors after hot restart, just like @jonahwilliams mentioned. Also I don't think the TextInputClient is properly detached during hot restart. There might be other state in the engine that that doesn't cause major issues, which is okay for development, but might be problematic for production) I think to get this reliably working will require more effort than just restarting the isolate.

There was another issue to provide lifecycle methods to native plugins to include a dispose method. Not in front of a computer though so I can’t easily find it

Not sure if you are aware that a pub package with a similar functionality already exists https://pub.dev/packages/restart_app
From my understanding it also approaches restarting from the native side

Not sure if you are aware that a pub package with a similar functionality already exists https://pub.dev/packages/restart_app
From my understanding it also approaches restarting from the native side

Looking at the code, on iOS it actually shuts down the app, after sending user a notification (that I suppose will relaunch the app after user interaction).
That seems like a much bigger hammer than things discussed here so far :)

There is also another similar plugin if you want to look in to the implementation
https://pub.dev/packages/flutter_phoenix

Not sure if you are aware that a pub package with a similar functionality already exists https://pub.dev/packages/restart_app
From my understanding it also approaches restarting from the native side

Looking at the code, on iOS it actually shuts down the app, after sending user a notification (that I suppose will relaunch the app after user interaction).
That seems like a much bigger hammer than things discussed here so far :)

In iOS, the platform restrictions are such that there's no direct API available to restart an application, unlike in Android where we have APIs such as Activity.recreate() or Intent.makeRestartActivityTask() to achieve this. These restrictions stem from Apple's approach to maintaining a smooth and consistent user experience, where they enforce strict control over the app lifecycle events.
Instead, iOS provides mechanisms to gracefully terminate an app, such as calling exit(0), but there is no direct way to restart or recreate an application like we do in Android. This is a known limitation within the iOS ecosystem.
The approach used in the 'restart_app' package is a workaround to this limitation. By fully shutting down the app and then using a local notification to prompt the user to reopen the app, we can simulate a restart. This is indeed a "bigger hammer" approach but is currently one of the few ways to mimic a full app restart on iOS.
It's important to note that this is not a limitation of Flutter or the package itself, but a restriction within iOS. I am always on the lookout for more efficient solutions and welcome any suggestions or insights you might have!

I've been keenly interested in this very issue for about 2-3 years now, and it was the primary motivation for me to develop the 'restart_app' package. My main goal was to provide a means to restart a Flutter application in a more native way, as opposed to relying on state or widget resetting.
The 'restart_app' package was my attempt to address this gap, but I acknowledge that there is always room for improvement and refinement. I am fully committed to making this package as efficient and seamless as possible.
I look forward to any collaboration that can further improve the 'restart_app' package and provide a more native way to restart a Flutter application. Any input from the Flutter team or the broader community is most welcome.

@gabrimatic, you don't need to restart the entire app. Analogy to restarting Android activity would be to remove FlutterViewController and replace it with new one (with a different engine), essentially restarting the Flutter App. Not sure if this is feasible for a plugin, but definitely feasible for an application.

Thank you for your suggestion. I did explore this approach during the development of the plugin. While replacing the FlutterViewController might initially seem feasible, it introduces a substantial challenge related to the management of Flutter plugins and packages:
When the FlutterViewController is reset, all previously registered plugins and packages are unregistered.
Restoring functionality would require each one to be manually re-registered with the new FlutterViewController. This would entail creating a mechanism to automatically gather a list of project dependencies and re-register each one - a process that's not only complex but also prone to issues, particularly when dealing with local packages that depend on each other. Moreover, this approach could be error-prone and burdensome, especially for applications with a large number of dependencies.
(Perhaps this is the moment when Flutter developers can step in and incorporate this process into the Flutter engine!)
Given these considerations, implementing a full app restart was a more reliable and efficient approach for the plugin.

We had a similar requirement & decided to create a fairly simple plugin:

pub.dev: https://pub.dev/packages/restart
GitHub: https://github.com/farmako/flutter_restart

It allows to restart the Flutter application. Upon restart, Dart's main() method is called again.
The plugin works on both Android & iOS. It does not rely on System.exit(0) or exit(0) etc. or any notification based workaround. The experience is quite seamless.

We had a similar requirement & decided to create a fairly simple plugin:

pub.dev: https://pub.dev/packages/restart
GitHub: https://github.com/farmako/flutter_restart

It allows to restart the Flutter application. Upon restart, Dart's main() method is called again.
The plugin works on both Android & iOS. It does not rely on System.exit(0) or exit(0) etc. or any notification based workaround. The experience is quite seamless.

Seems like this works for me (at least in first tests)🤞

@alexmercerind any support on desktop like macOS and Windows? I think this actually more frequent demands.


Node.js 16 actions are deprecated

Hey @fujidaiti!
First of all - thanks for the great action! This is just a friendly reminder that, as the title and GitHub Changelog say (so as warnings in our CIs) - Node.js 16 actions are deprecated :). Thanks again!

Hi. This fix has been released in v2.0.0. Please update the action's version in your workflow.
- uses: fujidaiti/dart-package-inspector@v2


Bump Dependencies #2550061371

Bumps dependencies for product-is. Link : https://github.com/wso2/product-is/actions/runs/2550061371

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.jenkins-is-staging seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Already bumped these versions with https://github.com/wso2/product-is/pull/14020 and https://github.com/wso2/product-is/pull/14021


Add a SelectorErrorCode to segment_not_present in IDT

As documented here: https://wiki.osdev.org/Exceptions#Selector_Error_Code
Similar to the PageFaultHandlerFunc this adds a SegmentNotPresentHandlerFunc
The struct does need to be a repr(transparent) u64 otherwise a LLVM error occurs

@budde25 thanks for contributing to this crate!! The definitions for this type look good, but changing the type of segment_not_present is a breaking change, so we would want to handle that in a separate PR (or discuss it in #262).
Could you change this PR to just declare the SelectorErrorCode type/methods? This would mean removing the segment_not_present change and SegmentNotPresentHandlerFunc type definitions (at least for now).

@josephlr
Thanks for the code review! I will make the those changes. As for the breaking change would it be enough to just remove the change to segment_not_present? What would the change to SegmentNotPresentHandlerFunc type definitions be? or would it just be removed since it would be unused now. Thanks!

Alright, I have implemented the requested changes. Sorry for the delay.
I also added a new_truncate to the SelectorErrorCode as convenience method. Similar to the from_bits_truncate in an effort to provide a similar interface.


Storage port not forwarded causes issues with presigned URL

Describe the bug
When a request is made to the presigned url after that url is generated. It fails because the url is wrong.
To Reproduce
Steps to reproduce the behavior:
Use the latest CLI
generate a presigned url with nhost-js
The response will be something like:
{"url":"http://localhost:8576/v1/files/5bdb6940-9c00-49c8-96ce-50bdcfa316e6/presignedurl/content?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=minioaccesskey123123%2F20220825%2Fno-region%2Fs3%2Faws4_request\u0026X-Amz-Date=20220825T220713Z\u0026X-Amz-Expires=30\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=eadd10e2b543a4a829c7df970baaab478de48935601540ad702296e177de3bde","expiration":30}

the problem is that it's using 8576 which would be fine if the storage docker container was forwarding that port. But it's not forwarding that port docker ps
CONTAINER ID   IMAGE                                      COMMAND                   CREATED         STATUS                   PORTS                                                                                NAMES
70b2dafe48a6   minio/minio:RELEASE.2022-07-08T00-05-23Z   "/usr/bin/docker-ent…"    9 minutes ago   Up 9 minutes             <IP_ADDRESS>:9000->9000/tcp, :::9000->9000/tcp, <IP_ADDRESS>:49191->8484/tcp, :::49191->8484/tcp           api-hasura-boring_lehmann-minio-1
e1af6bbed239   traefik:v2.8                               "/entrypoint.sh --ap…"    9 minutes ago   Up 9 minutes             80/tcp, <IP_ADDRESS>:1337->1337/tcp, :::1337->1337/tcp, <IP_ADDRESS>:49192->8080/tcp, :::49192->8080/tcp   api-hasura-boring_lehmann-traefik-1
b670dabaf2cc   nhost/hasura-storage:0.2.3                 "/nix/store/qj1jhdnc…"    9 minutes ago   Up 8 minutes             8576/tcp                                                                                api-hasura-boring_lehmann-storage-1

The easiest solution is to forward that port.
The other solution is to set the env variable public_url env variable to http://localhost:1337 and have traefik forward that port to the storage container.
Expected behavior
Presigned URL should be sent to the correct URL
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: ubuntu 20
Browser Chrome
Version Nhost CLI v0.7.8 for linux-amd64

Additional context
Add any other context about the problem here.

Maybe a missing environment variable in the container definition @elephant3 ?

@acarrera94 plz upgrade to the v0.7.9
⚠ plz read the release notes if you wanna keep your postgres data after upgrade


[TB] Implement Docker vulnerability scanning with whitelisting

Problem/Concern
As discussed in #742, we will be disabling Docker vulnerability scanning until such time that we can establish the scanning with white listing supported.  This issue is to do the work to find and implement a solution that supports whitelisting.
Proposed Solution
Re-enable Docker vulnerability scanning when a solution is found.

Can I be assigned this issue?

Can I be assigned this issue?

I have assigned you the issue.  I look forward to hearing your proposal!

@aaronreed708 please see this

@aaronreed708
The current workflow which is being used "crazy-max/ghaction-container" does not support the ignoring of certain vulnerabilities. This is being addressed in an issue created Link.
So the solution would be to use a different workflow like aquasecurity/trivy-action which supports the use of the --ignore-unfixed flag and the use of a .trivyignore file.
Then the only thing remaining would be to add the workflow in the publish-docker.yml file and adding the failing workflows in the ignore section.

@aaronreed708 please see this

Sorry @aarishshahmohsin, I missed the email notification of your comment.  I think that this sounds like a good plan!

Sorry @aarishshahmohsin, I missed the email notification of your comment. I think that this sounds like a good plan!

Should I submit a PR?

Sorry, missed it again. Yes, please, submit the pr. Ping me on slack when it is ready, hopefully I won't miss that!


mapping switch proposal

Google Maps is starting to throw errors due to it's licensing and in general I think we should offer an alternative.
Proposal is switch mapping API to leaflet with

Default OSM base layer from mapquest
if google maps works with leaflet we could support that as an option
satellite imagery from bing maps
later ability to add your own tilemill base layers by point to a tilestream/mapbox url.

We should use mapbox streets instead of the mapquest maps now.


nginx 504 Gateway Time-out

I'm following the instructions outlined here: https://cloud.google.com/solutions/using-tensorflow-jupyterhub-classrooms. I'm in the final step of going to the .xip.io url, but I get an nginx time-out error. I'm ignoring the certificate warning just like the tutorial says.
I can see the containers being created as well as the filer vm on the GCE dashboard. I cannot see any error in their serial console outputs.

I had same error.
In nginx log was:
[error] 13#13: *1276 upstream timed out (110: Connection timed out) while connecting to upstream, client: x.x.x.x, server: , request: "GET / HTTP/1.1", upstream: "http://y.y.y.y:8000/", host: "jhub.y.y.y.y.xip.io"
In jupyterhub pod log was:
"Unable to mount volumes for pod "jupyterhub-4173372450-0m9v2_jupyterhub(e10bd93d-6491-11e7-a69b-42010af00150)": timeout expired waiting for volumes to attach/mount for pod "jupyterhub"/"jupyterhub-4173372450-0m9v2". list of unattached/unmounted volumes=[nfs]
Error syncing pod, skipping: timeout expired waiting for volumes to attach/mount for pod "jupyterhub"/"jupyterhub-4173372450-0m9v2". list of unattached/unmounted volumes=[nfs]"
During created file server I used my own names for server parameters. I recreated it with names, given in doc (deployment name, instance name and storage name)
And it worked

@eeveeta , one of the things that @bVTiger made me aware of was that I was using the EXTERNAL_IP address for my nfs server instead of the INTERNAL_IP. That solved it for me. Thanks @bVTiger!

@bVTiger what do you mean with instance name? I have the same error using the given names in the doc. only difference is I am using a different zone. Do you think this could be the issue? I used a different compute zone through out the complete instructions.

Different zone shouldn't matter. Configuration on the NFS Server has been fixed, it was previously not mounting the disk and exporting it if the names of the disk were changed during config.  You can also use the computer name of the file server instead of IP address.  The name is going to match what you see in the cloud console, which I believe the Launcher adds a "-vm" to the end of the name, so what you enter is not what you get unfortunately.

@sveesible thanks!