Add runtime requirement on iana-etc to fping

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[x] The toolchain has been rebuilt successfully (or no changes were made to it)
[x] The toolchain/worker package manifests are up-to-date
[x] Any updated packages successfully build (or no packages were changed)
[x] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[x] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[x] All package sources are available
[x] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/tools/cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[x] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[x] All source files have up-to-date hashes in the *.signatures.json files
[x] sudo make go-tidy-all and sudo make go-test-coverage pass
[x] Documentation has been updated to match any changes to the build system
[x] Ready to merge

Summary

Cherry-pick of #2994 to the 1.0-dev branch.
User reported that calls to fping consistently fail in a container without iana-etc installed.
As Eric said in that PR- "fping code uses getprotobyname() library call which rely on /etc/protocols as protocols database. /etc/protocols is provided by iana-etc pkg." So, let's reflect this dependency in the spec by adding a runtime requirement on iana-etc to fping.
Change Log

fping: Add runtime requirement on iana-etc

Does this affect the toolchain?

NO
Test Methodology

Buddy build passes
Installing fping now installs iana-etc, and /usr/sbin/fping <IP_ADDRESS> works after install out-of-the-box in a fresh container without iana-etc pre-installed.

@microsoft-github-policy-service agree company="Microsoft"


Incorrect chart for releases

It says 45 releases of borges in one day. Which doesn't look right
The legend is on the right, you need to scroll to it. It's different from all other our charts.

It says 19 releases of lookout on Thu 28. Which month? Which year?

Covered by https://github.com/src-d/sourced-ui/pull/158

pr wasn't merged and can't be merged as it is

fixed by #160


Missing syntax highlighting for multi variable declaration

Type: Bug

Behaviour
Expected vs. Actual
Actual

In the first case, only the right variable is highlighted.
In the second case, none of the variables are highlighted.
Expected
The same content as above but with all 3 left, middle and right variables highlighted.
Steps to reproduce:

Set multiple variables in a single statement over a single or multiple lines.

Diagnostic data

Python version (& distribution if applicable, e.g. Anaconda): 3.10.6
Type of virtual environment used (e.g. conda, venv, virtualenv, etc.): Global
Value of the python.languageServer setting: Pylance

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

Telemetry is disabled
Telemetry level is off
Experiments are disabled, only manually opted experiments are active.
LSP Notebooks experiment is enabled
LSP Notebooks interactive window support is enabled
> conda info --json
Python interpreter path: /usr/local/bin/python3
> /usr/bin/python3 -I ~/.vscode/extensions/ms-python.python-2023.2.0/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2023.2.0/pythonFiles/interpreterInfo.py
> /usr/local/bin/python3 -I ~/.vscode/extensions/ms-python.python-2023.2.0/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2023.2.0/pythonFiles/interpreterInfo.py
Starting Pylance language server.

User Settings

languageServer: "Pylance"

Extension version: 2023.2.0
VS Code version: Code 1.75.0 (Universal) (e2816fe719a4026ffa1ee0189dc89bdfdbafb164, 2023-02-01T15:24:42.903Z)
OS version: Darwin x64 22.3.0
Modes:
Sandboxed: No

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz (12 x 2600)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
5, 3, 3

Memory (System)
16.00GB (0.01GB free)

Process Argv

Screen Reader
no

VM
0%

In these scenarios we're sending negative delta line (pushLine) and delta char (pushChar) values back in our semantic tokens response. This is happening because the parse tree walk visits the names in each multi-variable assignment from right to left.
Here are the arguments from the relevant calls to SemanticTokensBuilder.push, in the order that they occur, plus the resulting pushLine and pushChar values:

name
line
char
length
tokenType
tokenModifiers
pushLine
pushChar

right
0
16
5
variable
declaration
0
16

middle
0
7
6
variable
declaration
0
-9

left
0
0
4
variable
declaration
0
-7

right
4
8
5
variable
none
4
8

middle
3
4
6
variable
none
-1
4

left
2
0
4
variable
none
-1
0

If the order is reversed so that all of the pushLine and pushChar values are non-negative, semantic highlighting works as expected.
I noticed that tokenModifiers on the multi-line declarations is set to none instead of declaration which I believe is also incorrect. Might want to fix that at the same time.

This might be fallout from a bug fix I introduced in late December: https://github.com/microsoft/pyright/issues/4368. In most languages (like C, Java, etc.), chained assignments are evaluated right to left. For example, if you have a = b = c = 3, the assignment to c occurs before the assignment to b, etc. It turns out that in Python, it's the other way around. Normally, the order doesn't matter, but it can in some cases, like a = z[a] = 0.
My fix was to reformulate the parse tree to reflect the assignment ordering. We may need to rethink this. Or change the semantic token logic to special case chained assignment expressions.

Sounds likely. This regressed in Pylance 2023.1.11, which upgraded from Pyright 1.1.283 to 1.1.287, so it brought in a lot of Pyright changes including that one.

This issue has been fixed in prerelease version 2023.2.41, which we've just released. You can find the changelog here: CHANGELOG.md


⚠ api.piste.gouv.fr healthcheck has degraded performance

In 0df4174, api.piste.gouv.fr healthcheck (https://api.piste.gouv.fr/cassation/judilibre/v1.0/healthcheck) experienced degraded performance:

HTTP code: 200
Response time: 2715 ms

Resolved: api.piste.gouv.fr healthcheck performance has improved in f215767.


[BUG] koordlet pod always CrashLoopBackOff with a painc error

What happened:
koordlet dosen't work when i install it with  helm
What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Environment:

App version:v0.2.0
Kubernetes version (use kubectl version):Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.3", GitCommit:"c92036820499fedefec0f847e2054d824aea6cd1", GitTreeState:"clean", BuildDate:"2021-10-27T18:34:20Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"darwin/arm64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.3", GitCommit:"c92036820499fedefec0f847e2054d824aea6cd1", GitTreeState:"clean", BuildDate:"2021-10-27T18:35:25Z", GoVersion:"go1.16.9", Compiler:"gc", Platform:"linux/arm64"}
Install details (e.g. helm install args):
Others: local install wtih minikube
i got the lscpu content on my node as follows

lscpu -e=CPU,NODE,SOCKET,CORE,CACHE,ONLINE
CPU NODE SOCKET CORE CACHE ONLINE
0    -      0    0 -        yes
1    -      0    1 -        yes
2    -      0    2 -        yes
3    -      0    3 -        yes

/assign zwzhang0107

running koordlet is not supported on mini-kube on darwin yet, you can try with a real k8s cluster environment.


Help: How to render with a MVP Matrix

Hi,
I'm trying to make the OpenGL Tutorials by using Veldrid and I'm stuck a bit.
Currently I'm experimenting with the matrices tutorial:
http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/
I can pass the MVP matrix to the vertex shader, but as soon as I'm applying it to the position vertex I can't see anything anymore.
https://github.com/lehmamic/VedridExercises/tree/Tutorial-3--Matrices
Could you please give me a hint what is wrong? Thanks.

Your camera matrix looks a but dodgy. Your vertex points are around (0,0,0) but your camera is at (4,3,3). It might be that your camera is above the triangle. Try recentering at (0,0,1) for example.

@lehmamic There were a few problems. I fixed them and then I was able to get the triangle rendering.
Veldrid doesn't support "naked" uniform values in OpenGL shaders -- you have to wrap them in a uniform block. Your vertex shader should look like this:
#version 330 core

in vec3 Position;
in vec4 Color;

layout(std140) uniform MVP
{
    mat4 MvpMatrix;
};

void main()
{
    gl_Position = MvpMatrix * vec4(Position, 1);
}

You were concatenating your MVP matrix in the wrong order. It should be:
Matrix4x4 mvp = model * view * projection;

In your Pipeline description, you are using DepthStencilStateDescription.DepthOnlyLessEqual, but you aren't creating a depth attachment for the main swapchain (which is your render target). There's two fixes possible:

Simply use DepthStencilStateDescription.Disabled.
Specify a depth format when creating the main swapchain. This is done by passing a GraphicsDeviceOptions into CreateWindowAndGraphicsDevice. The options structure should specify a valid value for SwapchainDepthFormat, like R16_UNorm. In your render loop, call commandList.ClearDepthStencil(1);.

Number 1 is easier, so just do that for now.
@geoeo mentioned that the camera is in an odd position, but the triangle is still visible from that spot, it's just a bit skewed. So it should be fine as-is.

By the way, I was able to quickly identify the problems by running your app under RenderDoc. It was clear that the MVP uniform wasn't getting set, so I checked that first. Then, the vertex output was wrong, so I checked how you were creating the MVP matrix (and discovered the multiplication order problem).

Thanks @mellinoe . With your hints it works.
The uniform blocks (I misunderstood it in your docs because you mentioned uniform variables for GLSL) and the Depth Stencil I understand.
What confuses me is the wrong ordering of my MVP calculation. In the tutorial there is following c++ code, which works on my machine:
glm::mat4 mvp = Projection * View * Model;
I didn't find any documentation that Matrix4x4 multiplication is is the opposite order.
@geoeo I just took the values from the tutorial. Generally it should not be a matter where the camera is located as long as it looks to the place where the model is located. The model is at the world origin and the camera also looks at this point. Thats why I was quite sure that it isn't my camera settings.

@lehmamic It seems that glm uses column-major matrices where System.Numerics uses row-major matrices. That will reverse the order of multiplication as far as I understand.

I recognised that already, but assumed the multiplication is the same. That would explain it. Thanks.

I think this one is resolved now. Let me know if you have any further questions.

Yes I think you can close it.
I have some more questions:
When I have several meshes or sprites to draw, do I always need a dedicated pipeline per model? Or how can I do it with the different textures required for the model?
When I render text, do I always need to have a dedicated vertex/index buffer for each text to render and dispose it afterwards?

When I have several meshes or sprites to draw, do I always need a dedicated pipeline per model? Or how can I do it with the different textures required for the model?

You only need a different Pipeline if the pipeline state would be different between them. For sprites, this will not be the case, typically, so you can use the same Pipeline.
To draw different textures, you have a few different options. Textures are bound to a Pipeline via ResourceSets, and they are not part of the Pipeline state itself (so you can use many different ResourceSets with the same Pipeline). A Pipeline and a ResourceSet need to share a ResourceLayout to be compatible. A ResourceLayout which describes the types of resources contained in a ResourceSet or used by a Pipeline.
Some options for drawing different Textures with the same Pipeline:

Bind different ResourceSets to your CommandList before issuing a Draw command. This is the obvious, straightforward way to do it. Each different Texture would have its own ResourceSet.
Create a texture atlas and upload it into a single Veldrid Texture and put it in a ResourceSet. When drawing, now your sprites need to know which subregion of the texture atlas corresponds to the data they should sample. Typically you would do that by binding a uniform buffer and reading that data in the shader.
If all of your textures are the same size, you could create an array texture and put each sprite into its own array layer. This is basically just number (2) except it's simpler to reason about since each image would be shoved into its own dedicated layer and thus separated from the others.

When I render text, do I always need to have a dedicated vertex/index buffer for each text to render and dispose it afterwards?

You shouldn't need to do that. You can re-use the buffers and re-use the data if you want. When you issue draw commands, you can specify a base vertex and base index, so your data doesn't necessarily have to start from the beginning of your buffers.
If you know you're going to need another vertex/index buffer, then it will be much more efficient to keep them around rather than disposing/recreating them, which can be expensive.

The texture question is clear now, but I'm still not really sure about the buffers. I agree it is better to reuse them instead of recreating them, thats why I'm asking. Do I understand it correctly that you would create a large buffer (not only sized to you vertices/indices) and put the data always on the last part of it so that this base index can be used?
btw. thanks for the RenderDoc hint, this was already very helpful, just a patty that it does not run on mac.

Do I understand it correctly that you would create a large buffer (not only sized to you vertices/indices) and put the data always on the last part of it so that this base index can be used?

Roughly speaking, yes. If you won't use the data at the beginning of the buffer again, though, then you can just overwrite it for subsequent draws.
The way ImGui is drawn is pretty similar here, because it uses new vertex / index data every frame.
https://github.com/mellinoe/veldrid/blob/master/src/Veldrid.ImGui/ImGuiRenderer.cs#L411-L444
At a high level, it works like this:

To start, create a "fairly large" buffer for vertices and indices. For the default size here, I just experimented with "normal uses" and checked how big the vertex/index data needed to be.
Each frame, ImGui gives you new vertex/index data. If the data fits in the existing buffers, then just copy it in.
If the data doesn't fit into the buffers, then dispose the old ones and make a slightly bigger one.
To avoid continuous resizes, the new buffers are 1.5x the needed size. This means you have a little bit of wiggle room if the data size increases a bit.

btw. thanks for the RenderDoc hint, this was already very helpful, just a patty that it does not run on mac.

Yeah, debugging on mac is a bit of a pain. Xcode has a decent debugger for Metal, but I have found that it is a bit more unstable than RenderDoc is. Also, I find the UI to be a bit of a nightmare, so it's kind of hard to navigate around to the data you are interested in, compared to RenderDoc 😅

Thanks for the hint, i'll try it out.
Do you know Pfim? I managed to load DDS textures in combination with your ImageSharpTexture. With some problems but basically it worked. It could be an option for you to provide DDS and TGA support.

Pfim looks pretty nice; we definitely need more options when it comes to managed image loading. Ideally you would be able to load up the raw compressed data from the DDS images to put into a Veldrid Texture, but that doesn't look possible with the current API. It seems you have to decompress into a 24-bit or 32-bit RGB/RGBA buffer. Still, it looks like a pretty good start.


Etherealv2.0

Evolve code. :eyes:

You might want to retract this change. It reveals your bot's secret code.


Replace build tool maven to sbt

Replace scala versions to property in pom.xml
Append scala compat version to artifactId(It's a standard name rule for scala libraries)
Upgrade scala version to 2.11.8
Add build.sbt to also build by sbt
Remove 2.10.4 build in travis. Because scala 2.10.x build has already broken because of scala-logging.(Scala logging does not support scala 2.10.X)

Scala 2.12 coming soon.So should support multi scala versions.
And I have a question. .gitignore file is removed. What was wrong?

If you want to switch to SBT, you can just make the switch. Doubling of the project build files will prove to be a maintenance pain-point. Otherwise let it be Maven. All I'm asking is just to pick one.

And I have a question. .gitignore file is removed. What was wrong?

It's the developer's private thing, which environment he has, and hence which files to ignore. You can have your version of .gitignore on your machine and I'll have a different one on mine. The changes to it have nothing to do with the project.
To have .gitignore ignored by Git just mention it in itself or add it to your global list.

Sharing .gitignore prevents miss adding.

It does not. It only prevents miss-adding of files, which are mentioned in it. The ones that aren't can still be added. To make your statement true, all the possible names, which don't relate to the project need to be mentioned.
A person is responsible for what he does, a committer is expected to review his commits.
I'm pretty sure you wouldn't be satisfied with one of the "gitignore" files that you've mentioned. So you'd be doing commits to that file. So, merges, discussions... All about what? Something that has zero value for the project.
So I've found it wisest to just keep out of this problem and hence keep it out of my projects. Trust me, once you'll add the ".gitignore" line to your local ".gitignore" file you'll forget we ever had this conversation.

SBT have a great advantage to cross build.

No problem. Switch to it, if you feel the need to.

OK, l'll soon write sbt's pom generator.

What?

Remove .gitignore and pom.xml.
But you can generate pom.xml by "sbt makePom".

@takezoux2 I did some testing of sorm 0.3.21 and found it only works in scala 2.11. It does look like for 2.12 support, we will need the cross compile support. What do you think it will take to get the sbt stuff merged?

I have pushed a sorm_2.12 to the sonatype snapshots repo, based on https://github.com/scala212-forks/sorm.

Any reason this hasn't been merged to master?


Bring back .optional how it originally was

@tonyd256 do you have time to fix up the documentation and get this into master? I'd like to ship this in the release alongside #425 and #424

@gfontenot I could friday at the earliest

@gfontenot added a test case for the optional function ... want to check that out then I'll squash and merge

Dig the test, still think the documentation needs to be fixed before we merge this.

oh right .. forgot about the docs ... on it


changed README file

Summary

Changes

Closes:
Task list

[ ] For workflow changes, I have verified the Actions workflows function as expected.
[ ] For content changes, I have reviewed the style guide.

nothing to comment


make jaeger span attribute-to-tag conversion exhaustive

Description
Describe the proposed changes made in this PR.
How was this PR tested?
Describe how you tested this PR.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hello, any chance I can get CI approved at least? CLA signed.


weird cone-shaped shading illusion

I'm using your renderer in my game engine, and currently am having a few weird visual artifacts.
Ths scene is just a green plane with a hi-color skybox. FIrst of all, there is this conic shape around the 0,0,0 coordinate. Do you haven any idea why is it formed and how to fix it?
Also, the direction of the highlight is not in the direction of the sun for some weird reason.
And also, there is a blue dot in the middle of the Sun, i'm not sure what's the deal there. Can it be a bug in the shader code?
the scene: https://wizstaff.com/test.glb
the skybox: https://wizstaff.com/mountain.ktx
Best regards,
-Alexandre Kharlamov

Is that screenshot from my repo or from your custom engine (I'm asking because of the different caption)?
As for your questions:

The blue dot is most likely the default clear color and caused by the far clipping plane
The "shading illusion" is not an illusion but the way how specular lighting works I guess the floor doesn't have proper normals.

Is that screenshot from my repo or from your custom engine (I'm asking because of the different caption)?

It's my engine, but i didn't modify much in the renderer code: just switched to firstperson camera and made the skybox sharp like you suggested in #53... This cone thing happens only when the camera is very close to world position 0,0,0
I don't mind sharing sources, I'm only a bit shy because i modified the code to use SDL, so that i can use its input abstraction and also changed the build system to meson/ninja...

As for your questions:

The blue dot is most likely the default clear color and caused by the far clipping plane
Can it be because the color value in the HDR texture itself is out of range somehow?

The "shading illusion" is not an illusion but the way how specular lighting works I guess the floor doesn't have proper normals.
Thanks for the suggestion, I'll look into it.


Fix Ford FPv2: Send engine FW request to OBD port

Follow up to #24211 since the engine FW was being identified as Mazda, as it didn't respond to the request on bus 1.
The engine only seems to respond to requests when they are sent through the OBD port (bus 0), while requests to other ECUs are blocked if they are sent through the OBD port.
Example route: 86d00e12925f4df7|2022-07-18--20-41-05 (this was using the vin-addrs branch but I added the extra FW request for testing, can be verified in the git diff)

I wasn't sure whether or not to use the ECU whitelist for this.. Let me know what you think

Whitelisting looks good, it eliminates waiting for the other ecus to respond on the engine query, and vice versa for the engine ecu for the bus=0 query

Looks good!


240p framebuffer BRAM

I'm not sure how many bits per pixel this should be.
8 bits per pixel for a 320x240 drawer would be 76kB bits of precious BRAM. Double buffering would multiply it by 2.
Looking at this specification, I observed that we have up to 630kB of BRAM onboard the Arty Z7-20.

9bpp, shaders can help with this, and BRAM is 9-wide, woohoo


connectivity: only wait for daemonsets if needed

Summary
Fixes #2236
Description
The host-netns-non-cilium and host-netns daemonsets leveraged by the connectivity tests are only deployed in specific situations. Do not wait for them in other cases, as it blocks the tests.
Notes
Only tested on my environment, not sure if maintainers would prefer a different fix. Happy to update the PR as needed, thanks!
An alternative approach would be for WaitDaemonSet to not retry any not found errors, but that might have more unintended consequences, hence I decided not to do it like this.

Hi @tklauser tried to amend to kick the tires of CI, but I still seem to be getting some failures there, not sure if they are flaky or related with the changes of this PR.

Hi @tklauser tried to amend to kick the tires of CI, but I still seem to be getting some failures there, not sure if they are flaky or related with the changes of this PR.

The failed test looks like a timeout unrelated to this PR. I've re-triggered the respective workflow. I'll take a look at the change later on.


Buffering Throttle

I know there's ongoing discussion about  throttle semantics, but this is an API I can see being useful even while the final throttle API is being nailed down. Also correct me if this is already possible with the existing API.
One use case for throttle is to limit the reception of new items in the stream, while still receiving all items produced by the stream. For instance, receiving a stream of bytes and only processing the accumulated bytes for every time interval.
This is different from both the existing stream.buffer and stream._throttle apis because the elements of the resulting stream would be an array of the original elements. Existing buffering streams produce a single element in each iteration, and throttle only produces the last(ish) element received. This would produce all elements received in the time period since the last produced value.
A potential API might look like:
extension AsyncSequence {
    public func throttleBuffering<C: Clock>(for interval: C.Instant.Duration, clock: C, bufferPolicy: BufferPolicy) -> _BufferingThrottledStream<Element>
}

Where the _BufferingThrottledStream produces arrays of Element at each time interval if there are any elements to produce. It would also need to have a buffering policy similar to the existing buffering stream iterators.
This could maybe use some of the already implemented buffering streams and every time interval grab all buffered elements and send them downstream.

I suppose a workaround right now is to use a chunked stream with a timer. However this still sends events when there's no items being sent from the producer:
for await events in stream.chunked(by: .repeating(every: .milliseconds(250), clock: .continuous)) {
    // Accumulated data
}


Turned most public List<T>-typed properties into Collection<T> or ReadOnlyCollection<T>

There are three things a public List<T> means:

The items exposed through the collection are set in stone, in which case a ReadOnlyCollection<T> or other read-only collection type should be used. I didn't find any instances of this, though.
It holds some part of the internal state of the object, and it shouldn't be modified externally, but only through the appropriate methods in the class interface. In this case, the backing List<T> was made private, and the property was turned into a ReadOnlyCollection<T> that wraps the backing List<T>
You want to allow the user to add/remove items, so that something can be configured. The problem with List<T> is that it's too "raw". It's better to expose a Collection<T>, as its methods ClearItems, InsertItem, RemoveItem, and SetItem are virtual, allowing us to change its implementation without breaking the public interface. Imagine if at some point you want to start validating the items that an external caller is trying to insert, for example.

As an extra, I sealed some classes and modernized some getter/setter syntax as I found it

There are a few compiler warnings introduced (new protected member declared in sealed type)

There are a few compiler warnings introduced (new protected member declared in sealed type)

I made the methods private. If the classes were (for some reason) be un-sealed in the future, the methods would have to be made protected and (perhaps most importantly) virtual according to need.


Assertions for time values

should.HappenAfter
should.HappenBefore
should.HappenOn (alias of should.Equal)
should.HappenOnOrBefore
should.HappenOnOrAfter
should.BeSequential
should.BeInTimeZone (?)

[x] should.HappenAfter (as of e0c06ba3)


Update documentation on Integral operator (#4595)

This PR updates the documentation on the integral operator to describe how the coordinate system used affects the integral calculation (#4595).
Description
The differential element used in the integral calculation changes depending on the coordinate system used, see Issue #4595 for a full description.
As described in the issue, this is my first contribution to an open-source project. I tried running the tests, and they failed due to various problems with the Chayambuka2022 data set. I'm not really too sure what to do about that - as you can see it has nothing to do with my PR.
Type of change
Please add a line in the relevant section of CHANGELOG.md to document the change (include PR #) - note reverse order of PR #s. If necessary, also add to the list of breaking changes.

[ ] New feature (non-breaking change which adds functionality)
[ ] Optimization (back-end change that speeds up the code)
[ ] Bug fix (non-breaking change which fixes an issue)
[x] Documentation update

Key checklist:

[x] No style issues: $ pre-commit run (or $ nox -s pre-commit) (see CONTRIBUTING.md for how to set this up to run automatically when committing locally, in just two lines of code)
[ ] All tests pass: $ python run-tests.py --all (or $ nox -s tests)
[ ] The documentation builds: $ python run-tests.py --doctest (or $ nox -s doctests)

You can run integration tests, unit tests, and doctests together at once, using $ python run-tests.py --quick (or $ nox -s quick).
Further checks:

[ ] Code is commented, particularly in hard-to-understand areas
[ ] Tests added that prove fix is effective or that feature works

@all-contributors please add @isaacbasil for docs

ok great, thanks!


[BUG] Images imported with digests fail to re-appear on the other archival process

Environmental Info:

Darwin kamins-mbp.lan 23.1.0 Darwin Kernel Version 23.1.0: Mon Oct  9 21:32:11 PDT 2023; root:xnu-10002.41.9~7/RELEASE_ARM64_T6030 arm64
Also presented on ubuntu and rhel hosts.

The data does remain, but hauler is unable to see the images as they have been removed from the index.json file that is in the resulting haul.

Steps to Reproduce:

Example manifest:

apiVersion: content.hauler.cattle.io/v1alpha1
kind: Images
metadata:
  name: hauler-content-images-example
  annotations:
    # global flags for all images in the manifest
    # image flags override global flags
spec:
  images:
    # fetch image
    - name: docker.io/alpine:latest
    - name: docker.io/nginx@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064

Sync it to a store:

➜ hauler store -s testing sync -f manifest.yaml
2024-06-15 00:03:11 INF syncing [content.hauler.cattle.io/v1alpha1, Kind=Images] to store
2024-06-15 00:03:11 INF adding 'image' [docker.io/alpine:latest] to the store
2024-06-15 00:03:17 INF successfully added 'image' [index.docker.io/library/alpine:latest]
2024-06-15 00:03:17 INF adding 'image' [docker.io/nginx@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064] to the store
2024-06-15 00:03:41 INF successfully added 'image' [index.docker.io/library/nginx@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064]

➜  hauler store -s testing info
+---------------------------------------------------------------------------------------+-------+-----------------+----------+----------+
| REFERENCE                                                                             | TYPE  | PLATFORM        | # LAYERS | SIZE     |
+---------------------------------------------------------------------------------------+-------+-----------------+----------+----------+
| library/alpine:latest                                                                 | image | linux/386       |        1 | 3.5 MB   |
|                                                                                | image | linux/amd64     |        1 | 3.6 MB   |
...
| library/nginx@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064 | image | linux/386       |        8 | 80.7 MB  |
...
|                                                                                | image | linux/amd64     |        8 | 82.6 MB  |
+---------------------------------------------------------------------------------------+-------+-----------------+----------+----------+
|                                                                                TOTAL   | 689.5 MB |
+---------------------------------------------------------------------------------------+-------+-----------------+----------+----------+

Save the store:

➜  hauler store -s testing save -f testing.tar.zst
2024-06-15 00:05:46 INF saved store [testing] -> [/Users/kamin/dev/hauler-test/testing.tar.zst]

Move the store:

➜   mv testing.tar.zst testing-move.tar.zst

Load the haul:

➜  hauler store -s testing-move load testing-move.tar.zst
2024-06-15 00:07:56 INF loading content from [testing-move.tar.zst] to [testing-move]

Notice that the haul is missing the nginx entry:

➜  hauler store -s testing-move info
+-----------------------+-------+---------------+----------+---------+
| REFERENCE             | TYPE  | PLATFORM      | # LAYERS | SIZE    |
+-----------------------+-------+---------------+----------+---------+
| library/alpine:latest | image | linux/386     |        1 | 3.5 MB  |
|                       | image | linux/amd64   |        1 | 3.6 MB  |
|                       | image | linux/arm     |        1 | 3.4 MB  |
|                       | image | linux/arm     |        1 | 3.1 MB  |
|                       | image | linux/arm64   |        1 | 4.1 MB  |
|                       | image | linux/ppc64le |        1 | 3.6 MB  |
|                       | image | linux/riscv64 |        1 | 3.4 MB  |
|                       | image | linux/s390x   |        1 | 3.5 MB  |
+-----------------------+-------+---------------+----------+---------+
|                                                  TOTAL   | 28.0 MB |
+-----------------------+-------+---------------+----------+---------+

➜  du -hs testing-move
658M    testing-move
➜  du -hs testing
668M    testing-move

Note taking a look at the index for the first haul:
➜  cat testing/index.json | jq .
{
  "schemaVersion": 2,
  "mediaType": "application/vnd.oci.image.index.v1+json",
  "manifests": [
    {
      "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
      "digest": "sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd",
      "size": 1853,
      "annotations": {
        "kind": "dev.cosignproject.cosign/imageIndex",
        "org.opencontainers.image.ref.name": "library/alpine:latest"
      }
    },
    {
      "mediaType": "application/vnd.oci.image.index.v1+json",
      "digest": "sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064",
      "size": 10272,
      "annotations": {
        "kind": "dev.cosignproject.cosign/imageIndex",
        "org.opencontainers.image.ref.name": "library/nginx@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064"
      }
    }
  ]
}

And the unpacked haul:

➜  cat testing-move/index.json|jq .
{
  "schemaVersion": 2,
  "manifests": [
    {
      "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
      "digest": "sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd",
      "size": 1853,
      "annotations": {
        "kind": "dev.cosignproject.cosign/imageIndex",
        "org.opencontainers.image.ref.name": "library/alpine:latest"
      }
    }
  ]
}

You'll notice that its simply missing the entire metadata for the nginx image that was in the haul.

Expected Behavior:

All images are present in hauler store info and are served via hauler store serve registry when they are uncompressed from a tar.zst

Actual Behavior:

If you place an image into a haul that uses a sha256 digest as an identifier it will go missing when the haul is unpacked on the other side of the airgap. The contents are still present but the images are not present in the index.json file and are not served via the registry.

Additional Context:

Temporary Fix:

If you move you transport the index from the previous haul with you when moving the archive you can replace it inline and it works correctly:

➜  hauler-test ls -alh testing/index.json testing-move/index.json
-rw-r--r--  1 kamin  staff   323B Jun 15 00:07 testing-move/index.json
-rwxr-xr-x  1 kamin  staff   714B Jun 15 00:03 testing/index.json
➜  hauler-test mv testing/index.json testing-move/index.json
➜  hauler-test ls -alh testing/index.json testing-move/index.json
ls: testing/index.json: No such file or directory
-rwxr-xr-x  1 kamin  staff   714B Jun 15 00:03 testing-move/index.json
➜  hauler-test hauler store -s testing-move info
+---------------------------------------------------------------------------------------+-------+-----------------+----------+----------+
| REFERENCE                                                                             | TYPE  | PLATFORM        | # LAYERS | SIZE     |
+---------------------------------------------------------------------------------------+-------+-----------------+----------+----------+
| library/alpine:latest                                                                 | image | linux/386       |        1 | 3.5 MB   |
...
| library/nginx@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064 | image | linux/386       |        8 | 80.7 MB  |
...
+---------------------------------------------------------------------------------------+-------+-----------------+----------+----------+
|                                                                                TOTAL   | 689.5 MB |
+---------------------------------------------------------------------------------------+-------+-----------------+----------+----------+

I'm going to take a look at the code base to see if I can figure out whats going on with this and if I can submit a simple fix. But just wanted it on the public radar.

@KaminFay thank you for submitting this issue. Unfortunately and fortunately, I was able to reproduce this issue and we will start to look at releasing as fix for it as well.

@KaminFay thank you for submitting this issue. Unfortunately and fortunately, I was able to reproduce this issue and we will start to look at releasing as fix for it as well.

Just wanted to follow up on this, figured I'd spend some time to see if I can figure out whats going on here. I may be off base but I think my fix is working and I should have a PR for you guys tomorrow. But heres the gist of it:

The issue stems from the split happening in this pusher function here:

var baseRef, hash string
parts := strings.SplitN(ref, "@", 2)
baseRef = parts[0]
if len(parts) > 1 {
    hash = parts[1]
}

When regular items are pushed their ref string usual looks like this (2 parts, ref and hash):

sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0-library/alpine:latest-dev.cosignproject.cosign/imageIndex@sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0

And when split:
baseRef: "sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0-library/alpine:latest-dev.cosignproject.cosign/imageIndex",
hash: "sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0",

Basically when items with the digest are pushed their ref string can sometimes be a bit longer (3 parts ref, more stuff, hash)

sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064-library/nginx@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064-dev.cosignproject.cosign/imageIndex@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064

So when you split that it creates a really long "hash":

baseRef: "sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064-library/nginx"
hash: "sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064-dev.cosignproject.cosign/imageIndex@sha256:95b01e2e9ab0702ce2f1a8f05f90e6408fd1f4b5e5006c6088ba5a864ed42064"

Proposed Solution:

I'll have the PR out to you guys tomorrow, but if I'm on base with my assumptions here we just need to simply adjust the split of the string on @ to split on the last instance of it in the string not the first:

	parts := strings.Split(ref, "@")
	baseRef = strings.Join(parts[:len(parts)-1], "@")
	if len(parts) > 1 {
		hash = parts[len(parts)-1]
	}

Clearly took me a minute to get the signing / commit log fixed on that one. Sorry about the spam on that one. Let me know if this is the solution you'd be looking for or if Im looking at the problem wrong.

Closing as resolved per PR #259!


RabbitMQ Webhook Endpoints

Make Tile38 RabbitMQ friendly by adding SETHOOK support for RabbitMQ

@paavalan RabbitMQ have a lot of stuff under the hood, like options to send a message to queue. It can be exclusive queue, message can be mandatory or immediate.
I can prepare PR using reasonable default configuration for all stuff AMQP/RabbitMQ have. But need some time to research what default's should be for tile38 and implement this.
@tidwall what do you think?

@m1ome That sounds like a good strategy. This is the first request for RabbitMQ that I can recall.
@paavalan would you help with verifying the configuration if we put together a PR? You input would be great.

@tidwall I will submit a PoC PR in a few days, working on it.

@m1ome we can add geofence output RabbitMQ topic/queue.
@tidwall thanks for consideration for adding RabbitMQ

@paavalan look up to PR #159 and say if it fits your needs. Default values described.

@tidwall we should add docs for it and close this.

https://github.com/tile38/tile38.github.io/issues/3


Added all integrations on home page

Description
This PR fixes #
Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

Shazaam!


[3.50] RenderTexture - erase doesn't work correctly with Canvas renderer

Version
3.50 - latest from the repo
Description
This issue occurs only with Canvas renderer. When I erase with the texture key (e.g. renderTexture.erase("texture")) it draws the texture instead of erasing.

Example Test Code
Live example - https://robowhale.com/html5/phaser-issues/render-texture-erase/?forceCanvas=1
Source code - https://robowhale.com/html5/phaser-issues/render-texture-erase/js/index.js
preload() {
		this.load.image('bg', 'assets/graphics/bg.png')
		this.load.image('red_rect', 'assets/graphics/red_rect.png')
	}

	create() {
		this.addImage()
		this.addRenderTexture()
	}

	private addImage() {
		this.addLabel("Original Image", 250, 40)
		this.image = this.add.image(250, 320, "bg")
	}

	private addRenderTexture() {
		this.addLabel("Render Texture", 750, 40)

		this.renderTexture = this.add.renderTexture(750, 320, this.image.width, this.image.height)
		this.renderTexture.drawFrame("bg")
		this.renderTexture.setOrigin(0.5)

		let position = this.image.getTopLeft()
		let rect = this.add.image(position.x, position.y, "red_rect")
		rect.setOrigin(0)

		this.renderTexture.erase("red_rect", 0, 0)
	}

Additional Information
The issue occurs only with canvas renderer, WebGL is fine - https://robowhale.com/html5/phaser-issues/render-texture-erase/?forceCanvas=0
Probably related to #5412

Just tested this example against the master branch in Canvas mode and it's erasing properly now:
http://labs.phaser.io/view.html?src=src\game objects\render texture\erase part of render texture canvas.js&v=dev
Please check for yourself, however.

In this example, you erase with the existing game object and it works fine, yes
But if you will erase using the texture key it will draw it instead of erasing

Try use (lines 42 and 49)
rt.erase("brush", pointer.x - 16, pointer.y - 16);
instead of
rt.erase(brush, pointer.x - 16, pointer.y - 16);
And you will see the issue


Handle Submit action

There are no details in the doc for handling form submission and the OnSelect action for the form has no effect. My use case is that I would like to navigate to a different screen on form submission, with Contextparameters available to the new screen as a bonus.

Thanks for contacting us. This functionality is not supported out of the box. We will update the document accordingly when the functionality is supported.
Closing this issue.


add new launcher icons

remove ic_launcher.png from drawable folders

add Adaptive and legacy launcher icons

@changanxian Can you review ?

@eri9600 can you review?

@tschie can you review the last commit (changes in Release.md file)


Enable clean shutdown

I might be missing how to do this, but I'd like a way to use -ssh to run a command and then have the VM shutdown cleanly without ssh returning an error.
I was thinking about changing the default behavior of -ssh to ssh back into the machine, sudo shutdown -h now, then wait for qemu to exit instead of just terminating. I'd also add a -no-shutdown flag since there will likely be instances where this behavior is not desired.

If we implement some form of https://github.com/ALSchwalm/transient/issues/40 we'd have powerdown:
<- { "event": "POWERDOWN",
     "timestamp": { "seconds":<PHONE_NUMBER>, "microseconds": 682951 } }

According to the manual:

Emitted when the virtual machine is powered down through the power control system, such as via ACPI.

We'd also be able to reset, suspend, wakeup, etc. which would be nice.

I'd also add a -no-shutdown flag since there will likely be instances where this behavior is not desired.

A -no-reset flag would be nice too, it is hard to determine where the user should be using qemu flags vs transient flags. Is there a benefit to having this as a transient flag instead of just requiring the user to run transient <transient args> -- -no-shutdown or transient <transient args> -- -no-reset>?

-no-shutdown seems to be a terrible name choice given that qemu has the same option, but very different behavior than what I'm proposing. Maybe -force-terminate for my option? I intended for it to be used when you know ahead of time that the VM won't shutdown cleanly and you want transient to just kill it.
I don't have a strong preference between the QMP approach and the ssh approach. The only reason I proposed ssh is that I don't know how well shutdown signals are handled across OSes and architectures.

Maybe -force-terminate for my option? I intended for it to be used when you know ahead of time that the VM won't shutdown cleanly and you want transient to just kill it.

Awesome, yeah that makes sense.

The only reason I proposed ssh is that I don't know how well shutdown signals are handled across OSes and architectures.

Makes sense. I've used system_powerdown from the qemu monitor console quite a bit and it seems to work well, but I haven't tried on a arm VM.

Hmm, I think I'd rather do this with something like -shutdown-timeout. This would cause the following behavior:

When the ssh connection terminates wait for -shutdown-timeout seconds
If QEMU exits during this time, return with the exit code from QEMU (we actually always return the QEMU exit code if it exits as of 181d00e5cf30b0ef05a30f8c57b0dab0ae7f432e)
Otherwise, return the exit code from SSH

I'm generally opposed to having functionality that SSH's back in to the guest and triggers the shutdown, as I feel this runs counter to the transient design around "these are short lived vms used for testing/dev". I think for that use-case a clean shutdown should not be the default, so I would expect the default -shutdown-timeout above to be 0 seconds.

Ok, I opened a pull request to address this. For the time being, I'm just doing a clean shutdown via QMP. I'd like to change that back to sending SIGTERM in the future, but we definitely need to avoid corrupting the guest disk.


plotsr failed on memverge with the error "Path value cannot be null"

Description of the bug
My memverge run of assemblyqc failed with the error "ERROR ~ Error executing process > 'PLANTFOODRESEARCHOPEN_ASSEMBLYQC:ASSEMBLYQC:FASTA_SYNTENY:PLOTSR (1)'
Caused by:
Path value cannot be null"
As far as we could tell all of the paths specified in the params file were correct so decided to exclude plotsr from the run as a temporary work around.
For more details see the aws-utilities repo.
Command used and terminal output
No response
Relevant files
No response
System information
No response

This failure occurs because of a bug in the pipeline code where the Syri files are created in a different order and then fed to PLOTSR in the wrong order,
https://github.com/Plant-Food-Research-Open/assemblyqc/blob/01419251d52a057caa8fda571704ddc468be10d3/subworkflows/local/fasta_synteny.nf#L347
Here, syri_tags.sort(false) should be syri_tags.sort(false) { it.toUpperCase() } to match the order created  for minimap2 alignment,
https://github.com/Plant-Food-Research-Open/assemblyqc/blob/01419251d52a057caa8fda571704ddc468be10d3/subworkflows/local/fasta_synteny.nf#L276


Need a method for tagging and rendering regions of natural disaster (fire, earthquake, typhoon, tornado, etc.) damage

What's your idea for a cool feature that would help you use OHM better.
It would be great to have some method for highlighting areas that have historically been damaged by fires or earthquakes both in space and time.
Spatial Tagging
I general, I'm thinking these tags should be applied to a relation of type=multipolygon in order to allow relatively complex boundaries.
I'm not sure if we need to differentiate between fire or earthquakes (or tornados or typhoons), as the end result should be the same: extensive destruction of the pre-disaster landcover (e.g., forest) or landuse (e.g. buildings).
I'm not sure if landuse=* should apply, as it's not clear who's "using" the land that way, other than Mother Nature.
I'm also not sure if landcover=* is appropriate, as it could be both forests, even after they've burned down.
I believe HOT has a protocol for tagging disasters that we may want to follow, but I'm not [yet] sure where this is documented.
damage:date=2023-02-06
damage:event=#TürkiyeEQ060223
damage:type=earthquake
destroyed:building=yes
earthquake:damage=yes
source=*

Temporal Tagging
Even though natural events are short-lived, their impacts last longer, so end_date should be set to allow for reasonable restoration of the disaster's damage.
A wide time window will also allow the event to have a visual impact on the maps for a longer period.
Rendering
We will need some suggested approach - maybe a border of some sort, perhaps a transparent fill/pattern of some sort, maybe a border tint.
Also... this should be rendered on top of all other area layers.
Current workarounds
Nothing is stopping the tagging or mapping right now, but there's no clear way to get the area rendered without a workaround (e.g. landuse).
Additional info
Here's a link to a sample footprint:
https://www.openhistoricalmap.org/relation/2743803#map=14/37.7847/-122.3961&layers=O&date=1909-10-10&daterange=1850-02-18,2023-12-31
And a screencap - note that even though there's a landuse=retail tag on the shape, it is buried underneath other types of landuse/cover/etc.

Here's another example: 1923 Berkeley Fire:
https://www.openhistoricalmap.org/relation/2743804#map=16/37.8789/-122.2623&layers=O&date=1922-04-16&daterange=1878-04-04,2023-12-31

Of note: it looks like landuse=retail is gray in OHM as opposed to pink in OSM. May have to switch to vineyard! ;)

Why not landuse=construction if they area being rebuilt?
How is the affected area determined for earthquakes? Large fires are more well-defined from what's burnt down. Typhoons and tornado is in between, as they have a track, but again have wide area of influence.
For 2, I suggest to start with eg natural=epicentre plus the magnitude and depth for earthquake histories.

https://taginfo.openstreetmap.org/keys/damage%3Atype#values
In OSM, I'm seeing lots of building=damaged combined with typhoon:damage=yes for typhoons.

As an example for earthquakes, there is quite a bit of landuse=brownfield, specifically for the 2015 Nepal Earthquake. This is combined with damage:event=nepal_earthquake_2015, but it could also be combined with a more generic damage:type=earthquake or earthquake:damage = yes. There are also many damaged buildings (building=damaged) as well as destroyed buildings (destroyed:building = yes).
The brownfields tend to show clusters of buildings, like this:

For fires, in Italy (for example), there are the following tags for somewhat larger areas: damage=destroyed and damage:type=fire. They are associating these tags with previous / future land use (landuse=orchard or natural=wood), but for a period of time in OHM, this could also be noted as landuse=brownfield.

Note that building=damaged is quite problematic as it hijacks building key and blocks proper tagging of building type.

For destruction caused by disasters, start_date:cause and end_date:cause both have over a thousand occurrences in OpenHistoricalMap. For damage caused by disasters without total destruction, HOT’s damaged:* scheme makes sense, but both approaches are geared towards individual features.
For a whole expansive area, landuse=brownfield/construction feels slightly off, since there’s nothing intentional about it. An OSM approach would be to dust its hands of the issue and require data consumers to figure out where the damage is clustered based on individually tagged features. A heatmap or cluster map would be more informative than a polygon that makes a binary decision about damage, especially with something like an earthquake where there are so many kinds of potential damage.

Certainly it's the best, but it requires having each building, and marking which are damaged. There isn't even each street block and landuse= yet. I don't know if historical materials have that precision.
If a polygon is undesirable, a new type= to collect the affected place= or boundary= is still a good overview.

While I hear the benefit of marking destruction at the individual item level, I'm not sure it fits with historically-important, large-area catastrophes where people might want a view of a where a multi-year impact to a city took place, regardless of proper life-cycle tagging of individual buildings.
I believe there are 2 primary factors at hand here:

Significance
Convenience (yep!)

For the significance - we have a multiyear physical impact on a large area that - in this case - was densely populated. And, so much so that it has a Wikipedia article devoted to it. This is one of the biggest events in San Francisco history and that event is tightly bound to a geographic footprint, which seems well-suited for our map.
For convenience - think of both mappers and viewers. Mappers may want to be able to add information relevant for story telling (I saw an elephant) without the burden of having to map everything (the grain of an elephant's hide) to tell the story. A viewer may want to see a region of impact visually without having to invoke / select a heatmap or additional layer. Also, a viewer may want to be able to search for the polygon (which we could certainly have them search for, but unless it's on a map, there's no way of quickly seeing if a different item they search for is in the disaster's footprint).
Also, for convenience - I don't think it's reasonable to ask viewers or data consumers to download a bunch of data (most likely buildings), know the tagging criteria, do some sort of buffer around the union of all shapes that meet the filter criteria, etc. My reaction here is that as to changeset tags for sources... no one is ever going to do that. And, I'm not sure that this would be that different from having people map forests by mapping trees.
Convenience shouldn't be a compelling factor in all cases, but we should think about where that convenience will lead to increased use, consumption, and sharing of data on our maps.
In reading @tsinn, @1ec5, and @Kovoschiz's comments above, maybe we just need a new area type of tag? I know that area=* may be less-favored these days (except for highway?), but what about area=disaster or area=damage, to fit in with the HOT model?


External PRs can be automatically merged [research only]

When an external contributor works on a fork of keptn, the PRs can't be merged automatically right now. The goal of this story is to enable automatic merging of PRs from forks.
Acceptance criteria

Given I'm an external developer working in a fork of the keptn repository
When I create a PR for keptn
Then I want to see the results of the status checks build in the PR on GitHub

Reevaluate after architecture switch and monorepo switch.

Secret environment variables in Travis Build require special handling to accept external PR: https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions

This should work now. Closing this issue.


[Snyk] Upgrade nock from 13.3.2 to 13.5.4

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade nock from 13.3.2 to 13.5.4.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 12 versions ahead of your current version.
The recommended version was released 2 months ago, on 2024-02-26.

Release notes

Package name: nock

13.5.4 - 2024-02-2613.5.4 (2024-02-26)
Bug Fixes

call fs.createReadStream lazily (#2357) (ba9fc42)

13.5.3 - 2024-02-1713.5.3 (2024-02-17)
Bug Fixes

support literal query string (#2590) (4162fa8)

13.5.2 - 2024-02-1713.5.2 (2024-02-17)
Bug Fixes

remove duplicates from activeMocks() and pendingMocks() (#2356) (7e957b3)

13.5.1 - 2024-01-2813.5.1 (2024-01-28)
Bug Fixes

memory leak when using nock with jest (#2572) (7468cf1)

13.5.0 - 2024-01-1413.5.0 (2024-01-14)
Features

add Scope#clone() method (#2564) (65385f7)

13.4.0 - 2023-11-27

13.3.8 - 2023-11-03

13.3.7 - 2023-10-30

13.3.6 - 2023-10-19

13.3.5 - 2023-10-19

13.3.4 - 2023-10-10

13.3.3 - 2023-08-16

13.3.2 - 2023-07-13

    from nock GitHub release notes

Commit messages

Package name: nock

ba9fc42 fix: call `fs.createReadStream` lazily (#2357)
81c20dd chore(deps-dev): bump chai from 4.3.10 to 4.4.1 (#2576)
08b2b09 chore(deps-dev): bump prettier from 3.1.0 to 3.2.4 (#2578)
1005698 chore(deps-dev): bump eslint-plugin-import from 2.29.0 to 2.29.1 (#2577)
4162fa8 fix: support literal query string (#2590)
7e957b3 fix: remove duplicates from `activeMocks()` and `pendingMocks()` (#2356)
8bab28d ci: add node 20 in ci (#2585)
8deca36 docs: add mikicho as a contributor for maintenance, code, and doc (#2584)
4ad60ba add experimental fetch support notice (#2583)
f4d1b15 ci(test): use a single `test` job that we can require, independent of test matrix (#2581)
7468cf1 fix: memory leak when using nock with jest (#2572)
ccfa96d docs: add rsaryev as a contributor for code, and test (#2570)
65385f7 feat: add `Scope#clone()` method (#2564)
ea13083 chore(deps-dev): bump eslint-config-prettier from 9.0.0 to 9.1.0
6a3cdfe chore(deps-dev): bump eslint from 8.51.0 to 8.56.0
30700f7 chore(deps-dev): bump typescript from 5.3.2 to 5.3.3
debc220 chore(deps-dev): bump typescript from 5.2.2 to 5.3.2
eaf0bde chore(deps-dev): bump eslint-plugin-mocha from 10.1.0 to 10.2.0
210a339 chore(deps-dev): bump prettier from 3.0.3 to 3.1.0
617511f feat: add `context.query()` to nock back (#2553)
36a13fd docs(02_feature_request.yml): fix link (#2554)
c5016a5 docs(01_bug_report.yml): fix link
0b18d07 fix(typescript): `filteringBodyRequest` (#2552)
26bbb93 chore(deps-dev): bump semantic-release from 22.0.5 to 22.0.6

Compare

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

coverage: 98.802%. remained the same
when pulling 2c6a06ad53d7ac6bb87120231b7c456296fd9224 on snyk-upgrade-ae58123bd586b34ab21e87e3d1ff0f82
into 59d0fdc78cec1813294af91bbec371ef0f300817 on main.


Input files and experiment design

Thanks for this great tool!
SpliZ small_test_data is perfectly run in my cluster. However, there are some questions that confuse me.  I use SICILIAN for my 10X data, but I see there are some differences between my sicilian_called_splice_juncs.tsv output and example is used in small_data small.tsv.
I know that called column is 1 for all junctions that should be included in the analysis, 0 otherwise, but I don't have any called column in my data. Also I don't how to make it.
numReads column in my tsv indicates total reads for a specific read, and numReads_per_cell indicates reads per each cell. I guess numReads in small.tsv equals to numReads_per_cell my tsv.
Should I remove other columns which are not exist in small.tsv ?
Dose cell column made by adding samples IDs and barcodes?
I want to use SpliZ for study differential splicing between different experimental groups in same cell type. I think I should set grouping_level_1 = cell type and grouping_level_2 = experiment group. However, I don't know should I make a tsv file includes barcodes, cell type, and experiment group? Should I merge this file with sicilian_called_splice_juncs.tsv? or set it as an input parameter?
Is it enough to just change lines 61:63 of nextflow.config? or I should change more lines and files for setting SpliZ base on my resources?
Can I use scZ_median and scZ_pval as cutoff parameters for downstream analysis?
For sashimi plots in Elife and Nature Methods papers, do you get data from SpliZ outputs or SICILIAN outputs?
I'm so sorry for asking too many questions.

Thank you so much. I didn't know I had to run SICILIAN_post_process.py.


Adding Table of Contents to Readme file

I just added a TOC to readme.md file. I hope you like it!

amazing, thanks for adding TOC!


In BooleanType, null should not be cast to false

If this is GraphQL compliant; this PR could be merged?

it is actually, thanks


@kanaabe => Modal closes

Hide modal after dismissal to prevent z-index conflicts.
Change scope of test outcome and add to dismiss analytics hook.

👍


Report 15000001 Suggest Remittance Payments (Norwegian Localization)

The report is missing the positive vendor ledger entries. This was working in previous versions. In the BC Spring release CU 04, it was removed and has not been working since.
OnAfterGetRecord=BEGIN
...
IF CheckLedgEntryType = CheckLedgEntryType::All THEN //Add line
GetVendLedgEntries(TRUE,FALSE); //Add Line
GetVendLedgEntries(FALSE,FALSE);
...

Hi @JonFjolnirAlbertsson . Looks like there was a bug reported for Norwegian version about suggestion of credit memos, it was fixed and now credit memos are not suggested. If you think this is a bug too or anything else please reach out the relevant support channel.

Hi @RomanZanizdra. Where would be the most appropriate place to raise issues related to the Norwegian version.

Hi @hemmsi . Sorry for a little bit late reply and i'm not fully sure about relevant channels but here they are. Hope it helps.
Questions about local functionality should go to the community i suppose: https://community.dynamics.com/business/f/758
Bugs should reported in specified Product Support
On premises - https://support.microsoft.com/en-us/supportforbusiness/productselection?sapId=93d37907-ad94-d591-22e9-593cfa09dd3f
On line – contact your partner, or if you are a partner open a support incident through Partner Center - https://partner.microsoft.com/en-us/pcv/dashboard/overview


[enhancement] Latex export

It would be brilliant to have latex export options. As Word is compatible with latex notation and I assume you already use it, the base structure to achieve this might already be there. I thought of two useful "modes" for this.

just export the equations as plain latex.
export each line in a \newcommand{\name}[count]{definition} so the file can just be included, and every line just added by executing it

The problem with the second approach would be to keep track of line naming/comandnname if a new line is inserted before or after a line. But if this is solved, you could write a Latex document and change values all over the finished document just by exporting again.
That way, calcpad doesn't have to be a text editor and calculator at once. Not a programmer but just wanted to share this Idea. I enjoy using Calcpad without also.

@scopeofaperture Thank you for your proposition! I agree that LaTeX export (and why not import) would be an useful feature. I have thought about this before, but could not find time to implemented. Also, was now quite sure if this would be a wanted feature. I will add this to the wishlist for the near future.

Definitely a feature I like to see!
If you plan to implement it: please use the siunitx package for units (ex: \SI{3.09}{\metre}) so everything is spaced perfectly and is really simple to customise things like the decimal separator ect.

@scopeofaperture Good idea! Thank you for suggesting that. We will consider it when we start.

This would be a great improvement! LaTeX exporting could give the ability to append the calculations as annexes in a report without going to word and convert to LaTeX or append it as a PDF with other format. With LaTeX you could use the same class file with header and footer design. And also have a complete table of contents for the report.

Hi!
Thanks to Adam Rawlinson, we have an easy workaround for the export from Calcpad към LaTeX (https://www.latex-project.org).

You need to install Pandoc first (https://pandoc.org).
Then, export you results from Calcad to docx.
Convert the docx file to tex with the following command:
pandoc -f docx -t latex  input.docx" -o  output.tex

Please, note that pandoc installs in "C:\Users\Ned\AppData\Local\Pandoc" if you use the msi installer.
The results look very well. I tried the Cubic Equation Example:(https://github.com/Proektsoftbg/Calcpad/blob/main/Examples/Mathematics/Cubic Equation.cpd)
This is how it looks in Overleaf (https://www.overleaf.com):

Attached here are the test files, included cpd, docx, tex and pdf versions:
Cubic Equation.zip
Pandoc is also free and open source, so we can connect it to Calcpad in future and add a button to automate the conversion. At least until we write our own LaTeX export. (It will not be a big problem, since it follows the same logic as the Html and OpenXml ones).

Alternatively, using OpenOffice

@xyont . Thank you for sharing that.

Hi,
Previously at my old personal project of Python/C++ codes generate plain text ASCII file output only. Then i modified to be capable to output as LaTeX format.
It seems does not need any external software or library dependencies, make it less complex by direct converting Calcpad cpd files internally. Some mapping is required for Greek symbol, vector graphics or bitmap can be inserted or convert to LaTeX drawing also.


Inverted class hierarchy? VOMongoTest is superclass of VORepositoryTest

I'm in the process of creating a VoyageGemStone implementation and VORepositoryTest has all of the interesting repository tests with no apparent dependencies upon VOMongoTest, so the hierarchy seems to be inverted where VORepositoryTest could be an abstract test that expects subclasses to implement #repository...
I've inverted the hierarchy in my fork and unless there's a reason for the inverted hierarchy I can provide a PR

Presumably VORepositoryTest should be moved out of the Voyage-Mongo-Tests package, but then again there may be dependencies that I am not aware of ...

VOMongoVisitorTest hierarchy is using a similar pattern where the concrete class is the superclass...

+1
I agree in that VOMongoTest should be subclass of VORepositoryTest.  I think only testSelectManyWithLimitAndOffset is mongo-specific, and maybe testSelectAllJustAfterRemove which is an expected failure only for mongo repositories.

I don't think testSelectManyWithLimitAndOffset is mongo-specific. In any database we might use we will have the need to specify a query that has a filter criteria, a number of results and an offset parameter to skip entries in the result set. So only the naming is mongo-specific and maybe we should decide about the wording and then adjust the code.

What are your thoughs on VOMongoVisitorTest? ... in this case I actually don't need to specialize these tests for VoyageGemStone as I'm using the same serialization scheme, but at one point I thought that I might need to customize the serialization scheme for GemStone ...


New Xpath Should Match X Times keyword

Originally submitted to Google Code by spielman... on 18 Sep 2010

I wrote this keyword today to test something:
There should be exactly one result
Call Selenium API  verifyXpathCount  id('ires')//li[@class="g"]  1
It would be nice to have a Selenium Library keyword like "Page Should Contain Number Of Elements" that would allow me to do:
Page Should Contain Number Of Elements  id('ires')//li[@class="g"]  1

Originally submitted to Google Code by @pekkaklarck on 18 Sep 2010

There's already Get Matching Xpath Count that seems to do exactly this:
http://robotframework-seleniumlibrary.googlecode.com/hg/doc/SeleniumLibrary.html?r=2.4#Get%20Matching%20Xpath%20Count
Should it possibly be linked from some other keywords to make it easier to find?

Originally submitted to Google Code by spielman... on 18 Sep 2010

Get Matching Xpath Count is nice, I didn't see this in the documentation. However, it does only one of the two steps I would like to perform: it gets the xpath count for the provided xpath. It doesn't verify its value though. So, the new keyword might look like this, in text form:
Page Should Contain Number Of Elements
[Arguments]  ${xpath}  ${number}
${_number} =  Get Matching Xpath Count  ${xpath}
Should Be Equal As Integers  ${_number}  ${number}
I've just tested this and it works just fine. I don't know yet how to express this in Python, but I'll try to propose a patch ;)

Originally submitted to Google Code by @pekkaklarck on 18 Sep 2010

This is so easy to implement as a user keyword that I'm not entirely sure is a library keyword needed. I'm not really against adding it, though, so if you Robert think it's useful, please go ahead and implement it. Implementation should be pretty trivial but it should nevertheless get an acceptance tests. Can you discuss with Andreas how to create them?
Finally, I think the keyword should be named Xpath Should Match X Times to match Get Matching Xpath Count and BuiltIn.Should Contain X Times. The Element Something keywords also handle the locator differently.

Originally submitted to Google Code by spielman... on 18 Sep 2010

I've quickly implemented a method "xpath_should_match_x_times" in assertion.py and added an acceptance test, please see the attached patch for details. Maybe the keyword should be called ".. match n times" to make it more clear that n means a natural number.
btw, can you tell me how to generate the documentation?
Cheers
Robert

Originally submitted to Google Code by @pekkaklarck on 19 Sep 2010

The patch looks good. Few code style comments, documentation enhancement ideas, and other nitpicking below:

Use 'under_score' format instead of 'camelCase' also in variable names. We generally try to follow PEP 8 so you may want to study it too: http://www.python.org/dev/peps/pep-0008/

No empty lines inside methods. If a method is too long to be understood without them -- this one isn't -- it should be split.

Use 'a != b' instead of 'not a == b`. (And similarly 'a is not b' instead of 'not a is b' if you ever need identity comparison.)

The expected and actual counts should probably be converted to same format (either str or int) before comparison. get_xpath_count apparently returns the count as a string, so if the actual value is given as a string the comparison works. If the actual value is given as an integer, comparison most likely fails. You could add this line to the current test:

Xpath Should Match X Times  //input[@type="text"]  ${1}
In this case I wouldn't care about possible conversion errors i.e. wouldn't do the conversion in try/except.

If you change 'given xpath' -> 'given xpath' in the doc, the argument will get special formatting in the generated doc.

This keyword and 'Get Matching Xpath Count' should be cross-linked. This is easily done by mentioning the other keyword in the doc so that its name is in backticks like 'See also The Other Keyword'. In this case something like below could be added to the new keyword:
Use Get Matching Xpath Count keyword if you just want to get the count.

See the documentation of the libdoc.py tool for more information about cross-linking and formatting in general.

Add a note to the doc that this is a new keyword in 2.4.1 version. We haven't actually discussed what is the next version, but forgetting to update this note if we go directly to 2.5 isn't that bad.

Re-generate the documentation. This way you can verify that the new doc looks good and cross-linking works. You can also commit the generated doc in separately. We typically use simple message 'regen' with that kind of commits.

Originally submitted to Google Code by spielman... on 19 Sep 2010

Thanks for the feedback! 1-3 and 5-7 are already done.
About 4: I was thinking about converting the expected_xpath_count to a String, but I didn't find a good way to do it. Can I use utils.unic(...) from the Robot Framework? Apart from the xpath code which imports utils, the Selenium Library code looks pretty independent from RF so I didn't dare to use an import from there without asking beforehand. ;)
About 8: how do I generate the docs? For RF, I used the utility scripts back when I worked on the docs, but I have no clue about generating the SeLib documentation.
Have a nice Sunday,
Cheers
Robert

Originally submitted to Google Code by spielman... on 19 Sep 2010

Okay, I've figured out how to use libdoc. Couldn't be much easier =)

Originally submitted to Google Code by @pekkaklarck on 20 Sep 2010

No need to use utils.unic here. It's main purposes are handling a situation where the given string has invalid encodings gracefully and workaround some Jython bugs. In normal usage you are fine with unicode or str, and in this case the latter is definitely enough.

Originally submitted to Google Code by spielman... on 21 Sep 2010

Thanks - here's a new patch for review!

Originally submitted to Google Code by @pekkaklarck on 22 Sep 2010

Looks fine. You could have actually already committed this in after we agreed that adding the keyword is a good idea. Google Code has really good review possibilities and it's thus easier to comment committed code than patches.

Originally submitted to Google Code by @pekkaklarck on 22 Sep 2010

One more comment: You should add a link pointing to this new keyword to the old Get Matching Xpath Count keyword.

Originally submitted to Google Code by spielman... on 23 Sep 2010

This issue was closed by revision d8e0ff2b8b.

Originally submitted to Google Code by spielman... on 23 Sep 2010

I've just pushed the changesets for this issue and  issue 137 .

Originally submitted to Google Code by @pekkaklarck on 23 Sep 2010

I didn't look at the final commits too closely but the original patches looked good. Changing status to Done, which we use instead of Fixed that is default on Google Code. Done works well with all issues and not just bugs.

Originally submitted to Google Code by chetan.dewangan on 3 Nov 2011

In my script I am tring to use "Get Matching Xpath Count" but it is fatching 0 count, though the same xpath identified with "is_element_present" from "Call selenium api".
I tried xPath for form,tr and div
Whereas the //input is working fine and giving expected value.

Originally submitted to Google Code by asanke.g... on 28 Mar 2014

Why is this method only take the expath starting from "//"?
Ex:  Xpath Should Match X Times  //input[@type="text"]  ${1}
Whereas other functions support xpths to be provided starting with "//" and "xpath=//".
Ex:Element Should Be Visible
Either:
${PATH} //input[@type="text"]
Element Should Be Visible ${PATH}
Or:
${PATH} xpath=//input[@type="text"]
Element Should Be Visible ${PATH}


Mockup banners

[ ] App-wide
[ ] Object-specific (a particular Linode)
[ ] Page needs to be refreshed to receive new data

First iteration of app-wide alerts

We should work on the bg/fg contrast (the orange ones most of all).
Could you try left-aligning the messages? I feel like it will be a little less obnoxious.
I like the use of bold to indicate objects. I have been trying to work that into support tickets too.
I also prefer the use of links here rather than buttons.

re: contrast, I was trying to keep contrast high for these, but can play with the red/orange a bit. I've been trying some varied hues/tint/shade
re: left aligning, I would try that if we had a version that wasn't the whole width. cool if I make a note and backlog for now?
re: links v. buttons, only trying to keep the distinction between actions and links to other pages. if these are actions you can take directly from the alert ( was trying to keep it close to existing ), then we should probably stick with buttons no?

re: buttons, I do admit they look a little weird here, with the same sizing as rest of app.

Updates:

more red + less orange + white text
slightly less bold yellow
smaller buttons

Example on object page.

Note: banners may become problematic if we have more than 1 to show:

do you show multiple stacked overlaying content?
do you show multiple stacked pushing down content?
do you show one at a time and remove them after a timeout?

Alternative Notifications/Alerts:

And for something like a pending migration, we could place the action on the object page, and link to it, like so:

Action as part of status/actions menu:

closing for now, can be re-opened with additional comments.


Comment threads and comments

Coverage decreased (-19.3%) to 80.737% when pulling 6a1ec1fccd1d8d1968380c5fe7d0f48bd17437a9 on comment-thread into 2e2ee450a192bcf254ea937461a227baa60898f3 on master.

Coverage increased (+18.2%) to 89.789% when pulling bc6cfe0d38922f9bacfcf0fd2d3be90f3382c9ba on comment-thread into 3c859c9e57c9cbbf86ec2de6b9bcbdd43e9731e7 on master.

Coverage remained the same at 100.0% when pulling 11913c6cf50af557661c8635a2c2c3fbe99329b4 on comment-thread into fb24fe0a6c2338f8bd6c96a8dcd4d7d44f774bdf on master.


Support specifying custom Executor

Related to #119
Currently Lingua uses ForkJoinPool.commonPool() for model loading and language detection. However, maybe it would be useful to allow users to specify their own Executor, for example with LanguageDetectorBuilder.withExecutor(Executor) (the default could still be commonPool()). This would have the following advantages:

could customize worker thread count, or even run single-threaded, e.g. executor = r -> r.run()
could customize worker threads:

custom name to make performance monitoring easier
custom priority

It would not be possible anymore to use invokeAll then, but a helper function such as the following one might add the missing functionality:
private fun <E> executeTasks(tasks: List<Callable<E>>): List<E> {
    val futures = tasks.map { FutureTask(it) }
    futures.forEach(executor::execute)
    return futures.map(Future<E>::get)
}

(Note that I have not extensively checked how well this performs compared to invokeAll, and whether exception collection from the Futures could be improved. Probably this implementation is flawed because called would wait on get() call without participating in the work.)
Alternatively CompletableFuture could be used; but then care must be taken to not use ForkJoinPool.commonPool() when its parallelism is 1, otherwise performance might be pretty bad due to JDK-8213115.
This would require some changes to the documentation which currently explicitly refers to ForkJoinPool.commonPool().
What do you think?

This sounds like a good idea. I will implement this for the next release.


Copy-pasted example code from README

After 150.000 epochs I understood that this is not working as expected -- it doesn't diminish the error.

Learning the XOR is a complex task if the network is only given a with few nodes to work with. Try to increase the number of nodes in the hidden layer or restart the learning process.
The math behind the network is correct.

It was my fault. I set up something wrong. Ran it again and done in a second!
Great work sorry for the alarm

That's ok. Feel free to post any questions if you run into trouble


Guard::defer is a footgun

@Amanieu just hit an annoying bug where he forgot to write move before the closure:
guard.defer(|| Self::finalize(self));

The documentation of defer suggests always using move, but it's too easy to forget about this rule and run into very difficult to find bugs. Clearly, we should do something here.
My suggestion is to have two variants of defer, a checked and an unchecked version (similar to get vs get_unchecked, or unreachable!() vs unreachable_unchecked()):
fn defer<F, R>(&self, f: F)
where
    F: FnOnce() -> R + Send + 'static;

unsafe fn defer_unchecked<F, R>(&self, f: F)
where
    F: FnOnce() -> R;

That means the original call to defer would be written as:
let ptr = self as *const _ as usize;
guard.defer(|| Self::finalize(ptr as *const Self));

Or, using the more dangerous option:
guard.defer_unchecked(move || Self::finalize(self));

This situation reminds me of spawn_unsafe (it should really be named spawn_unchecked), which is equivalent to std::thread::spawn, except it doesn't require F: 'static (and the F: Send bound should probably be lifted too, IMO; see this).

I'm just asking -- Did self implement Copy?
I agree with @stjepang on the naming and the signature of spawn_unsafe.

In my example, finalize takes *const T and self is &self.

Writing down two use cases/examples where defer usage went wrong:

https://github.com/k3d3/crossbeam-stm/pull/1
https://github.com/Firstyear/crossbeam-concread/pull/1/#issuecomment-371348212

Having both defer and defer_unchecked sounds good! And I also like defer_destroy (bikeshed: defer_free, defer_drop).


WIP: BYOS CLI updates

add options to cluster create CLI command:

secrets dir
domain
profile (for cloud provider credentials)

aws deployment now compatible with CLI

parameters file now in the secrets directory
better volume management between amp-bootstrap and aws containers

Alpine 3.6
cleanup of obsolete files

Keeping the PR on hold for now until more documentation and alignment on strategy.

superseded by #1411


Can't save preferences

Hello,
I'm using owncloud_piwik 0.2.0 with Owncloud 9.1.5 and I don't have any way to save the preferences:

do you use any adblocker? Errors in your js console?

Oh I totally forgot that I had uBlock Origin running, sorry. It works if I disable it.


Clone a featureset with CopyFeatures throws exception

This issue was imported from CodePlex
sindizzy wrote 2016-05-04 at 19:33
I was following the sample code here
https://dotspatial.codeplex.com/wikipage?title=Adding%20a%20Geographic%20Coordinate%20System%20to%20a%20Feature%20Set&referringTitle=DotSpatial.Projections#vb to clone a featureset. I've made countless tweaks to see if it works but I always get an exception.
This is the only way I could get it to work:
'we will take a clone of the input featureset so as to prevent the original file from being edited
fsLine.FillAttributes()
Dim fsClone As New FeatureSet(fsLine.FeatureType)
fsClone.IndexMode = True
fsClone.Projection = fsLine.Projection
fsClone.CopyFeatures(fsLine, True)
Debug.Print("fsClone feature Count={0} of Type={1}", fsClone.Features.Count, fsClone.FeatureType.ToString)

I took a look at the source code and the issues is with Not IndexMode in featureSet.cs. If you look at Line 529 it uses ShapeIndices[i]; Well that's empty every time which is why it bombs. Should it not be _shapeIndices[i] or maybe the _shapeIndices List needs
to be assigned to the output featureset up at the beginning of the routine.
This also happens at Line 567.
One case is for AttributesPopulated and the other for !AttributesPopulated
Also if I dont want attributes copied I dont do a FillAttributes and somehow that causes an exception as well although I havent been able to track that one down.
~AGP

@mogikanin I just had a look at this and I'm not sure this function makes sense. It goes and trys to replace everything essential of the IFeatureSet it is given.
It doesn't check whether the FeatureType of the given IFeatureSet and the FeatureSet calling the function is the same and it stumbles on the fact that FeatureSet.AttributesPolulated is set to true by default, although no attributes exist.
We already have CopySubset that is able to create a valid copy of the featureSet. Do we need a function that tries to do the same the other way round?
The only thing missing from CopySubset is the fact that there is no way not to copy the attributes.

OK. Lets make CopyFeatures() to use CopySubset() internally. Also then we need another overload of  CopySubset() which has additional boolean flag to copy attributes or not.

As I said CopyFeatures does the same as CopySubset but the other way round.
That would mean that to be able to use CopySubset inside CopyFeatures we have to change the definition of CopyFeatures from
fsClone.CopyFeatures(fsOriginal, copyAttributes)
to
fsClone = fsOriginal.CopyFeatures(copyAttributes), so that they work from the same side?
If we do that the overload with the additional flag would be redundant with the new CopyFeatures.
I'm still wondering for which cases it could be usefull to copy the features to a prior defined IFeatureSet.

That would mean that to be able to use CopySubset inside CopyFeatures we have to change the definition of CopyFeatures from
fsClone.CopyFeatures(fsOriginal, copyAttributes)
to
fsClone = fsOriginal.CopyFeatures(copyAttributes), so that they work from the same side?

exactly

I'm still wondering for which cases it could be usefull to copy the features to a prior defined IFeatureSet

No idea

OK. Lets make CopyFeatures() to use CopySubset() internally. Also then we need another overload of CopySubset() which has additional boolean flag to copy attributes or not.

@mogikanin Is there a reason you want to have 3 methods that essentially do the same? This could also be done with CopySubset(string filterExpression, bool withAttributes = true) if a ""/String.Empty or null filterExpression would return all features.
I think having different named methods do the same thing is quiet confusing.

Look forward to testing this in the new release. I can test the current changes today right? I just haven't worked with anything other than official releases.

@sindizzy Sure. You can either clone or download the current source code from the Code tab or download the complied dlls from AppVeyor.

The AppVeyor package seems to be missing DLLs.


./update.sh --addnodepools causes helm version downgrade

On an long running cluster, the act of adding a node pool to the cluster via the update script, causes the helm version to be downgraded.
Specifically, from within a running cluster, using the kraken-lib (k2:latest) image base on the krak8s Pod, running the command:
./bin/update.sh --config /root/.kraken/config.yaml --output /root/.kraken/ --addnodepools nexusNodes

Causes the following behavior:
helm registry install quay.io/samsung_cnct/mongodb-replicaset --namespace test-ns --name test-mongodb --values /tmp/prefix868881021 --version 1.2.0-0
usage: appr [-h]
            {pull,run-server,show,inspect,list,delete-package,helm,version,logout,deploy,plugins,push,login,config,channel,jsonnet}
            ...
appr: error:
message: 'Error: incompatible versions client[v2.6.1] server[v2.5.1]

On the krak8s Pod node:
# helm version
Client: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.5.1", GitCommit:"7cf31e8d9a026287041bae077b09165be247ae66", GitTreeState:"clean"}

Then proceeding with a helm upgrade:
/ # helm init --upgrade
Creating /etc/helm/repository
Creating /etc/helm/repository/cache
Creating /etc/helm/repository/local
Creating /etc/helm/starters
Creating /etc/helm/cache/archive
Creating /etc/helm/repository/repositories.yaml
$HELM_HOME has been configured at /etc/helm.

Tiller (the Helm server-side component) has been upgraded to the current version.
Happy Helming!
/ # helm version
Client: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}

After which, the helm install shown in the issue description above succeeds.

This appears to be related to the failures described in https://github.com/samsung-cnct/krak8s/issues/10

This sounds like what i would expect that kraken is doing: On update, when it runs the config changes, it sticks to the helm versioned defined in the config. When you do a manual upgrade it does upgrade the server version, but that isnt part of the original config file and so reverts. Is the version on the config file the previous version?

Note: tried to affect / control this behavior by changing the value in config.yaml of overrideHelm without any effect.
git diff config.yaml
       kubeAuth: *colonybeadKubeAuth
        helmConfig: *colonybeadHelm
        dnsConfig: *defaultDns
 -      helmOverride:
 +      helmOverride: true
    readiness:
      type: exact
      value: 0

I don't see a version of helm specified in the config.yaml at present.  Where would that value be in the configuration file?

I just looked, and i just noticed the same thing.... this may be part of the problem...

We observed that this also occurs when running ./bin/update.sh --rmnodepools ....

my guess, is that the update.yaml file should look like this
  roles:
    - {
        role: '{{ playbook_dir }}/roles/kraken.update/kraken.update.selector',
      }
    - {
        role: 'roles/kraken.services',
        tags: [ 'services', 'all' ]
      }

Again this is a guess, but it seems the services roles actually run an update task on helm. My guess is that it should run after the update is complete also. Since it is something done after nodes are up.

We may also need to rethink the logic here (credit @venezia):
https://github.com/samsung-cnct/kraken-lib/blob/master/ansible/roles/kraken.services/tasks/manage-services.yaml#L24-L34
Can this be protected by a flag in the helm configuration root options section to prevent execution when desired?

Rick, what is the k8s version of the node you are adding? And is this an AWS cluster?

we are currently pinning the version of helm to the minor version of kubernetes installed.  we experienced negative behavior (helm was non-functional) when we did not do this.
@sostheim is there a reason you aren't using the version of helm installed into /opt/cnct/kubernetes/v1.6/bin/helm?  I'm guessing you are using kubernetes v1.6, if not, please sub in your running version of kubernetes.

Kube version:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.8", GitCommit:"d74e09bb4e4e7026f45becbed8310665ddcb8514", GitTreeState:"clean", BuildDate:"2017-08-03T18:12:08Z", GoVersion:"go1.7.6", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.4", GitCommit:"d6f433224538d4f9ca2f7ae19b252e6fcb66a3ae", GitTreeState:"clean", BuildDate:"2017-05-19T18:33:17Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}

# /opt/cnct/kubernetes/v1.6/bin/helm version
Client: &version.Version{SemVer:"v2.5.1", GitCommit:"7cf31e8d9a026287041bae077b09165be247ae66", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}
# which helm
/usr/bin/helm
# /usr/bin/helm version
Client: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}

@venezia - can you give us the background on the need for being able to 1) run helm 2.6.1 in this cluster, 2) being able to run a version of helm other than the version installed w/ the cluster in a general sense.

since you are using helm directly you will want to follow the conventions that kraken-lib follows which is to explicitly use the expected version for helm and kubectl.

@coffeepac - so, I generally agree with the pinning of a version of helm with the initial deployment, but what I think is hanging us up here is the need to reinstall helm during a operation on a node pool add/update/remove.  Why would this trigger any change to the installed version of helm?

Let me put it another way, day 0 -> pinned version of helm perfectly sensible, day 54 -> pinned version of helm may not be sensible.
I get that this is a safeguard for kraken to be able to operate sanely, but for a situation where cluster components are updated, we need to be able to override this behavior.

kraken-lib on day 54 has the same expectations of the installed components as it did on day 0.  if you change things underneath kraken-lib on it you should expect a bad time.
but I don't think that tiller was upgraded.  I think that you are using the kraken-tools default version of helm instead of the version of helm that is pinned to a specific version of kubernetes.  this is causing kr8kas some confusion.

there's no reason why we can't ask kraken team to give a --skip-services statement to add/remove nodes.  One can say one wants to run it, but there's no explicit need to run it
there's a movement/realization that perhaps they should be always running the latest helm (it would reduce image size if nothing else, and clean up some of the logic in kraken)
there's a ticket joe filed ( #838 ) to have it such that there is a customer tiller and a kraken/cluster ops tiller
we could create a tiller for a customer today - in say namespace krak8s, have krak8s use that tiller for its helm statements

The first two would obviate our need to do anything with krak8s today.  The last option is feasible too, however it will not allow for migrations of deployments between tillers.
As a kraken user, I'm not happy services is re-run when I ask for more or less nodes.  It has nothing to do with my request - why do work I don't ask you to do?

Testing #839 -
Before:
# helm version
Client: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}

Running ./bin/update.sh --rmnodepools ...
After:
/ # helm version
Client: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.6.1", GitCommit:"bbc1f71dc03afc5f00c6ac84b9308f8ecb4f39ac", GitTreeState:"clean"}

Added new node pool just now and results are the same, no change to helm version.  An added benefit is that the update command now runs in less than half of the time of the previous run.  Haven't had enough samples yet to quantify this accurately.  Previously the average add would take 5m give or take a little.  The last run took just over 90s.
I0921 22:36:22.329985       1 runner.go:420] Queued task delted: type: AddProject, name: nexus, namespace: nexus-core, queueing duration: 1m32.509792649s, running duration 1m32.507908623s
``

Appears to be working as requested.  Will close this ticket and reopen (or create a new ticket) if needed.


Statuscodes of custom 404 and 403 pages are not propagated

When nuxt is run in server mode and Drupal is configured to use (custom?) 404 and 403 status page, the status code is not sent to the client.
We need to fix this and if possible add test-coverage for it - e.g. we could at least add a test-case for handling a 404 page.

possible fix is to add this to _.vue skeleton
    // When run in server-mode, apply backend status-codes so that e.g. custom 404 pages work.
    if (this.$root.context.res) {
      this.$root.context.res.statusCode = this.page.statusCode
    }
  },

but I'm not so sure this is so nice to have in there. Maybe we should better implement the renter:route hook in our module and set the status code there
https://nuxtjs.org/docs/2.x/internals-glossary/internals-renderer#hooks

solved with #49


Derecho requires additional environment variable set (sometimes).

Describe the bug
A clear and concise description of what the bug is.
I have built a mpas-bundle with a spack-stack v1.5 (gnu). I could run a simple DA test with 192 (96 x 2 nodes) or 180 (90 x 2 nodes) processors. When I tried to run with 256 processors (128 x 2 nodes), it gave the following message:
libfabric:154281:1705433813::cxi:core:cxip_ux_onload_cb():2393<warn> dec1643: RXC (0x39f1:70:0) PtlTE 234:[Fatal] LE resources not recovered during flow control. FI_CXI_RX_MATCH_MODE=[hybrid|software] is required
dec1643.hsn.de.hpc.ucar.edu: rank 55 died from signal 6 and dumped core
dec1664.hsn.de.hpc.ucar.edu: rank 128 died from signal 15

If I set export FI_CXI_RX_MATCH_MODE=‘hybrid’ in runtime , it fixes the issue. I have asked CISL about this and please see the conversation here: https://ncarhpcusergroup.slack.com/archives/C0408SWRUDN/p1705439183692209 .
So I wonder if this environmental setting can be added in the JCSDA's spack-stack.   Or we can still set this in run-time as we are doing now.
To Reproduce
Expected behavior
System:
NCAR HPC, Derecho
Additional context

Thanks @byoung-joo - do you know if we can set the env variable unconditionally, i.e. simply set it all the time?

@RatkoVasic-NOAA can you please take a look at this issue on derecho?

@byoung-joo FYI I checked with the Derecho admins whether we can set this variable all the time:

We always have this set on our software stack based on discussions with HPE.  Of course it is possible that there is an application that exists that won't like the setting but we haven't seen it yet.

Based on that I'll issue a PR to include that in the Derecho settings. Stay tuned.

Thank you, @climbfuji.

@climbfuji

Based on that I'll issue a PR to include that in the Derecho settings. Stay tune

just checking in on this to see if this fix will be addressed in the PR you mentioned?

Not yet done, but thanks for the reminder. I'll add it to one of my next PRs (not the update from spack/develop, that one is already gigantic).


Running visualize_test_center.ipynb

Hi, thanks for your code it is amazing.
I want to mention that visualize_test_center.ipynb is missing a plt.show() in the end. Otherwise the image won't pop up just like in the jupyter notebook.

This is the note book in the current repo. There is a plt.show() at the end of the block.

Oh, I must have looked at the wrong one. Yes there is one in visualize_test_center, but the 3D version is is missing plot.show().