[Compatibility] Added INCRBYFLOAT command

Adding INCRBYFLOAT command to garnet

[x] Add INCRBYFLOAT command
[x] Add Test cases
[x] Add documentation

Question:
Do you guys have any optimal way to double to ASCII byte?
Below is a benchmark with 2 approaches.
DoubleToSpanWithMathAbsRound => Same code as the PR
DoubleToSpanWithDiyFp  => Similar code as string.Format("{0:0.####}"). Below are the links to the code I used from .dotnet runtime repo
Number.DiyFp.cs
Number.Grisu3.cs - TryRunCounted
DoubleToSpanWithStringFormat => Using doubleValue.ToString("0.###############") and using buffer copy to move the value to input span
DoubleToSpanWithUtf8Formatter => Using Utf8Formatter
DoubleToSpanWithTryFormat => Using doubleValue.TryFormat(buffer, out var bytesWritten, "0.#################")

 If you guys like dotnet's approach, I can change it quickly.
Let me know if you guys have any other ideas, I can implement and compare the performance.

Why not use Utf8Parser.TryParse? The open PR https://github.com/microsoft/garnet/pull/631 also uses it.
https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Utf8Parser/Utf8Parser.Float.cs#L63

For the other direction, double.TryParse(ReadOnlySpan<byte> utf8Text, out double result)

For other direction, check this:
https://learn.microsoft.com/en-us/dotnet/api/system.buffers.text.utf8formatter.tryformat?view=net-8.0

might be best to just convert the double to the ROS with a sufficiently large buffer, to know how many bytes it uses. hopefully the conversion will not need to be repeated.

@badrishc I have added the benchmark results with Utf8Formatter. In my benchmark, it is the slowest option. I've shared below my benchmark method for using Utf8Formatter, please let me know if I made any mistake in my benchmark. Note: We can't use exponential notation.
[Benchmark]
public int NumOfCharInDoubleWithUtf8Formatter()
{
    Span<byte> buffer = stackalloc byte[327];  // 309 (max digits) + 1 (dot) + 17 (precision)
    Utf8Formatter.TryFormat(Value, buffer, out var bytesWritten, new StandardFormat('f', 17));
    buffer = buffer.Slice(0, bytesWritten).TrimEnd((byte)'0').TrimEnd((byte)'.');
    return buffer[0];
}

NumOfCharInDoubleWithMathAbsRound seems better as high-perf scenarios might involve smaller doubles. cc @PaulusParssinen for thoughts on this.

Nicely done PR, approved!

Please resolve the conflicts and we can move forward.

@Vijay-Nirmal - there seems to be a perf regression with this PR, for Increment:
BDN paramters: -f BDN.benchmark.Resp.RespParseStress.Increment
main:

Method
Mean
Error
StdDev
Allocated

Increment
34.80 us
0.354 us
0.314 us
-

PR:

Method
Mean
Error
StdDev
Allocated

Increment
44.36 us
0.842 us
0.703 us
-

Analysis
It seems this is related to the stackalloc of the larger sized buffer for doubles in the same method (NetworkIncrement). My suggestion is that we separate out NetworkIncrementByFloat into its own method.

@badrishc Interesting, For Increment, isFloat will always be false. Then how come the stackalloc is impacting?
@badrishc Is there any thumb rule on when to add RespParseStress?
@vazois That a new things to me, I will add it, also same question Is there any thumb rule on when to add ClusterSlotVeficationTests?
I will do everything this weekend

@badrishc Interesting, For Increment, isFloat will always be false. Then how come the stackalloc is impacting?

I tried making MaximumFormatDoubleLength equal to MaximumFormatInt64Length and that seems to bring the perf back to closer to original levels, hence the suspicion.

@badrishc Is there any thumb rule on when to add RespParseStress?

Ideally for all "fast" commands we add so that we can track future perf regressions. However it is understandably extra work, so it is mostly on a case-by-case basis for now.

@badrishc Interesting, For Increment, isFloat will always be false. Then how come the stackalloc is impacting?
@badrishc Is there any thumb rule on when to add RespParseStress?
@vazois That a new things to me, I will add it, also same question Is there any thumb rule on when to add ClusterSlotVeficationTests?
I will do everything this weekend

I made some updates and additions in this PR (https://github.com/microsoft/garnet/pull/709) for slot verification.
If you are adding a multi key command you can check how MSET and MGET is being tested. Single key commands should be easier to understand by check SET and GET redirection tests.
You can also check the description of this PR (https://github.com/microsoft/garnet/pull/474) if you want to learn more about the redirection logic.

@badrishc Moved INCRBYFLOAT to a separate NetworkIncrementByFloat
@vazois #474 Has very good info, it will be good if we add the same info in Dev doc for slot migration.

@vazois Added ClusterSlotVeficationTests. Can you review and approve the PR?

Can you please add a slot verification test in ClusterSlotVeficationTests?

We will merge this PR now. Vijay - if you can add the ClusterSlotVerificationTest in a separate PR, that would be great.

@badrishc Already added ClusterSlotVerificationTest in this PR itself


Switch to upcoming fp-ts 3 with better ESM support

Switch to upcoming fp-ts 3 with better ESM support for Node.js.

It will be effect: https://dev.to/effect-ts/a-bright-future-for-effect-455m


Two small array bugs

Hi Daniel,
I'm looking into some bugs in the array support at the moment. I have some fixes for two small bugs. I'm looking into another one now, which is that you can't call nodes or functions inside an array definition like x[i] = f(y[i]). This one seems a bit hairier though.
Array indexing reuse:
Creating a new state var for an array select would reuse the existing
definition, but with the array indices from the environment rather
than what the select expression used.
The nested select in the following equation:
  prevs2[i] = if i = 0 then ins else (0.0 -> pre (prevs2[i - 1]));

was translated as prevs2[i], somehow losing the i-1.
Array constructor typechecking:
Array constructors (of the form x^n) were causing type errors in
arrows.
For a definition like:
const_zero = 0.0^5 -> pre const_zero;

This was being simplified to the following in LustreExpr:
abs_0 = 0.0;
const_zero[i0] = (abs_0 -> pre const_zero);

But this is a type error, because one side of the arrow is a real
and the other is an array. This commit inserts array selects to
make the types line up like so:
abs_0 = 0.0;
const_zero[i0] = (abs_0 -> pre const_zero[i0]);

Hi Amos. Thank you very much for the fixes!


Does not compile

The class is loaded from /Users/justinmann/.gradle/caches/transforms-3/1458f764e5f0be3b2595022fd3926dad/transformed/jetified-kotlin-stdlib-1.6.10.jar!/kotlin/Unit.class
e: /Users/justinmann/Documents/GitHub/solito/node_modules/react-native-keyboard-area/android/src/main/java/com/rn/keyboard/RNKeyboardModule.kt: (48, 15): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.1.
I am using "expo": "~47.0.12",

This fixes it:
https://github.com/thomasgazzoni/react-native-keyboard-area/pull/27

@thomasgazzoni could you please review PR and publish new version help me?


Converts integer to float for google docs xlsx

When I create .xlsx file via google docs all my integer values transforms to float(e.g. 1 -> 1.0). However when I create file locally - it's ok. What's the reason of such behavior and how to avoid it?
P.S. tested with different nokogiri versions incluing fresh one.

Hi @rockandruby, thanks for asking this question.
Can you help me reproduce what you're doing and seeing? I'm afraid I don't quite understand the problem you're describing.

@rockandruby Ok, I'll try to explain. When I do
f = ::File.open(path, 'rb') do |file|         ::Nokogiri::XML(file)       end f.remove_namespaces!.xpath('/worksheet/sheetData/row/c').map do |cell_xml|  p cell_xml.content end
I get 1.0 instead 1 if cell contains integer. Actually I faced with that in another gem and as I worked it out the reason in Nokogiri. Here's a link to issue for this gem with explanation and table example.

@flavorjones don't know wether it helps but I compared 2 files(local and google doc table) and I found out that my local table with correct values has cells(for numbers) and each cell has attribute #(Attr:someID { name = "t", value = "n" }) but cells in google docs don't have such attribute

Can you provide a sample file so I can reproduce what you're seeing, please?

@flavorjones u can get via link

Sorry, I'm asking for a small, reproducible test case. If you could please provide that, it would mean that I can provide help more quickly. Something like this would be appropriate:
#! /usr/bin/env ruby

require "nokogiri"

XML = <<EOXML
<root>
  <element>contents</element>
</root>
EOXML

doc = Nokogiri::XML.parse(XML)
puts doc.xpath("/root/element").text # => "contents"

Thanks.

OK, specifically, the xlsx file you pointed me to is a zip file:
$ unzip ex.xlsx
Archive:  ex.xlsx
  inflating: xl/drawings/drawing1.xml
  inflating: xl/worksheets/sheet1.xml
  inflating: xl/worksheets/_rels/sheet1.xml.rels
  inflating: xl/sharedStrings.xml
  inflating: xl/styles.xml
  inflating: xl/workbook.xml
  inflating: xl/_rels/workbook.xml.rels
  inflating: _rels/.rels
  inflating: [Content_Types].xml

I can try to run your ruby script on it, but I get this far:
#! /usr/bin/env ruby

require "nokogiri"

path = "#{ENV["HOME"]}/Downloads/ex.xlsx"

f = ::File.open(path, "rb") do |file| ::Nokogiri::XML(file) end
puts f.errors.inspect

and it emits the error:
[#<Nokogiri::XML::SyntaxError: 1:1: FATAL: Start tag expected, '<' not found>]

which is kinda what I expect from a binary file.
I need your help reproducing exactly what you're seeing. Otherwise I'll close this in a few days.

@flavorjones sorry for disturb, the first one - I gave u a wrong link(not raw xml file) and the other thing - seems it's an issue in roo gem, because it gives raw xml file to nokogiri with wrong type casting. So I'll proceed with roo. Thanks for assistance!


No module named manim

After I updated manim to the latest version, whenever I try to run:
python3 -m manim example_scenes.py SquareToCircle -pl
It will return as: /usr/local/bin/python3: No module named manim.
Full code:
PS C:\Users\User\Downloads\Manim> docker run -itv C:\Users\USER\Downloads\Manim:/root/manim eulertour/manim
root@f4b2d3c43ad7:~# cd manim
root@f4b2d3c43ad7:~/manim# python3 -m manim example_scenes.py SquareToCircle -pl
/usr/local/bin/python3: No module named manim

I'm using Docker,  and I have already pulled the latest version.

Sorry, I haven't been giving the dockerfile as much attention as I ought to. Try passing -e PYTHONPATH=/root/manim to docker run.

You mean together like this?
docker run -e C:\Users\USER\AppData\Local\Programs\Python\Python37-32\=/root/manim -itv C:\Users\USER\Downloads\Manim:/root/manim eulertour/manim

No, just the way I typed it above. The environment variable needs to be set in the container, so it won't change based on your system.

Now it outputs me this:
PS C:\Users\User\Downloads\Manim> docker run -e C:\Users\USER\AppData\Local\Programs\Python\Python37-32\=/root/manim manim
PS C:\Users\User\Downloads\Manim> docker run -itv C:\Users\USER\Downloads\Manim:/root/manim eulertour/manim
root@ea83d3837c81:~# python3 -m manim example_scenes.py SquareToCircle -pl
/usr/local/bin/python3: No module named manim.__main__; 'manim' is a package and cannot be directly executed
root@ea83d3837c81:~#

I cannot do plain  docker run -e C:\Users\USER\AppData\Local\Programs\Python\Python37-32\=/root/manim though, it requires the image argument.

Try following the new docker instructions using docker-compose and let me know if you encounter any problems.

I'm confused at this line:
MANIM_PATH=/absolute/path/to/manim/repo docker-compose run manim example_scenes.py SquareToCircle -l
Am I supposed to type exactly like that? Also should I set the environment variables using docker run -e MANIM_PATH=C:/Users/User/Downloads/Manim eulertour/manim or is there another way?

Windows tends to not play nicely with the -m flag. If I'm not mistaken, that flag is not necessary to run the script.
Try python3 example_scenes.py SquareToCircle -pl in Command Prompt. (Make sure you're in the manim folder.)

Windows tends to not play nicely with the -m flag. If I'm not mistaken, that flag is not necessary to run the script.
Try python3 manim.py example_scenes.py SquareToCircle -pl in Command Prompt. (Make sure you're in the manim folder.)

That didn't do anything.

The intention is to set the MANIM_PATH environment variable to the absolute path to your manim repo. However, I'm not sure how to do that with Windows.

So I messed around with the docker-compose.yml file and changed the version to "3.2":
version: '3.2'

services:
  manim:
    # comment this line if you build the image to prevent overwriting the tag
    # image: eulertour/manim:latest
    # uncomment this line to build rather than pull the image
    build: .
    volumes:
      - ${MANIM_PATH=?MANIM_PATH environment variable isn't set}:
      - MANIM_PATH=C:/Users/User/Downloads/Manim
    environment:
      - PYTHONPATH=C:/Users/USER/AppData/Local/Programs/Python/Python37-32/
    working_dir: /opt/manim
    entrypoint:
      - python
      - -m
      - manim
    network_mode: "none"

And now it outputs:
PS C:\Users\User\Downloads\Manim> docker-compose run manim example_scenes.py SquareToCircle -l
ERROR: The Compose file '.\docker-compose.yml' is invalid because:
services.manim.volumes 'type' is a required property

Maybe I'm going in the right direction with this.
Also do I need to change whatever PYTHON_PATH value is and what's about the working_dir?

I removed this entirely:
      - ${MANIM_PATH=?MANIM_PATH environment variable isn't set}:       - MANIM_PATH=C:/Users/User/Downloads/Manim leaving just '- type: bind', and it begins to do something:
PS C:\Users\User\Downloads\Manim> docker-compose run manim example_scenes.py SquareToCircle -l
Building manim
Step 1/5 : FROM python:3.7
3.7: Pulling from library/python
e79bb959ec00: Downloading [==========>                                        ]  9.649MB/45.34MB                                                                                1b2a72d4e030: Download complete                                                                                d54db43011fd: Downloading [=====>                                             ]  5.078MB/50.07MB                                                                                69d473365bb3: Waiting                                                                                7dc3a6a0e509: Waiting                                                                                68cd774d0852: Waiting                                                                                2ef86095a118: Waiting                                                                                42c091edeef0: Waiting

I tried to include the MANIM_PATH along with the - type: bind, but it will produce an error instead.

The purpose of that line is to specify a manim repo to bind mount into the container. The variables set in the environment section of the Compose file are variables set in the (linux) container, so setting them to a windows path won't be helpful.

@eulertour, would adding MANIM_PATH to the Windows environment variables be a solution here?

For my PC,reboot can do good.I install manim in my WSL-Ubuntu,I reboot my PC and it work.


Job submitter doesn't work

I deployed PyFlink cluster on K8s and met this issue.
The deployment yaml:
apiVersion: flinkoperator.k8s.io/v1beta1
kind: FlinkCluster
metadata:
  name: wordcount
  namespace: flink-job
spec:
  flinkVersion: "1.14"
  image:
    name: pyflink:wordcount
    pullPolicy: Always
  jobManager:
    accessScope: Cluster
    ports:
      ui: 8081
    resources:
      limits:
        memory: "2048Mi"
        cpu: "500m"
  taskManager:
    replicas: 2
    resources:
      limits:
        memory: "2048Mi"
        cpu: "500m"
  job:
    pyFile: "word_count.py"
    parallelism: 2
    restartPolicy: Never
  flinkProperties:
    taskmanager.numberOfTaskSlots: "1"

The submitter ran until reaching the MAX_RETRY, and show these logs:
Waiting...
tee: job_check_log: Permission denied
curl -sS "http://wordcount-jobmanager:8081/jobs"
tee: job_check_log: Permission denied
tee: job_check_log: Permission denied
tee: job_check_log: Permission denied
{"jobs":[]}

What did I do wrong?

Hi, @htthao19 not sure how are you building your py flink image; I just built one from https://github.com/spotify/flink-on-k8s-operator/tree/master/images and used the following definition with no issues:
apiVersion: flinkoperator.k8s.io/v1beta1
kind: FlinkCluster
metadata:
  name: wordcount
spec:
  flinkVersion: "1.14"
  image:
    name: regadas/pyflink:1.14.2
    pullPolicy: Always
  job:
    pyFile: "examples/python/datastream/word_count.py"
    restartPolicy: Never

Closing this for now.


Unpinning items from Start Menu fails during automation

    win10: A specified logon session does not exist. It may already have been terminated. (Exception from HRESULT: 0x80070520)
    win10: At C:\tmp\vagrant-shell.ps1:8 char:208
    win10: + ... , '') -match 'From "Start" UnPin|Unpin from Start'} | %{$_.DoIt()}  }
    win10: +                                                             ~~~~~~~~~
    win10:     + CategoryInfo          : OperationStopped: (:) [], COMException
    win10:     + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

Worked around this by installing classic shell: https://github.com/clong/DetectionLab/blob/master/Vagrant/scripts/install-utilities.ps1#L11-L14


Segmentation fault: 11

Segmentation fault: 11
Stack trace returned 10 entries:
[bt] (0) /home/momo/anaconda3/envs/python36/lib/python3.6/site-packages/mxnet/libmxnet.so(dmlc::StackTraceabi:cxx11+0x5a) [0x7fce00256f9a]
[bt] (1) /home/momo/anaconda3/envs/python36/lib/python3.6/site-packages/mxnet/libmxnet.so(+0x388c23a) [0x7fce02fa423a]
[bt] (2) /lib/x86_64-linux-gnu/libc.so.6(+0x354b0) [0x7fce763bb4b0]
[bt] (3) /home/momo/anaconda3/envs/python36/bin/python(PyType_IsSubtype+0) [0x5570c90c52c0]
[bt] (4) /home/momo/anaconda3/envs/python36/lib/python3.6/site-packages/sip.so(+0x170cf) [0x7fcddc7940cf]
[bt] (5) /home/momo/anaconda3/envs/python36/lib/python3.6/site-packages/sip.so(+0x17935) [0x7fcddc794935]
[bt] (6) /home/momo/anaconda3/envs/python36/lib/python3.6/site-packages/PyQt5/QtCore.so(+0x1cecdd) [0x7fcddc45dcdd]
[bt] (7) /home/momo/anaconda3/envs/python36/lib/python3.6/site-packages/PyQt5/QtCore.so(PyInit_QtCore+0xdc) [0x7fcddc434bfc]
[bt] (8) /home/momo/anaconda3/envs/python36/bin/python(_PyImport_LoadDynamicModuleWithSpec+0x185) [0x5570c91e9525]
[bt] (9) /home/momo/anaconda3/envs/python36/bin/python(+0x219725) [0x5570c91e9725]

how to solve it

I think:error is your system is running out of memory when trying to execute your code, which results in a segmentation fault.
reference: https://stackoverflow.com/questions/12762944/segmentation-fault-11


Feature/correction rules

Adds the ability to create rules for songs you want to be renamed when they are scrobbled by the application. This can be quite useful for applications such as SoundCloud which often don't have the right names for songs/artists.

I'll need to test this.
Code looks good but I need to test it first.
Sorry I was sick in a coma for about 2 weeks.
I'll get on this asap.

So far so good.


Uninstall cli process cleans up pods' templates but doesn't clean up namespace template.

Describe the bug
While uninstalling odigos via cli, label odigos-instrumentation=enabled in instrumented namespace isn't removed. This situation results with the issue with discovering services in affected namespaces while setting up odigos once again from scratch.
To Reproduce
Steps to reproduce the behavior:

Install odigos using cli .
Instrument services in one of the namespaces.
Uninstall odigos.
Try to configure instrumentation for same services in same namespace once again.

Expected behavior
No issues with discovering previously instrumented services during odigos reinstallation
Screenshots
During reinstrumentation:

I can have a look once it is labeled and confirmed by maintainers.

@SzymonSt nice catch. Would you be able to work on fixing this?

yes I will


remove 1339.cf

ded

https://twitter.com/bohrmeista
It seems it's DDoSed now, we'll see what bohrmeista will say.
@bohrmeista

I didn't notice that, sorry


Multiple, duplicate PowerRename entries in folder context menu

Microsoft PowerToys version
0.70.1
Installation method
PowerToys auto-update
Running as admin
None
Area(s) with issue?
PowerRename
Steps to reproduce
I have no idea how it occurred or how to reproduce it, sorry. Will update if I can make it go away then reproduce it. If I had to guess, it might be due to having PowerRename enabled in PowerToys, then PowerToys updates itself, and the updated version "reinstalls" PowerRename so it creates a duplicate entry.
UPDATE: PowerRename creates the following registry keys that are undoubtedly responsible for 2 of the duplicate entries. (I haven't found the key that corresponds to the 3rd entry yet.)
Computer\HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\PowerRenameExt
Computer\HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\PowerRenameExt
UPDATE 2: It's possible the issue of multiple PowerRename entries only exists for Quick Access items' context menus, not for folders in the main Windows Explorer view.
✔ Expected Behavior
PowerRename has one context menu entry when right-clicking a folder.
❌ Actual Behavior
There are three entries for PowerRename

Other Software
explorer.exe on Windows 11 Home

For me when right-clicking on folders in TreeView on local drives:

When right-clicking on a folder on network drives:

/dup #25361

still here (3 context menu entries) in 0.74.1 - screenshot from Quick Access context menu. Only 2 "PowerRename" entries (1 near top, 1 near bottom) in typical explorer screen

sorry if i should have started a new issue specifically for 0.74.1

it is not just "PowerRename" it is almost every Context menu entire from PowerToys!
On a NON English System (German System here) the entries are doubled and translated wrong moreover, see Scrennshot:


Implement test analytics to user tests

Closing this issue, as we decided to condensed analytics on tab "Answers"


gke config file generation

kraken-lib will only generate the aws config file.  we have a default gke file and we allow users to specify gke as a type in kraken.  allow this to be specified in kraken-lib as well.
make sure docs get updated, should be the getting started readme.

I initially wanted to try and imitate kraken with: $ ./bin/up.sh --generate --provider GKE
But since we are parsing this in bash, I think it might be overly complicated.
Should I opt for using KRAKEN_TAGS instead? IE: $ ./bin/up.sh --generate KRAKEN_TAGS=GKE
@coffeepac


⚠ Bofrost.lu has degraded performance

In cb099cd, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 931 ms

Resolved: Bofrost.lu performance has improved in 3b055a9 after 6 minutes.


Fixing squid:S2221 - "Exception" should not be caught when not required by called methods

This pull request is focused on resolving occurrences of Sonar rule
squid:S2221 - ""Exception" should not be caught when not required by called methods".
You can find more information about the issue here:
https://sonarqube.com/coding_rules#q=squid:S2221
Please let me know if you have any questions.
Artyom Melnikov

Thanks Artyom


move-packet-flow-transforms

Created images and content.
Moved following content from the SDN Features, Packet Transforms and Scale document. specifically:

[x] Packet flow
[x] Virtual Port and Packet Direction
[x] Packet processing Pipeline (Sequential prefix match lookups)

Closing this because replaced by PR https://github.com/Azure/DASH/pull/114.


add option to save visualizations

Add an option to export visualizations
Original issue by @bmesuere on Wed May 02 2012 at 12:10.
Closed by @bmesuere on Wed Aug 08 2012 at 15:44.

"Unipept + version" should be added to those image files
Original comment by @bmesuere on Wed May 02 2012 at 12:10.

Use a combination of https://github.com/niklasvh/html2canvas and http://code.google.com/p/canvg/ and this code:
var canvas = document.getElementById("mycanvas");
var img    = canvas.toDataURL("image/png");
document.write('<img src="'+img+'"/>');

Original comment by @bmesuere on Tue Aug 07 2012 at 10:44.

Duplicate of #77
Original comment by @bmesuere on Wed Aug 08 2012 at 15:44.


[BUG]: Failed to copy files for a specific release pipeline

New issue checklist

[ ] I searched for existing GitHub issues
[X] I read pipeline troubleshooting guide
[ ] I checked how to collect logs

Task name
CopyFilesOverSSH
Task version
0.*
Issue Description
I have a problem in a specific pipeline, which must copy a file to a remote destination and I get an error:
2024-10-01T11:59:14.7214740Z Found 1 files to copy to the remote machine. 2024-10-01T11:59:14.7215725Z Copying file /Data_Build_Deploy/agente1/_work/r67/a/WSConsultaPoliza.war to /app/apache-tomcat-8.0.21/webapps/WSConsultaPoliza.war on remote machine. 2024-10-01T11:59:14.7312734Z ##[error]Failed to copy /Data_Build_Deploy/agente1/_work/r67/a/WSConsultaPoliza.war. Error: fastPut: Permission denied Local: /Data_Build_Deploy/agente1/_work/r67/a/WSConsultaPoliza.war Remote: /app/apache-tomcat-8.0.21/webapps/WSConsultaPoliza.war     at fmtError (/Data_Build_Deploy/agente1/_work/_tasks/CopyFilesOverSSH_67cec91b-0351-4c2f-8465-d74b3d2a2d96/0.246.1/node_modules/ssh2-sftp-client/src/utils.js:55:18)     at /Data_Build_Deploy/agente1/_work/_tasks/CopyFilesOverSSH_67cec91b-0351-4c2f-8465-d74b3d2a2d96/0.246.1/node_modules/ssh2-sftp-client/src/index.js:669:15     at cbfinal (/Data_Build_Deploy/agente1/_work/_tasks/CopyFilesOverSSH_67cec91b-0351-4c2f-8465-d74b3d2a2d96/0.246.1/node_modules/ssh2/lib/protocol/SFTP.js:2239:11)     at FSReqCallback.oncomplete (node:fs:192:23) {   code: 3,   custom: true } 2024-10-01T11:59:14.7314728Z Completed copying 1 files to the remote machine. 2024-10-01T11:59:14.7315628Z ##[error]Failed to copy 1 files
This error occurs only with this release pipeline, I tried with other releases that copy to the same destination and this does not occur. I've even created a new Build and Release Pipeline again and I still get the same error.
What could I check to solve this?
Thanks for your help
Environment type (Please select at least one enviroment where you face this issue)

[X] Self-Hosted
[ ] Microsoft Hosted
[ ] VMSS Pool
[ ] Container

Azure DevOps Server type
Azure DevOps Server (Please specify exact version in the textbox below)
Azure DevOps Server Version (if applicable)
No response
Operation system
Oracle Linux Server 7.9 Fedora
Relevant log output
2024-10-01T11:59:13.8115995Z ##[section]Starting: Copiar archivos
2024-10-01T11:59:13.8122174Z ==============================================================================
2024-10-01T11:59:13.8122331Z Task         : Copy files over SSH
2024-10-01T11:59:13.8122433Z Description  : Copy files or build artifacts to a remote machine over SSH
2024-10-01T11:59:13.8122581Z Version      : 0.246.1
2024-10-01T11:59:13.8122675Z Author       : Microsoft Corporation
2024-10-01T11:59:13.8122789Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/copy-files-over-ssh
2024-10-01T11:59:13.8122928Z ==============================================================================
2024-10-01T11:59:13.8443490Z ##[command]/Data_Build_Deploy/agente1/externals/node20_1/bin/node -v
2024-10-01T11:59:13.8444178Z /Data_Build_Deploy/agente1/externals/node20_1/bin/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /Data_Build_Deploy/agente1/externals/node20_1/bin/node)
2024-10-01T11:59:13.8444924Z /Data_Build_Deploy/agente1/externals/node20_1/bin/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /Data_Build_Deploy/agente1/externals/node20_1/bin/node)
2024-10-01T11:59:13.8445770Z /Data_Build_Deploy/agente1/externals/node20_1/bin/node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /Data_Build_Deploy/agente1/externals/node20_1/bin/node)
2024-10-01T11:59:13.8446694Z /Data_Build_Deploy/agente1/externals/node20_1/bin/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /Data_Build_Deploy/agente1/externals/node20_1/bin/node)
2024-10-01T11:59:13.8447534Z /Data_Build_Deploy/agente1/externals/node20_1/bin/node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /Data_Build_Deploy/agente1/externals/node20_1/bin/node)
2024-10-01T11:59:13.8449748Z /Data_Build_Deploy/agente1/externals/node20_1/bin/node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /Data_Build_Deploy/agente1/externals/node20_1/bin/node)
2024-10-01T11:59:13.8582275Z ##[warning]The agent operating system doesn't support Node20. Using Node16 instead. Please upgrade the operating system of the agent to remain compatible with future updates of tasks: https://github.com/nodesource/distributions
2024-10-01T11:59:13.9867944Z Setting up SSH service connection to remote host <IP_ADDRESS>.
2024-10-01T11:59:14.7214740Z Found 1 files to copy to the remote machine.
2024-10-01T11:59:14.7215725Z Copying file /Data_Build_Deploy/agente1/_work/r67/a/WSConsultaPoliza.war to /app/apache-tomcat-8.0.21/webapps/WSConsultaPoliza.war on remote machine.
2024-10-01T11:59:14.7312734Z ##[error]Failed to copy /Data_Build_Deploy/agente1/_work/r67/a/WSConsultaPoliza.war. Error: fastPut: Permission denied Local: /Data_Build_Deploy/agente1/_work/r67/a/WSConsultaPoliza.war Remote: /app/apache-tomcat-8.0.21/webapps/WSConsultaPoliza.war
    at fmtError (/Data_Build_Deploy/agente1/_work/_tasks/CopyFilesOverSSH_67cec91b-0351-4c2f-8465-d74b3d2a2d96/0.246.1/node_modules/ssh2-sftp-client/src/utils.js:55:18)
    at /Data_Build_Deploy/agente1/_work/_tasks/CopyFilesOverSSH_67cec91b-0351-4c2f-8465-d74b3d2a2d96/0.246.1/node_modules/ssh2-sftp-client/src/index.js:669:15
    at cbfinal (/Data_Build_Deploy/agente1/_work/_tasks/CopyFilesOverSSH_67cec91b-0351-4c2f-8465-d74b3d2a2d96/0.246.1/node_modules/ssh2/lib/protocol/SFTP.js:2239:11)
    at FSReqCallback.oncomplete (node:fs:192:23) {
  code: 3,
  custom: true
}
2024-10-01T11:59:14.7314728Z Completed copying 1 files to the remote machine.
2024-10-01T11:59:14.7315628Z ##[error]Failed to copy 1 files
2024-10-01T11:59:14.7438482Z ##[section]Finishing: Copiar archivos

Full task logs with system.debug enabled

 [REPLACE THIS WITH YOUR INFORMATION]

Repro steps
No response

The incident is resolved.
Not enough permission in the remote machine.


Bug type
Other
Component name
No response
What happened?
I created a test project using the MudBlazor Templates (server app) template. I downloaded the page source and validated it on the https://validator.w3.org/#validate_by_input page.
It turns out that the

I am adding the source file again with the incorrectly placed "style" tag (in the "body" section).
Index.txt

I believe this is fixed in the .NET 8 templates. Please let me know if it's still an issue and I'll re-open the issue.

I created a test project using the MudBlazor template for .NET 8 and it is still the same. The


Removed RSD, is not data sharing

RSD would belong to "software registration" / "software sharing", or more generically something like "service registration" or even "service FAIRification", together with the Research Software Ecosystem / Bio.tools, WorkflowHub, and other registries ...
... and maybe with packaging and containerisation systems, incl. Bioconda, Debian, Biocontainers (all these services which are not only "bio" anymore 🙈)

Thanks!


Adding support for response type application/pdf

Bug-6351-need a solution which can support application/pdf MIME type

closing this pull request, as open another pull request for same fixes


Background color doesn't change in SceneView

Hello,
I'm trying to use a SceneView to display a 3d object and the background color won't change:
<com.google.ar.sceneform.SceneView
android:id="@+id/sceneView"
android:background="@color/red_900"
android:layout_width="match_parent"
android:layout_height="match_parent" />

Try the following https://github.com/google-ar/sceneform-android-sdk/issues/251#issuecomment-520056488 until the new version is out.

Try the following google-ar#251 (comment) until the new version is out.

Didn't work, the background is still black.

The only working solution I found was to add node with ViewRenderable:
private fun loadBackground() {
        ViewRenderable.builder()
            .setView(context, R.layout.scene_background)
            .build()
            .thenAccept { view ->
                 addBackgroundToScene(view)
            }
}

private fun addBackgroundToScene(view: ViewRenderable?) {
        val bgNode = Node().apply {
            localScale = Vector3(4f, 4f, 4f)
            name = "bg"
            renderable = view
            localPosition = Vector3(0f, -2f, 0f)
        }

        sceneView.scene.addChild(bgNode)
}

Where scene_background is just some basic layout with fixed width and height, and with custom background (color or drawable).

Fixed here: b6c6cee9d337922464e82c1b4e3819b85dd3462f
Please review the SceneView Sample app for usage
Use the snapshot version as describe here until next release.


generate markdown document

something like this https://gist.github.com/podhmo/fe0416719d565cee8781da70feaf69a6

no execute API mechanism (read only)
1column
permalink everywhere
input/output with go's struct like expression

why input is not general openapi doc?
because it is easy that implements the subset instead of fullset

not support

oneOf,anyOf,allOf
explode in path parameters
form data
path.parameters (not operation.parameters)

TODO

refs (this schema is used in XXX input/output )


Added all contents for class 4

This PR adds all the class 4 materials, including homework.

Current dependencies on/for this PR:

main

PR #25   👈

This comment was auto-generated by Graphite.


Add a possibility to use credentials to use the UIImageView+AFNetworking Category

It would be nice to find a way to use the credentials stored in the AFClient to download images using the category facilities.

I found it nice to have the use of credentials included in the category, so I added new methods and forked the library here: https://github.com/stian-a-johansen/AFNetworking
In case it is useful for someone, even though the thread is very old. Any feedback of course welcome.


UnexpectedEof when using for_each_chunk

The following code:
use fastanvil::Region;
use std::fs::File;

fn main() {
    let file =  File::open("./region/r.0.0.mca").unwrap();
    let mut r = Region::new(file);
    r.for_each_chunk(|x, z, data| {
        println!("{}, {}", x,  z);
    }).expect("hhh");
}

gives this error and no other output
thread 'main' panicked at 'hhh: IO(Custom { kind: UnexpectedEof, error: "failed to fill whole buffer" })', src/main.rs:9:8

I've tried with 1.15 and 1.16 region files and had no luck.

Hey there. Your code looks fine so looks like a bug. Could you potentially upload that particularly Region file somewhere so I can try to reproduce it?

region.zip

Awesome. I'll have a look when I can. :)

I've released fastanvil 0.14.1 that should fix this.
This seems to be due to one of the chunks in the region not being padded to a multiple of 4096 bytes as the (wiki)[https://minecraft.gamepedia.com/Region_file_format] claims it has to be. The chunk metadata includes to proper unpadded length, so I now use that instead.


Retrieving gradients in different threads panics.

Hi.
If a tensor is created in the main thread, its gradients panic when the operations happen in a different thread.
Example:
use std::{thread::sleep, time::Duration};

use burn::{backend::Autodiff, tensor::Tensor};

type B = Autodiff<burn::backend::NdArray>;

fn obj(x: Tensor<B, 1>) -> Tensor<B, 1> {
    (x.clone() * x.clone()).sum().sqrt()
}

fn main() {
    let x = Tensor::<B, 1>::from_floats([1.0, 2.0, 3.0]).set_require_grad(true);
    let op = move || {
        let value = obj(x.clone()).sum();
        let grads = value.backward();
        let g_x = Tensor::<B, 1>::from_inner(x.clone().grad(&grads).unwrap());

        let x_1 = x.clone() - g_x;
        let value = obj(x_1.clone()).sum();
        println!("value: {}", value.into_scalar());
    };

    op.clone()();

    let thread_1 = std::thread::spawn(op.clone());
    // sleep(Duration::from_millis(100));
    let thread_2 = std::thread::spawn(op.clone());
    thread_1.join().unwrap();
    thread_2.join().unwrap();
}

If you run this small code several times, it fails most of the time in the line that retrieves the gradients of x.
The error message is:
Root node should have a step registered, did you forget to call `Tensor::register_grad` on the tensor where you need gradients?

Interestingly, if you comment the thread_2, it works as expected. Also, inserting
sleep(Duration::from_millis(100));

between the thread spawns makes it work as expected.
Here is the full backtrace:
value: 2.7416575
thread '<unnamed>' panicked at src/main.rs:16:69:
called `Option::unwrap()` on a `None` value
value: 2.7416575
stack backtrace:
   0: rust_begin_unwind
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:645:5
   1: core::panicking::panic_fmt
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panicking.rs:72:14
   2: core::panicking::panic
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panicking.rs:127:5
   3: core::option::Option<T>::unwrap
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/option.rs:931:21
   4: test_burn::main::{{closure}}
             at ./src/main.rs:16:46
   5: core::ops::function::FnOnce::call_once
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'main' panicked at src/main.rs:28:21:
called `Result::unwrap()` on an `Err` value: Any { .. }
stack backtrace:
   0: rust_begin_unwind
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:645:5
   1: core::panicking::panic_fmt
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panicking.rs:72:14
   2: core::result::unwrap_failed
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/result.rs:1653:5
   3: core::result::Result<T,E>::unwrap
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/result.rs:1077:23
   4: test_burn::main
             at ./src/main.rs:28:5
   5: core::ops::function::FnOnce::call_once
             at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

To add.
Searching "register_grad" in the source code only returns the string defining this error message.

Reviewing the provided code, it becomes evident that the failure is expected with the current implementation. The issue lies in the fact that the root graph node is created only once (before the op is generated). Consequently, there is a single graph at that point. However, when you execute op twice, the graph is not splitted into two distinct entities, both operations share the same graph and modify it. It's important to note that you can only invoke the backward operation once on a graph, as the graph gets consumed in the process. While the same graph can be safely modified by multiple threads, it should not be consumed by both threads simultaneously.
The solution to this problem is to ensure that each thread has its own graph. This can easily be done with the detach method.
use std::{thread::sleep, time::Duration};

use burn::{backend::Autodiff, tensor::Tensor};

type B = Autodiff<burn::backend::NdArray>;

fn obj(x: Tensor<B, 1>) -> Tensor<B, 1> {
    (x.clone() * x.clone()).sum().sqrt()
}

fn main() {
    let x = Tensor::<B, 1>::from_floats([1.0, 2.0, 3.0]).set_require_grad(true);
    let op = move || {
        // detach will create a new graph here.
        let x = x.detach();
        // Same as before.
        let value = obj(x.clone()).sum();
        let grads = value.backward();
        let g_x = Tensor::<B, 1>::from_inner(x.clone().grad(&grads).unwrap());

        let x_1 = x.clone() - g_x;
        let value = obj(x_1.clone()).sum();
        println!("value: {}", value.into_scalar());
    };

    op.clone()();

    let thread_1 = std::thread::spawn(op.clone());
    // sleep(Duration::from_millis(100));
    let thread_2 = std::thread::spawn(op.clone());
    thread_1.join().unwrap();
    thread_2.join().unwrap();
}

Note that sometimes your code may work as intended because the creation of the graph is actually lazy. So, when a graph doesn't exist, we create a new one. This is why you can call your code multiple times sequentially, and it will work.

It makes sense, thanks.
That is pretty hard to identify without knowing the internals of the library. Honestly, I had an incorrect understanding of the detach operation.

To be fair, I believe we should enhance the error message and generate additional documentation on how to utilize multithreading with autodiff. Subsequently, we could provide a link to the documentation within the error message, thereby enhancing its usefulness.

You are updating each tensor in the list; however, the newly updated tensors aren't tagged as required grad. Therefore, in the second iteration, you need to call require_grad. Keep in mind that you aren't just updating the tensor value with the mutation, but all the tensor state that comes with it. It's like creating new parameters at each new iteration; this is why a new require_grad is necessary.

Understood. I incorrectly assumed it kept the require_grad tag. My code was previously written with pure tch, and it had the += operator, which keeps the gradient tag.


Rebase dekn#8065

To address https://github.com/plotly/dekn/issues/8065

No more critical of high CVE:
cnb/buildpacks/paketo-buildpacks_poetry/5.4.0/bin/run (gobinary)
================================================================
Total: 7 (UNKNOWN: 2, LOW: 0, MEDIUM: 5, HIGH: 0, CRITICAL: 0)

I'll create the 5.4 release branch again off of main once this lands. No need for the backport PR.

@tarzzz Maybe a 2nd look to this one as well, on the toml file.


Throttle updateButtonPaneStatus

Informations
Browser + version: Chrome 51
OS: macOS
Resolution:
How to reproduce the bug?
Every time user types something updateButtonPaneStatus() is called:
// line 570
.on('mouseup keydown keyup', function () {
     t.updateButtonPaneStatus();
})

It's a problem if user types fast, because redactor starts freezing. Can we add a throttle (like 100-200ms) to the event so it will not update button states every keyup/down?
Something like this (simplest implementation):
var throttleTimer;
...
.on('mouseup keydown keyup', function () {
    clearTimeout(throttleTimer);
    throttleTimer = setTimeout(t.updateButtonPaneStatus(), 100);
})

Hi!
I can do that yep, but I don't have any lag problem :/
Have you got a long text or something? It's just to try to reproduce that on my browser.

Usually it happens if there are few base64 encoded images, but the problem is not persistent. Anyway the throttle will be useful here I think.


Possible update to README

Adds few things I would have loved to have in README when I started toying with hyppo.

Thank you!


Hello World server hosted locally on PC.

What does the program do ?
----Instead of using console.log() to print hello world in terminal, I have created a local host to print hello world in the browser.
In what programming language it is written?
NodeJs

Thank you for participating  in hacktoberfest ❣ if you liked working on this repo you can share it with friends and star this project for helping others


[Sema/SILGen] DynamicActorIsolation: Implement dynamic actor isolation checks for unsafe APIs

Passing an actor isolated synchronous function value (either declaration
or a closure) to an API that erases actor isolation and comes from a module
that hasn't adopted Swift version 6 would result in runtime check
(implemented via a thunk) that makes sure that the function is called on
the expected executor when DynamicActorIsolation flag is enabled.
Resolves: rdar://116022277

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please build toolchain

@swift-ci please test


Please add device support for era.airp.cwb03

Please add device support for era.airp.cwb03
https://home.miot-spec.com/s/era.airp.cwb03

Supporting this device is difficult because it doesn't define any specs.

Can I help with something? Maybe screenshots of the interface will help? Maybe I can collect some data? Tell me please...

https://home.miot-spec.com/spec/era.airp.cwb03
here some specs


Make AttachmentManager methods static

What
This commit removes all state from the AttachmentManager class and makes
its methods into static ones. The two items of state, attachmentsDir and
attachmentStreamFactory are made into instance variables on
BasicDatastore instead.
Why
This should enable us to make the AttachmentManager methods into their
own classes, which will help when we break out the callables from
BasicDatastore. In general, the overall aim is to have small classes
which encapsulate small pieces of functionality, whereas now we
have a couple of large tightly coupled classes which both know about
each others internals.

Reviewers
reviewer @tomblench

Looks good to me. Not strictly in the remit of this PR but it might be worth re-visiting the method visibility on AttachmentManager. For instance, I think the public methods can be made protected.

+1

Looks good +1


cura: 4.8.0 -> 4.9.0

Motivation for this change
New upstream release.
Things done

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 120533 at 91ca981f run on x86_64-linux 1

8 packages built successfully:

cura
curaengine
python38Packages.libarcus
python38Packages.libsavitar
python38Packages.uranium
python39Packages.libarcus
python39Packages.libsavitar
python39Packages.uranium

4 suggestions:

warning: python-include-tests
Consider adding a checkPhase for tests, or if not feasible, pythonImportsCheck.
Near pkgs/development/python-modules/uranium/default.nix:31:0:
   |
31 |     description = "A Python framework for building Desktop applications";
   | ^

warning: python-include-tests
Consider adding a checkPhase for tests, or if not feasible, pythonImportsCheck.
Near pkgs/development/python-modules/libarcus/default.nix:27:0:
   |
27 |     description = "Communication library between internal components for Ultimaker software";
   | ^

warning: python-include-tests
Consider adding a checkPhase for tests, or if not feasible, pythonImportsCheck.
Near pkgs/development/python-modules/libsavitar/default.nix:26:0:
   |
26 |     description = "C++ implementation of 3mf loading with SIP python bindings";
   | ^

warning: unclear-gpl
agpl3 is a deprecated license, please check if project uses agpl3Plus or agpl3Only and change meta.license accordingly.
Near pkgs/applications/misc/curaengine/default.nix:22:5:
   |
22 |     license = licenses.agpl3;
   |     ^


responseHook not affecting spans for non-callback non-promise responses

When calling Mongoose operations that have no callback, and their response itself is not a promise object, the supplied responseHook set during configuration is not applied to emitted spans.
I believe this is because applyResponseHook() function is called after the span.end() call executes, meaning any modifications done in the supplied responseHook configuration parameter are not applied to the span emitted for that operation.
See https://github.com/aspecto-io/opentelemetry-ext-js/blob/8d42dac0f0acba70a581bbc7460aab5d0af5bcc6/packages/instrumentation-mongoose/src/utils.ts#L82-L86
I believe the correct order should be:
if (!(execResponse instanceof Promise)) {
        applyResponseHook(span, execResponse, responseHook);
        span.end();
        return execResponse;
    }

Thanks for finding and investigating it.
That makes sense to me.
Would you be interested in contributing a PR with a fix?

Sure thing!

Sure thing!

Amazing thanks :)
I'll review the PR when it's ready


Adding STL Documentation

Select the Day of Content
others
What information is missing?
I would like to add STL Documentation
Please assign this issue to me under gssoc

@subhadipbhowmik Please also assign me


configure sizing for the timetree viz so it fills the screen appropriately on desktop and mobile

needs input from @gissoo on how to calculate this (size of viz, does it adjust/reflow on page resize; where to center the tree, etc.)

initial sizing/layout completed as part of #5 and #25


Function Grapher

Is your feature request related to a problem? Please describe.
I would like to add a JS app that graphs a provided function of x.
Describe the solution you'd like
The script should graph function of x like:

x^2
x^3 + x + 25
sin(x)

Additional context
Issue made under GSSoC'22 contributions.
Steps Followed✅
Check the box with [x] If you followed all the steps.

[x] Is your feature request related to a problem? Please describe.
[x] Describe the solution you'd like
[x] Describe alternatives you've considered
[x] Additional context

Code of Conduct✅

[x] I agree to follow this project's Code of Conduct.
[x] I checked the current issues for duplicate problems.
[x] I have gone through project README.

Love these unique ideas. Good luck


Heading levels Improperly Structured and/or Skipped - 508 issue

Required Fix

[ ] RF-6

Context
Heading tags have been implemented but heading levels were either skipped (for example, H2 to H4) or did not move down a level when a logical subsection was present.
See EPA Monitoring Plans Accessibility Report for how to fix and additional details.

The heading structure still looks odd to me, there's now 2 H1's. Typically there should be only 1. Would suggest knocking Monitoring plans down to an H2. Also there are two empty headings on the page.

Testing complete, issue has been fixed


Upgrade packages.

Coverage remained the same at 57.21% when pulling db14869b239e2e0a4432174f53e1b6980fb1819d on upgrade-packages into 10b37c099a169eedcba35005f78d40afb72437f6 on master.


OrientDB 2.0 - $stack problem

Hello, I'm using OrientDB 2.0
I have a simple traverse query
select $stack, $path from (traverse out() from #12:6)
and the result is
$stack	$path
[]	(#12:6)
[]	(#12:6).out[0](#12:5)
[]	(#12:6).out[0](#12:5).out[0](#12:4)
[]	(#12:6).out[0](#12:5).out[1](#12:2)
[]	(#12:6).out[0](#12:5).out[2](#13:0)
The $path is accurate, but how come the $stack is empty?

Same on 2.1RC.
What is the status of this guys?
Others seem to be having the same issue: http://orient-database.narkive.com/HENVrXur/orientdb-extracting-vertices-and-edges-from-the-path-variable

Just tried with the OpenBeer database:

The problem is still there, please do not close the bug.
The query that does work:
select @rid, $stack from (traverse * from (select from Service where Name like '%nternatio%'))

Queries that do not work:
select @rid, $stack from (traverse * from (select from Service where Name like '%nternatio%')) where @rid = #13:11

select from (select @rid, $stack from (traverse * from (select from Service where Name like '%nternatio%'))) where rid = #13:11

Looks like if you use a where to filter out a specific node you lose the information about the stack.
This is troublesome as I'm trying to find the path between two specific nodes and not interested in paths between any other nodes.

To reproduce on the Beer database:
The query that does work:
select @rid, $path, $stack from (traverse both() from #12:58)
select $path, $stack from (traverse both() from #12:58 while $depth < 4)

Queries that do not work:
select @rid, $path, $stack from (traverse both() from #12:58) where @rid = #11:4
select @rid, $path, $stack from (traverse both() from #12:58 while $depth < 4) where @rid = #11:4

I close the bug to avoid "walking issues" around. Reopened.

+1 Also experiencing these $stack issues

I guess the reason is the auto-optimization of the query execution. This query:
select @rid, $path, $stack from (traverse both() from #12:58) where @rid = #11:4

Is identical to:
select @rid, $path, $stack from #11:4

So OrientDB execution planner skip the traverse at all. Could you write here a query that has any significance for your app and we try to figure out if the problem it's this or any others?

I've already did in the first post:
select @rid, $stack from (traverse * from (select from Service where Name like '%nternatio%')) where @rid = #13:11

select from (select @rid, $stack from (traverse * from (select from Service where Name like '%nternatio%'))) where rid = #13:11

Both of them trying to do the same thing:
Start from a node called "international" and evaluate all paths. When you find the path to the node called #13:11 (or several other), tell me how you got there.
I'm still unsure why you believe
select @rid, $path, $stack from (traverse both() from #12:58) where @rid = #11:4

Is identical to:
select @rid, $path, $stack from #11:4

Because they aren't.
Neither logically nor structurally. Under what circumstances would it not be a bug to drop a whole subquery or an instruction (traverse()) in a query?

Hi @johndavids
Fixed in develop branch, the fix will be released in v 2.2.1
Thanks
Luigi


Application installer GUI crashes at 1st use

Describe the bug
Installing the first application right after installing the OS seems to crash the application installer GUI, possibly has to do with Updating FreeBSD repository catalogue...
To Reproduce
Steps to reproduce the behavior:

Install helloSystem to HD
Open GIMP

Expected behavior
GIMP is installed using the application installer GUI
Screenshots
https://youtu.be/o3z9QnMTLm8?t=654 (thanks Tyler's Tech)
Version (please complete the following information):

Live ISO or installed system to disk: Installed
FreeBSD version (System --> 12.1
helloSystem build (cat /.url): 0.5.0
Running in a virtual machine: no

Another thing he sees in the video is that the Dock can't run apps with spaces in the name:

Couldn't launch /Applications/Developer.

Please always open one ticket per subject.

Couldn't launch /Applications/Developer.

https://github.com/helloSystem/Dock/issues/19

GIMP installation fixed and re-tested. A package had gone missing.


#Sql-tasks. Ivan Menshov

https://travis-ci.com/github/IvanMenshov/db-assignments

https://travis-ci.com/github/IvanMenshov/db-assignments

accepted


[QUESTION] How can I trigger "eager refresh" from a service that reads the cache, but can't produce the value

ref: https://stackoverflow.com/questions/79130868/triggering-eager-refresh-with-fusioncache-from-consumer-side
Problem
I have a service that can produce some data. And some others that are consuming that data. The consumers can request the data over masstransit. But as producing that data is relatively expensive and prone to third party service outages, I intend to use FusionCache with FailSafe and EagerRefresh. The consumers are on the same Redis backplane with the producer, hence, it is straightforward for them to try to get it from the cache first and only address the producer service if it is not found there. I use .TryGetAsync() for that.
(In some cases the consumers need to bypass any cache so should the producer, but that's irrelevant here.)
If I got it correctly, to trigger the eager refresh - as only the producer can produce the data -, the producer needs to try to get the value from the cache in the grace period.
I don't know if I can make the TryGet believe (in the same grace period) the value is expired so that I can address the service and trigger the eager refresh. If I understood correctly, the getter is not that sophisticated, only GetOrSet will consider the EagerResfresh ratio.
Workaround

One workaround that could work is to read the entry from memory cache as it is, with metadata and all as a second step if the MaybeValue has the value.  But FusionCacheMemoryEntry<TValue> is internal, although could be replicated to better match this purpose.

Solution

The simplest non-breaking change would be to have the metadata in MaybeValue as a prepopulated property to read or an a .GetMetadata() if prepopulating it would be too expensive.

Supposing I have:
.AddMemoryCache()
.AddFusionCache()
.WithRegisteredMemoryCache()

this is the implementation for my workaround (fortunately FusionCacheEntryMetadata is public):
    bool TryGetMetadataFromMemory<TValue>(string key, out FusionCacheEntryMetadata? metadata)
    {
        metadata = null;
        if(!memoryCache.TryGetValue<object>(key, out var value) || value is null) return false;

        var prop = value.GetType().GetProperty("Metadata", typeof(FusionCacheEntryMetadata));

        if (prop is null) return false;

        metadata = (FusionCacheEntryMetadata)prop.GetValue(value)!;

        return true;
    }

(PS: the step-by-step guide seems to be missing the .WithRegisteredMemoryCache() there. I had nothing in memory after fetching from the distributed cache without it.)

Hi @zorgoz

Problem
I have a service that can produce some data. And some others that are consuming that data. The consumers can request the data over masstransit. But as producing that data is relatively expensive and prone to third party service outages, I intend to use FusionCache with FailSafe and EagerRefresh.

I'd say good idea!

The consumers are on the same Redis backplane with the producer, hence, it is straightforward for them to try to get it from the cache first and only address the producer service if it is not found there. I use .TryGetAsync() for that.

Red flag here: the only way to be protected from Cache Stampede is to use a GetOrSet call: by not using it and opting for separate GET + SET calls (eg: a TryGet(...) followed by production of the value followed by a Set(...)) you are not allowing FusionCache to coordinate the calls and prevent multiple factories to run for the same cache key (eg: what is known as request coalescing, see the link above).
So I would simply use GetOrSet(...) and in the factory (if I got it right) ask for the data via MassTransit.

If I got it correctly, to trigger the eager refresh - as only the producer can produce the data -, the producer needs to try to get the value from the cache in the grace period.

Wait, I think I'm missing something here: above you stated that "The consumers can request the data over masstransit", but now you are saying that only the producer can produce the data.
Maybe a consumer can ask the producer to produce via MassTransit, but in a kind of fire-and-forget way? And then the production will happen on the producer side which in turn will update the cache?
Can you clarify it?
Anyway, let's say it's how I imagined it above: a consumer can ask via MassTransit to a producer to produce it and update the cache.
If so, I can suggest an idea you can play with: you can use some of the methods normally used for Conditional Refresh like ctx.NotModified(), and maybe a touch of Adaptive Caching too, in this way:
// CONSUMER SIDE
var product = await cache.GetOrSetAsync<Product>(
    $"product:{id}",
    async (ctx, ct) =>
    {
        // CALL MASS TRANSIT HERE...

        if (ctx.HasStaleValue) {
            // TEMPORARILY RENEW THE OLD VALUE
            ctx.Options.Duration = some_duration_here;
            return ctx.NotModified();
        }

        // NO STALE VALUE -> PRODUCER DID NOT PRODUCED THIS YET
        ctx.Options.Duration = maybe_some_different_duration_here;
        return some_default_value;
    },
    opt => opt.SetDuration(duration).SetFailSafe(true)
);

// PRODUCER SIDE
//
public async Task Consume(ConsumeContext<CreateData> context)
{
    // HEAVY COMPUTING HERE...
    await _cache.SetAsync("cache-key", myData);
}

Could this work?

(PS: the step-by-step guide seems to be missing the .WithRegisteredMemoryCache() there.

Because normally it's not needed, since FusionCache will create its own private MemoryCache instance, not shared with others.
In general, sharing a MemoryCache can give you problems because collisions, conflicting configurations (eg: SizeLimit), etc.

I had nothing in memory after fetching from the distributed cache without it.

This... I don't understand.

I hear you, but hear me out about my concern: the stampede protection works only on one consumer node. Or more precisely for each node individually. While I do wait for the producer on one consumer node, a sibling node still can get hit on the sibling endpoint. And it won't find anything in the cache either (let's assume this scenario). As a consequence, this other node will also reach out to the producer.

Correct, but can't this be handled on the producer side? What I mean is that by receiving a MassTransit call while another one is being processed, the second one would simply be ignored (or, depending on your needs, both at the same time or inside a certain time frame, like 1 min or similar).
For the "how", I'm thinking about something simple like using a SemaphoreSlim.
Another way would be to simply use... FusionCache itself. The approach could be something like this: when the producer receives the MassTransit request, it will expire the cache entry and then immediately do a GetOrSet. The GetOrSet includes cache stampede protection, so even if 10 MassTransit requests come in at the same time, only the first one will be effectively executed.
Just spitballing an idea here, let me know what you think.

Hence, in my understanding, I need protection on the producer side. Not only that, but all consumers would write to the distributed cache the same stuff, and I want to prevent that.

In theory only the first consumer would write on L2, the others would find the updated data already there.

What I would need is something similar to the flags in HybridCache
[...]

Yeah I'm thinking about adding SkipMemoryCacheRead, SkipMemoryCacheWrite, SkipDistributedCacheRead and SkipDistributedCacheWrite, and have the current one become "synthetic": what this means is that the getter will return true only if both the read and write are true, and the setter would set both to the specified value.
Thoughts?

Yes, I have something similar now:
consumer:

if not forced: try to get,
if not found or forced address the producer
producer:
if forced: produce and store (Set)
if not forcer: GetOrSet (produce if needed)

My approach on producer-side is to make use of the multi-awaitability of the same task: simply put any concurrent request for the same set of data will get the same task in return. By the time any new consumer would look out for the same data, it should have that already in the distributed cache.
Looking forwar for your Skip... implementations!

HI @zorgoz , are there some missing points about this?
I'm asking so can I close this, for house keeping.
Thanks.

@jodydonetti Nope.
I am looking forward to the features you promised. :D
Thank you for your great work!

I am looking forward to the features you promised. :D

Hi @zorgoz , the new skip options have been implemented, and will be included in the next v2 preview version coming out soon.
Will update.

Hi @zorgoz , I since published 2 different previews:

preview-2 which contained the 4 new options (skip memory/distributed read/write) we agreed on
preview-3 which contained even more

Have you been able to take a look at them?

Hello,
Great job! I have looked at the changes, and they are fantastic.
Unfortunately, the project I am working on is not yet at the stage where I
can afford to adapt them and do the necessary thorough testings.
Jody Donetti @.***> ezt írta (időpont: 2024. dec. 13.,
P, 23:33):

Hi @zorgoz https://github.com/zorgoz , I since published 2 different
previews:

preview-2
https://github.com/ZiggyCreatures/FusionCache/releases/tag/v2.0.0-preview-2
which contained the 4 new options (skip memory/distributed read/write) we
agreed on
preview-3
https://github.com/ZiggyCreatures/FusionCache/releases/tag/v2.0.0-preview-3
which contained even more

Have you been able to take a look at them?
—
Reply to this email directly, view it on GitHub
https://github.com/ZiggyCreatures/FusionCache/issues/322#issuecomment-2542492115,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAL7DERPE36XGJ7BTTPTSTL2FNODNAVCNFSM6AAAAABQV6LOVCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNBSGQ4TEMJRGU
.
You are receiving this because you were mentioned.Message ID:
@.***>


ContractExecutor changes

Add option to never have debug names in functions and enable it on ContractExecutor, fix dangling temp library file

Checklist

[ ] Linked to Github Issue
[ ] Unit tests added
[ ] Integration tests added.
[ ] This change requires new documentation.

[ ] Documentation has been added/updated.

Codecov Report
Attention: Patch coverage is 85.13514% with 11 lines in your changes missing coverage. Please review.

Project coverage is 88.68%. Comparing base (2be717c) to head (6dec2e6).

Files with missing lines
Patch %
Lines

src/executor/contract.rs
75.00%
5 Missing :warning:

src/bin/cairo-native-compile.rs
0.00%
1 Missing :warning:

src/bin/cairo-native-dump.rs
0.00%
1 Missing :warning:

src/bin/cairo-native-run.rs
0.00%
1 Missing :warning:

src/bin/cairo-native-stress/main.rs
0.00%
1 Missing :warning:

src/bin/scarb-native-dump.rs
0.00%
1 Missing :warning:

src/bin/utils/test.rs
0.00%
1 Missing :warning:

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #794   +/-   ##
=======================================
  Coverage   88.68%   88.68%
=======================================
  Files         121      121
  Lines       35458    35509   +51
=======================================
+ Hits        31445    31492   +47
- Misses       4013     4017    +4

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Add support for 'pull_request_target' event

We are trying to run this workflow in simple-icons configuring the token for an organization and we should use the event pull_request_target because we need to give the permission of change project labels to pull requests events opened by external users from their forks, so this pull adds the support for that event.
This could explain #57, but I'm not sure.

This could explain #57, but I'm not sure.

Chiming in here to say that this will probably solve #57, as it is appears to be the same problem as simple-icons is having :+1:

This could explain #57, but I'm not sure.

Chiming in here to say that this will probably solve #57, as it is appears to be the same problem as simple-icons is having :+1:

Sorry guys I've been swamped with running multiple projects at the same time, and balance private life. I'm merging this and creating a new release. I also planning 2 new features:

add the card the bottom of the column based on a option when the issue/PR is created.
remove from the project column when the issue/PR is unlabelled.
Let's see how it goes

@mondeja @ericcornelissen @OrkoHunter the new release is published on GitHub Market


add 307 redirects for v2 app links

maintain SEO and backward link compatibility

Weird, it's working locally but not on the cloudflare branch preview. I guess the cloudflare rules are sufficient


"Presence Management" do not make use of the Person entity

Hi there, I'm new to this integration but I'm liking it a lot so far, using the "valve" proportional control is giving me a far better regulation paired with underfloor radiant heating compared to the stock one.
Is your feature request related to a problem? Please describe.
I'm noticing that the presence management feature do not make use of the person entity.
Describe the solution you'd like
It would be useful to have the option to use the person "home" and "away" state as a trigger for occupancy instead of exposing another boolean sensor. It would also be great if the occupancy could switch between eco, comfort and boost mode instead of applying a different set point.
Thank you all, great work!

As for the presets, I‘m personally also a bit overwhelmed with eco/comfort/boost all having an _away preset too (plus a motion/activity preset). If I‘d design something just for myself, I‘d have 4 presets:

vacation (away longer than a day)
eco (when at work and for some rooms at night)
comfort (default when at home and awake)
boost (when sick)

…but from what I see having „only“ 4 presets isn‘t enough for others. :)

It would be useful to have the option to use the person "home" and "away" state as a trigger for occupancy instead of exposing another boolean sensor.

This should definitively work out the box. The only limitation is that groups of person don't work because a group of person is not a person in HA (bug ?).  So if you give one person, this should work (this is my test case so I think it is working) and you have more than one person you should do a template binary_sensor with occupancy

As for the presets, I‘m personally also a bit overwhelmed with eco/comfort/boost all having an _away preset too (plus a motion/activity preset). If I‘d design something just for myself, I‘d have 4 presets:

Hello @maia, I didn't understand why this response to this question. Is this related ?

As for the presets, I‘m personally also a bit overwhelmed with eco/comfort/boost all having an _away preset too (plus a motion/activity preset). If I‘d design something just for myself, I‘d have 4 presets:

Hello @maia, I didn't understand why this response to this question. Is this related ?

I was just a reply to „ It would also be great if the occupancy could switch between eco, comfort and boost mode instead of applying a different set point.“ from @albertofralbe above, thought he is referring to the _away presets, but maybe I misunderstood him?

... from @albertofralbe above, thought he is referring to the _away presets, but maybe ...

Ok. I don't understand he need another preset but more instead of using another set a temperature for the same preset, he would prefer to switch preset depending of occupancy (like it is done for Motion and Activity preset). That is my understanding.

Hello @albertofralbe ,

I'm new to this integration but I'm liking it a lot so far, using the "valve" proportional control is giving me a far better regulation paired with underfloor radiant heating compared to the stock one.

Great news !

It would be useful to have the option to use the person "home" and "away" state as a trigger for occupancy instead of exposing another boolean sensor.

This should definitively work out the box. The only limitation is that groups of person don't work because a group of person is not a person in HA (bug ?). So if you give one person, this should work (this is my test case so I think it is working) and you have more than one person you should do a template binary_sensor with occupancy

I encountered the same issue.
I think in PresenceBinarySensor, you should not just check for STATE_ON / STATE_OFF but also for STATE_HOME / STATE_NOT_HOME.
from homeassistant.const import STATE_ON, STATE_OFF,STATE_HOME, STATE_NOT_HOME
...
    async def async_my_climate_changed(self, event: Event = None):
        """Called when my climate have change"""

        _LOGGER.debug("%s - climate state change", self._attr_unique_id)
        old_state = self._attr_is_on
        # Issue 120 - only take defined presence value
        if self.my_climate.presence_state in [STATE_ON, STATE_OFF, STATE_HOME, STATE_NOT_HOME]:
            self._attr_is_on = self.my_climate.presence_state == STATE_ON || STATE_HOME
            if old_state != self._attr_is_on:
                self.async_write_ha_state()
        return

Hello @ben-ty ,
Thanks for your suggestion but the presence sensor management is in base_thermostat.py here:
async def _async_update_presence(self, new_state):
        _LOGGER.info("%s - Updating presence. New state is %s", self, new_state)
        self._presence_state = new_state
        if self._attr_preset_mode in HIDDEN_PRESETS or self._presence_on is False:
            _LOGGER.info(
                "%s - Ignoring presence change cause in Power or Security preset or presence not configured",
                self,
            )
            return
        if new_state is None or new_state not in (
            STATE_OFF,
            STATE_ON,
            STATE_HOME,
            STATE_NOT_HOME,
        ):
            return
        if self._attr_preset_mode not in [PRESET_BOOST, PRESET_COMFORT, PRESET_ECO]:
            return

        new_temp = self.find_preset_temp(self.preset_mode)
        if new_temp is not None:
            _LOGGER.debug(
                "%s - presence change in temperature mode new_temp will be: %.2f",
                self,
                new_temp,
            )
            await self._async_internal_set_temperature(new_temp)
            self.recalculate()

And it takes STATE_OFF,  STATE_ON,  STATE_HOME,  STATE_NOT_HOME as you can see. This is why it works for a single person in the presence sensor configuration.
The code you are showing in not the right one. This piece of code only listen to the presence_state of the VTherm itself which can only be 'on' or 'off'.
I hope it is clear.
You are not the first to ask this, but this doesn't work for groups of person, and I don't remember exactly why (i believe that a group of person is not an occupancy sensor but i'm not sure).

@jmcollin78 Sorry but presence_state of the VTherm itself is not on or off when a person (we don't speak about a group of persons) entity is selected for presence detection... it's home / not_home ;)
presence_state = self.hass.states.get(self._presence_sensor_entity_id)
--> Take a look at https://github.com/home-assistant/core/blob/dev/homeassistant/components/person/init.py
The code in base_thermostat.py is ok (the right preset is applied) BUT the code in binary_sensor.py need to be modified to handle home / not_home state so the sensor on the VTherm device display the right status.

Ah ok @ben-ty, I got your point. I though we were talking about group of persons. I will do a quick fix today.

In release 4.1.0. I cannot totaly test it in my environment. Please have a test in yours and keep me in touch.
Don't hesitate to reopen if not fixed.
Thanks for your report.


Missing game

Describe the bug
I have Stellaris on Paradox, and it had been showing up in Galaxy as expected, but about a week or so ago it disappeared. (It stopped showing up when I disconnected and reconnected the integration, to deal with some connection issues I'm having as described in #3. If the issues are related they could be merged, but since this is a more recent bug, it seemed distinct). As suggested in the Common Problems page, I synced the integrations in Galaxy and checked the log file, and it's sending a blank list for "owned_games". Stellaris is the only game I have, so I don't know if it's specific to Stellaris or if all games would be missing. And in case it's relevant: I don't currently have it installed through Paradox, and I also own the game on my synced Steam account.
To Reproduce
I'm not sure what changed to make it stop working, or if others are having similar problems, so I don't know what would need to be done to reproduce it. If there's anything I can do to help troubleshoot it, please let me know.
Expected behavior
I expected Stellaris to show up in my games again after re-connecting the Paradox integration. It seems strange to have suddenly stopped.
Attached logs
plugin-paradox-bfa5a6c9-r0c3-5g28-b921-f4cd75d4999a.log

Looking through my log file more carefully and the changes made in commit 299bc981, it looks like it's getting Stellaris as owned in the response from Paradox, but it's being filtered out by the new check in backend.py for "paradox builds" in game['platforms'], because the response shows the platforms as being only ['steam', 'linux', 'mac', 'windows'].
Recently, I purchased a new DLC from Paradox and it does have "paradox builds" listed. So my gut suggests this only shows up for games purchased directly through Paradox, not those purchased on Steam. But that's just a guess. (If someone else has Stellaris maybe they can confirm?)
If it's helpful, I'd be willing to take a shot at trying to work out a fix for this (though I can't promise I can figure it out). But I don't know much about the inner workings of Galaxy integrations or the Paradox API, so is there some documentation I could reference for that? And what was the reason the check for "paradox builds" was added in the first place?

Hi, plugin currently do not support games purchased by steam. Is your paradox launcher able to launch it? Did you connected your steam and paradox accounts? https://www.paradoxplaza.com/steamactiviation.html

Oh okay, it's good to know it's not just a bug. It does work through the paradox launcher though. (and my steam & paradox accounts are connected)
But wow thanks for all the info! That's everything I was hoping for.
I trawled through the responses used by https://accounts.paradoxplaza.com/games to see how they manage it, since Stellaris shows up on this page as well. In the products response it doesn't seem to have anything to distinguish Stellaris (as purchased on Steam) from other games from the connected account that don't work through the paradox launcher. So I think the key is the skus request, where "paradoxLauncher" is a platform for Stellaris, but not for the other games that don't work.
I should have time after work to put something together to try.

@barthisius thanks for contribution! I'm marking as fixed.


Upgrade glam from 0.8.7 to 0.9.3

There was a breaking change from glam 0.8 to 0.9 which made Vec3 no longer use SIMD meaning its size and alignment changed. Because bevy is re-exporting glam's math types I think it would be good to get this change in so less users are affected by it further down the track. The Vec3A type was added to glam which has the SIMD implementation.
I see you commented on the glam issue tracking this change so hopefully the breaking change isn't a horrible surprise! (https://github.com/bitshifter/glam-rs/issues/36)
This PR could break some Vec3 GLSL uniform bindings although I didn't notice any Vec3 uniforms when looking at the source.
glam 0.9.3 also added Mat4::perspective_rh removing the need for your own implementation.
I tried this change with a few of your examples and everything seemed to work. The spawner example seemed a little faster with this change.

This is definitely a welcome change, but last time i checked there was a case where we relied on the old alignment in one of our shaders. Lemme take a look and make sure this doesn't break anything.

(CI breakage was my fault)

I had a bit of a hunt around but didn't find anything, that said I am not familiar with bevy. While I couldn't find any vec3 uniforms if someone did use one bad things might happen. The Vertex format appeared to use arrays rather than glam types so they looked OK. bevy looks great btw!

It looks like I removed the type I was worried about during a Bevy UI refactor. I'm gonna run some quick validations on my end, but this looks good to go.

This is good to go, but I'm having issues getting CI to pass. Its failing on the bevy_ron crate. Earlier we pushed a fix to master, but retrying the github action appears to keep using the old version? Idk how to force it to test a merge with the latest master. (im not new to git or CI, but I am new to Github Actions and github CI)

I can try update the PR with latest master, see if that helps

brilliant. thanks!


Section to display archived project

There should be a section just like Trash or Starred to group and view all the archived projects.
And also I guess this should be visible to admins.

May be a filter option in the dashboard > projects view to filter

Hiding the Search tab(not showing the private projects).

Will be added as a part of the filters


.Net: Update classes so namespaces are consistent and match project location

Motivation and Context

Description

Contribution Checklist

[ ] The code builds clean without any errors or warnings
[ ] The PR follows the SK Contribution Guidelines and the pre-submission formatting script raises no violations
[ ] All unit tests pass, and I have added new tests where possible
[ ] I didn't break anyone :smile:

Thanks for:

Splitting the ServiceCollection in it's own class, the other connectors are doing in the same, this is a good move.
Making internal the missing request/response Models, missed that.

REgarding the namespace change I don't fully agree, as this defeats the purpose of having specific modality namespaces where classes that could be in it are all mixed in Core.


ModelSpeedup cannot speed up FasterRCNN

Describe the bug:
Hi,
ModelSpeedUp cannot speed up FasterRCNN's GeneralizedRCNNTrasnform.
It returns ImageList, which is not supported currently.
Thank you!
Followings are debugging logs.
(torch) ainl@ainl-main-ubuntu:~/library/dummy$ python playground/nni_issue_faster_rcnn/main.py
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and will be removed in 0.15, please use 'weights' instead.
  warnings.warn(
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and will be removed in 0.15. The current behavior is equivalent to passing `weights=None`.
  warnings.warn(msg)
2023-02-16 12:01:13.265568: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-02-16 12:01:13.381621: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2023-02-16 12:01:13.768699: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-11.8/lib64::/home/ainl/tensorrt/TensorRT-<IP_ADDRESS>/lib
2023-02-16 12:01:13.768758: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-11.8/lib64::/home/ainl/tensorrt/TensorRT-<IP_ADDRESS>/lib
2023-02-16 12:01:13.768765: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torch/nn/functional.py:3896: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
  (torch.floor((input.size(i + 2).float() * torch.tensor(scale_factors[i], dtype=torch.float32)).float()))
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/models/detection/anchor_utils.py:121: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
  torch.empty((), dtype=torch.int64, device=device).fill_(image_size[0] // g[0]),
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/models/detection/anchor_utils.py:122: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
  torch.empty((), dtype=torch.int64, device=device).fill_(image_size[1] // g[1]),
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/models/detection/rpn.py:99: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
  A = Ax4 // 4
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/models/detection/rpn.py:100: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
  C = AxC // A
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/ops/boxes.py:157: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
  boxes_x = torch.min(boxes_x, torch.tensor(width, dtype=boxes.dtype, device=boxes.device))
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/ops/boxes.py:159: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
  boxes_y = torch.min(boxes_y, torch.tensor(height, dtype=boxes.dtype, device=boxes.device))
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torch/__init__.py:833: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
  assert condition, message
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/models/detection/transform.py:298: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
  torch.tensor(s, dtype=torch.float32, device=boxes.device)
/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/torchvision/models/detection/transform.py:299: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
  / torch.tensor(s_orig, dtype=torch.float32, device=boxes.device)
[2023-02-16 12:01:46] start to speedup the model
[2023-02-16 12:02:15] infer module masks...
[2023-02-16 12:02:15] Update mask for model.transform
Traceback (most recent call last):
  File "/home/ainl/library/dummy/playground/nni_issue_faster_rcnn/main.py", line 66, in <module>
    speedup.speedup_model()
  File "/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/nni/compression/pytorch/speedup/compressor.py", line 546, in speedup_model
    self.infer_modules_masks()
  File "/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/nni/compression/pytorch/speedup/compressor.py", line 383, in infer_modules_masks
    self.update_direct_sparsity(curnode)
  File "/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/nni/compression/pytorch/speedup/compressor.py", line 250, in update_direct_sparsity
    _auto_infer.update_direct_sparsity()
  File "/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/nni/compression/pytorch/speedup/infer_mask.py", line 349, in update_direct_sparsity
    raise ex
  File "/home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages/nni/compression/pytorch/speedup/infer_mask.py", line 346, in update_direct_sparsity
    _mask, _constant = self.isconstants(tout.clone().detach())
AttributeError: 'ImageList' object has no attribute 'clone'

Output type:<torchvision.models.detection.image_list.ImageList object at 0x7fe6e119e6d0>
Target module: GeneralizedRCNNTransform(
    Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    Resize(min_size=(800,), max_size=1333, mode='bilinear')
)

Environment:

Python version: 3.9
NNI/Torch version:

(torch) ainl@ainl-main-ubuntu:~/library/dummy$ pip show nni torch
Name: nni
Version: 2.10
Summary: Neural Network Intelligence project
Home-page: https://github.com/Microsoft/nni
Author: Microsoft NNI Team
Author-email<EMAIL_ADDRESS>License: MIT
Location: /home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages
Requires: astor, cloudpickle, colorama, filelock, json-tricks, numpy, packaging, pandas, prettytable, psutil, PythonWebHDFS, pyyaml, requests, responses, schema, scikit-learn, scipy, tqdm, typeguard, typing-extensions, websockets
Required-by:
---
Name: torch
Version: 1.12.1+cu116
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page: https://pytorch.org/
Author: PyTorch Team
Author-email<EMAIL_ADDRESS>License: BSD-3
Location: /home/ainl/anaconda3/envs/torch/lib/python3.9/site-packages
Requires: typing-extensions
Required-by: basicsr, deepspeed, facexlib, gfpgan, onnx2torch, realesrgan, thop, timm, torch-tensorrt, torchaudio, torchvision

Reproduce the problem

Code|Example:

import torch
import torchvision
from torchvision.models.detection.faster_rcnn import FastRCNNPredictor, TwoMLPHead
from torchvision.models.detection.rpn import AnchorGenerator
from torchvision.models.detection import FasterRCNN

# Define the model
num_classes = 13

#### vgg11
backbone = torchvision.models.vgg11(pretrained=False).features
backbone.out_channels = 512

anchor_generator = AnchorGenerator(sizes=((32, 64),), aspect_ratios=((0.5, 1.5),))
roi_pooler = torchvision.ops.MultiScaleRoIAlign(featmap_names=['0'], output_size=3, sampling_ratio=1)
resolution = roi_pooler.output_size[0]
representation_size = 384
box_head = TwoMLPHead(backbone.out_channels * resolution ** 2, representation_size)
box_head.fc7 = torch.nn.Linear(representation_size, 768)
representation_size = 768
box_predictor = FastRCNNPredictor(representation_size, num_classes)
model = FasterRCNN(
    backbone,
    # num_classes=num_classes,
    rpn_anchor_generator=anchor_generator,
    box_roi_pool=roi_pooler,
    box_head=box_head,
    box_predictor=box_predictor,
)

class FasterRcnnWrapper(torch.nn.Module):
    def __init__(self, model):
        super().__init__()
        self.model = model

    def forward(self, inputs, labels=None):
        output = self.model(inputs, labels)
        if labels is not None:
            return {
                'loss': sum(loss for loss in output.values())
            }
        else:
            return {
                'output_bbox': torch.stack([it['boxes'] for it in output], dim=0),
                'output_cls': torch.stack([it['labels'] for it in output], dim=0),
                'output_prob': torch.stack([it['scores'] for it in output], dim=0),
            }

model = FasterRcnnWrapper(model)

model_input = (torch.zeros((1, 3, 720, 1280), dtype=torch.float32, device='cpu'))

config_list = [{
    'sparsity_per_layer': 0.3,
    'op_types': ['Conv2d']
}, {
    'exclude': True,
    'op_names': ['model.rpn.head.bbox_pred','model.rpn.head.bbox_pred']
}]
from nni.compression.pytorch.pruning import L2NormPruner
pruner = L2NormPruner(model, config_list, mode='dependency_aware', dummy_input=model_input)
_, masks = pruner.compress()
pruner._unwrap_model()
from nni.compression.pytorch.speedup import ModelSpeedup
speedup = ModelSpeedup(model, model_input, masks, map_location='cpu')
speedup.speedup_model()

nni didn't support ImageList I guess, and there is a similar ticket https://github.com/microsoft/nni/issues/5345 .

hello @gmlwns2000 @zhiqwang , yes, nni didn't support ImageList, I will give a workaround soon

Hi @J-shang , is there any update on the workaround?


Add Mongo Functionality

Adds additional Dockerfile for Mongo build.
Updated  build/deployment configs for Mongo
Update backup.sh script for Mongo
Update documentation and example in backup.conf

Thanks for this.  I'll review as soon as I can.  I've got some mongo databases I can test this on.

Merged into a separate branch so we can do some additional changes and cleanup.


Failing to find a link (via href id) in Rspec/Capybara test of Rails + paperclip + factory_girl_rails + simple_form

Hi,
In Ruby (2.4.0) on Rails (5.0.1), I am using paperclip to add images to a Post model and factory_girl_rails to create posts with images. I also use simple_form. The actual app works just fine when tested locally in the browser. My Post model is:
class Post < ApplicationRecord
  validates :image, presence: true
  has_attached_file :image, styles: { :medium => "640x" }
  validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end

However, this Rspec/Capybara test fails:
scenario 'or via individual post pages linked from index' do
  post = create(:post)
  visit '/'
  find(:xpath, "//a[contains(@href,'posts/1')]").click
  expect(page.current_path).to eq(post_path(post))
end

The error message is:
Failure/Error: find(:xpath, "//a[contains(@href,'posts/1')]").click

     Capybara::ElementNotFound:
       Unable to find xpath "//a[contains(@href,'posts/1')]"

The post counter never resets to 0 on completion after the test is completed. I did a save_and_open_page and the actual link on the tested page is something like this:
'posts/37'
The number at the end increases every time I run my tests. I believe this is because:

some other tests before the one above actually fill in and submit forms (successfully).
simple_form somehow does not reset its id numbering to 0 and simply goes on. I got this impression from here: http://stackoverflow.com/questions/24853066/having-trouble-testing-upload-file-with-capybara-attach-file-method.

Any idea how to fix this? Is this a simple_form bug that I can circumvent? Or could I write the test in a different way to target that specific link?
Thanks!

I think you should try to use the post.id to find the correct link.
Please use StackOverflow for questions/help, where a wider community will be able to help you. We reserve the issues tracker for issues only. Thank you!