fail to run  io.containerd.run.kata.v2  with virtiofsd

[root@bogon hyper]# ctr run --runtime io.containerd.run.kata.v2 -t --rm docker.io/library/nginx:alpine sh
ctr: error: 500  reason: VmBoot(VmBoot(DeviceManager(MemoryManager(SetUserMemoryRegion(SetUserMemory(Operation not permitted (os error 1))))))): unknown

Hi @magnate3 - Thanks for raising. But, again, you haven't provided the information asked for in the template :smile:
As you can imagine, debugging problems like this is not easy and can take a lot of time. But it's almost impossible unless we know more about your environment (what version of the various component you are running, etc). We cannot progress issues like this unless you provide a lot more detail I'm afraid.

This issue is being automatically closed as Kata Containers 1.x has now reached EOL (End of Life). This means it is no longer being maintained.

Important:
All users should switch to the latest Kata Containers 2.x release to ensure they are using a maintained release that contains the latest security fixes, performance improvements and new features.

This decision was discussed by the @kata-containers/architecture-committee and has been announced via the Kata Containers mailing list:

http://lists.katacontainers.io/pipermail/kata-dev/2020-November/001601.html
http://lists.katacontainers.io/pipermail/kata-dev/2021-April/001843.html
http://lists.katacontainers.io/pipermail/kata-dev/2021-May/001896.html

If you believe this issue still applies to Kata Containers 2.x, please open an issue against the Kata Containers 2.x repository, pointing to this one, providing details to allow us to migrate it.


Input state is not reset when losing focus

The input state is not reset when losing focus which causes problems because the state of things can change while it is not focused.
In my case, I give input to the game when clicking the mouse and return it to ImGui when the mouse is released. ImGui never receives the mouse release because the game has consumed it. This makes it so that an additional mouse click is needed to to release to mouse state in ImGui before any other actions can be taken.
I think the input state should be reset in FImGuiInputState whenever ImGui loses focus unless there is a better way.

I vaguely remember screwing around with input reseting stuff when moving over to the new ImGui 1.87 input system. I'll take another peek at it and see if I can't fix it.


cmd/go: TestBuildCache failing on Plan 9

CL 75473 added TestBuildCache. This test is failing on Plan 9.
--- FAIL: TestBuildCache (2.73s)
	go_test.go:4719: running testgo [build -x complex/w]
	go_test.go:4719: standard error:
	go_test.go:4719: WORK=/tmp/go-build120783117
		mkdir -p $WORK/b001/
		cat >$WORK/b001/importcfg << 'EOF' # internal
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		EOF
		cd /tmp/workdir/go/src/cmd/go/testdata/src/complex/w
		/tmp/workdir/go/pkg/tool/plan9_386/compile -o $WORK/b001/_pkg_.a -trimpath $WORK/b001 -p complex/w -complete -buildid jrm1srpTyde9pGMsjSZX/jrm1srpTyde9pGMsjSZX -dwarf=false -D "" -importcfg $WORK/b001/importcfg -pack ./w.go
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b001/_pkg_.a # internal

	go_test.go:4722: running testgo [build -x complex/w]
	go_test.go:4722: standard error:
	go_test.go:4722: WORK=/tmp/go-build972466103

	go_test.go:4727: running testgo [build -o /dev/null -x complex]
	go_test.go:4727: standard error:
	go_test.go:4727: WORK=/tmp/go-build104673264
		mkdir -p $WORK/b003/
		cat >$WORK/b003/importcfg << 'EOF' # internal
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		EOF
		cd /tmp/workdir/go/src/cmd/go/testdata/src/complex/nest/vendor/v1
		/tmp/workdir/go/pkg/tool/plan9_386/compile -o $WORK/b003/_pkg_.a -trimpath $WORK/b003 -p complex/nest/vendor/v1 -complete -buildid jaGFPcmwwMb5cp00t5X1/jaGFPcmwwMb5cp00t5X1 -dwarf=false -D "" -importcfg $WORK/b003/importcfg -pack ./v1.go
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b003/_pkg_.a # internal
		mkdir -p $WORK/b008/
		cat >$WORK/b008/importcfg << 'EOF' # internal
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		EOF
		cd /tmp/workdir/go/src/cmd/go/testdata/src/complex/nest/sub/vendor/v2
		/tmp/workdir/go/pkg/tool/plan9_386/compile -o $WORK/b008/_pkg_.a -trimpath $WORK/b008 -p complex/nest/sub/vendor/v2 -complete -buildid PSBsUvtTsfbxL1w4FjPP/PSBsUvtTsfbxL1w4FjPP -dwarf=false -D "" -importcfg $WORK/b008/importcfg -pack ./v2.go
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b008/_pkg_.a # internal
		mkdir -p $WORK/b002/
		cat >$WORK/b002/importcfg << 'EOF' # internal
		importmap v1=complex/nest/vendor/v1
		importmap v2=complex/nest/sub/vendor/v2
		packagefile complex/nest/vendor/v1=$WORK/b003/_pkg_.a
		packagefile complex/nest/sub/vendor/v2=$WORK/b008/_pkg_.a
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		EOF
		cd /tmp/workdir/go/src/cmd/go/testdata/src/complex/nest/sub/test12
		/tmp/workdir/go/pkg/tool/plan9_386/compile -o $WORK/b002/_pkg_.a -trimpath $WORK/b002 -p complex/nest/sub/test12 -complete -buildid gXe9Y0IrN2jwtoaajcub/gXe9Y0IrN2jwtoaajcub -dwarf=false -D "" -importcfg $WORK/b002/importcfg -pack ./p.go
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b002/_pkg_.a # internal
		mkdir -p $WORK/b010/
		cat >$WORK/b010/importcfg << 'EOF' # internal
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		EOF
		cd /tmp/workdir/go/src/cmd/go/testdata/src/complex/nest/vendor/v3
		/tmp/workdir/go/pkg/tool/plan9_386/compile -o $WORK/b010/_pkg_.a -trimpath $WORK/b010 -p complex/nest/vendor/v3 -complete -buildid b1tnFJErFPgHdg_tMtzI/b1tnFJErFPgHdg_tMtzI -dwarf=false -D "" -importcfg $WORK/b010/importcfg -pack ./v3.go
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b010/_pkg_.a # internal
		mkdir -p $WORK/b009/
		cat >$WORK/b009/importcfg << 'EOF' # internal
		importmap v2=complex/nest/sub/vendor/v2
		importmap v3=complex/nest/vendor/v3
		packagefile complex/nest/sub/vendor/v2=$WORK/b008/_pkg_.a
		packagefile complex/nest/vendor/v3=$WORK/b010/_pkg_.a
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		EOF
		cd /tmp/workdir/go/src/cmd/go/testdata/src/complex/nest/sub/test23
		/tmp/workdir/go/pkg/tool/plan9_386/compile -o $WORK/b009/_pkg_.a -trimpath $WORK/b009 -p complex/nest/sub/test23 -complete -buildid ckj1RVv_AzUCz6RFyA0R/ckj1RVv_AzUCz6RFyA0R -dwarf=false -D "" -importcfg $WORK/b009/importcfg -pack ./p.go
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b009/_pkg_.a # internal
		mkdir -p $WORK/b012/
		cat >$WORK/b012/importcfg << 'EOF' # internal
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		EOF
		cd /tmp/workdir/go/src/cmd/go/testdata/src/complex/vendor/v
		/tmp/workdir/go/pkg/tool/plan9_386/compile -o $WORK/b012/_pkg_.a -trimpath $WORK/b012 -p complex/vendor/v -complete -buildid nq61HlFmn2FmkvzXMXCu/nq61HlFmn2FmkvzXMXCu -dwarf=false -D "" -importcfg $WORK/b012/importcfg -pack ./v.go
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b012/_pkg_.a # internal
		mkdir -p $WORK/b001/
		cat >$WORK/b001/importcfg << 'EOF' # internal
		importmap v=complex/vendor/v
		packagefile complex/nest/sub/test12=$WORK/b002/_pkg_.a
		packagefile complex/nest/sub/test23=$WORK/b009/_pkg_.a
		packagefile complex/w=/tmp/gotest243486064/b4/b45c6bf5f2ca094df80c6946b0da8c248f8b74746c128f43949443a2961a134c-d
		packagefile complex/vendor/v=$WORK/b012/_pkg_.a
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		EOF
		cd /tmp/workdir/go/src/cmd/go/testdata/src/complex
		/tmp/workdir/go/pkg/tool/plan9_386/compile -o $WORK/b001/_pkg_.a -trimpath $WORK/b001 -p main -complete -buildid 53v12b2i83wlo8skxF2N/53v12b2i83wlo8skxF2N -dwarf=false -D "" -importcfg $WORK/b001/importcfg -pack ./main.go
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b001/_pkg_.a # internal
		cat >$WORK/b001/importcfg.link << 'EOF' # internal
		packagefile complex=$WORK/b001/_pkg_.a
		packagefile complex/nest/sub/test12=$WORK/b002/_pkg_.a
		packagefile complex/nest/sub/test23=$WORK/b009/_pkg_.a
		packagefile complex/w=/tmp/gotest243486064/b4/b45c6bf5f2ca094df80c6946b0da8c248f8b74746c128f43949443a2961a134c-d
		packagefile complex/vendor/v=$WORK/b012/_pkg_.a
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		packagefile complex/nest/vendor/v1=$WORK/b003/_pkg_.a
		packagefile complex/nest/sub/vendor/v2=$WORK/b008/_pkg_.a
		packagefile complex/nest/vendor/v3=$WORK/b010/_pkg_.a
		packagefile runtime/internal/atomic=/tmp/workdir/go/pkg/plan9_386/runtime/internal/atomic.a
		packagefile runtime/internal/sys=/tmp/workdir/go/pkg/plan9_386/runtime/internal/sys.a
		EOF
		mkdir -p $WORK/b001/exe/
		cd .
		/tmp/workdir/go/pkg/tool/plan9_386/link -o $WORK/b001/exe/a.out -importcfg $WORK/b001/importcfg.link -buildmode=exe -buildid=_pS5NLbUfx3IVQFFOTA-/53v12b2i83wlo8skxF2N/wfagzuhH-MMc7fRNMExt/_pS5NLbUfx3IVQFFOTA- -extld=8c $WORK/b001/_pkg_.a
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b001/exe/a.out # internal

	go_test.go:4730: running testgo [build -o /dev/null -x complex]
	go_test.go:4730: standard error:
	go_test.go:4730: WORK=/tmp/go-build555282900
		mkdir -p $WORK/b001/
		cat >$WORK/b001/importcfg.link << 'EOF' # internal
		packagefile complex=/tmp/gotest243486064/1c/1c8c3414aafb228a08ed53d79082d81fc4f67231cbc29883f56ef9a1e86efa21-d
		packagefile complex/nest/sub/test12=/tmp/gotest243486064/e4/e4bbe4d8d88ed120426b0b2ba0f7c0e002baf6af77527e0fd96f8a486e5b033d-d
		packagefile complex/nest/sub/test23=/tmp/gotest243486064/cc/ccf8e65d86c08c10fdb4ab6fee3ce87c23fd859ceaad43ca82072fbe882b6d38-d
		packagefile complex/w=/tmp/gotest243486064/b4/b45c6bf5f2ca094df80c6946b0da8c248f8b74746c128f43949443a2961a134c-d
		packagefile complex/vendor/v=/tmp/gotest243486064/57/57f0cecba8471d893e0e4b69117e909afe0c93235198e1c6f2acb6776eb3d231-d
		packagefile runtime=/tmp/workdir/go/pkg/plan9_386/runtime.a
		packagefile complex/nest/vendor/v1=/tmp/gotest243486064/de/ded9f3f2e2c5411c29117e9a63d6b4abc6a243a5fb728dd6974f4570d8ff03f5-d
		packagefile complex/nest/sub/vendor/v2=/tmp/gotest243486064/38/38e1170ac8c4d21ee935d8f6f95ad57f39b2e43d3caac4319fdc45e2cc9a7969-d
		packagefile complex/nest/vendor/v3=/tmp/gotest243486064/c8/c81f77e1791c122e24b283b9cef87731eda491dbd3a9a76b8076ebd5abd63765-d
		packagefile runtime/internal/atomic=/tmp/workdir/go/pkg/plan9_386/runtime/internal/atomic.a
		packagefile runtime/internal/sys=/tmp/workdir/go/pkg/plan9_386/runtime/internal/sys.a
		EOF
		mkdir -p $WORK/b001/exe/
		cd .
		/tmp/workdir/go/pkg/tool/plan9_386/link -o $WORK/b001/exe/a.out -importcfg $WORK/b001/importcfg.link -buildmode=exe -buildid=_pS5NLbUfx3IVQFFOTA-/53v12b2i83wlo8skxF2N/wfagzuhH-MMc7fRNMExt/_pS5NLbUfx3IVQFFOTA- -extld=8c /tmp/gotest243486064/1c/1c8c3414aafb228a08ed53d79082d81fc4f67231cbc29883f56ef9a1e86efa21-d
		/tmp/workdir/go/pkg/tool/plan9_386/buildid -w $WORK/b001/exe/a.out # internal

	go_test.go:4733: remove /tmp/gotest243486064: directory not empty
FAIL
FAIL	cmd/go	213.356s

See https://build.golang.org/log/5d60306dba3a6090b2f1f630f562ebf1ae872645

This issue only happens on the plan9/386 builder running on GCE when the /tmp directory is served by ramfs.

go_test.go:4733: remove /tmp/gotest243486064: directory not empty

The issue happens because the temporary directory contains a lot of directories and is 15489 bytes.
This size is larger than the largest response that the ramfs server can send, which is the size of a 9P message (8 KB).
Initially, I wasn't able to reproduce this issue on my local machines, because I've increased the maximum size of 9P messages to 128 KB a while ago, mainly for performance reasons.
I will send a new plan9/386 builder image for GCE, with the increased 9P message size.

@bradfitz I've uploaded a new Plan 9 disk image for GCE. Could you deploy it?
http://9legacy.org/download/go/2017-11-03/plan9-386-gce.tar.gz
It should bring the plan9/386 builder back to "ok".
Thanks.

I took another look at this issue.
The issue is related to how read offset is handled in ramfs when reading directories.
The os.RemoveAll function calls fd.Readdirnames to read the 100 first file entries of the directory, then delete the files, then read the 100 following file entries and so on.
However, after the 100 first file entries have been removed, the read offset is not valid anymore when reading the directory. When reading the 100 following files, the offset is applied to the remaining files, so a lot of files are skipped. Consequently, the content of the directory is only partially deleted, and os.RemoveAll returns the directory not empty error when removing the base directory.
This issue doesn't happen on the Fossil file system, because Fossil ignores the read offset, except for the zero value. Fossil handles its own offset internally, and use the zero value to reset its buffer.
The issue also doesn't happen when increasing the maximum size of 9P messages to 16 KB, because 16 KB is enough to hold the full content of the directory, so the subsequent calls to fd.Readdirnames read the directory from the cache.
I'm not sure how to change ramfs to fix this issue yet. Also, other file servers might have the same behavior as ramfs.
Instead, I'll propose a change to call fd.Seek(0, 0) before calling fd.Readdirnames in os.RemoveAll, so the read offset will always be reset after removing the directory entries.

After adding TestRemoveAllLarge to try RemoveAll on large directories in CL 75974, I've noticed that the same issues appears on nacl.
--- FAIL: TestRemoveAllLarge (0.02s)
	path_test.go:192: RemoveAll "/tmp/_TestRemoveAllLarge_" (first): remove /tmp/_TestRemoveAllLarge_: Directory not empty
FAIL
FAIL	os	0.538s

See https://storage.googleapis.com/go-build-log/7e56de12/nacl-amd64p32_c76d189d.log
It seems calling fd.Seek(0, 0) also fixes the issue on nacl.


UML-967 - Reduce CircleCI costs

Purpose
Reduce CircleCI costs.
Fixes UML-967
Approach
Set a resource class of small for some executors
Learning
https://circleci.com/docs/2.0/configuration-reference/#executors-requires-version-21
https://circleci.com/docs/2.0/configuration-reference/#resource_class
https://circleci.com/docs/2.0/optimizations/
Checklist

[ ] I have performed a self-review of my own code
[ ] I have added relevant logging with appropriate levels to my code
[ ] I have updated documentation (Confluence/GitHub wiki/tech debt doc) where relevant
[ ] I have added tests to prove my work
[ ] The product team have tested these changes

Coverage remained the same at 81.735% when pulling 45b2f35934067a5cce62687632f896b9171b26f7 on UML-967 into a6b13b3c72af9764236e5252a1c31b44a079d037 on master.

Docker Small executors in use

Small resource classes have been tested with 3 runs and there has been no significant increase in job time or errors.


Skin menu won't load

When I use the mod the steve skin won't load and I even updated both of the requirements installation too please help

Use the release of the fork, works for me https://github.com/TheDrawingCoder-Gamer/smash-minecraft-skins/releases/tag/2.0.0


generalize processing/printing of boundary conditions

This PR does two things:

includes mesh and solver as arguments into digest_boundary_conditions for dispatch purposes
replaces if/else branching on the type of the boundary condition in Base.show(io::IO, ::MIME"text/plain", semi::SemidiscretizationHyperbolic) with a dispatch-based solution. I also change the generic fallback to just print the type of the boundary conditions.

Would fix most of https://github.com/trixi-framework/Trixi.jl/issues/656

@sloede @ranocha is there a type of boundary condition container for which https://github.com/trixi-framework/Trixi.jl/blob/fa600e1ef5950954d70c52d95c22761bc8a5f68c/src/semidiscretization/semidiscretization_hyperbolic.jl#L151 is currently used?
I didn't reproduce this functionality in the PR b/c I wasn't sure what types of boundary condition containers it was intended for.

is there a type of boundary condition container for which
https://github.com/trixi-framework/Trixi.jl/blob/fa600e1ef5950954d70c52d95c22761bc8a5f68c/src/semidiscretization/semidiscretization_hyperbolic.jl#L151
is currently used?
I didn't reproduce this functionality in the PR b/c I wasn't sure what types of boundary condition containers it was intended for.

I don't know from from the top of my head where we use it but coverage reports say we do: https://coveralls.io/builds/40698612/source?filename=src%2Fsemidiscretization%2Fsemidiscretization_hyperbolic.jl#L151

is there a type of boundary condition container for which
https://github.com/trixi-framework/Trixi.jl/blob/fa600e1ef5950954d70c52d95c22761bc8a5f68c/src/semidiscretization/semidiscretization_hyperbolic.jl#L151
is currently used?
I didn't reproduce this functionality in the PR b/c I wasn't sure what types of boundary condition containers it was intended for.

I don't know from from the top of my head where we use it but coverage reports say we do: https://coveralls.io/builds/40698612/source?filename=src%2Fsemidiscretization%2Fsemidiscretization_hyperbolic.jl#L151

Using this diff
$ git diff
diff --git a/src/semidiscretization/semidiscretization_hyperbolic.jl b/src/semidiscretization/semidiscretization_hyperbolic.jl
index 055de218..da8b2091 100644
--- a/src/semidiscretization/semidiscretization_hyperbolic.jl
+++ b/src/semidiscretization/semidiscretization_hyperbolic.jl
@@ -149,6 +149,7 @@ function Base.show(io::IO, ::MIME"text/plain", semi::SemidiscretizationHyperboli
         bcs = semi.boundary_conditions
       else
         bcs = collect(semi.boundary_conditions for _ in 1:(2*ndims(semi)))
+        @info "Here I am"
       end
       summary_line(increment_indent(io), "negative x", bcs[1])
       summary_line(increment_indent(io), "positive x", bcs[2])

I get
julia> include("examples/2d/elixir_advection_nonperiodic_curved.jl")

████████╗██████╗ ██╗██╗  ██╗██╗
╚══██╔══╝██╔══██╗██║╚██╗██╔╝██║
   ██║   ██████╔╝██║ ╚███╔╝ ██║
   ██║   ██╔══██╗██║ ██╔██╗ ██║
   ██║   ██║  ██║██║██╔╝ ██╗██║
   ╚═╝   ╚═╝  ╚═╝╚═╝╚═╝  ╚═╝╚═╝

┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SemidiscretizationHyperbolic                                                                     │
│ ════════════════════════════                                                                     │
│ #spatial dimensions: ………………………… 2                                                                │
│ mesh: ………………………………………………………………… CurvedMesh{2, Float64}                                           │
│ equations: …………………………………………………… LinearScalarAdvectionEquation2D                                  │
│ initial condition: ……………………………… initial_condition_gauss                                          │
│ boundary conditions: ………………………… 4                                                                │
[ Info: Here I am
│ │ negative x: …………………………………………… BoundaryConditionDirichlet{typeo…(Trixi.initial_condition_gauss) │
│ │ positive x: …………………………………………… BoundaryConditionDirichlet{typeo…(Trixi.initial_condition_gauss) │
│ │ negative y: …………………………………………… BoundaryConditionDirichlet{typeo…(Trixi.initial_condition_gauss) │
│ │ positive y: …………………………………………… BoundaryConditionDirichlet{typeo…(Trixi.initial_condition_gauss) │
│ source terms: …………………………………………… nothing                                                          │
│ solver: …………………………………………………………… DG                                                               │
│ total #DOFs: ……………………………………………… 4096                                                             │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘

Ah, I see. If only a single boundary condition is specified for a TreeMesh or CurvedMesh type, then it populates a Vector of length 2*ndims(semi) with all elements equal to the same boundary condition.
To me, the fallback is OK in this case. If I remove the line bcs = collect(semi.boundary_conditions for _ in 1:(2*ndims(semi))) then I get the following
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SemidiscretizationHyperbolic                                                                     │
│ ════════════════════════════                                                                     │
│ #spatial dimensions: ………………………… 2                                                                │
│ mesh: ………………………………………………………………… CurvedMesh{2, Float64}                                           │
│ equations: …………………………………………………… LinearScalarAdvectionEquation2D                                  │
│ initial condition: ……………………………… initial_condition_gauss                                          │
│ boundary conditions: ………………………… BoundaryConditionDirichlet{typeof(initial_condition_gauss)}      │
│ source terms: …………………………………………… nothing                                                          │
│ solver: …………………………………………………………… DG                                                               │
│ total #DOFs: ……………………………………………… 4096                                                             │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘

The only difference from the old printing and the new printing is that if only one boundary condition is specified, then only one boundary condition is printed (as opposed to printing 2*ndims(semi)) boundary conditions).

The only difference from the old printing and the new printing is that if only one boundary condition is specified, then only one boundary condition is printed (as opposed to printing 2*ndims(semi)) boundary conditions).

I'm okay with that but we should also wait for the feedback of @sloede.

The only difference from the old printing and the new printing is that if only one boundary condition is specified, then only one boundary condition is printed (as opposed to printing 2*ndims(semi)) boundary conditions).

I'm okay with that but we should also wait for the feedback of @sloede.

@sloede says it's okay for him.

Great! Can this be merged then? I'd like to use it for https://github.com/trixi-framework/Trixi.jl/pull/647

@sloede wants to have a final look. After that, we can merge this PR.

@sloede wants to have a final look. After that, we can merge this PR.

Sounds good - thank you!

No problem - thanks for reviewing!


Error Handling

Using C++ in Stack

Any suggestions?

Any feedback?

@AmritK10  any changes you want?

Please merge my request


Fix double blob-hunk

Don't show the blob-hunk twice.

Before:

After:

Don't show the blob-hunk twice.

Before:
After:

Could you reproduce that in https://try.gitea.io ?

Could you reproduce that in https://try.gitea.io ?

Yes, see
https://try.gitea.io/Gusted/Test-repo/commit/1c39022e059d511b15075d45c15a4abbde081d1b


CuArrays should not follow fast paths in obsview

CuArrays should not follow the fast path in obsview that returns a view of the original array, since this triggers scalar indexing for downstream operations.
ref https://github.com/FluxML/Flux.jl/issues/1935

I guess the main issue here is taking on CUDA as a dep. The fix is easy.

I'm filing a PR with the fix

PR #73 fixed the DataLoader issue but the general problem with CuArrays remains.
I opened https://github.com/JuliaGPU/CUDA.jl/issues/1472. If that cannot be solved as it is likely to be, I can think of the following workarounds:
Option 1. obsview never returns views for AbstractArrays
In this case, we always get an ObsView object.
PROS

consistent behavior for all arrays
CONS
cannot work with obsviews as arrays anymore

Option 2. Opt-in: obsview returns views only for selected cpu array types
PROS

it will still be possible to perform array operations with obsviews of a few types
CONS
inconsistent behavior
lengthy implementation, have to account for Array, SparseVector, SparseMatrixCSC, Adjoint, Transpose

julia> x = CUDA.zeros(5)'
1×5 adjoint(::CuArray{Float32, 1, CUDA.Mem.DeviceBuffer}) with eltype Float32:
 0.0  0.0  0.0  0.0  0.0

julia> x isa CUDA.AbstractGPUArray
false
### Option 3. Opt-out of AbstractGPUArrays: `obsview` doesn't returns views for selected gpu arrays
PROS
- it will still be possible to perform array operations with obsviews of any cpu type
CONS
- inconsistent behavior
- doesn't play nicely with wrappers
```julia


[ServiceBus] prep release 7.9.0

API change check
API changes are not detected in this pull request.


DOC: Improved docs for jnp.fft.fft2 and jnp.fft.ifft2

Part of #21461

Made the suggested changes and squashed into single commit.


Fix completion entry conversion to protocol format

Fixes an oversight in #59339.

Member

I think the usual issue is excess stuff getting through unnecessarily, plus incorrectly spreading at the end vs. at the beginning.


Workaround for missing message destination in message-pacts

I use (misuse?) the pact description field for specifying the destination and copy it here into the sentTo field. Pact does not offer much more possibilities here at the moment (I asked there though if it would make sense to add something like that to the message-pact).

@schustes Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@schustes Thank you for signing the Contributor License Agreement!


Fix setting locality in bootstrap

The nil case never matches, so we never attempted to set it

@howardjohn: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-pilot-k8s-tests_istio
f175aaf63374b456410f74f07f6537d58f848918
link
/test integ-pilot-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

gencheck_istio
9dd7f4ddd43dbdae5ee7a75443d5bea38b85d79a
link
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


postJSON appearing 2 times

https://github.com/mauron85/background-geolocation-android/blob/ec334ba6a8612c399d608bbfc4aacfad68fc2105/src/main/java/com/marianhello/bgloc/HttpPostService.java#L154

I don't see any issue here. First one is for array format second json literal.

Ah sorry! i was just going thru the code to see whats up with the POST as I am posting with an auth and token query param which the server somehow says is malformed, however when i manually fetch post the thing in the app using the same url string the POST is fine.
Any ideas?
https://AWS_URL_ROOT/Prod/TrackShipment?auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaGlwbWVudElkIjoxMjN9.tJNnN9iy2MdK_wll3pEwccskWrLTgTqIJ9z
Thats an example of the url we are using...


Work & Project modals for viewers

As a viewer
I want to be able to open the Work modal on All works, and the Project modal in list management: projects
so that I can see information about those entities without navigating to a separate page
Acceptance Criteria
Scenario 1:
GIVEN I am a viewer
WHEN I navigate to the All works Page
THEN I see the name of each work is blue and clickable
Scenario 2:
GIVEN I am a viewer
WHEN I open the work modal for a given work
THEN I see both the fields and the save button are all disabled
Scenario 3:
GIVEN I am a viewer
WHEN I navigate to the List Management:Projects Page
THEN I see the name of each project is blue and clickable
Scenario 4:
GIVEN I am a viewer
WHEN I open the project modal for a given project
THEN I see both the fields and the save button are all disabled

@Connor1892  The initial plan is to have the titles of all grids grayed out for viewers. So we are changing that behavior intentionally.right?
Plus, are we limiting this change to only works and projects or all the other lists in the application?

I believe it is just for work and project.
they should be able to open these modals but not change anything on them


Incorrect aggregate function variant selected from catalog

Version
1.12.0
What happened?
I have a query which runs an aggregate function on a column (sum(pages)). There are multiple variants of functions with this name (sum) defined in the various catalogs, e.g. sum(numeric) → numeric, sum(integer) → integer.
My expectation is that the function chosen by the engine would be the one matching the type of the pages column parameter. Instead, the return type of the first function in the catalog that matches the name and argument count is used.
The ResolveFuncCall in public.go doesn't seem to attempt any type matching. In the play.sqlc.dev example below, the sum function used is the one returning bigint, which is used because it is the first sum function defined. However there is also a variant defined which takes and returns a numeric type; this is the one that should be used.
Relevant log output
No response
Database schema
CREATE TABLE books (
                       id   integer PRIMARY KEY,
                       title text      NOT NULL,
                       author text     NOT NULL,
                       pages numeric      NOT NULL
);

SQL queries
-- name: AuthorPages :many
select author, count(title) as num_books, SUM(pages) as total_pages
from books
group by author;

Configuration
{
  "version": "1",
  "packages": [
    {
      "path": "go",
      "engine": "postgresql",
      "name": "querytest",
      "schema": "schema.sql",
      "queries": "query.sql"
    }
  ]
}

Playground URL
https://play.sqlc.dev/p/ca51e1357b60b0ab6ed38fbb98f8e26ef30783a65cce012c90035a7abf93088c
What operating system are you using?
macOS
What database engines are you using?
PostgreSQL, MySQL
What type of code are you generating?
Go

I think this is also the root cause of https://github.com/kyleconroy/sqlc/issues/1418

Do you know is there a workaround for this? I'm also hitting this issue.

The only work-around I can think of would be to manually reorder the catalog functions so that the function variant you want appears higher up the list than the one you're getting but then it'll only be right for that case and wrong for others.

would be nice if you could give sqlc some sort of type hint to overcome this issue. something you do with the column parameter naming.

would be nice if you could give sqlc some sort of type hint to overcome this issue. something you do with the column parameter naming.

Or allow an override on the column alias or SUM() expression in the config.


tests: bluetooth: RX overflow in lt_tx_real_no_encode

Describe the bug
PR #54119 describes a bug, but a proper fix requires more than is described in the PR.
when compiling tests/bluetooth/controller/ctrl_feature_exchange/bluetooth.controller.ctrl_feature_exchange.test without -ffreestanding (i.e., with memcpy warnings enabled), the following error pops up:
.../tests/bluetooth/controller/common/src/helper_util.c: In function ‘lt_tx_real_no_encode’: .../tests/bluetooth/controller/common/src/helper_util.c:412:9: error: ‘memcpy’ writing 39 bytes into a region of size 32 overflows the destination [-Werror=stringop-overflow=]
412 | memcpy((struct pdu_data *)rx->pdu, pdu, sizeof(struct pdu_data));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.../tests/bluetooth/controller/common/src/helper_util.c:410:14: note: at offset 32 into destination object of size 64 allocated by ‘malloc’
410 | rx = malloc(PDU_RX_NODE_SIZE);
| ^~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors

Please also mention any information which could help others to understand
the problem you're facing:
Most likely there is an issue with the define of PDU_RX_NODE_SIZE in helper_util.c  PDU_DATA_SIZE should use sizeof(struct pdu_data)
To Reproduce
Steps to reproduce the behavior:
see above
Expected behavior
no compiler error should happen
Impact
low priority
Logs and console output
N/A
Environment (please complete the following information):
N/A
Additional context
N/A

Haven't reproduced the issue yet, continuing investigation.

Yeah, I found the issue by building with picolibc, but it should happen whenever you build without -ffreestanding, however that requires a Kconfig hack to switch the default C library from minimal to picolibc as the minimal C library can't be used without that flag.

I've managed to get the usual twister run to pass with the minimal C library without -ffreestanding (see #57099). Which means to me that this issue appears to no longer affect the test suite execution?

upon code inspection we suspect that we also may use the wrong size definition. See PR#57328


Updated_search function not being called (filter table)

Hello Adam (@adamghill ),
first of all sorry for bombing you with lot of requests, but unfortunately I'm getting a problem while using the search filter function of Django Unicorn.
I am creating for my company an app that manages transport documents (DDT), and i made  a table where all documents are shown. The problem is filtering them with search and other filters (like "show only 2021 documents").
I cannot show whole project or make a pull requests of course, so i'll show just the template that call components, table component and filter component. If something is missing in this post it means that i'm missing something in my project too.
The filter component is nearly copied from the nested table in your example, it's all the same or correctly adapted, so i'm not getting why it's not working on my project.
The updated_search function is not even called when the search field is updated, for some reason.
ddt_out_list.html
{% extends 'logistics/base.html' %}
{% load static unicorn %}

{% block content %}
{% unicorn 'ddt-table' %}
{% endblock content %}

ddt-table.html
{% load unicorn static %}

    {% unicorn 'filter' parent=view %}

        ID
        Name
        Short Description
        Creation Date
        Status
        Actions

        {% for ddt in ddts %}

                {{ ddt.id }}
                {{ ddt.ldo_name }}
                {{ ddt.ldo_short_description }}
                {{ ddt.ldo_creation_date }}
                {{ ddt.ldo_status }}
                (Add edit button)

        {% endfor %}

ddt_table.py
from django_unicorn.components import UnicornView
from logistics.models import *

class DdtTableView(UnicornView):
    ddts = Logistics_DDT_Out_List.objects.none()

    def mount(self):
        self.load_table()

    def load_table(self):
        self.ddts = Logistics_DDT_Out_List.objects.all()

filter.html

    Filter: <input type="text" unicorn:model="search" />

    Search: "{{ search }}"

filter.py
from django_unicorn.components import UnicornView
from logistics.models import *

class FilterView(UnicornView):
    search = ""

    def updated_search(self, query): #this function is not called when the search field is updated. Why?
        self.parent.load_table()

        if query:
            self.parent.ddts = list(
                filter(lambda f: query.lower() in f.ldo_name.lower(), self.parent.ddts)
            )

Thanks for all support.

I used your code for https://github.com/adamghill/django-unicorn/commit/5c851afa5533dfff2374a9ab2030542b3457da5c, but swapped out the model and it typing in the search box seems to work for me.
I get updated search? in the console output:

Example in a browser:

Do you get any browser console or web server errors?

I did as you suggested, first it asked me to load unicorn_scripts, despite I'm not getting why (in your example they are loaded only in base):
(index):387 Unicorn is missing. Do you need {% load unicorn %} or {% unicorn_scripts %}?
I loaded unicorn_scripts, and then  something happened.
Now it gets when the field is edited, well it gives two error messages, and generic ones, but at least the error messages appear as I type something in the field:
POST http://localhost:8000/unicorn/message/filter 500 (Internal Server Error)
Error: Error when getting response: Internal Server Error (500)

However, since my code works in your repository, I'm thinking that is not something regarding the code itself but something in the corner... I don't know if I'm missing something somewhere...

Re: https://github.com/adamghill/django-unicorn/issues/249#issuecomment-888199890:
Can you look at the output from the Python shell? The error should be there and might give you a clue!

Hello again Adam,
sorry for late answer, due to vacation.
Seems something changed with the new releases of Unicorn?
The python shell is not flagging any error. Actually, now the filter function is called, well, it only change the filter word as I type something on keyboard, but it's not actually filtering my table. Anyway I'll let you know if I will fix it, otherwise i'll let you know.
Thanks for all and see you!

👍 No worries! I'm going to close this issue for now, but feel free to re-open it if you need to later.


Feature Request: Number of Actions for Bars 1-3

Right now stuck with 1 row with 12 items for each of these action bars. Would like to limit to let's say only 8 items in the row.

Next major version has that and more customization!
Will be released in a few days.

Update to v0.5.0 (online in ~1 hour!).  Let me know if you have any issues with the new update.


utils.preprocess

utils has not attribute preprocess. Can you please help me with this error

Hi @saifullahsohail123
I have no idea what that error means with the comments above.


[Feature] Ref Parsing & Manipulation Functionality

It is often needed to process the data embedded in a reference.  Please consider including functionality to work with references directly.  Here are a few examples:
regctl
Parse a reference into structured data that other tools or code can use:
# Splitting across lines for readability, probably better to actually print on one line
$ regctl reference inspect busybox
> {
  "registry": "docker.io",
  "repository": "library/busybox",
  "tag": "latest",
  "digest": null,
  "name": "library/busybox:latest"
}

$ regctl reference inspect --verbose http://my.test:5000/a/b/c@sha512:<...val>
> {
  "scheme": "http",
  "insecure": true,
  "host": "my.test",
  "port": 5000,
  "registry": "my.test:5000",
  "repositoryParts": ["a", "b", "c"],
  "repository": "a/b/c"
  "tag": "latest"
  "digest": "sha512:<...val>",
  "algorithm": "sha512",
  "encode": "<...val>",
  "tag": null,
  "nameSuffix": "@sha512:<...val>",
  "name": "a/b/c@sha512:<...val>"
}

Format references to normalize or manipulate them:
$ regctl reference normalize busybox
> docker.io/library/busybox:latest

$ regctl reference normalize busybox --format "myregistry.test/{{ .name }}"
> myregistry.test/library/busybox:latest

$ source="myregistry.test/dev/team/service:latest"
$ format='{{ .registry }}/qa/{{ slice .repositoryParts 1 | join "/" }}{{ .nameSuffix }}'
$ target=$(regctl reference normalize "$source" --format "$format")
$ regctl image copy "$source" "$target"

regsync
More Go templates for regsync:
sync:
  # Simple copy
  - source: alpine
    target: "myregistry.test/{{ .source.name }}"
    type: image
  # Their prod is our dev
  - source: "vendor.test"
    target: "myregistry.test/{{ .source.repository }}:dev"
    tags:
      allow: ["prod"]
    type: registry

regbot
Expanded lua ref for regbot:
scripts:
  - name: a
    script: |
     source = reference.new("debian")
     target = reference.new("myregistry.test/customNamespace/" .. source.name)
     image.copy(source, target)
  - name: b
    script: |
      source = reference.new("debian")
      if source.digest == nil then
        -- Or something like this; unsure if this functionality exists already
        source.digest = tag.resolveDigest(source)
      end
      if source.algorithm ~= "sha512" then
        log("Not quantum resistant")
      else
        target = reference.new("myregistr.test/customNamespace" .. source.repository .. "@" .. source.digest)
        image.copy(source, target)
      done

Thanks 🙂

Interesting request. Are you aware of related tools providing this functionality today? Is there an underlying issue you are trying to resolve (e.g. is this an XY problem)? And if one of these requests is more useful than the others for you, it may be possible to add a more targeted feature.
Some of the hesitation of exposing too much of this is that regclient uses its own reference parser to enable parsing of references to things like OCI Layouts. And reference parsing isn't an OCI standard yet, making it difficult to ensure this parsing matches that of other parsers. It may be better to push for that standardization from OCI first, and then work down to the various projects implementing it.

The only tool I am aware of that does something similar is Kyverno, but this particular piece of functionality is only exposed when running in a full K8s cluster in its policy engine.  Aside from that, I only know of a few Go packages used by Skopeo, Crane, and K8s.
I commonly need to copy images, OCI helm charts, and occasionally other types of artifacts between several private registries.  Some of these registries are owned by external groups that use non-unique image/repo names, heavily rely on floating tags, and regularly change the set of images I need to copy.  I can and do maintain several static mappings & scripts myself, but parsing strings is evidently not a strength of mine, and it isn't as consistent as I would hope for.  I did not realize there was no standard for refs, but that would explain why I couldn't find one 😅.
If I could find a way to extract the registry, repository, and tag and/or digest consistently, I should be able to parse the more granular fields myself and generate configs for regsync or regbot.  So if something like the example regctl reference inspect busybox command were available, it would make the rest possible.
If you want to wait until there is an official reference spec, though, I'll understand.  Thanks again 🙂

So if something like the example regctl reference inspect busybox command were available, it would make the rest possible.

Got it. Adding a hidden/unsupported command for this would be fairly trivial. I'm also considering if a function could be added to the templating sandbox to parse a ref and expose the fields.
As a heads up on timing, it might be a week or two before I can get to this.

This should be resolved by #765 now. If it gives you any trouble, let me know.


[Monitoring V2] Provide a way to send Rancher Proxy based external URLs

What kind of request is this (question/bug/enhancement/feature request):
feature request
Steps to reproduce (least amount of steps as possible):
Deploy the Monitoring App that does not use an Ingress and trigger an alert to AlertManager. This can be done by:

Creating a dummy PrometheusRule that always fires, e.g.

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  namespace: cattle-monitoring-system
  name: dummy-rule
spec:
  groups:
  - name: dummy-alert
    rules:
    - alert: ExampleAlert
      expr: vector(1)

Editing the alertmanager.yaml key in the Secret alertmanager-rancher-monitoring-alertmanager within the cattle-monitoring-system namespace to add in a receiver / route configuration, e.g.

receivers:
- name: 'slack-notifications'
  slack_configs:
  - send_resolved: true
    text: '{{ template "slack.rancher.text" . }}'
    api_url: <insert-slack-webhook-here>
route:
  group_by: ['job']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 3h
  receiver: 'slack-notifications'
templates:
- /etc/alertmanager/config/*.tmpl

Result:
The Link to Alertmanager uses the Alertmanager's External URL field, which defaults to the cluster internal URL of http://rancher-monitoring-alertmanager.cattle-monitoring.system:9093. This link is invalid outside of the cluster, so it doesn't make much sense to have in a notification.
The Source link on the Alertmanager UI is broken since it is similarly configured via Prometheus's External URL field,  which defaults to http://rancher-monitoring-prometheus.cattle-monitoring.system:9090.

Note that this would not be the case if a user is using an Ingress since Prometheus / Alertmanager deployed via Ingress automatically modifies both fields to point to the Ingress URL.
Other details that may be helpful:
There are a couple of options that could be taken to support this:
Option 1: Expose UI options to allow the user to set the externalURL for both from the Chart deployment page
This is the easiest solution that just involves a UI change, but introduces two caveats:

a user who modifies the Rancher URL would need to redeploy monitoring to update the links.
this may impact users who want to be able to access Prometheus / Alertmanager when the Rancher proxy is down via something like kubectl port-forward. This depends on whether this setting breaks the ability for the Prometheus / Alertmanager UI to function as expected when the external URL (e.g. <rancher-url>/k8s/clusters/<cluster-id>/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-<alertmanager|prometheus>:<9093|9090>/proxy) does not match the current URL (e.g. http://localhost:<port-to-forward-to>).

Both of these solutions need to be further investigated.
Workaround based on Option 1
Users can set the external URLs by clicking on Edit as YAML on the Chart Options when deploying the Monitoring chart. You will need to modify:

alertmanager.alertmanagerSpec.externalUrl=<rancher-url>/k8s/clusters/<cluster-id>/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-alertmanager:9093>/proxy
prometheus.prometheusSpec.externalUrl=<rancher-url>/k8s/clusters/<cluster-id>/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-prometheus:9090/proxy.

Option 2: Design a backend solution that does not involve redeploying the chart
For either of these solutions, we would need a way for the Dashboard UI to provide the necessary value for the Rancher server URL.
Issue 1: Source link is broken
Prometheus hard-codes the generatorURL for an alert to be based on its externalURL here.
The only solution that seems possible is to put an nginx proxy in front of Alertmanager as well that uses something similar to the nginx http_sub_module to rewrite the HTTP response from a GET request to RANCHER_URL/k8s/clusters/CLUSTER_ID/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-alertmanager:9093/proxy/api/v2/alerts/groups.
It would need to update references to the URL http://rancher-monitoring-prometheus.cattle-monitoring-system:9090 to the appropriate Rancher URL; this would be okay even in setups with Ingresses since they won't be using the cluster local DNS either way.
It's unclear how we would be able to update the server URL via this approach though.
Example screenshot of the current HTTP response is shown below:

Issue 2: Link to Alertmanager is broken

[ ] Modify the rancher_defaults.tmpl to use another template to construct the External URL, where the other template is kept up-to-date with the correct Rancher URL to be used.

[x] Alternatively, we could just drop this field when we detect the External URL to be http://rancher-monitoring-prometheus.cattle-monitoring-system:9090 as we know that the link is broken either way.

Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI): 2.5.1

Based on offline discussion, it was confirmed that the path we would take for this issue would be to expose a UI field for setting the external URL and making it a value that is set on Helm deploy.
The caveat with this approach is that a user who install rancher-monitoring would need to perform a helm upgrade iff they modify the Rancher URL after upgrading the chart since Rancher will not automatically upgrade feature charts.

If a user modifies the Rancher URL, they need to do some manual steps already at the moment. For example the Rancher URL  (and CA checksum( in the downstream agents is not changed automatically.

@deniseschannon based on offline discussion with @bashofmann, most users seem to be exposing Prometheus / Alertmanager / Grafana via Rancher magic links (not ingress), so I'm pulling this back to 2.5.8.

This solution resolves https://github.com/rancher/rancher/issues/29969 in Alerting V2 and can be backported to Alerting V1 if the relevant cattle fields are made available to the Alerting V1 deployment.

FYI https://github.com/prometheus/alertmanager/issues/1881 is still an issue from upstream, so you will still need to copy paste the link for the source links to work based on https://github.com/prometheus/alertmanager/issues/1881#issuecomment-576827227.

I do workaround by using reReplaceAll:
{{ define "__rancherurl" }}https://<rancher-url>/k8s/clusters/<cluster-id>/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-alertmanager:9093>/proxy/{{ end }}
*Graph:* <{{ template "__rancherurl" . }}{{ .GeneratorURL | reReplaceAll "http://rancher-monitoring-prometheus.cattle-monitoring-system:9090/" "$1" }}|:chart_with_upwards_trend:>

I was able to test the following on 2.5-head (7002499) using monitoring v14.5.100-rc5:

deploy monitoring with default settings

viewing yaml after deployment shows that the external URL is now set in global.cluster

setup an alert

alert message link now uses external URL. Link works, brings you to the alertmanager page where alert is firing

manually set externalURL

set in yaml -- if not same value as rancher's externalURL, part of prom will break (expected)

on older version of rancher (v2.5.7) manually set external URL on latest monitoring (using dev-v2.5)

alert links are now working

Needs Info On:

creating ingress for prometheus (prometheus.ingress settings) -> not sure how to set this up, seems to need ingress-nginx but this is already deployed with monitoring (?)

if both external URL and ingress are set, alert link should be using ingress
all prom services should work in this case

to test with an ingress, we did the following on 2.5-head (31f00c1):

deployed monitoring (UI updates global.cattle.url = rancher's current external URL)
setup alerts (receiver, prometheus rule, route)
deployed an ingress targeting service alertmanager-operated on port 9093 (autogenerated name using .xip.io)
added that ingress to monitoring -> alertmanager.alertmanagerSpec.externalURL = your_ingress
wait for your alert to trigger -> user sees ingress used in link of alert manager (not global.cattle.url value) -- PASS


Develop

This is a rebased develop with main from #107
Key additions are:

multiqc
kraken2
storage report
porechop for adapter detection and trimming
dorado as optional basecaller (model choice still needs improvements)
GPU resource query before basecalling
new command line controls for source directory (only a single directory is now tracked for new flowcells)
new command line control for (organism and protocol) - side tracks parkour query

I would change to 2.0.0 only until after dorado has become default. at the moment it is just an option. But dorado will require more testing and multiplexing capabilities.


chore(revert last change)

Coverage remained the same at 97.753% when pulling d9e32ea6806974868539c07851f0ea58b9454817 on refactor into cc461985655baa816abf3e4f649a36fe4c8f8d4d on master.

Coverage remained the same at 97.753% when pulling d9e32ea6806974868539c07851f0ea58b9454817 on refactor into cc461985655baa816abf3e4f649a36fe4c8f8d4d on master.


grouped Date-Select: error message disappears even if the group is considered invalid

when selects are grouped together, error message handling is wired.
even when one of the fields of the group is considered invalid, no error message is rendered.
see https://jsfiddle.net/wzbptn6z/2/
I am opening this issue mostly for discussion purposes, as I am not 100% confident that it is something which need to be handled by jquery-validation core, as the behaviour seems to only occur because of the onfocusout triggered validation.

@Arkni would be interessed in your opinion on this topic.

I confirm the issue, tested in Chromium 48.0.2564.82 and FF43.
The same issue appears using the master version, Here is a screen-cast of the test:

Right now, I have no idea why this happened. But will investigate this behavior and see if we can fix it soon before the next release.

I think it happens because of the used focusout handler.
when focus-out on the month-select the error message appears (because months is invalid) and the focus-in on the year is hides the message again as the year-select is valid.
this happens very fast, one after another.

I dont see the difference. whats different?

In the fiddle, the error disappear only after the year lose focus.

But in the test with master version, the error disappear as soon as the year receive the focus. That's the only difference.

I tracked the issue down to defaultShowErrors method. After doing some debugging, I found that this.errorList is empty when the year element is valid, but it shouldn't be (month is invalid). Then, I realize that this list is cleared before validating every element inside reset method and I guess there is a reason for doing that (which I don't know).

Maybe we just miss "group-support" in reset().. I guess the method doesnt account for the group feature yet. Will have a look later. Thx for your initial investigation

After thinking a bit more about it...
when validating only a single element like this.element(element) does, we should check whether this element is part of a group and if so we need to also validate all elements of the group in the same run.
WDYT?

when validating only a single element like this.element(element) does, we should check whether the current element is part of a group and if so we need to also validate all elements of the group in the same run.

So, if you have 3 elements in a group, the validation will run 3 times for every element. Am I right ?

The current element should only been considered valid when all elements of the group are valid..
In this run we should not add a "invalid" class to all members of the group, but we should take them into account to determine the "valid/invalid" class for the current element....

We can rely on invalid object, which contains valid and invalid elements. I'm thinking of doing this check inside defaultShowErrors method. So instead o showing errors according to errorList which is cleared for every element, we can use the invalid object extended by the content of errorMap. I didn't test this idea, yet. But I'm planning to.

So, if you have 3 elements in a group, the validation will run 3 times for every element. Am I right ?

I guess we should only do it that way, in case a single element is validated using element. In case the whole form is validated, we dont need to check the groups, as all elements are checked nevertheless..

Sounds good to me.

I tried to implement something to fix this bug, but it feels like my assumption of the group based behaviour feels like would only hold in my certain case (multiple selects for a date).
not sure those assumptions will also work for grouped input fields in the wild. I can atm not think of other situations where people work with the grouping-feature to achieve different things..

..this will only hold in case all the fields are required... in case of a optional date select trinity it feels like it should be configured with the depends feature additionally... (the selects should be required when one holds a value, but all should be handled as optional when none has a value)
whats the expected behaviour when some fields of the group are optional and some are required?

IMO nothing will change, as the rules for a specific element (required or optional) are filtered first before validating it. So if an element is optional and the requirement to make it required is not met, then it will skip validation as rules() will return an empty object.

usability wise it is strange when the user starts filling the fields from the front, and after the first field is filled in a error occurs because not yet filled fields are considered invalid.

Maybe you can validate other elements only if those are present in submitted or invalid objects (as done in onkeyup handler) ?

I guess a few lines of code is better then a thousand words.
Thats what I tried:
		// http://jqueryvalidation.org/Validator.element/
		element: function( element ) {
			var cleanElement = this.clean( element ),
				checkElement = this.validationTargetFor( cleanElement ),
				elements = [],
				group,
				v = this,
				elementResult,
				overallResult = true;

			if ( checkElement === undefined ) {
				delete this.invalid[ cleanElement.name ];
			} else {

				// If this element is grouped, then validate all group elements already
				// containing a value
				group = this.groups[ checkElement.name ];
				if ( group ) {
					$.merge( elements, $.map( this.groups, function( testgroup, name ) {
						var cleanElement;

						if ( testgroup === group && name) {
							cleanElement = v.clean( v.findByName( name ) );
							if (cleanElement.value) {
								return v.validationTargetFor( cleanElement );
							}
						}

						return null;
					}));
				} else {
					elements.push(checkElement);
				}

				$.each(elements, function( i, element ) {
					v.prepareElement( element );
				});

				this.currentElements = $( elements );
				for ( var i = 0; elements[ i ]; i++ ) {
					elementResult = this.check( elements[ i ] ) !== false;
					if ( elementResult ) {
						this.invalid[ checkElement.name ] = false;
					} else {
						this.invalid[ checkElement.name ] = true;
					}
					overallResult = overallResult && elementResult;
				}

				if ( !this.numberOfInvalids() ) {

					// Hide error containers on last error
					this.toHide = this.toHide.add( this.containers );
				}
				this.showErrors();
			}

			// Add aria-invalid status for screen readers
			$( element ).attr( "aria-invalid", !overallResult );

			return overallResult;
		},

Looks good to me, here are some reviews:
// .... snip..
        // http://jqueryvalidation.org/Validator.element/
        element: function( element ) {
            var cleanElement = this.clean( element ),
                checkElement = this.validationTargetFor( cleanElement ),
                elements = [],
                group,
                v = this,
                elementResult,
                overallResult = true;

            if ( checkElement === undefined ) {
                delete this.invalid[ cleanElement.name ];
            } else {

                // If this element is grouped, then validate all group elements already
                // containing a value
                group = this.groups[ checkElement.name ];
                if ( group ) {
                    $.merge( elements, $.map( this.groups, function( testgroup, name ) {
                        // Already declared
-                       var cleanElement;

                        if ( testgroup === group && name) {
                            // `findByName` return a jQuery object, not an HTML element
-                           cleanElement = v.clean( v.findByName( name ) );
+                           cleanElement = v.clean( v.findByName( name )[ 0 ] );
                            if (cleanElement.value) {
                                return v.validationTargetFor( cleanElement );
                            }
                        }

                        return null;
                    }));
                } else {
                    elements.push(checkElement);
                }

                // Why you prepare all elements before validating
                // I expect preparing every element in its round
-               $.each(elements, function( i, element ) {
-                   v.prepareElement( element );
-               });

                this.currentElements = $( elements );
                for ( var i = 0; elements[ i ]; i++ ) {
+                   v.prepareElement( elements[ i ] );
                    elementResult = this.check( elements[ i ] ) !== false;
                    if ( elementResult ) {
                        this.invalid[ checkElement.name ] = false;
                    } else {
                        this.invalid[ checkElement.name ] = true;
                    }
                    overallResult = overallResult && elementResult;
                }

                if ( !this.numberOfInvalids() ) {

                    // Hide error containers on last error
                    this.toHide = this.toHide.add( this.containers );
                }
                this.showErrors();
            }

            // Add aria-invalid status for screen readers
            $( element ).attr( "aria-invalid", !overallResult );

            return overallResult;
        },
// .... snap..

Never mind my previous comment, I tested your changes along with the code of the fiddle, by it's not validating on focus out. I think you have to add the current element to elements array whether it has a value or not (inside the first else before if ( group ) { ... }).

Need to test that thx.
One thing: the invalid state os of now will depend on all group-fields. I get the feeling that his might leave a field marked as invalid (via aria attribute), even if it only was invalid because of a other element in the group. When this invalid field later on gets the valid the first mentioned field will still be aria-invalid although all elements of the group already got valid

One thing: the invalid state os of now will depend on all group-fields. I get the feeling that his might leave a field marked as invalid (via aria attribute), even if it only was invalid because of a other element in the group. When this invalid field later on gets the valid the first mentioned field will still be aria-invalid although all elements of the group already got valid

You mean aria-invalid right ?
We can avoid that, but before that, I have a question:

Does it make sense to add aria-invalid to an ignored element ?

IMO, only the validated element should have that attribute set to true|false.
WDYT ?

Agree that ignored elements should not be touched by jq-validate

OK, here is an updated version of element():
// http://jqueryvalidation.org/Validator.element/
element: function( element ) {
	var cleanElement = this.clean( element ),
		checkElement = this.validationTargetFor( cleanElement ),
		v = this,
		result = true,
		rs, group;

	if ( checkElement === undefined ) {
		delete this.invalid[ cleanElement.name ];
	} else {
		this.prepareElement( checkElement );
		this.currentElements.push( checkElement );

		// If this element is grouped, then validate all group elements already
		// containing a value
		group = this.groups[ checkElement.name ];
		if ( group ) {
			$.map( this.groups, function( testgroup, name ) {
				if ( testgroup === group && name !== checkElement.name ) {
					cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
					if ( cleanElement && cleanElement.name in v.invalid ) {
						v.currentElements.push( cleanElement );
						result = result && v.check( cleanElement );
					}
				}
			} );
		}

		rs = this.check( checkElement ) !== false;
		result = result && rs;
		if ( rs ) {
			this.invalid[ checkElement.name ] = false;
		} else {
			this.invalid[ checkElement.name ] = true;
		}

		if ( !this.numberOfInvalids() ) {

			// Hide error containers on last error
			this.toHide = this.toHide.add( this.containers );
		}
		this.showErrors();

		// Add aria-invalid status for screen readers
		$( element ).attr( "aria-invalid", !rs );
	}

	return result;
},

You may need to test it with real world project to make sure it's working as expected (even if the tests pass, we may ignore some usecases)

just did some dummy testing and it looks good so far. I will let this be tested by some others devs.
nit: the $.map is useless atm, right? could "just be" a for or $.each?

nit: the $.map is useless atm, right? could "just be" a for or $.each?

Yep, you can replace it with $.each( ... )

ok, will do they change at merge-time.
@Arkni thx so far.

fix landed in https://github.com/jzaefferer/jquery-validation/commit/2992ab6db9bde87c5f4b840431940f95f63821c1?w=1

Hm I think we found one case which doesnt work with his change.

load page containing 3 (DD.MM.YYYY) grouped selects (like in the examples we had initially)
select a day
tab to month
tab to year (now field is rendered invalid)
shift-tab back to month
select a month
tab to year
select a year
tab to the next input

-> group still rendered invalid even if all 3 fields have a valid value
@Arkni could you confirm?

Nope, I can't reproduce the issue.
I tested in Chrome 50, Firefox 46 and Firefox 49 (developer edition) and everything works as expected.

I guess what my tests above try to reproduce is https://github.com/jzaefferer/jquery-validation/issues/1816

Yeah, we need a regression test to make sure no problem will appear in the near future.
I'll be able to make one in the next days, in case the author of #1805 is not willing to create one.


Minor refactoring in Ecto.Schema.timestamps/2

Ecto 2.2 depends on Elixir v1.4 so it's safe to do.

:heart: :green_heart: :blue_heart: :yellow_heart: :purple_heart:


ARROW-2408: [Rust] Remove build warnings

...and test for warnings in CI

@xhochy lmk any feedback!


Missing package uuid-runtime

ISSUE TYPE

Improvement Request

COMPONENT NAME

PACKAGING

CLOUDSTACK VERSION

<IP_ADDRESS>-SNAPSHOT

OS / ENVIRONMENT

Debian 10 ( minimal installation )

SUMMARY
By following the 'Quick Installation Guide: System Template Setup',  the result is incorrect.
STEPS TO REPRODUCE
Run:
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloudstack.org/systemvm/4.15/systemvmtemplate-4.15.0-kvm.qcow2.bz2 -h kvm -F
EXPECTED RESULTS

Uncompressing to /usr/share/cloudstack-common/scripts/storage/secondary/eda14a4d-be87-44d6-8d91-6117b37c564c.qcow2.tmp (type bz2)...could take a long time
Moving to /export/secondary/template/tmpl/1/3///eda14a4d-be87-44d6-8d91-6117b37c564c.qcow2...could take a while

ls /export/secondary/template/tmpl/1/3/
eda14a4d-be87-44d6-8d91-6117b37c564c.qcow2
ACTUAL RESULTS

cloud-install-sys-tmplt: line 193: uuidgen: command not found
Uncompressing to /usr/share/cloudstack-common/scripts/storage/secondary/.qcow2.tmp (type bz2)...could take a long time
Moving to /export/secondary/template/tmpl/1/3///.qcow2...could take a while

ls /export/secondary/template/tmpl/1/3/
.qcow2

Unless I'm mistaken or the Quick Installation guide is only valid for CentOS. I found that 'uuid-runtime' is part of cloudstack-agent_<IP_ADDRESS>-SNAPSHOT_all.deb
However at no time is it said during the setup of the management server that the installation of this package is necessary.
Would it be possible to clarify this?
Thx

@Yann-Kaelig the packaging is only supported for CentOS and Ubuntu, and not explicitly tested on Debian. Please refer to http://docs.cloudstack.apache.org/en/latest/releasenotes/compat.html for compatibility

Hi rhtyd.
Thanks for this clarification. In this case, is there any documentation specific to Ubuntu?
I don't see any reference to this operating system in the quick installation guide documentation.
Thx

@Yann-Kaelig please see my reply again. There's no QIG for Ubuntu as far as I know in the official docs.

it would be to better to add uuid-runtime to dependencies of cloudstack management in debian/control


Attach OS user information to requests

It would be beneficial if clickhouse-connect included the OS user information in the requests made to the Clickhouse server, as that would improve server-side functionality related to logging, usage, compliance, security, audit trails, etc. For example, the related clickhouse-driver library does so.

Note that you can put whatever value you want (including the os.user or other identifying information) in the client_name argument when calling get_client, and that client name will be included in the HTTP User-Agent header.  Using that header is closest we can get to the native protocol os_user field.
The default HTTP User-Agent header is set in clickhouse_connect/common.py
def build_client_name(client_name: str):
    product_name = get_setting('product_name')
    product_name = product_name.strip() + ' ' if product_name else ''
    client_name = client_name.strip() + ' ' if client_name else ''
    py_version = sys.version.split(' ', maxsplit=1)[0]
    return f'{client_name}{product_name}clickhouse-connect/{version()} (lv:py/{py_version}; os:{sys.platform})'

I'm a little nervous about automatically adding the os user to that string, both because it's already pretty long and there's arguably a security/privacy concern with passing that over the internet, but I could go either way.  Is that the enhancement you're proposing?

I agree that the client_name is not the right place to add this information.
Actually CH query log has a os_user field, you can just use that. It also have a query_id. The driver should be able to override it.

That os_user field will not be populated by clickhouse-connect.  It's only populated when using the TCP Native protocol.

@genzgd good point, I did not realize one was http protocol only and the other was native only.
https://github.com/ClickHouse/clickhouse-connect/issues/91

so I guess the only option it the http_user_agent enabled by default with an option to disable it.
FYI I saw that in a CH instance recently :
http_user_agent: ClickHouse-JdbcDriver/0.6.0-patch5 (Windows 11/10.0; OpenJDK 64-Bit Server VM/JBR-17.0.11+1-1207.24-jcef; HttpURLConnection; rv:067ae0b)

The concern is security behind a load balancer, if you have a generic user and a production issue, you want as much information as possible to trace it without going to potentially massive logs + it gets to the system.query_log. We get that "feature" with the clickhouse-driver over the native protocol and clickhouse-client.


Pointer to pointer values as cgo arguments are no longer allowed in Go 1.6

Any calls to functions which calls cgo with a double pointer, (for example CreateProgramWithSource) will cause a runtime error:
panic: runtime error: cgo argument has Go pointer to Go pointer
In Go 1.6 as a result of the changes to cgo: https://tip.golang.org/doc/go1.6#cgo
I noticed you guys are already aware of this for OpenGL bindings: https://github.com/go-gl/gl/issues/31

This is probably a matter of regenerating the bindings (since it's already been fixed on similar repos).
@hydroflame I'm not sure if this is something you're still able to do?

Added utility function like the rest of the go-gl packages, is that good ?

Seems to be fixed a long while ago, I'm guessing it's safe to close this now.


Add es_CL Provider

Tests fail because of coding standards. Could you please update your PR accordingly?

No news for too long, closing.


Switch on FLAC support

For some odd reason, upstream Raylib has FLAC support turned off by default. Could we switch it on for the OCaml package, analogous to JPEG?
Ideally, that should only require setting SUPPORT_FILEFORMAT_FLAC as a build option, though I am not sure what dependencies are involved.

Wow, that was fast, thanks! Are you planning to make a new opam release anytime soon?

I'm in the process of upgrading the bindings to dune 3 right now. Once this is done, I'll release to opam

Splendid, thanks!


Accounts not creating!

Accounts not registering on discord it just generating emails..
Also no output in token.txt

Do you have a photo of the error?

There's is no error,
No token us gnerating in token.txt also its not creating account on discord..
I tried to login with the email and password generated in logs but it says no account is registered with this email/password

There could be multiple reasons for this.
1- Do you pass captcha ?
2- After the captcha passes, you have to wait a while for the token to arrive in the log.
3- If the txt does not save even though the token is received, please reload the "fs" module.

Ohh okay leme try.. Thanks for help


Python 2 support timeframe

Some packages, like NumPy, announced dropping Python 2 support in upcoming releases.
What about Snips NLU? For how long do you, guys, plan to maintain compatibility with Python 2.7?

Hi @antontarasenko ,
It is not completely clear at the moment, but I think we will try to maintain compatibility until Python 2.7 retires in 2020. After that it is likely that we stop all efforts to maintain compatibility, but it really depends on how things go in terms of adoption by the community.
Just out of curiosity, may I ask what is your use case ?
Cheers


jdupes: 1.20.2 -> 1.21.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/jbruchon/jdupes/releases.
meta.description for jdupes is: "A powerful duplicate file finder and an enhanced fork of 'fdupes'"
meta.homepage for jdupes is: "https://github.com/jbruchon/jdupes"
meta.changelog for jdupes is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.21.0 with grep in /nix/store/ip3qlg40apl96sfvx53vhygm935rhzjh-jdupes-1.21.0
found 1.21.0 in filename of file in /nix/store/ip3qlg40apl96sfvx53vhygm935rhzjh-jdupes-1.21.0

Rebuild report (if merged into master) (click to expand)

4617 total rebuild path(s)

4617 package rebuild(s)

First fifty rebuilds by attrpath
ChowKick
CuboCore.corepdf
CuboCore.coretoppings
DisnixWebService
EmptyEpsilon
HentaiAtHome
MIDIVisualizer
PageEdit
R
SDL2
SDL2_gfx
SDL2_image
SDL2_mixer
SDL2_net
SDL2_sound
SDL2_ttf
SDL2_ttf_2_0_15
SDL_audiolib
SDL_compat
SDL_gpu
Sylk
_1oom
_1password-gui
_1password-gui-beta
_20kly
_7kaa
_90secondportraits
abbaye-des-morts
acoustidFingerprinter
adapta-gtk-theme
adl
adoptopenjdk-icedtea-web
adriconf
aegisub
aether
aether-lv2
agi
ahoviewer
akira-unstable
alan
alass
alchemy
alda
alephone
alfaview
alfis
allegro
allegro4
allegro5
allure

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/ip3qlg40apl96sfvx53vhygm935rhzjh-jdupes-1.21.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A jdupes https://github.com/r-ryantm/nixpkgs/archive/8e4f6b26e144ee1d8626141221c50c823f9f2cf1.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ip3qlg40apl96sfvx53vhygm935rhzjh-jdupes-1.21.0
ls -la /nix/store/ip3qlg40apl96sfvx53vhygm935rhzjh-jdupes-1.21.0/bin

Pre-merge build results
NixPkgs review skipped

Maintainer pings
cc @romildo for testing.

@ofborg eval


[21.05] terraform-providers.hydra: 0.1.0 -> 0.1.1

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Added a release notes entry if the change is major or breaking
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 124533 at 573cdf2d run on aarch64-linux 1

2 packages built successfully:

terraform-full
terraform-providers.hydra


Geojson log scale

@jbeezley, @aashish24 PTAL
This is a sample file. Just change the extension to geojson and you should be able to test  the log functionality. There is a new checkbox in the geojson style modal.
chickens.txt

thanks @dorukozturk do we have option to use quantize or quantile?

Looks like I think we only have quantize. Can we add quantile as well?

@aashish24 I will add the quantile and quantize options in a separate PR, to keep this one small.


Set up cloud Pangeo/nebari instance

Create a sandbox environment in AWS following instructions from Pangeo.

@jonmjoyce, I'm a big fan of Nebari (formerly called Qhub), open-source Infrastructure-as-Code that uses Terraform to deploy JupyterHub with Dask Gateway on Kubernetes on AWS, Google, Azure or DigitalOcean.
A few of the things that make Nebari attractive over Dask Hub:

The awesome conda-store approach for managing conda environments.  Unlike other approaches, you don't need to custom containers with the environments -- notebooks and each Dask worker get's it's environment from the conda-store pod -- which means that you can update an environment in less than 5 minutes, instead of 30+ minutes with other approaches.   And you avoid package version mismatches since notebook and workers are accessing the same environments from conda-store.
Groups!   Users are members of one or more groups, and have the ability to share both code and modify/share environments with other group members
Easy maintenance via github actions.    If you want to change the hub, say, adding a new server type with more memory, you can just edit a config file on github, and when merged, the changes are automatically deployed.

We've been running Nebari for ESIP for the last two years at https://jupyter.qhub.esipfed.org.
I've given you access if you want to check it out!    There is an introductory notebook at https://jupyter.qhub.esipfed.org/user/rsignell-usgs/lab/tree/shared/users/Welcome.ipynb

@jonmjoyce I saw this commit: https://github.com/asascience-open/nextgen-dmac/commit/1fe08eb5a838ee9c74fbd67f0269f7d5ba24d5cf
which seems to suggest you guys are still working on deploying Kubernetes?
What is the reason to do that instead of deploying kubernetes (and JupyterHub + Dask Gageway) using qhub/nebari?

Appreciate that you are keeping up-to-date with the changes on GitHub! This particular commit you referenced was from some ongoing work I was doing. Prior to our meeting I had already configured a K8s cluster and tested a Pangeo install (single user JupyterHub + dask), and I have since changed that configuration to be a dask-gateway install. Since our meeting, @cheryldmorse is setting up nebari and this ticket is now tracking that progress.
I think Kubernetes is going to be part of our stack going forward regardless. Aside from the analysis capabilities we'll get from nebari, I would like our service mesh to target K8s as a platform. This includes the data ingest workflows that @benjwadams is exploring and the data access protocols that @mpiannucci is working on. In some cases we will also want a headless dask cluster for automated processing and that's another reason for running dask-gateway.

@jonmjoyce , I absolutely agree that Kubernetes will likely going to be part of the will be part of the stack, but Nebari is a painless way to configure, deploy and maintain your Kubernetes cluster!    I know, because I did it the hard way for two years before switching to Qhub/Nebari!
And you get JupyterHub & Dask Gateway as a bonus!


Tried calling: dependOnInheritedWidgetOfExactType<_InheritedTheme>() on null.

Describe the bug
I want to implement the RouteGuards, auto-nested navigation & all other features of the auto_route package using the ExtendedNavigator  helper. But I keep getting this error when I try to use Get.context or Get.textTheme.
The method 'dependOnInheritedWidgetOfExactType' was called on null.
Receiver: null
Tried calling: dependOnInheritedWidgetOfExactType<_InheritedTheme>()

To Reproduce
Steps to reproduce the behavior:

Declare Routes - router.dart

import 'package:auto_route/auto_route_annotations.dart';
import 'home_screen.dart';
import 'unknown_route.dart';

@AdaptiveAutoRouter(
  routes: <AutoRoute>[
    AdaptiveRoute(page: HomeScreen),
    AdaptiveRoute(path: "*", page: UnknownRoute),
  ],
  generateNavigationHelperExtension: true,
)
class $Router {}

Run build_runner - flutter packages pub run build_runner build --delete-conflicting-outputs
Init MaterialApp() - main.dart
NB: The error doesn't show up if I remove builder: ExtendedNavigator.builder(),

import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart';
import 'router.gr.dart'; // Generated route file
import 'package:get/get.dart';
import 'unknown_route.dart';

void main() {
  runApp(MaterialApp(
    title: 'Flutter Demo',
    debugShowCheckedModeBanner: false,
    theme: ThemeData(
      primarySwatch: Colors.blue,
      visualDensity: VisualDensity.adaptivePlatformDensity,
    ),
    navigatorKey: Get.key,
    onGenerateRoute: Router(),
    builder: ExtendedNavigator.builder(
      router: Router(),
      onUnknownRoute: (RouteSettings settings) {
        return MaterialPageRoute(builder: (_) => UnknownRoute());
      },
    ),
  ));
}

Use Get in HomeScreen (home_screen.dart)

import 'package:flutter/material.dart';
import 'package:get/get.dart';

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Text("Flutter Demo", style: Get.textTheme.headline4.copyWith(fontWeight: FontWeight.w600))
      ),
    );
  }
}

I also get - 'package:flutter/src/widgets/media_query.dart': Failed assertion: line 812 pos 12: 'context != null': is not true. when I try to access Get.height or Get.width.

pubspec.yaml file

environment:
  sdk: ">=2.8.0 <3.0.0"

dependencies:
  flutter:
     sdk: flutter
  cupertino_icons: ^0.1.3
  get: ^3.4.2
  auto_route: ^0.6.7

dev_dependencies:
  build_runner: any
  auto_route_generator: any

unknown_route.dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class UnknownRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text("Error"),
    );
  }
}

Expected behavior

Get.height should return Device height (pixels),
Get.textTheme should return App's TextTheme...
Get.context should return current BuildContext.

Screenshots

Flutter Version:
[√] Flutter (Channel beta, 1.20.0-7.2.pre, on Microsoft Windows [Version 10.0.16299.15], locale en-US)
    • Flutter version 1.20.0-7.2.pre at C:\src\flutter
    • Framework revision a2bde82fbd (2 weeks ago), 2020-07-18 15:16:35 -0700
    • Engine revision 60b269d898
    • Dart version 2.9.0 (build 2.9.0-21.2.beta)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at C:\Users\Anne\AppData\Local\Android\Sdk
    • Platform android-29, build-tools 29.0.3
    • ANDROID_HOME = C:\Users\Anne\AppData\Local\Android\Sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 3.6)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 46.0.1
    • Dart plugin version 192.8052
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)

[√] VS Code, 64-bit edition (version 1.45.1)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 3.11.0

[√] Connected device (3 available)
    • F103 Pro (mobile) • <IP_ADDRESS>:5556 • android-arm64  • Android 6.0 (API 23)
    • Web Server (web)  • web-server         • web-javascript • Flutter Tools
    • Chrome (web)      • chrome             • web-javascript • Google Chrome 84.0.4147.105

• No issues found!

Get Version:
get: ^3.4.2
Describe on which device you found the bug:
F103 Pro Android

I tried the adding Get before MaterialApp as specified in #145, and I received the same error.
And according to the docs, GetMaterialApp is necessary for routes, snackbars, internationalization, bottomSheets, dialogs, and high-level apis related to routes and absence of context.

You cannot use Getx and AutoRoute for navigation.
You can only use State and Dependency Management (only) if you are using something to delegate your routes.
There is no way to make this work, because inserting a builder will cancel Getx.

Ok. The only solution would be to remove ExtendedNavigator helper in order to use GetX.

You cannot use Getx and AutoRoute for navigation.
You can only use State and Dependency Management (only) if you are using something to delegate your routes.
There is no way to make this work, because inserting a builder will cancel Getx.

Same problem.
It seems that GetX and AutoRoute can only choose one.
I choose GetX.
By the way, why aren't you allowed to create Getx() in the builder? Is there a design conflict?


Data files?

Hi there,
I wonder if it's possible to also share the /data folder?
Very interesting work and thanks very much!

Yes. The data is uploaded now.


Add an overview about supported features

Hi,
first I would like to thank you. Especially the possibility for reliable upgrades via image swap is very nice.
During my integration I switched between different algorithm for signing/encryption and I missed something like a overview which shows what is currently supported with which crypto library.
I started to summarize the information which I found in the several docs:
Image signing :

crypto library
RSA
ECDSA

tinycrypt
no
yes

mbedTLS
yes
no

Image encryption key encryption:
(Note: Image will be encryted with AES-CTR-128)

crypto library
AES-KW-128
RSA-OAEP

tinycrypt
no
no

mbedTLS
yes
yes

Imgtool support:

RSA
yes

ECDSA
yes

AES-KW-128
no

RSA-OAEP
yes

Is that correct ?

Yes, that is correct!

Should this be added to the documentation?

Could be added to the encrypted images document.


Change the language of warning banner

Change collaborator to contributor

Merged into release/0.55.0


Improve Emscripten support

Mostly backporting winit functions into emscripten's platform module. It compiles and works against a modified version of badboy's glium example: https://github.com/cactorium/spring-crabs/tree/emscripten

Err.. I don't understand what you're trying to achieve, but don't duplicate winit. Just continue importing it even on emscripten, but just don't call any of its functions.

That breaks because winit doesn't support emscripten:
   Compiling winit v0.5.10
error[E0432]: unresolved import `self::platform::*`
 --> /home/kelvin/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.5.10/src/platform/mod.rs:1:9
  |
1 | pub use self::platform::*;
  |         ^^^^^^^^^^^^^^^^^^ Could not find `platform` in `platform`

error[E0432]: unresolved import `this_platform_is_not_supported`
  --> /home/kelvin/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.5.10/src/platform/mod.rs:22:5
   |
22 | use this_platform_is_not_supported;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `this_platform_is_not_supported` in the root

# etc...

Like it's impossible to get it to compile for emscripten, unless there's some flag or trick that I don't know about?

Winit should get a "null" backend which always returns an error when you try to use it.

winit's got this thing in src/platform/mod.rs that's causing the error whenever you're targetting asmjs-unknown-emscripten:
#[cfg(all(not(target_os = "ios"), not(target_os = "windows"), not(target_os = "linux"),
  not(target_os = "macos"), not(target_os = "android"), not(target_os = "dragonfly"),
  not(target_os = "freebsd"), not(target_os = "openbsd")))]
use this_platform_is_not_supported;

A fresh pull of the master branch of winit fails to compile with target asmjs-unknown-emscripten:
[kelvin@batmanbatman repos]$ cd winit/
[kelvin@batmanbatman winit]$ git pull
Already up-to-date.
[kelvin@batmanbatman winit]$ cargo build --target asmjs-unknown-emscripten
warning: unused manifest key: package.categories
    Updating registry `https://github.com/rust-lang/crates.io-index`
   Compiling libc v0.2.20
   Compiling lazy_static v0.2.2
   Compiling shared_library v0.1.5
   Compiling winit v0.5.10 (file:///home/kelvin/repos/winit)
error[E0432]: unresolved import `self::platform::*`
 --> src/platform/mod.rs:1:9
  |
1 | pub use self::platform::*;
  |         ^^^^^^^^^^^^^^^^^^ Could not find `platform` in `platform`

error[E0432]: unresolved import `this_platform_is_not_supported`
  --> src/platform/mod.rs:22:5
   |
22 | use this_platform_is_not_supported;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `this_platform_is_not_supported` in the root

error[E0433]: failed to resolve. Could not find `Window2` in `platform`
   --> src/window.rs:114:22
    |
114 |         let w = try!(platform::Window2::new(events_loop.events_loop.clone(), &self.window, &self.platform_specific));
    |                      ^^^^^^^^^^^^^^^^^^^^^^ Could not find `Window2` in `platform`

error[E0412]: type name `platform::MonitorId` is undefined or not in scope
   --> src/window.rs:306:24
    |
306 |     data: VecDequeIter<platform::MonitorId>,
    |                        ^^^^^^^^^^^^^^^^^^^ undefined or not in scope
    |
...

Yes, what I mean is that winit should be modified to add a "null" implementation that is used instead of this "this_platform_is_not_supported" thing.

Ohhh okay, sorry!

So I think I got the default platform thing working, but I can't test because of the winit API transition thing; glutin doesn't compile with either emscripten or linux against the tip of winit, with or without my changes... Any recommendations on what to do next?

You could do your changes against the dev-0.5 branch of winit.
This branch still uses the old API.

Fixed both I think

So I've got some work done on adding in the hooks for mouse/keyboard events as well, would those be good to add to this PR, or would opening a new PR after this one's merged be better?

@cactorium As you wish.
Basically I wanted to publish winit 0.5.11 (which I forgot to do yesterday), then ask you to tweak the Cargo.toml of glutin in this PR to point to winit 0.5.11, then merge.

So I guess I'll see how far I get before winit 0.5.11 gets published and submit whatever work I get done by then? Most of the event stuff should be working pretty solidly right now; the biggest hole left is converting to keys to VirtualKeyCodes

All's ready except for the version change

I just want to mention that I started implementing emscripten plateform in winit there
I included keyboard but mouse because there was an issue with mousemove when the cursor is grabbed

I'm hesitating between putting the emscripten stuff in glutin or in winit.
The initial reason why I wanted to stick to glutin is that you can only use OpenGL with emscripten anyway, and that the concept of a "window" is a bit blurry when it comes to web pages.
That being said Android has the same problem where you're manipulating a window but the whole screen.
But that's a pretty weak argument, so I'm not sure.

I kind of agree with the idea of having it in glutin because of the fact
that you don't really control a window. On the other hand, I think
emscripten supports using SDL instead of OpenGL, so maybe it'd make sense
to put event processing stuff in winit to share it across the two?
On Wed, Feb 15, 2017, 11:10 AM tomaka<EMAIL_ADDRESS>wrote:
I'm hesitating between putting the emscripten stuff in glutin or in winit.
The initial reason why I wanted to stick to glutin is that you can only use
OpenGL with emscripten anyway, and that the concept of a "window" is a bit
blurry when it comes to web pages.
That being said Android has the same problem where you're manipulating a
window but the whole screen.
But that's a pretty weak argument, so I'm not sure.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tomaka/glutin/pull/857#issuecomment-280054772, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABcW37Qyj51Xj16U9yroFC1NCnxxbjNgks5rcyOGgaJpZM4L-nvg
.

My bad, I missed the version bump on winit. Cargo.toml's updated

I got an issue I don't what to do with it : https://github.com/thiolliere/spring-crabs/tree/emscripten

What errors are you getting? It looks like it runs fine on my computer

it works on rustc 1.18.0-beta.1 (4dce67253 2017-04-25) but on rustc 1.17.0 (56124baa9 2017-04-24) it fails:
Successfully compiled asm.js code (total compilation time 2664ms; storage initialization failed (consider filing a bug); 4 functions compiled slowly: $j:12:8 (507ms), fj:16:8 (324ms), Sj:13:8 (808ms), dj:6:8 (2602ms)) spring-crabs.js
emscripten_webgl_create_context failed: explicitSwapControl is not supported, please rebuild with -s OFFSCREENCANVAS_SUPPORT=1 to enable targeting the experimental OffscreenCanvas specification! spring-crabs.js:1:467981

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: BackendCreationError(OsError("Error while calling emscripten_webgl_create_context: Internal error in the library (success detected as failure)"))', /checkout/src/libcore/result.rs:859 index.htm:141:13

note: Run with `RUST_BACKTRACE=1` for a backtrace. index.htm:141:13

I rewrite the example. Now it fails also on beta also.
Also I don't know if this is the right place for discussing on this issue. I think it is related to emscripten backend itself.

I have an issue related to hidpi_factor.
On some smartphone (I suspect with HDPI of 2) my game was only showing the left-bottom quarter of the expected view. I solved it by forcing hdpi_factor method to always return 1.
Also I found that our implementation of get_inner_size is not coherent with [winit implementation[https://github.com/tomaka/winit/blob/master/src/window.rs#L207-L226).
I don't have any hardware with HDPI different from one to test.
I can propose to write get_inner_size as winit do and forcing hdpi_factor to one but that doesn't sound very good...

Would something like this fix it? You probably have more experience with dealing with emscripten than me at this point, but it looks like using emscripten_request_fullscreen_strategy with scalingMode set to one of the EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_* options might be an easier (but maybe not better? I'm not sure) workaround
     #[inline]
     pub fn get_inner_size_pixels(&self) -> Option<(u32, u32)> {
-        self.get_inner_size()
+        self.get_inner_size().map(|(w, h)| {
+            let hdpi = self.hdpi_factor();
+            ((hdpi*(w as f32)) as u32, (hdpi*(h as f32)) as u32)
+        })
     }

Also what versions of stuff are you running? I can't build against the latest of everything because of the new EventLoop system (btw @tomaka would it make sense to make another PR to get this stuff working with the 0.8.0 version of glutin?)

Any updates on this?

Not as far as I know, but the code here's dated now, since winit switched the EventLoop thing at 0.6. I'm working on redoing the work here to the latest glutin, but there hasn't been any word from the maintainers about it. My fork's master branch might be usable right now, in case anyone needs emscripten working right now

@cactorium actually your fork doesnt work out of the box, or am i missing something?
cargo build --target=wasm32-unknown-emscripten --release
   Compiling lazy_static v0.2.8
   Compiling khronos_api v1.0.1
   Compiling bitflags v0.9.1
   Compiling libc v0.2.24
   Compiling log v0.3.8
   Compiling xml-rs v0.6.0
   Compiling shared_library v0.1.6
   Compiling winit v0.6.4
error[E0432]: unresolved import `self::platform::*`
 --> /home/aep/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.6.4/src/platform/mod.rs:1:9
  |
1 | pub use self::platform::*;
  |         ^^^^^^^^^^^^^^^^^^ Could not find `platform` in `self`

error[E0432]: unresolved import `this_platform_is_not_supported`
  --> /home/aep/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.6.4/src/platform/mod.rs:22:5
   |
22 | use this_platform_is_not_supported;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `this_platform_is_not_supported` in the root

error[E0433]: failed to resolve. Could not find `Window2` in `platform`
   --> /home/aep/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.6.4/src/window.rs:113:22
    |
113 |         let w = try!(platform::Window2::new(events_loop.events_loop.clone(), &self.window, &self.platform_specific));
    |                      ^^^^^^^^^^^^^^^^^^^^^^ Could not find `Window2` in `platform`

[...]

@aep Hmm, it looks like one of the pull requests I merged broke some stuff, and I can't be bothered with trying to fix it if it'll basically be stuck at the version 0.7 anyways. It looks like "emscripten_events" still builds correctly, so I guess you could use that one for now

I'm guessing this PR has been subsumed by subsequent additions to winit?

Closing for inactivity.


Add --webhook flag to sfdx force:source:deploy when scheduling asynchronous deployment jobs

Is your feature request related to a problem? Please describe.
Currently CI/CD pipelines spend unecessary computing time and memory while pulling the status of  deployment job. Since the build and test process happens inside salesforce, there is no need to keep a whole Node process alive waiting for this job to finish. These resources could be released so that they can be used by other important jobs.
What are you trying to do
After scheduling the deployment job, I want to release cpu and memory, and restart the workflow only when the job has finished. I don't want to keep a process alive pulling the job status.
Describe the solution you'd like
This could be achieved if there was a webhook service sending events to clients after every deployment job stage. Something similar to what github does

With this service in place, you can then add a new flag called --webhook which would tell salesforce where to send these events to.
sfdx force:source:deploy ... -w 0 --webhook $webhook
This feature could also enable serverless CICD pipelines for Salesforce.
AWS Step Functions are free when paused: https://stackoverflow.com/questions/58110826/aws-step-function-costing
Example of Step Functions that are paused while waiting for a response for a 3rd party service: https://catalog.workshops.aws/serverless-service-coordination/en-US/add-application-review/pausing-execution
Describe alternatives you've considered
There is no alternative.
Additional context
NA

This could also be added to the service and command that creates communities
https://github.com/forcedotcom/cli/issues/445

Any news on this front?

@AllanOricil according to the history of this issue it seems this was completed some time ago but no information regarding the features seems to exist, do you have some info to share to determine what is the future of this feature?

@jonathanwiesel I have no idea. I think you have to ask those guys that maintain the repo