SMASH Integration

Issue Number

#1883
Overview

d790880de0392f22e8d2d2d4096e1d44c3e60616
:round_pushpin: allow different ways of building metadata URL from metadata information
The idea is the following:

We have a list of "URL builders" that will be tried in order, but only
if the first builder replied with a connection failure (so, only if the
server is somewhat down)

We can always have our current behavior by using the
'identityUrlBuilder'.

Then, we can augment this behavior if given a specific registry URL
via the command-line options, which will add a "registryUrlBuilder"
which takes predecence over the identity builder.

48884cd3a0c436b0e4b4e817e8df2c7319440374
:round_pushpin: try fetching metadata from the next builder on HTTP exception

c133609672d5b1173a00a20595bc00ac9054ee10
:round_pushpin: add command-line option for enabling a pool metadata proxy
Going for a command-line option so that this can easily be turned on and off at will in case of any issue. Plus, not everyone might agree with the idea of going through a registry so hard-coding the registry URL is a no go. cardano-wallet-jormungandr uses an ad-hoc environment variable for this, but a documented option in the command-line is definitely cleaner.

e9dbf56e160b869af3b677e82449e56b8b8a37af
:round_pushpin: revise logging around pool metadata fetching to have more insight inside the fetcher
So that we can clearly log fallback attempts and keep it clean.

cf00db653779cf80a579025e8df8a9576c14b46a
:round_pushpin: Regenerate nix

08305897348945dd16afd484d2b500fd2b298e52
:round_pushpin: use 'Either HttpException' as a base monad instead of 'ExceptT'
The underlying URL builder relies on the 'MonadThrow' class to send errors. Yet, when using 'ExceptT', the error is thrown in the base monad!!
So, using 'Either' instead in conjunction with except to catch the error as expected in the loopl, instead of throwing hard in the parent context.

dd00d12e38defb608db5565f181c0052c3713e44
:round_pushpin: be more specific when interpreting responses from the aggregation server

28b9d575c23413047b73819aa60afb3bb65d6427
:round_pushpin: remove fallback when a pool metadata proxy is supplied.
The fallback made sense in the early days, but we can now make it a proper switch: it's either fetching from pools, or it's fetching from the registry

Comments

[ ] :warning: TODO: show that it works. So far, on the shelley testnet:

Some quick manual / sanity testing:
$ cardano-wallet-shelley serve \
  --node-socket node.socket \
  --testnet shelley_testnet-genesis.json \
  --pool-metadata-proxy https://smash.shelley-testnet.dev.cardano.org/api/v1/metadata

[...]

[2020-07-08 19:57:09.29 UTC] Fetching metadata with hash c9ed7096 from https://smash.shelley-testnet.dev.cardano.orgapi/v1/metadata/c9ed70969c964284ff854d61e43c2591b67ceb7e978347cb1b50ba3ed1d3edb4
[2020-07-08 19:57:09.45 UTC] Successfully fetched metadata with hash c9ed7096: StakePoolMetadata {ticker = StakePoolTicker {unStakePoolTicker = "IOHK1"}, name = "IOHK1", description = Just "IOHK Pool", homepage = "https://iohk.io"}

$ cardano-wallet-shelley serve \
  --node-socket node.socket \
  --testnet shelley_testnet-genesis.json \
  --pool-metadata-proxy patate
option --pool-metadata-proxy: Invalid URI. Make sure the URI is well formed, with a protocol and a host.

Although fallback is removed I see there is a fallback going on in case of SMASH with expired SSL:
$ cardano-wallet-shelley serve \
  --node-socket node.socket \
  --testnet shelley_testnet-genesis.json \
  --pool-metadata-proxy https://expired.badssl.com/

[cardano-wallet.pools-engine:Warning:52] [2020-07-22 13:23:37.43 UTC] Couldn't reach server at https://expired.badssl.com4f3b3be782e93761220942c55cbc13358b8bcd12bf200f1548e4daa5e99bdfcd. Falling back using a different strategy.
[cardano-wallet.pools-engine:Info:52] [2020-07-22 13:23:37.43 UTC] Fetching metadata with hash 4f3b3be7 from https://cent.stakepoolcentral.com/resources/CENT.json

There is minor issue in the log, missing / in the url (orgapi):
Fetching metadata with hash f0022651 from
https://smash.shelley-testnet.dev.cardano.orgapi/v1/metadata/f0022651a06ba5b62bc6c9e223ee15aa957867cb9ba9b3ca4f4f4a9ff4f47964

Fixed the URL in the log (was missing a trailing slash in the URI path representation, but oddly enough, the underlying library building the request from the URL still worked just fine :man_shrugging:).
Also, I've double-checked about the fallback and I do observe the correct behavior:
--pool-metadata-proxy https://smash.shelley-testnet.dev.cardano.org/api/v1/metadata
[cardano-wallet.pools-engine:Info:53] [2020-07-23 06:42:36.15 UTC] Fetching metadata with hash 2633c85f from https://smash.shelley-testnet.dev.cardano.org/api/v1/metadata/2633c85fdcd1c1193b92c785facdc9b849e5ab0cd70833faa383157103f40fc4

--pool-metadata-proxy  https://expired.badssl.com/
[cardano-wallet.pools-engine:Info:64] [2020-07-23 06:43:44.44 UTC] Fetching metadata with hash 05eb1bd0 from https://expired.badssl.com/05eb1bd033853b0f90625fed274578605a0f00fd19be320f2b5f81c04498ec2f
[cardano-wallet.pools-engine:Warning:64] [2020-07-23 06:43:44.85 UTC] Couldn't reach server at https://expired.badssl.com/05eb1bd033853b0f90625fed274578605a0f00fd19be320f2b5f81c04498ec2f.
[cardano-wallet.pools-engine:Warning:64] [2020-07-23 06:43:44.85 UTC] Failed to fetch metadata with hash 05eb1bd0: Metadata server(s) didn't reply in a timely manner.
[cardano-wallet.pools-engine:Info:64] [2020-07-23 06:43:44.85 UTC] Fetching metadata with hash fb4086de from https://expired.badssl.com/fb4086de12dd20e71817ad12220fe59b500488445e7278614eef9fb87fa7743f
[cardano-wallet.pools-engine:Warning:64] [2020-07-23 06:43:45.23 UTC] Couldn't reach server at https://expired.badssl.com/fb4086de12dd20e71817ad12220fe59b500488445e7278614eef9fb87fa7743f.
[cardano-wallet.pools-engine:Warning:64] [2020-07-23 06:43:45.23 UTC] Failed to fetch metadata with hash fb4086de: Metadata server(s) didn't reply in a timely manner.
[cardano-wallet.pools-engine:Info:64] [2020-07-23 06:43:45.23 UTC] Fetching metadata with hash 9d355af4 from https://expired.badssl.com/9d355af4aa94a75e1c095465e778142d920cb44976ab527faffe9543818c3948
[cardano-wallet.pools-engine:Warning:64] [2020-07-23 06:43:45.57 UTC] Couldn't reach server at https://expired.badssl.com/9d355af4aa94a75e1c095465e778142d920cb44976ab527faffe9543818c3948.

Also, I've double-checked about the fallback and I do observe the correct behavior:

Indeed, I must have not updated the branch, sorry.
Ok, small thing, but maybe we would like to consider allowing only https as a protocol in the URL that is provided to --pool-metadata-proxy? Currently the validation of URL is very simple and in particular you can:
--pool-metadata-proxy protocol:host

which results in:
[cardano-wallet.pools-engine:Error:49] [2020-07-23 08:45:29.21 UTC] Worker has exited unexpectedly: InvalidUrlException "protocol:/host/65e023d50434d576f6d8f901a10adb8bb55f2550ee08fe017e10c7911d4f97f2" "Invalid scheme"

Just a thought.

Ok, small thing, but maybe we would like to consider allowing only https as a protocol in the URL

I added this @piotr-iohk so that the error can be caught earlier.

bors r+

Forgot a cabal dep, oops.
bors r+

bors r+

bors r+


Timeout with nextjs canary above 88 and richtext field used in multiple collections

Link to reproduction
https://github.com/andershermansen/payload-nextjs-richtext-issue
Payload Version
3.0.0-beta.74
Node Version
v22.4.0
Next.js Version
15.0.0-canary.89 and 15.0.0-canary.100
Describe the Bug
I was able to track down a small reproduction for a scenario which makes the admin panel not show at all in production mode (pnpm start), you just get a timeout from the webserver. It works fine in dev mode.
The conditions are:

Nextjs version 15 canary >= 89 (I reproduced with 89, 95 and 100)
Using a richtext field from two collections
Running in production mode

Going back to nextjs canary 88 fixes the problem.
Or just using the richtext field from one of the two collection fixes the problem.
Or run in dev mode fixes the problem.
Reproduction Steps

npx create-payload-app@beta
create a function for a shared richtext field
Use this richtext from two different colletions
Update to nextjs version 89 pnpm install<EMAIL_ADDRESS>Build a production build with pnpm build
Run the production build with pnpm start
Go to http://localhost:3000

Expected:
Login page to show
Actual:
No response from server, timeout
Adapters and Plugins
richtext-lexical

Retested with beta 75 and nextjs canary 104 and the updated react package. Still same issue. Works in dev, but not in prod mode. Also works in prod mode if one of the two richtext fields are removed.
Branch for these updates: https://github.com/andershermansen/payload-nextjs-richtext-issue/tree/payload-75-next-104

Fixed by #7572

@denolfe Thanks for fixing my blocker to update to latest beta so quickly 💯


Add renaming of conflicting constructors and operations

Also enable WebSocket and Blob for testing.

Nice!
I'm wondering if we can perhaps trim down the renamings as well? The current implementation is a bit ambitious covering everything but some of the names generated can likely be super funky. I wonder if we could whitelist a few at a time to make sure the methods being generated have semi-reasonable names and review as we go along?
For example optional arguments come out as nullable_* but it may be more rusty to do opt_*, and similarly unsigned_short is probably just better as u16 in Rust.
I wonder as well, is it perhaps more clear to include the name of the argument from WebIDL rather than the type? That may make the constructors a bit more readable by default as well

Now it looks like this:

Constructor with url and protocols argument names uses argument types naming because there is another constructor, but it is currently unavailable:
[Exposed=(Window,Worker),
 Constructor(DOMString url),
 Constructor(DOMString url, DOMString protocols),
 Constructor(DOMString url, sequence<DOMString> protocols)]
interface WebSocket : EventTarget {

Very small stylistic thing is that new_with_url etc. seems a bit strange to me, maybe for overloaded constructors, we could do from_url, from_foo_and_bar, ... or with_url, with_foo_and_bar, ... and then just new for the constructor with no arguments if it exists.

Yes, I was thinking about this problem; we need better naming here. I have just implemented what @alexcrichton suggested: https://github.com/rustwasm/wasm-bindgen/issues/444#issuecomment-408619825

Ah good points @ohanar! The construction schemes for HashMap seem to agree, perhaps for these named constructors we should drop new_ and just have with_foo_and_bar?
@afdw if you want to implement that real quick I can merge!

@alexcrichton done.

Looks awesome, thanks @afdw!


hackage insists on "autogen-modules" and "other-modules"

I want to upload a package where I use hpack to produce the cabal file. Initially I received an error from hackage indicating that autogen-modules must be also listed under other-modules.
To get the package accepted I had to include in the package.yaml
library:
  source-dirs:
    - .
  verbatim:
    autogen-modules:
        Paths_uniform_algebras

to achieve in the cabal file:
autogen-modules: Paths_uniform_algebras
 other-modules:
     Paths_uniform_algebras

which satisfies hackage. It would be great if hpack would produce this automatically.

Is this a new change on the Hackage side? I'm just noticing it for the first time now.

I think this works since hpack-0.34.6.
I’m closing this issue. Please let me know if there’s still something that doesn’t work.


go-get-tool fails if project directory path contains spaces

Bug Report

What did you do?
Tried to run a Makefile build by operator-idk, known to work
The exact directory had already been used to build an operator, and tools were already downloaded including in 'bin'
However I had rebooted, and running a different OS version (Monterey vs Big Sur), but with the same directory used for my source
What did you expect to see?
Previously downloaded tools such as customise, already in bin/ would just be used by make as normal

What did you see instead? Under which circumstances?

$ make controller-gen                                                                                [10:44:49]
bash: line 1: [: /Volumes/Macintosh: binary operator expected
go: creating new go.mod: module tmp
Downloading<EMAIL_ADDRESS>bash: line 1: HD/Users/jonesn/IdeaProjects/egeria-k8s-operator/bin: No such file or directory
make: *** [controller-gen] Error 127
jonesn:egeria-k8s-operator/ (opdev1*) $

The issue appears to be the SPACE in the directory now being used, caused by the Makefile entry:
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
define go-get-tool
@[ -f $(1) ] || { \
set -e ;\
TMP_DIR=$$(mktemp -d) ;\
cd $$TMP_DIR ;\
go mod init tmp ;\
echo "Downloading $(2)" ;\
GOBIN=$(PROJECT_DIR)/bin go get $(2) ;\
rm -rf $$TMP_DIR ;\
}
endef

As can be seen, my cwd has spaces:
jonesn:egeria-k8s-operator/ (opdev1*) $ pwd                                                                                [10:45:54]
/Volumes/Macintosh HD/Users/jonesn/IdeaProjects/egeria-k8s-operator

If instead I am in
jonesn:egeria-k8s-operator/ (opdev1*) $ pwd                                                                                [10:49:01]
/Users/jonesn/IdeaProjects/egeria-k8s-operator

Then all works fine
So this isn't really about Monterey vs Big Sur, or the different environment, it's just about the variable expansion and
errors if the directory contains a space (maybe other chars). Needs quoting in the function
Environment
macOS Monterey, homebrew, go 1.16
Operator type:
go

/language go

Kubernetes cluster type:
OpenShift 4.7

$ operator-sdk version

operator-sdk version                                                                                [10:51:55]
operator-sdk version: "v1.11.0", commit: "28dcd12a776d8a8ff597e1d8527b08792e7312fd", kubernetes version: "v1.20.2", go version: "go1.16.6", GOOS: "darwin", GOARCH: "amd64"
$ go version (if language is Go)

go version go1.16.6 darwin/amd64
$ kubectl version

$ kubectl version                                                                                [10:52:27]
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.1", GitCommit:"632ed300f2c34f6d6d15ca4cef3d3c7073412212", GitTreeState:"clean", BuildDate:"2021-08-19T15:38:26Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0+87cc9a4", GitCommit:"87cc9a4ade7ebee64def2489b78c9d8ae5d6fdf9", GitTreeState:"clean", BuildDate:"2021-06-19T03:11:54Z", GoVersion:"go1.15.7", Compiler:"gc", Platform:"linux/amd64"}
WARNING: version difference between client (1.22) and server (1.20) exceeds the supported minor version skew of +/-1
Possible Solution

Additional context

In the triage meeting today, we identified that this is a good first issue.  It seems isolated to make and scripts.  @planetf1 thanks for raising the issue here... we welcome a pull request if you are up for it.  We have a number of people here or on slack that can provide feedback and guidance if needed.
thanks for helping to make operator sdk awesome

@kensipe can I work on this issue if there is no-one already working on it?

@pravarag I've unfortunately not had the chance yet so ok by me

/assign


Take view full-screen into account

One use-case I see missing from the summary so far is the use case of a video being played within the layout of a webpage - perhaps only taking up 1/4 of the available screen - and the user the clicking to go full-screen (at some point before or during play). I would like to see a way to initially present a small video file and then fetch the large version when the user requests full screen.
Loading a 1080p or 4k video in case the user wants to go full screen is not a good experience for a mobile user or someone on a small laptop screen, or just someone who doens't want to bother leaving the webpage context.
I don't think this changes any scope or attributes proposed thus far, just an implementation use-case for the browser.

It's actually a rather complicated case, as are all resize > change media situations while playing or having loaded media. This is only really solved by DASH or HLS and authoring the media according to the specifications. I haven't looked up the discussions from when the W3C changed the  spec but I wouldn't be surprised if these cases were the primary reason to abandon sizes support.

It's actually a rather complicated case, as are all resize > change media situations while playing or having loaded media. This is only really solved by DASH or HLS and authoring the media according to the specifications. I haven't looked up the discussions from when the W3C changed the  spec but I wouldn't be surprised if these cases were the primary reason to abandon sizes support.

@phillipseamore Is there a difference between the <video> element resizing within the page and the video going fullscreen?
With the caveat that I don't know what I don't know and therefore it's much more complicated than I envision, is it not straight foward to capture the timestamp at the event to go fullscreen and start the larger video size at that spot?

@phillipseamore Is there a difference between the <video> element resizing within the page and the video going fullscreen?
With the caveat that I don't know what I don't know and therefore it's much more complicated than I envision, is it not straight foward to capture the timestamp at the event to go fullscreen and start the larger video size at that spot?

No there isn't any difference between changing sources based on resizing the window or going fullscreen. The issue is how to handle flushing the media that is already in the buffer, retrieving new media (higher or lower res file), seeking to right frame and audio sample and starting playback again. If the media isn't all authored correctly changing between files might completely stall. How the media is served would be an issue also (e.g. if the server doesn't support byte-range requests the whole file would be retrieved etc). There are a tonne of technical and UX issues.  This is all solved with HLS and DASH and authoring the media files according to those specs. None of this is an issue if the media hasn't been loaded and isn't playing - but that would be uncommon.

No there isn't any difference between changing sources based on resizing the window or going fullscreen. The issue is how to handle flushing the media that is already in the buffer, retrieving new media (higher or lower res file), seeking to right frame and audio sample and starting playback again. If the media isn't all authored correctly changing between files might completely stall. How the media is served would be an issue also (e.g. if the server doesn't support byte-range requests the whole file would be retrieved etc). There are a tonne of technical and UX issues.  This is all solved with HLS and DASH and authoring the media files according to those specs. None of this is an issue if the media hasn't been loaded and isn't playing - but that would be uncommon.


Empty Error

When the /reports has no sites in the table, it show database connection error.
This error is not because of connection issue it is just an issue which can be fixed using python code.

Do let me know if you need more info about the error.
You can visit PhishBuster and see the error in action.

Hello @VFXGamer , Submitted pull request #5 to fix issue  "Open Empty Error" #3. There are still few checks are failing but those are not because of my changes. Let me know if that needs to be fixed.

If you can fix them too it would be great.

If you can fix them too it would be great.

@VFXGamer - Fixed all, except one "Redefining built-in 'id' " , that might require changes to templates, so didn't do. Please check if it looks okay.

#5
This Issue is resolved.


feat(STONEINTG-613): remove status report from PLR controller

remove status report from integrationPLR controller
create comment to PR in statusreport controller for github webhook
add test result to report of statusreport
update comment if there is one existing comment of snapshot and scenario test status
update controller diagram

checkRun example: https://github.com/hongliuorg/devfile-sample-go-basic/pull/4/checks?check_run_id=16776195643
commitStatus/comment example: https://github.com/hongweiliu17/devfile-sample-go-basic/pull/2
Maintainers will complete the following section

[ ] Commit messages are descriptive enough (hints)
[ ] Code coverage from testing does not decrease and new code is covered
[ ] Controllers diagrams are updated when PR changes controllers code  (if applicable)

Tested it again in my personal cluster, it works, no error. Will merge it next Monday. Thanks all for the review!


Add support for standard OData error response

Hello again :-)
From my debugging observations, it seems that Simple OData Client doesn't support the standard JSON OData errors - i.e. the exception thrown on error response (Simple.OData.Client.WebRequestException) does not contain the information contained in the error JSON. It doesn't even contain the response payload - so the error information seems to get lost in the process.
Sample error response (422 Unprocessable Entity):
{
  "error":{
    "code":"4","message":"The inviter does not exist."
  }
}

For us the error information is very important. For instance - we have API endpoints that are used as the main backend for user registration forms. Based on error codes/other information returned we decide where in the form (near which field) should we display an error message.
Unless there is a way to retrieve this information which I don't know about, I'd suggest adding some of the following to the library:

Make response payload accessible in the exception.
Create an extensible error parsing mechanism that would support standard JSON OData errors out of the box and would include this information in the thrown exception. I say extensible because some services may need to add some fields to the error JSON that are non-standard (which is a standard-compliant extension) - and without extensibility the default error class may not be flexible enough.

Great suggestion, thanks. The reason it's handled this way is the library was originally written for OData V3 and there errors were handled differently. I will look into this.

:+1:

I have release the version 4.4 with revised implementation of WebRequestException. Now it copies to its Response property the actual HTTP response content. Please check it out.

Hi Vagif, I checked and it works ok - with some extension method or helper class it should be easy to parse the error JSON.
However, in the test console application I had to catch an AggregateException - it appears that there is double AggregateException wrapping happening. Could you please fix this so that it's possible to catch the real exception type when using await instead?
Code sample:
        private static async Task CreateInvitation()
        {
            try
            {
                var client = new ODataClient("http://localhost:15407/v1");

                var invitation = await client
                    .For("invitations")
                    .Set(new
                    {
                        emailAddress =<EMAIL_ADDRESS>                        inviter = new { id = -1 }
                    })
                    .InsertEntryAsync();

                Console.WriteLine("And here's the token: '{0}'! Magic!", invitation["token"]);
            }
            catch (AggregateException exception)
            {
                var innerException = exception.InnerException as WebRequestException;
                Console.WriteLine("StatusCode: {0}", innerException.Code);
                Console.WriteLine("Content: {0}", innerException.Response);
            }
        }

It has to be AggregateException due to the nature of async communication. But of course it shouldn't be wrapped twice. If your example works, then it doesn't look like there are two AggregateException wrapper. Can you give me more details about scenario when you get double wrapper? I don't get it in my tests.

The reason why in the aforementioned code sample there is just one Aggregate Exception is because the "await" keyword internally already automatically unwraps one layer of AggregateException. It's a feature of this keyword to allow catching exceptions easier.
So, if you try this code instead, you'll see what I mean:
        private static void CreateInvitation()
        {
            try
            {
                var client = new ODataClient("http://localhost:15407/v1");

                var invitation = client
                    .For("invitations")
                    .Set(new
                    {
                        emailAddress =<EMAIL_ADDRESS>                        inviter = new { id = -1 }
                    })
                    .InsertEntryAsync().Result;

                Console.WriteLine("And here's the token: '{0}'! Magic!", invitation["token"]);
            }
            catch (AggregateException exception)
            {
                var innerException = exception.InnerException as AggregateException;
                var innerInnerException = innerException .InnerException as WebRequestException;
                Console.WriteLine("StatusCode: {0}", innerInnerException .Code);
                Console.WriteLine("Content: {0}", innerInnerException .Response);
            }
        }

I see, thanks for the clarification, I will look into this.

I think the issue with nested AggregateException is fixed. It will be a part of the version 4.5 that will be out sometime next week, but you can check out its pre-release from MyGet feed:
https://www.myget.org/feed/Packages/simple-odata-client

Yes, it works! Great work! ;) Now this code executes correctly:
try
{
    var client = new ODataClient("https://localhost:15407/v1");

    var result = await client.For("invitations")
        .Set(new { emailAddress = "some<EMAIL_ADDRESS>})
        .InsertEntryAsync();
}
catch (WebRequestException exception)
{
    Console.WriteLine(exception.Response);
}

Fixed in 4.5.0.


Skipped local variables

Hi rafalh,
Thank you so much for developing this! As far as I can tell you created the only DWARF1 analyzer for Ghidra or IDA, and it is extremely helpful for our reverse engineering project. At the moment we do have one big issue with it though:
We applied the DWARF1 analyzer to a Gamecube game. This mostly works, however we noticed that the majority of local variables are being skipped. Is there anything we can do to improve this?
Here's a comparison of the info imported into Ghidra vs the info shown in DWARF Explorer ( https://github.com/sevaa/dwex ):

You can find the ELF here: https://raym.app/data/jade/kingkong_gc/jadegc_ia2cr.elf
We use this to load Gamecube ELF files: https://github.com/aldelaro5/ghidra-gekko-broadway-lang
Thank you in advance! :)

Another PS2 ELF we are very interested in is this: https://app.box.com/s/5py2ayri10s0qzxxt9n9mvj5572actjs
However it seems to have the same issue as the Gamecube ELF above:

Any idea what is causing these to be ignored?
Thank you!

Hello! It's very nice to hear that my work is useful for you.

Any idea what is causing these to be ignored?
It's simple - local variables are not currently supported. Only functions' parameters are imported from DWARF data. I didn't really need local variables and considered them much harder to implement than function parameters so I left them unimplemented, but it would be nice to have them supported. I'm not planning to work on them anytime soon so if you have time I am open for a pull request adding them.


Does Create your first deep learning neural network is out of sync with model-zoo ? Kernen Instalatioin verifycation

Hi there,
I started looking in to your tutorial https://github.com/deepjavalibrary/djl/blob/master/jupyter/tutorial/01_create_your_first_network.ipynb
and got strange feeling that the source code of project example (model-zoo) is outdated.
Tutorial says to add maven repo and snapshot but the example project uses gradle https://github.com/deepjavalibrary/djl/blob/master/model-zoo/build.gradle
Also its not clear when and how Jupyter will be used and if there specific place for Jupyter and kernals installation because I see there 0 installed kernels are running.

Please let me know what I'm missing, thank you!

The way that you build the examples and the Jupyter notebooks are slightly different. The model-zoo build.gradle is not for example purposes, but how the DJL project will internally build the model-zoo module.
If you are attempting to make a project using DJL, you can pick a build system:

Jupyter notebooks - See https://github.com/deepjavalibrary/djl/blob/master/jupyter/README.md for install instructions
Maven - See example pom.xml https://github.com/deepjavalibrary/djl/blob/master/examples/pom.xml
Gradle - See example build.gradle https://github.com/deepjavalibrary/djl/blob/master/examples/build.gradle

Within the Jupyter system, you use the %maven system to add a maven repository. Note that the Maven repository system is shared across most JVM build tools. The same maven repository can be read from both the Maven and Gradle build tools, along with the Jupyter notebook Maven integration.
You can also look into our demo repository for standalone DJL examples.

it seems like im missing basic understanding on how that Jupyter works and why java library uses python... and those tutorial does not help or point me to the right direction to start my learning process.
After Jupyter installation how do I need to add maven repository %mave ?
Do I need to open python console and run that magic command? :)


Enhance backup handling

The current shared backup bucket solution aims to automatically reschedule core.gardener.cloud/v1alpha1.BackupBucket resources in case the active Seed is offline or has problems. However, as of today there is no mechanism to decide which new Seed has access to the backup infrastructure environment (e.g., consider the openstack case where multiple OpenStack installations might be active with the same Gardener).
Consequently, the proposal we discussed with @swapnilgm @timuthy @mandelsoft is to enhance our current APIs to support these scenarios. These APIs will also "for free" open up for new features, e.g. using an existing bucket for backups, or using the very same bucket for all seeds, if desired.
apiVersion: core.gardener.cloud/v1alpha1
kind: BackupInfrastructure
metadata:
  name: environment1
spec:
  provider: openstack
  secretRef:
    name: backup-openstack
    namespace: garden

---
apiVersion: core.gardener.cloud/v1alpha1
kind: Seed
metadata:
  name: seed1-in-environment1
spec:
  provider:
    type: openstack
    region: eu1
  backup:
    infrastructureName: environment1                       # creates new bucket in `eu1` region
  # region: eu3                                            # only possible to specify if new bucket shall be created (in another region)
  # bucketName: e7032be0-ceea-11e9-aa66-acde48001122       # use existing bucket
  ...

---
apiVersion: core.gardener.cloud/v1alpha1
kind: BackupBucket
metadata:
  name: e7032be0-ceea-11e9-aa66-acde48001122
spec:
  backupInfrastructureName: environment1
  region: eu1
  seed: seed1-in-environment1

However, as of today there is no mechanism to decide which new Seed has access to the backup infrastructure environment (e.g., consider the openstack case where multiple OpenStack installations might be active with the same Gardener).

I see this as a topology problem. The above approach with BackupInfrastructure seeks to solve it by explicitly encoding the topology (provider, region etc.).
How about solving it a bit more informally similar to the topology-aware scheduling using labels and selectors?
apiVersion: core.gardener.cloud/v1alpha1
kind: Seed
metadata:
  name: seed1-in-environment1
  labels:
    backup.garden.sapcloud.io/provider: openstack
    backup.garden.sapcloud.io/region: eu1
spec:
  provider:
    type: openstack
    region: eu1
  ...

---
apiVersion: core.gardener.cloud/v1alpha1
kind: BackupBucket
metadata:
  name: e7032be0-ceea-11e9-aa66-acde48001122
spec:
  seedSelector:
    matchLabels:
      backup.garden.sapcloud.io/provider: openstack
      backup.garden.sapcloud.io/region: eu1
  region: eu1
  seed: seed1-in-environment1
status:
  seed: seed1-in-environment1

Since backupBucket is not created manually and created at the time of seed creation. Mostly your idea leads to putting seedSelector to all the label values from first assigned seed. But all labels need not be useful for categorising seeds which has access  to object store/backup provider. So, when the event of rescheduling occurs the new seed need not be expected to have all labels as previous seed. So, this approach won't work.

This is not a valid assumption. The selector could be on a subset of values. Hence, the rest of the chain of logic is invalid too.

Yes. but then we will have to hardcode it in code the set of label to be choose from seed for which backupBucket is being created.
@rfranzke @timuthy @mandelsoft Any comment on approach suggested by @amshuman-kr ?

but then we will have to hardcode it in code the set of label to be choose from seed for which backupBucket is being created.

Or pick it from somewhere in the landscape configuration which is the right place for such information, isn't it?

@swapnilgm @amshuman-kr what's the plan here?

I'm fine with seedSelector approach suggested by @amshuman-kr.  But before going forward, just need one more clarification. With seedSelector approach it's hard rather not possible to specify that the single seed can have access to multiple backup object store provider. On other hand, with backupInfrastructure resource, we can extend it to array i.e. we can make either seed.spec.backup.Infrastructure as list rather than string.

With seedSelector approach it's hard rather not possible to specify that the single seed can have access to multiple backup object store provider.

Well... not impossible ;-)
The assumption above seems more driven by the labels I have specified in the example. But the whole point of the seedSelector approach is that the landscape admins can choose their own labels to describe their topology of seeds and backup infrastructures.
For example, a set of labels like the following could address the use-case of a single seed accessing multiple backup infrastructures.
...
metadata:
  labels:
    backup.garden.cloud/provider/s3: 'true'
    backup.garden.cloud/provider/gcs: 'true'
...

The advantage is that this need not have any changes to the spec. This is the intended advantage of the seedSelector approach that the spec remains unaffected and can support many different kinds of mapping between the seeds, backupbuckets and the backup infrastructure not only during the creation use-case but also during the migration use-case.
The downside, of course, is that the explicit mapping between the seeds, backupbuckets and the backup infrastructure is not clear from the spec and emerges from how the labels and the selectors are used.

@amshuman-kr how does Gardener know which labels to put into the seedSelector of the BackupBucket when creating it? It probably shouldn't "just take all labels from the Seed object". All that start with backup.gardener.cloud? If none exist then the seedSelector is empty, meaning that all seeds would fit, correct?

It probably shouldn't "just take all labels from the Seed object".

Agreed. It shouldn't.

All that start with backup.gardener.cloud? If none exist then the seedSelector is empty, meaning that all seeds would fit, correct?

Yes. To the best of my understanding so far. I understand (correct me if I am wrong) that there is a gap in the current implementation and the potential constraint that only some seeds might be able to reach some providers. Either we can encode the way to fill this gap in information via in some configuration (some sort of landscape configuration) passed to Gardener or infer it somehow from the seeds themselves, e.g. as you mentioned using the labels with some prefix like backup.gardener.cloud.

If required, we could even avoid hard-coding backup.gardener.cloud as the prefix and instead use another label like prefix.selector.backup.gardener.cloud: some-custom-prefix.

/close since this issue is open since a long time without anyone picking it up or any attention at all. Feel free to reopen if you think it's adequate.


[SPARK-42252][CORE] Deprecate spark.shuffle.unsafe.file.output.buffer and add a new config

What changes were proposed in this pull request?
Deprecate spark.shuffle.unsafe.file.output.buffer and add a new config spark.shuffle.localDisk.file.output.buffer instead.
Why are the changes needed?
The old config is desgined to be used in UnsafeShuffleWriter, but now it has been used in all local shuffle writers through LocalDiskShuffleMapOutputWriter.
Does this PR introduce any user-facing change?
Old still works, advised to use new.
How was this patch tested?
Passed existing tests.

cc @mccheah and @HyukjinKwon

If you don't mind, let's target this proposal for Apache Spark 3.5.0.

Ok, it's good. I will make some changes.

Gentle ping @dongjoon-hyun, the target version of this proposal has been updated. Could you go on reviewing it when you have time? Thanks.

Thank you for your patience. Could you rebase this PR?

@wayneguow which PR made this change:

The old config is desgined to be used in UnsafeShuffleWriter, but now it has been used in all local shuffle writers through LocalDiskShuffleMapOutputWriter.

? Would be easier for me to review if you can point it out.

@wayneguow which PR made this change:

The old config is desgined to be used in UnsafeShuffleWriter, but now it has been used in all local shuffle writers through LocalDiskShuffleMapOutputWriter.

? Would be easier for me to review if you can point it out.

@HyukjinKwon The PR is #25007 .

Too bad. Sorry but it seems that we forgot this PR, @wayneguow .

It seems too late because Apache Spark 3.5 is RC3 stage. If we want this still, we can do for Apache Spark 4.0.0.

https://github.com/apache/spark/releases/tag/v3.5.0-rc3

Gentle ping @dongjoon-hyun , a pr from some time ago.

friendly ping @yaooqinn Do you have time to help take a look?

Merged to master, thank you @dongjoon-hyun @LuciferYang @wayneguow


Add flub setInterdependencyRange

Description
Adds new command to flub setInterdependencyRange intended for use by release pipeline to replace its use of flub bump.
Also cleans up some related code in flub bump.
Once this is adopted, dependency modification support can be removed from flub bump, simplifying its responsibilities.
Reviewer Guidance
The review process is outlined on this wiki page.

Can you explain the problems that these changes are intended to address?

Thanks, that makes sense. I think what confused me is the removal of the step in ci that sets the versions. It makes sense to separate the functions, but the set version step still needs to be run I think.
I'll look more closely at the changes tomorrow. I likely missed something.
High level I wonder if changing the default interdependency range to "don't change the range" be a smaller and simpler change? Perhaps that doesn't charge the larger debt goals though.

Thanks, that makes sense. I think what confused me is the removal of the step in ci that sets the versions. It makes sense to separate the functions, but the set version step still needs to be run I think.

This does not make any CI changes (yet), but I think you are right about it missing something.
For all normal releases, setting the version during publish is unnecessary since it's done during the version bump before the branch is forked, but I think prerelease builds still need to set it since they lack such a version bump. Having them use the version bump command for that part of the change (to mirror how its done for regular releases) seems like it would make sense.
That said, I still think separating the logic for those two changes is cleaner, since we already rewrite the package.json twice using different approaches for each.

I'll look more closely at the changes tomorrow. I likely missed something.
High level I wonder if changing the default interdependency range to "don't change the range" be a smaller and simpler change? Perhaps that doesn't charge the larger debt goals though.

Refactoring bump to make the package.json updates in a single pass, and having the tool have optional flags for setting the version and for setting the dependency ranges would be another relatively clean way to refactor this.
Having a single utility for editing package.json files with lots of flags for optional edits to perform, but does nothing by default might be a nice design to unify several of our tools (dependency updating tools, version bump, type test configuration) into one much simpler and much more performant utility.
then we could do something like this if a user wanted to change both at once, but could also change either one:
flub editPackage -g client --version=2.4.4 --interdependencySchema="workspace:~"
I think that could make sense and be much easier to understand.
Currently we have "bump" able to do things that don't sound like version bumping (like setting the version to a prerelease version, or replacing workspace ranges), and having it do those things unconditionally (you need to request them be set to their current value to not modify them): I find that very confusing (for example its why I thought the publish tooling didn't need the version change, since its very hard to tell why a script is using bump from its invocation since you can't easily tell which of its changes are intended to no-op) and hard to use (easy to accidently not no-op things you don't want to change, like how flub release broke the dependency ranges when just tiring to bump the versions).

That said, I still think separating the logic for those two changes is cleaner, since we already rewrite the package.json twice using different approaches for each.

I agree. "Bump" as a command is one of the earliest we made and it inherited some weirdness from our early processes, and then has ballooned in capabilities over time. From where we stand now, I think a separate "modify the interdep ranges" command makes clear sense. Your other suggestions are also reasonable to me, but I am a fan of this overall approach - smaller focused commands that can be combined if needed.

Also - Oclif has good support for aliases now, so renaming commands is possible and straightforward. With that in mind, perhaps bump should be renamed to e.g. modify:version? Separate from everything else, bump doesn't seem like the best verb.


Take dependency on Helm wherever possible

This project should import "k8s.io/helm" so there is a higher confidence that values are being parsed identically to how Helm CLI does it.
These method copies such as MergeValues should be able to be safely removed https://github.com/lrills/helm-unittest/blob/436447d3bcc47be1ed51d66bc7a21dec7d97262e/unittest/valueutils/valueutils.go#L194

Some stuff will need to be copy-pasted definitely! I would start w helm v2.8.2, integrate as much as possible and see what breaks. Even if my tests are all green, I would be hesitant to rely on the tool in a CI environment if the yaml templating didnt work exactly like helm.

Oh, the rendering part do use helm itself that can be relied on (now 2.7.2, maybe bump to 2.8 next patch). But most earlier part of code did copy paste quite a things, mostly for simulating cli behavior in yaml, I would have a check on that part!
https://github.com/lrills/helm-unittest/blob/2d45bb580e222bf28bac06dc41b8b75daebdba63/unittest/test_job.go#L14-L17


resource nsone_user crashes when trying to set billing

For a sample resource which goes like
  resource "nsone_user" "test_sarguru" {
  name = "sarguru2"
  username = "sarguru99"
  email =<EMAIL_ADDRESS>  notify {
    billing = true
  }
}

the terraform provider crashes with the following error.
!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!
nsone_user.test_sarguru: Creating...
  email:          "" =><EMAIL_ADDRESS>  name:           "" => "sarguru2"
  notify.#:       "0" => "1"
  notify.billing: "" => "1"
  username:       "" => "sarguru99"
Error applying plan:

1 error(s) occurred:

* nsone_user.test_sarguru: unexpected EOF
.
panic: interface conversion: interface is string, not bool

It seems to be because notify.billing: "" => "1"  is rendered as a string rather than boolean for some reason.

Relates to #16


Add horizontal center for colorpicker buttons

If we have some extend margins on custom theme, color picker buttons are left aligned, and cannot be centered unless we create our own buttons. Before:

After:

This centers them horizontally.

Can you add to the PR description an image of the picker before?

Can you add to the PR description an image of the picker before?

You mean after? Added.


How to do with absolute path in installed files?

LibA has a accompanying data file for it to work.
For a lib, a relative path makes no sense,
the lib must know the absolute path of the data file,
so the path is saved somewhere in the installed folders,
and the value of the path is the path of installed data file, it is fixed.
With traditional cmake install, no problem.
But for vcpkg, it is initially installed in vcpkg\packages, then regularized and copied to vcpkg\installed.
After some debugging, I can see include directories will be modified to be in vcpkg\installed,
but paths that are genereated by configure_file are still in vcpkg\packages.
It means the installed pkg in vcpkg\packages depend on the data file in vcpkg\packages, is it expected?

Since vcpkg can package and export the generated files, we cannot use absolute paths in binary/configuration files but must use relative paths.

But a relative path only makes sense for applications, for a lib a relative path makes no sense, right?

We hope your question was answered to your satisfaction; if it wasn't, you can reopen with more info.


environment.yaml file not executing properly

" ResolvePackageNotFound: " for several packages

Hi, I tried to install environment.yaml again in my Ubuntu (Foss) machine and everything went fine. See if you can install it on any ubuntu machine and check if there is no IP restrictions from your internet provider.


setup: ensure trim pyc except pip

@troydai , there is a out-of-sync between 2 commits we made on the same file recently, which caused non pip 3rd party libs' .py files are not trimmed, hence we have 2000+ more files in the installer.
This PR corrects it.  It is your call to take it or leave it. IMO, I suggest we trim .py on libs owned by us, and trim pyc files on 3rd party ones'

[ ] The PR has modified HISTORY.rst describing any customer-facing, functional changes. Note that this does not include changes only to help content. (see Modifying change log).

[ ] I adhere to the Command Guidelines.

Codecov Report

Merging #6673 into dev will not change coverage.
The diff coverage is n/a.

@@         Coverage Diff         @@
##           dev   #6673   +/-   ##
===================================
  Coverage    0%      0%
===================================
  Files       11      11
  Lines      145     145
  Branches    11      11
===================================
  Misses     145     145

Continue to review full report at Codecov.

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

@yugangw-msft is this still relevant?


The target Hero widget is build three times

Steps to Reproduce
Below is my code.
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return CupertinoApp(
      title: 'Hero Demo',
      home: HeroDemoView(),
    );
  }
}

class HeroDemoView extends StatefulWidget {
  const HeroDemoView({Key key}) : super(key: key);

  @override
  _HeroDemoViewState createState() => _HeroDemoViewState();
}

class _HeroDemoViewState extends State<HeroDemoView> {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      child: Hero(
        tag: 'Hero',
        child: Center(
          child: Container(
            height: 77,
            width: 77,
            color: Colors.purple,
          ),
        ),
      ),
      onTap: () {
        print('Open second page...');
        Navigator.of(context).push(PageRouteBuilder(
          pageBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
            return Hero(
              tag: 'Hero',
              child: SecondPage(),
            );
          }
        ));
      },
    );
  }
}

class SecondPage extends StatelessWidget {
  const SecondPage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    print('Second page build...');
    return Container(
      color: Colors.blue,
    );
  }
}

When I tap on the purple container
Expected results:
flutter: Open second page...
flutter: Second page build...

Actual results:
flutter: Open second page...
flutter: Second page build...
flutter: Second page build...
flutter: Second page build...

The second page is build three times

Logs
flutter doctor -v

[✓] Flutter (Channel stable, v1.17.3, on Mac OS X 10.15.5 19F101, locale zh-Hans-CN)
    • Flutter version 1.17.3 at /Library/Flutter/flutter
    • Framework revision b041144f83 (4 weeks ago), 2020-06-04 09:26:11 -0700
    • Engine revision ee76268252
    • Dart version 2.8.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /Users/choonlay/Library/Android/sdk
    • Platform android-30, build-tools 30.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    • CocoaPods version 1.9.3

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 46.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.46.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.12.0

[✓] Connected device (1 available)
    • iPhone 11 Pro • EC9436BA-C9A8-4703-B0BE-1AC9AC9A369F • ios • com.apple.CoreSimulator.SimRuntime.iOS-13-5 (simulator)

• No issues found!

Hi @Nomeleel
you need to write your build method in such way that you can expect it to be called at any time and any number of times without impact.
Please take a look at https://stackoverflow.com/questions/52249578/how-to-deal-with-unwanted-widget-build
Closing as this is expected behavior
https://github.com/flutter/flutter/issues/23063#issuecomment-453824079

Hi @Nomeleel
you need to write your build method in such way that you can expect it to be called at any time and any number of times without impact.
Please take a look at https://stackoverflow.com/questions/52249578/how-to-deal-with-unwanted-widget-build
Closing as this is expected behavior
#23063 (comment)

I think Hero triggered the new build, because if the second page without nesting Hero will only build once.
#23063 (comment)
Have similar behavior but not the same issue,
And this #23063 issue was not fixed, but it was closed.


triggerRef does not trigger watch(() => ref.value)

Vue version
3.3.8
Minimal reproduction
This test fails:
import { nextTick } from 'vue'
test('triggerRef with watch', async () => {
    const a = shallowRef(1)
    let aTriggered = false
    watch(() => a.value, () => {
      aTriggered = true
    })
    triggerRef(a)

    await nextTick()

    expect(aTriggered).toBe(true)
  })

What is expected?
Watching values of manually triggered references should execute the watch callback.
What is actually happening?
Watching the ref itself works fine. According to post by @LinusBorg in https://github.com/vuejs/core/issues/1209#issuecomment-648953517, this is the expected design of Vue.
However, getting value of the ref does not work.  So watch(() => a.value, ...) won't work but, watch(a, ...) work. The behavior should be the same and consistent for shallowRefs where state tracking is disabled
watchEffect works fine for these .value calls. This is another undocumented inconsistency with watch.
Official Vue docs state nothing about caching for watch.

You didn't trigger a change in the a-variable, handle like this .
test('triggerRef with watch', async () => {
    const a = shallowRef(1)
    let aTriggered = false
    watch(() => a.value, () => {
      aTriggered = true
    })
    a.value = 2
    triggerRef(a)

    await nextTick()

    expect(aTriggered).toBe(true)
  })

My comment is incorrect as it relates to triggerRef. I was, at that moment, more focussed on the asynchronous execution of the test. Further down in the comment, Evan explains why the watch callback should not in these cases - because the callback will only run if the value actually changed, which is also documented as such, in my opinion.
(Sidenote: watchEffect is different as it doesn't have a callback, it essentially is a watch with just the first argument - only the effect, not the callback. And the effect runs on any trigger, yes.)
The real inconsistency that I noticed is that the behaviour you desire is only happening if the first argument is a shallowRef.
Looking at the implementation of watch() this seems to be by design so I'd have to call in @yyx990803 to get some insight in the desired behaviour.
const a = shallowRef(0)
watch(a, () => console.log('this will trigger'))
watch(() => a.value () => console.log(''this will not'))

I can presume this was done so that one can use watch() with mutations to in non-reactive changes in a shallowRef's contents, but I personally think this behaviour is confusing, especially since it only works with the ref as the argument, not a getter reading the ref.
Though I could imagine that there's already userland code out there relying on this behavior, which we don't want to break, necessarily.

This seems like the same problem I am having with passing in a shallowRef() into a prop of a child component.
I 'KNOW' the internals of a object (in my case, a arrayBuffer) have changed, so I call triggerRef() but a child component's internal computed never retrigger.
Everything inside the outer component updates as you would expect, but the child component just sits there oblivious. (Which is very counter intuitive, that only half of the reactivity system would update).
It seemed https://github.com/vuejs/core/issues/9732 had the same problem, but it was closed and locked.

Hello @LinusBorg and @yyx990803
I came across some weird situation, maybe related to this issue. In the following example, I do not get updates of counter, but if I uncomment  then both lines render counter as it changes:

<template>

From computed: {{ nestedObj.count }}

</template>

That example works as expected.
Triggering the obj ref makes the computed re-evaluate, but since it returns the same value, that will not trigger a rerender of the template.
If you access the obj ref in the template, then it re-renders because it's now a direct dependency of the template

Thanks for the clarification. Do you have a suggestion on how to create reusable computed values for some third-party objects that are mutated without reactivity proxies?


doc: specify OFP v1.0 for sample application

This is a minimal change to keep the supplied sample code
working with latest software. The sample code is not compatible
with OFP v1.3+, and if there is no requirement on supported version
Ryu will probably accept latest supported OF switch.

Coverage decreased (-0.04%) to 64.431% when pulling 73502f07d922ba7b049eb29c58ee9ced01133bf9 on maljaberi:master into b09b39c11dd4f2e2e0d2d0a70ede9e3cef917e93 on osrg:master.

Hi @maljaberi
Your patch looks good to me, but According to CONTRIBUTING.rst, Ryu project does not use Pull Request on GitHub.
How about sending your patches to<EMAIL_ADDRESS>FYI, the reason why l2.py doesn't work well is the default table-miss action in OF1.3 is different from OF1.0. (The default table-miss in OF1.0 is Packet-In, and that in OF1.3+ is Drop.)
In OF1.3+, it is required to install the table-miss flow entry to forward packets to the controller.

Done.
https://sourceforge.net/p/ryu/mailman/message/35334750/
Yes, and it was very hard for me to figure that out in the beginning, so I though maybe this could lower the threshold for new people to learn and use Ryu.


base64 not recognized value error

Hi, I am using ubuntu 16.04.
I am following the tutorial from this link to generate license
https://github.com/open-license-manager/examples/tree/develop/submodule
I get the error "base64 not recognized value error" after I run
$ bin/lcc license issue -p ../projects/DEFAULT/ -o example.lic
Besides that, it also shows "License writing error: Private key file [/home/ubuntu/open-license-manager/examples/submodule/build/private_key.rsa] does not exists"
Do I need to generate the private key file manually and put in /home/ubuntu/open-license-manager/examples/submodule/build/ directory?

Thank you in advance for reporting.
The example project was outdated, and there was a bug in lccgen.
Please give it a second try now, if still don't work reopen the bug and comment.


Auto load identities under macOS.

Since macOS sierra, the Keychain won't load saved identities during startup, which causes manually input passphrase for every login.
The solution is to enable the ssh module on macOS previously disalbed，and use ssh-add -A instead of ssh-add command。

Note: In the new fork, this is superseded by zsh-users/prezto#5 and zsh-users/prezto#7.


Some errors in the document need to be rectified

Hi, all.
I found some mistakes in our document, such as spelling errors and default values. For example:

spelling mistakes:
docs\zh-CN\sql-reference\sql-statements\Administration\ADMIN SET CONFIG.md: 可设置的配置项，可以通过 AMDIN SHOW FRONTEND CONFIG; 命令查看。 AMDIN should be ADMIN

default value mistakes:
docs\zh-CN\administrator-guide\operation\tablet-repair-and-balance.md: disable_balance default value should be false

And so on.
I want to correct these mistakes. I will submit my changes soon.

Thanks for your contribution!


Feat/pupil 902/quiz result order

Job story
When I am rendering reviewing quiz results,
I want to render the answers and grading
So that I can present the results to the user.
How to test

Go to https://deploy-preview-2660--owa-storybook.netlify.thenational.academy/?path=/story/components-pupilcomponents-quizresultorder--correct-order

switch between correct order and incorrect order. Notice that the order changes but the elements in the correct order are preserved.

ACs

[x]  matches designs
[x]  mobile, tablet
[x]  renders maths jax
[x]  storybook
[x]  tests
[x]  pa11y and percy

@kimon-satan just checking the order number will be applied when the component is used in owa (e.g the numbering in the design against the match text content)

@kimon-satan just checking the order number will be applied when the component is used in owa (e.g the numbering in the design against the match text content)

Damn

@kimon-satan just checking the order number will be applied when the component is used in owa (e.g the numbering in the design against the match text content)

Damn I missed that . Will rectify now

:tada: This PR is included in version 1.499.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


how to get grpc method option

hi guys:
I have a simple grpc server called server.proto
code below:
extend google.protobuf.MethodOptions {
    Message msg = 50056;
}

message Message {
    string tool = 1;
}

service Hello {
    rpc Say(Request) returns (Response) {
        option (msg).tool = "telephone";
    }
}

This could genertate file called server_pb2.py
But how to get method Say Option "tool" ?
Thanks

I don't think we support this yet... It should be a purely additive change though AFAICT.

hi @soltanmm , I have simple but dirty way to get the option in Python.
# pb2 is module object equals import server_pb2
# import server_pb2
# get_service_identify_from_pb_file(server_pb2)

def get_service_identify_from_pb_file(pb2):
    method_mapping = dict()
    p = descriptor_pb2.FileDescriptorProto()
    pb2.DESCRIPTOR.CopyToProto(p)
    for s in p.service:
        for m in s.method:
            if not method_mapping.get(m.name):
                method_mapping[m.name] = dict()
            for k, v in m.options._fields.items():
                if hasattr(v, '_fields'):
                    for i, j in v._fields.items():
                        method_mapping[m.name][i.name] = j
    return method_mapping

# returns {'Hello': {'method': 'GET'}}

Wow, that's really useful code @GuoJing. It's also possible to get the request/response types and streaming type for each RPC by using the other members of the method descriptor, which is the object in the variable "m".
My previous searches for "Python gRPC reflection" had led me to believe that getting that information was planned but not currently possible. (I now realize the other results were for the case you want to get information about a service without access to its .proto, unlike my situation.) Perhaps this code could be documented a bit more prominently?

+1 I have struggled on it for hours. The issue's answer help me figure it out. Is there any other pythonic way to support the custom method options? I thought the feature were so siginificant to use.

Closing as this is more a question than an issue.


Add NeoForge badges to v3 branch

Pull NeoForge vectors and PNGs from Hyperbole-Devs/vectors to integrav/devins-badges.

Images can be found in the "Commits" section.

#82's badge has red in it unlike NeoForge's "Orange" colour.


Ligatures are not working

Describe the bug
Ligatures do not work!

As you can see in the above image, the arrow should be a ligature.
I've got core text renderer turned on:

and I also have set macligatures in my config. I'm not really sure what else I'm supposed to do to get this working. I'm definitely using a supported font - it works in the terminal and I've tried many different ones.
I'm running the following version of MacVim:
:version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Sep 16 2020 23:05:14)
macOS version
Included patches: 1-1651
Compiled by Homebrew
Huge version with MacVim GUI.  Features included (+) or not (-):
+acl               +comments          +find_in_path      +linebreak         +mouse_xterm       +quickfix          +termguicolors     +vreplace
+arabic            +conceal           +float             +lispindent        +multi_byte        +reltime           +terminal          +wildignore
+autocmd           +cryptv            +folding           +listcmds          +multi_lang        +rightleft         +terminfo          +wildmenu
+autochdir         +cscope            -footer            +localmap          -mzscheme          +ruby              +termresponse      +windows
-autoservername    +cursorbind        +fork()            +lua               +netbeans_intg     +scrollbind        +textobjects       +writebackup
+balloon_eval      +cursorshape       +fullscreen        +menu              +num64             +signs             +textprop          -X11
+balloon_eval_term +dialog_con_gui    +gettext           +mksession         +odbeditor         +smartindent       +timers            -xfontset
+browse            +diff              -hangul_input      +modify_fname      +packages          -sound             +title             +xim
++builtin_terms    +digraphs          +iconv             +mouse             +path_extra        +spell             +toolbar           -xpm
+byte_offset       +dnd               +insert_expand     +mouseshape        +perl              +startuptime       +transparency      -xsmp
+channel           -ebcdic            +ipv6              +mouse_dec         +persistent_undo   +statusline        +user_commands     -xterm_clipboard
+cindent           +emacs_tags        +job               -mouse_gpm         +popupwin          -sun_workshop      +vartabs           -xterm_save
+clientserver      +eval              +jumplist          -mouse_jsbterm     +postscript        +syntax            +vertsplit
+clipboard         +ex_extra          +keymap            +mouse_netterm     +printer           +tag_binary        +virtualedit
+cmdline_compl     +extra_search      +lambda            +mouse_sgr         +profile           -tag_old_static    +visual
+cmdline_hist      -farsi             +langmap           -mouse_sysmouse    -python            -tag_any_white     +visualextra
+cmdline_info      +file_in_path      +libcall           +mouse_urxvt       +python3           +tcl               +viminfo
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
Compilation: clang -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe  -DMACOS_X -DMACOS_X_DARWIN  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_S
OURCE=1
Linking: clang   -L. -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib<EMAIL_ADDRESS>-L/usr/local/opt/readline/lib -L. -fstack-
protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib<EMAIL_ADDRESS>-L/usr/local/opt/readline/lib  -L/usr/local/lib -o Vim -framework Cocoa
 -framework Carbon       -lm  -lncurses -liconv /usr/local/lib/libintl.a -framework AppKit  -L/usr/local/opt/lua/lib -llua5.3 -fstack-protector  -L/System/Library/Perl
/5.18/darwin-thread-multi-2level/CORE -lperl<EMAIL_ADDRESS>-lpython3.8 -framewo
rk CoreFoundation -F/System/Library/Frameworks -framework Tcl -framework CoreFoundation -lruby.2.7

I'm definitely using a supported font - it works in the terminal and I've tried many different ones.

What's the font? It's a little hard to diagnose without that information.

I've tried it with the following fonts:
FuraCode Nerd Font Mono
FiraCode
DroidSansMono Nerd Font Mono
SauceCodePro Nerd Font Mono

I just installed FiraCode and it seems to be working for me:

One thing to note is there is a minor bug where if you have a cursor on one of the characters forming the ligature the cursor, the rendering for that character may mess up the ligature. This will be fixed by the renderer refactor coming in soon. You can also forcefull fix it by doing :redraw!.
If that doesn't seem to work can you try to run mvim --clean and just set the font and :set macligatures? Also, please post the results of defaults read org.vim.MacVim | grep MM.


Does XSpec specify an implicit default context?

If we look at the scripts provided for executing XSpec:

Bash - https://github.com/expath/xspec/blob/master/bin/xspec.sh#L259
Windows Batch - https://github.com/expath/xspec/blob/master/bin/xspec.bat#L73
Ant - https://github.com/expath/xspec/blob/master/build.xml#L97

We see that each of them invoke Saxon to execute the XSpec. However, they also tell Saxon to set the input document to that of the original foo.xspec file, by using the -s: argument, even though they also set an initial named template for execution using the -it: argument.
This doesn't seem to make any sense to me. XSpec provides x:context for setting the context of a Scenario. Also I can't imagine why you would ever want a default implicit context which was the content of your XSpec.
Is this a mistake/bug or is this by intention? If this is by intention, then can someone please explain what the use-case is, as I can't see it yet!

I'm not the best person to answer this as I'm just getting to grips with the codebase but I give my two pennies worth contribution - with the risk of stating the obvious or the erroneous.
Regarding the -s and -it flag, I can read the following in the Saxon documentation:

-s:filename: Identifies the source file or directory. Mandatory unless the -it option is used. The source file is parsed to create a tree, and the document node of this tree acts as the initial context item for the transformation. [...]

-it:template: Selects the initial named template to be executed. If this is namespaced, it can be written as {uri}localname. When this option is used, you do not need to supply a source file, but if you do, you must supply it using the -s option.

The shell script xspec.sh (as well as the batch and ant scripts) are run with both flags:
xslt -o:"$RESULT" -s:"$XSPEC" -xsl:"$COMPILED" \
     -it:{http://www.jenitennison.com/xslt/xspec}main \

The -s flag is set to the foo.xspec file passed by the user when running xspec and the -it flag is set to the named template main in generate-xspec-test.xsl.
I ran the shell script without the -s flag using the tutorial xspec example :
xslt -o:"$RESULT" -xsl:"$COMPILED" \
     -it:{http://www.jenitennison.com/xslt/xspec}main \

and it produced the same output at the terminal as well as the same XML and HTML reports. However, I have not yet tested it with the batch and ant scripts nor with an XQuery example.
This makes me think that the -s flag is not necessary (let alone inconsistent) and I agree with you that it doesn't make sense to set the XSpec document as the initial context of the transformation.
Can anyone see a use case for this? Running it without -s flag is going to break other things?

I don't know about XSpec, but it's perfectly OK to have both an initial named template and a source document for a transformation. It's useful for example if you want a stylesheet with multiple entry points to do either a summary report or a full report on the same input document. The source document is available (as the value of ".") both within the initial named template, and within global variables.
Michael Kay
Saxonica

On 16 Jan 2016, at 17:53, Sandro Cirulli<EMAIL_ADDRESS>wrote:
I'm not the best person to answer this as I'm just getting to grips with the codebase but I give my two pennies worth contribution - with the risk of stating the obvious or the erroneous.
Regarding the -s and -it flag, I can read the following in the Saxon documentation http://www.saxonica.com/documentation9.5/using-xsl/commandline.html:
-s:filename: Identifies the source file or directory. Mandatory unless the -it option is used. The source file is parsed to create a tree, and the document node of this tree acts as the initial context item for the transformation. [...]
-it:template: Selects the initial named template to be executed. If this is namespaced, it can be written as {uri}localname. When this option is used, you do not need to supply a source file, but if you do, you must supply it using the -s option.
The shell script xspec.sh https://github.com/expath/xspec/blob/master/bin/xspec.sh#L259 (as well as the batch and ant scripts) are run with both flags:
xslt -o:"$RESULT" -s:"$XSPEC" -xsl:"$COMPILED"
-it:{http://www.jenitennison.com/xslt/xspec}main
The -s flag is set to the foo.xspec file passed by the user when running xspec and the -it flag is set to the named template main in generate-xspec-test.xsl https://github.com/expath/xspec/blob/master/src/compiler/generate-xspec-tests.xsl#L64.
I ran the shell script without the -s flag using the tutorial xspec example https://github.com/expath/xspec/blob/master/tutorial/escape-for-regex.xspec :
xslt -o:"$RESULT" -xsl:"$COMPILED"
-it:{http://www.jenitennison.com/xslt/xspec}main
and it produced the same output at the terminal as well as the same XML and HTML reports. However, I have not yet tested it with the batch and ant scripts nor with an XQuery example.
This makes me think that the -s flag is not necessary (let alone inconsistent) and I agree with you that it doesn't make sense to set the XSpec document as the initial context of the transformation.
Can anyone see a use case for this? Running it without -s flag is going to break other things?
—
Reply to this email directly or view it on GitHub https://github.com/expath/xspec/issues/73#issuecomment-172237870.

On 14/01/2016 18:48, Adam Retter wrote:
...

We see that each of them invoke Saxon to execute the XSpec. However,
they also tell Saxon to set the input document to that of the
original |foo.xspec| file, by using the |-s:| argument, even though
they also set an initial named template for execution using the
|-it:| argument.

I thought there was a time when you still needed to provide a source
document when you used |-it:|, but I trawled the Saxon documentation
back to Saxon 8.9, and it wasn't required then, so I think I'm either
wrong or I'm thinking about the  Ant task.

This doesn't seem to make any sense to me. XSpec provides |x:context|
for setting the context of a Scenario. Also I can't imagine why you
would ever want a default implicit context which was the content of
your XSpec.

Sometimes the XSpec is all that you have (if you need to supply a source
document, that is).

Is this a mistake/bug or is this by intention? If this is by
intention, then can someone please explain what the use-case is, as I
can't see it yet!

On mature recollection, it might have been needed for Ant at one time
but not necessarily for the others.
I looked at how Jeni's previous test framework did it, but it used an
older Saxon version so didn't have |-it:| anyway.
Regards,
Tony.

@tony, So in your conclusion, is it the case that we no longer need to set an initial default context, as there appears to be no current reason to do so?
Otherwise, can we somewhere in the XSpec spec have it stated that there is an initial default context which should be the XSpec itself?
It would be nice to get this nailed down :-)


[13.4-stable] Fix app discovery endpoint

This is a backport of #4421, commits force app discovery endpoint to comply with allowToDiscover flag in EVE API

Huh, that's a new trick, let me do it


onPress not called after holding a button for longer than a second (iOS) (since 0.62)

Description
Since upgrading to 0.62.2 it seems that every "React Native" button (Button, TouchableHighlight etc.) cancels the onPress when pressing a button for longer than a second.
I have an app still running on 0.61.5 and there it will still call the onPress after holding a button for longer than a second and releasing it.
Is this any new intended behavior? Native libraries like: https://github.com/react-native-community/segmented-control don't have this behavior.
React Native version:
0.62.2
Steps To Reproduce

Create a new project with npx react-native init AwesomeProject
Press any of the buttons below "Learn More" for longer than a second and release.

Expected Results
I expected that the onPress would be called and I am redirected to the corresponding docs.
In an Expo snack, I am still seeing the expected results: https://snack.expo.io/@dylancom/2d8052
Probably due to that Expo SDK 37 is using React Native 0.61
Code example:
import { Button } from 'react-native';

<Button
  onPress={() => alert('I should be called')}
  title="Hold for > a second and release"
/>

This has been fixed in https://github.com/facebook/react-native/commit/9b81232ed2cc2beaf06a34ffe2279612f435f931.

Thank you for the issue @dylancom and thank you @jeswinsimon for finding the fix.
@dylancom can you confirm that commit has solved your issue? If so, feel free to close

@kander425 was running into the same issue. I was able to repro it on a newer build than the commit referenced.
The root cause is a change in behavior when migrating Touchables to use Pressability internally. Previously Touchable _performSideEffectsForTransition special cased moving out of long press state to fire onPress if no long press handler is available. Pressability instead will by default explicitly cancel the press if a long-press is detected. A property on the pressability config can control this, but is deprecated and not set on Touchables:

This seems like cancelling press was an intentional behavior, but it is a breaking one and seems a bit strange.

@NickGerleman, I am having trouble reproducing this bug. This is what I am using:
export default function Playground(props) {
  return (
    <Pressable
      onPress={() => console.warn('Pressed!')}
      style={({pressed}) => ({
        backgroundColor: pressed ? '#eee' : '#fff',
        padding: 10,
      })}>
      <Text>Press me!</Text>
    </Pressable>
  );
}

Regardless of how long I hold down the element, "Pressed!" gets logged.
Even though your original post mentions not supplying onLongPress, I'll mention for completeness that if I add an onLongPress prop like this:
export default function Playground(props) {
  return (
    <Pressable
      onLongPress={() => console.warn('Long Pressed!')}
      onPress={() => console.warn('Pressed!')}
      style={({pressed}) => ({
        backgroundColor: pressed ? '#eee' : '#fff',
        padding: 10,
      })}>
      <Text>Press me!</Text>
    </Pressable>
  );
}

When I press longer than 500ms, "Long Pressed!" gets logged, but "Pressed!" does not. This is the expected behavior.

@NickGerleman, let me also clarify _performTransitionSideEffects and onLongPressShouldCancelPress_DEPRECATED.
The logic of _performTransitionSideEffects in Pressability mirrors that of Touchable. This is the code in Pressability: https://github.com/facebook/react-native/blob/master/Libraries/Pressability/Pressability.js#L690-L694
According to this logic, we will fire onPress unless all of the following are true:

onLongPress is is supplied
prevState is RESPONDER_ACTIVE_LONG_PRESS_IN (meaning we fired onLongPress)
onLongPressShouldCancelPress_DEPRECATED is either not supplied, or it is supplied and returns true

As you can see, if onLongPress is not supplied, we will always invoke onPress regardless of how long you press down.
Lastly, onLongPressShouldCancelPress_DEPRECATED was deprecated in Pressability because triggering both onLongPress and onPress is a poor user interaction. One valid use case of supplying both callbacks is if onLongPress is conditionally invoked, but in those situations, it should be simpler to conditionally supply onLongPress.

Ahh… good catch. This was a mistake on my part in the migration for TouchableBounce (not technically exported in the Public API) and TouchableHighlight. I'll send a fix for it right now.

according to the scheme here https://reactnative.dev/docs/pressable, onPress shouldnt be called, but it is in my code

according to the scheme here https://reactnative.dev/docs/pressable, onPress shouldnt be called, but it is in my code

ohh i solved it by addint onLongPress () => null

@TomasSestak Correct. If onLongPress is not supplied, onPress will be fired regardless of how long a user presses down.

@TomasSestak Correct. If onLongPress is not supplied, onPress will be fired regardless of how long a user presses down.


Circleci to GitHub actions

Codecov Report

Merging #21 into develop will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop      #21   +/-   ##
========================================
  Coverage    76.47%   76.47%
========================================
  Files            2        2
  Lines          119      119
========================================
  Hits            91       91
  Misses          14       14
  Partials        14       14

Continue to review full report at Codecov.

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


Re-add flake8 to pre-commit

We have switched to ruff and I don't believe there is a consensus on switching to flake8 will close for now.


VolumePolicy should support K8s supported taint tolerations that makes the replica sticky

ref - https://github.com/openebs/openebs/issues/1271
These are the taints that K8s uses to make the DaemonSets sticky.

This code fix is already merged in https://github.com/openebs/maya/pull/277
Helm charts for volumepolicy CRD & volumepolicy objects needs to be checked-in that can take care of this requirement.

https://github.com/openebs/maya/pull/460: added EvictionTolerations policy that default to above tolerations.


Download -> Print chart produces blank page for expression tsne

When looking to the expression tsne (the one to your right), and choosing Download -> Print chart, a blank document is generated. I saw this behaviour here:
https://wwwdev.ebi.ac.uk/gxa/sc/experiments/E-ENAD-13/results/tsne?geneId=ENSMUSG00000041301
https://wwwdev.ebi.ac.uk/gxa/sc/experiments/E-ENAD-17/
with or without the gene search. I have reproduced this error 3 times, macOS with Chrome.

Web browser also turns into this:

This is on Chrome Version 75.0.3770.90 (Official Build) (64-bit) for macOS (High Sierra). On Firefox it works well.

@lingyun1010 Can you replicate this bug on your end? I don’t have any Mac nearby to check.

We haven’t been able to determine if this is a problem in a specific browser, OS, Highcharts or a combination of some of those elements. We have removed the Print option which also has the nice side-effect of the Download button being for downloads only. Any user can then print an image or a PDF if they wish. :smile:


errors on pm2 deploy - works on other machines, broken on this machine

I have multiple machines that run pm2 deploy's. This one though has an error when deploying:
Deploying to test environment
--> on host xx.xx.xx.xx
○ deploying origin/paypal
○ executing pre-deploy-local
○ hook pre-deploy
○ fetching updates
bash: line 0: cd: /Users/Username/github/test_project/~/pm2/source: No such file or directory
fetch failed
Deploy failed
My other computers are on the same codebase and have no issues pushing, I'm assuming some configuration is wrong here. Any ideas?

It has something to do with this in the ecosystem file: "path": "~/pm2",
I'm unsure why it is looking at this when doing a deploy, but it's looking for this folder locally which is incorrect.

This seems to be a bug since pm2 v2.0 v1.1.3 runs just fine.

This appears to be fixed with log files, however relative paths in the "path" object still does NOT work for deployments.
However, giving it an exact path does work.

I am facing the same issue @BrandonCopley not working here as well

Thansk @BrandonCopley... I feel like I encounter an issue like this every time I deal with PM2...

Hi I'm encountering this error right now. Can you help me with this ?

bash: line 0: cd: /root/streetby/source: No such file or directory
fetch failed
this is my error

@vanskins http://pm2.keymetrics.io/docs/usage/deployment/#simple-deploy
You need to setup before or use --force pm2 deploy production setup and you can deploy after that
Enjoy

Thanks @RomainLegouverneur

I would like to stress that on first time deployment, what fixed it for me was first running
pm2 deploy production setup

and then running
pm2 deploy production update

like @RomainLegouverneur said.

Hello there, I want to add a question to this thread (actually it's the only one I found during the last 24h). I added the command   - pm2 deploy ecosystem.config.js production setup before   - pm2 deploy ecosystem.config.js production and I must say everything 'works'...
Except the fact pm2 created a folder source and copied inside all my files.
Is it a normal behavior ?! Why can't my nodeJS server be started from the ~/projet2/ folder, which is the one where my files are sent during the push from gitlab ?
The exec cwd is /home/ubuntu/projet2/source and I never created such a folder.
The remote server is messed up with every single file copied into this source folder and I don't understand why :(

@vanskins http://pm2.keymetrics.io/docs/usage/deployment/#simple-deploy
You need to setup before or use --force pm2 deploy production setup and you can deploy after that
Enjoy

ur, really a lifesaver. thanks, bro it works

Hello there, I want to add a question to this thread (actually it's the only one I found during the last 24h). I added the command - pm2 deploy ecosystem.config.js production setup before  - pm2 deploy ecosystem.config.js production and I must say everything 'works'... Except the fact pm2 created a folder source and copied inside all my files.
Is it a normal behavior ?! Why can't my nodeJS server be started from the ~/projet2/ folder, which is the one where my files are sent during the push from gitlab ? The exec cwd is /home/ubuntu/projet2/source and I never created such a folder. The remote server is messed up with every single file copied into this source folder and I don't understand why :(

Any updates regarding this? Is there a way to change source folder to <PROJECT_NAME>?

I wonder how is the pm2 infrastructure package in Glitch. how should it be


Update almost everything to v2.05

Almost every command and event handler up to v2.05 (latest dev/diag build) has been added.
I also fixed several event handlers and some commands
There are only very few (and mostly useless) commands left (see: https://github.com/intercept/intercept/issues/248)
The only exceptions are: hashmaps and diary_records, whose types are not implemented yet.

I think it should be ok now.

diag commands also make it harder for others to update the pointer list, because that means only people who run diag binary can generate the list

Let me re-create this branch. It was too messy.


Another OS-Specific Bug

The following code (line 65) raises an exception in Windows:
https://github.com/badkeys/badkeys/blob/c8cbc244f645cfcc54244fa4ea7722cd3f39ce22/badkeys/allkeys/block.py#L64-L65
Pretty sure the fix is this:

with open(f"{cachedir}blocklist.dat", "rb") as f:
    _bldata = mmap.mmap(fileno=f.fileno(), length=0, access=mmap.ACCESS_READ)

Although perhaps there is a specific reason you chose the non-Windows-specific protection?
In any case, any code that attempts to open the file in Windows fails.

Fixed (after 2nd try...):
https://github.com/badkeys/badkeys/commit/71cef8b3cee55a77194216bd40f6f5ed514b533e
https://github.com/badkeys/badkeys/commit/fe8659693e1443bc1aefd1a2f00c5885b21b831a
Now the CI runs without errors in Windows, so I guess we can claim Windows compatibility 🥳

Thanks, Hanno! This project represents valuable work; please keep it up :)


Add a feature flag for the new model overview experience

Description
Adding a feature flag and turning it off by default. This will be used to keep the old experience while the new experience is being built so that we can keep changes small and easy to review. Additionally, both versions will be testable using the feature flag.
This PR also removes custom styling that's unnecessary.
Areas changed

npm packages changed:

[ ] responsibleai/causality
[ ] responsibleai/core-ui
[ ] responsibleai/counterfactuals
[ ] responsibleai/dataset-explorer
[ ] responsibleai/fairness
[ ] responsibleai/interpret
[ ] responsibleai/localization
[ ] responsibleai/mlchartlib
[x] responsibleai/model-assessment

Python packages changed:

[ ] erroranalysis
[ ] raiutils
[ ] raiwidgets
[ ] rai_core_flask
[ ] responsibleai

Tests

[x] No new tests required.
[ ] New tests for the added feature are part of this PR.
[ ] I validated the changes manually.

Screenshots (if appropriate):
No changes to the existing version except for the removal of the custom styling. Previously, the left padding was 39px for the section except for the header which had 40px left padding. This is now uniformly 40px (but hardly recognizable unless you count pixels, of course).

Documentation:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Codecov Report

Merging #1306 (aa96921) into main (4b38b13) will decrease coverage by 9.88%.
The diff coverage is n/a.

:exclamation: Current head aa96921 differs from pull request most recent head 61284c5. Consider uploading reports for the commit 61284c5 to get more accurate results

@@            Coverage Diff             @@
##             main    #1306      +/-   ##
==========================================
- Coverage   90.32%   80.43%   -9.89%
==========================================
  Files          34       18      -16
  Lines        1395      322    -1073
==========================================
- Hits         1260      259    -1001
+ Misses        135       63      -72

Flag
Coverage Δ

unittests
80.43% <ø> (-9.89%)
:arrow_down:

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

Impacted Files
Coverage Δ

...s/erroranalysis/_internal/error_report/__init__.py

...is/erroranalysis/_internal/surrogate_error_tree.py

...ranalysis/erroranalysis/analyzer/error_analyzer.py

erroranalysis/erroranalysis/_internal/utils.py

erroranalysis/erroranalysis/version.py

...erroranalysis/_internal/error_analyzer/__init__.py

erroranalysis/erroranalysis/_internal/metrics.py

erroranalysis/erroranalysis/report/__init__.py

erroranalysis/erroranalysis/__init__.py

...ranalysis/erroranalysis/_internal/cohort_filter.py

... and 6 more

Continue to review full report at Codecov.

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


Create zh-cn.yaml

Created the draft of zh-cn.yaml for Simplified Chinese translation.

I would suggest starting with a blank file instead and copy/paste/translating one chunk from the English file at a time.  The UI falls-back to English automatically if a key is missing, and the build-process has built-in reporting of missing translation keys that you won't get if you start from the complete English file.

@pengjiang80 has a first pass done, so please work together on anything incomplete/incorrect:
https://github.com/rancher/ui/pull/705


Make netty build work on Java9

Motivation:
We missed some stuff in 5728e0eb2cf0d2fe267d25c9f85a0a061dc7ab5f and so the build failed on java9
Modifications:

Add extra cmdline args when needed
skip the autobahntestsuite as jython not works with java9
skip the osgi testsuite as the maven plugin not works with java9

Result:
Build finally passed on java9

Cherry-picked into 4.1 (c5324ea48c1f1e2d4bacbf84899a67034474c4e0) and 4.0 (3fa3709)


On Direction RTL , user unable to select 5th star

@DanishOmniful thanks for finding the issue. fixed in v1.3.7


Dispatch an Action When a View Appears

Summary
This PR allows a view to dispatch an action plan that may contain a publisher that queries external data when it appears. The publisher is automatically cancelled when the view disappears by default, or when the view itself is cleaned up.
Work Performed

Added View.onAppear(dispatch:cancelOnDisappear:).
Store now emits a didChange event on the action plan itself.

Codecov Report

Merging #19 into master will decrease coverage by 0.51%.
The diff coverage is 66.66%.

@@            Coverage Diff             @@
##           master      #19      +/-   ##
==========================================
- Coverage   59.58%   59.06%   -0.52%
==========================================
  Files          15       15
  Lines         386      386
==========================================
- Hits          230      228       -2
- Misses        156      158       +2

Impacted Files
Coverage Δ

Sources/SwiftDux/Store/StoreActionDispatcher.swift
34.28% <0%> (-2.08%)
:arrow_down:

Sources/SwiftDux/Store/Store.swift
94.28% <100%> (+0.16%)
:arrow_up:

Sources/SwiftDux/Action/ActionPlan.swift
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Add JSDoc to deep argument types

While we already have https://github.com/prisma/prisma-client-js/issues/7 and https://github.com/prisma/prisma-client-js/issues/457, we should also go into the deeply nested update and create inputs and add JSDoc to them.

We don't plan this in the foreseeable future, so we can close this.


Intentional mistakes are added to check CI

Closed as a result of finished activity on pull_request workflow verification.


scatter_nd documentation is wrong

Thank you for submitting a TensorFlow documentation issue. Per our GitHub
policy, we only address code/doc bugs, performance issues, feature requests, and
build/installation issues on GitHub.
The TensorFlow docs are open source! To get involved, read the documentation
contributor guide: https://www.tensorflow.org/community/contribute/docs
URL(s) with the issue:
Please provide a link to the documentation entry, for example:
https://www.tensorflow.org/api_docs/python/tf/scatter_nd
Description of issue (what needs changing):
The output for the second example is wrong. The documentation has this:
[[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]
When I ran this test code in Colab, I get this output:
[[[5 5 5 5]
[6 6 6 6]
[7 7 7 7]
[8 8 8 8]]
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
[[5 5 5 5]
[6 6 6 6]
[7 7 7 7]
[8 8 8 8]]
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]]
Clear description
The documentation has the wrong output.
Correct links
Here is a Colab notebook that demonstrates the problem:
https://colab.research.google.com/drive/1XYjNsbz1Atfa5bbD7W4FxvIr0zap-HOJ?usp=sharing
Parameters defined
Are all parameters defined and formatted correctly?
Exactly as in the documentation page.
Returns defined
Are return values defined?
They are not what are in the documentation page :)
Raises listed and defined
Are the errors defined?
Yes, error returns are defined. I have not tested them.
Usage example
Is there a usage example?
See the API guide: https://www.tensorflow.org/community/contribute/docs_ref
on how to write testable usage examples.
Request visuals, if applicable
Are there currently visuals? If not, will it clarify the content?
No.
Submit a pull request?
Are you planning to also submit a pull request to fix the issue?
No. Frankly, I have trouble understanding what the correct output should be.

 Never mind.


Get PersistenceStrategy from Environment

+1
@mswiderski Any objections to this?

as long as PersistenceStrategy can be used by multiple threads at the same time, then I am ok with it. Environment is shared across all threads running same ksession so that needs to be taken into account.

So, I can't get AuditService properly from org.kie.api.runtime.manager.RuntimeEngine#getAuditService when I using jBPM with Spring.
@mswiderski You mean I need to get AuditService by new an org.jbpm.process.audit.JPAAuditLogService#JPAAuditLogService(javax.persistence.EntityManagerFactory, org.jbpm.process.audit.strategy.PersistenceStrategyType), or your advice is?

what I meant is that as the PersistenceStrategy can have different implementations can we guarantee it is safe to be used in multi threaded environment? Reason I ask this is that Environment instance is shared between all threads using same ksession and that might become an issue in certain scenarios - especially CMT based.
@mrietveld any concerns with our out of the box implementations of the strategies?

@mswiderski Thanks for catching that: I hadn't seen the fact that this meant that PersistenceStrategy implementations could be shared -- that is definitely something we do not want.
I don't have a problem with an environmental variable that allows the user to specify the PersistenceStrategy type to be used -- maybe in a PersistenceStrategyFactory class or something like that?

+1 on specifying the type instead of actual implementation inside the environment. Or factory if we have support for this.


Setup for adding databases to CI/CD

Database package doesn't currently have a test script, see https://github.com/microsoft/vscode-azuretools/blob/main/databases/package.json#L28-L35. The package-steps.yml runs npm test https://github.com/microsoft/vscode-azuretools/blob/main/.azure-pipelines/package-steps.yml#L59-L70. I think this will make it fail, but I may be wrong.
Ways around it:

Add a temporary test script to databases/package.json for now
Alter the package-steps.yml steps in some way to not run npm test on this package.