After update to 1.9, specific combination doesn't work, cannot isolate issue

The combination worked prior to 1.9-
Expected behavior
The clipboard item should be surrounded by the snippet:
{panel:title=#{cursor}|borderStyle=solid|borderColor=#CCC|bgColor=#c6f1ff}#{clipboard}{panel}
Actual behavior
The snippet does not appear. The clipboard text appears, but is not surrounded by the other text in the snippet. The cursor appears at a certain point inside the text.
Only occurs with some text. Here is an example:
`I'm following up on your question about which invoice was missed. It seems we have payments for all your invoices except INV12209, which I have attached a copy of to this e-mail.
Let me know if you have any questions, and when the payment can be made on the invoice.
Thanks so much!`
Steps to reproduce the behavior

Add the snippet
Copy the provided text
Execute the snippet with the keyword

Operating system
Windows 10 Pro 64bit x64-architecture

I tried a number of things but couldn't work out why the specific combination of this snippet and certain text seems to fail. It seems to work with certain text but not others. Other snippets including my keyboard work with this text.

Hi @cortstar.
I think I found what the problem is (an issue with the final positioning of the cursor). Here is a build with a potential fix. Could you please test it and let me know if it solves your issue:

Installer
Portable Edition

I'm closing the issue as it is blocking the release of v1.10. @cortstar If the issue is still there, please re-open.

Just confirming that the fix worked for me, thanks

Great. Thanks you for the feedback.


lmdb windows bug fixed

The problem with windows and lmdbjava is described in the following issue about lmdbjava:
https://github.com/lmdbjava/lmdbjava/issues/68
I tried to use the lmdbjava-<IP_ADDRESS> but it didn't work. So one of the changes necessary for this to work in windows is to change the maxDBsize from 1TB to 1GB, or to a smaller size than the computer disk.
Another problem with windows was the fact that the test weren't deleting the Temporary Folders and this was filling up the disk. Main cause was the fact that not all connections were being closed. Except the Binders Test which were blocking in LMDBBinderStore.Close() and the tests never closed their connections.
I tested these changes in Windows and Mac. They seem to be working ok.

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

@ricardoffmartins - great job thanks very much.
This closes bug https://github.com/Tesco/mewbase/issues/127


Exit translation dialogue

Now has:

CANCEL - that does not save
SAVE - that saves

I feel it's incomplete and confusing, say you hit back arrow by mistake then you can't cancel the dialogue, and if you hit the CANCEL button you actually erase you translated strings.
Better:

CANCEL - cancel the dialogue
DON'T SAVE - and exit translation
SAVE - and exit translation

Sorry for the problems this (probably) caused!

It did not cause anything, as I just used the app to test the features and not to actually translate.


Improve retries for failed Requests

Issue
Performing retries on failed Rest requests could be easier.
Acceptance Criteria

For Rest Requests make it easy to implement retries.

@dvonthenen

This is done... has been for a while


CSV or TSV output from stock ticker

There should be a way to obtain CSV or TSV output from the stock ticker. Such data could be easily plotted with R, for example.

This applies to the trade reporter now as well.

#36 added TAQ support to the stock ticker.

#41 added TSV support to the trade reporter.


Clone rb-select to rb-select-control

TP: https://rockabox.tpondemand.com/entity/9373
Be good for someone with strong ng chops than me to check I've remembered everything.
Cloning to a new component rather than renaming the existing component means we can hold off doing a major release of ui_components for a little while.

Like so? If it's good, I'll squash before merge (more conscious of this now I have to do release notes!)


[DO NOT MERGE] Cosmos DB Private Link Resources Swagger

Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

Automation for azure-sdk-for-python

Automation for azure-sdk-for-go

Can one of the admins verify this patch?

Looks good. signing off from ARM side.

@ayanMSFT , please ping me when it's ready to merge.

@raych1 This change is ready to merge


add mdm_ip when install sds

Hello Perreault
I agree with you and edited the commit.
Marry Christmas

Thanks for the contribution.
Merged and Merry X-Mas


APNS 429

@lts-po the APNS service is getting rate limited

Looks like device-specific & if there's multiple unread on the device it does not send more


1 GB persisted space too small for custom envs

@julienchastang, I created a custom conda env, only to find that at 3GB, it was larger than the 1GB of persisted space I had available.   I think the user space should be increased to 10GB, to allow a couple of custom environments.

Out of curiosity, why is this conda environment so large?

You think 1GB is large?    I don't have any less than 1GB.  They range from 1.8 to 4.5GB.
There are a lot of big packages is why they are big!
Here's an example env file that creates my IOOS environment:
https://raw.githubusercontent.com/ioos/notebooks_demos/master/environment.yml

jovyan@jupyter-julienchastang:/opt/conda/envs$ df -h
Filesystem      Size  Used Avail Use% Mounted on
none             59G   18G   41G  30% /
tmpfs            15G     0   15G   0% /dev
tmpfs            15G     0   15G   0% /sys/fs/cgroup
/dev/sda1        59G   18G   41G  30% /etc/hosts
/dev/sdb        976M  348M  561M  39% /home/jovyan
shm              64M     0   64M   0% /dev/shm
tmpfs            15G     0   15G   0% /sys/firmware

What about reusing /opt/conda/envs/?  You have a lot more space there and it is writeable by the user I believe.

Writable, but also not persisted,  right?

As I understand it, everything that is not in /home/jovyan is tied to the Docker file system so when the container gets restarted by Kubernetes, that information is lost. @zonca is this right? So, in sum, the conda environment is persisted as long as the container is alive.

@julienchastang you are right, but I think @rsignell-usgs meant persisted across restarts of the container.
I also think that 1GB is a bit too small, is 10 GB feasible in the Jetstream allocation?

Right, persisted across restarts of the container. Yes, 10GB should be feasible.

@zonca actually, how do you increase disk space?
singleuser:
  capacity: 10Gi

seems to have no effect
jovyan@jupyter-throwaway:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          58G  5.5G   53G  10% /
tmpfs            64M     0   64M   0% /dev
tmpfs            15G     0   15G   0% /sys/fs/cgroup
/dev/sdb        976M  2.6M  958M   1% /home/jovyan
/dev/sda1        58G  5.5G   53G  10% /etc/hosts
shm              64M     0   64M   0% /dev/shm
tmpfs            15G     0   15G   0% /proc/acpi
tmpfs            15G     0   15G   0% /proc/scsi
tmpfs            15G     0   15G   0% /sys/firmware

I think it affects only newly created volumes

Right. The volume you see above was newly created. This is a "fresh"  (experimental) jupyterhub.

https://zero-to-jupyterhub.readthedocs.io/en/latest/user-storage.html#size-of-storage-provisioned
it's under storage

Correct!
singleuser:
  storage:
    capacity: 10Gi


get/saveLibraryEntry substr() misused

(not sure if this is the right way, since its my first contribution to an open project - please let me know if I did something wrong or should do something better)
This fixes #10  (I opened this issue a month ago)
Problems found / fixed:

string.substr(start, length)
length is optional & the number of characters to extract. If omitted, it extracts the rest of the string.
if (path.substr(0) != "/") { ...};
can't work.  replaced with:
path.substr(0,1) != "/";

empty path in  getLibraryEntry

on empty path ( When "Open Library" is selected) it still adds a / to the key this prevents the refresh ( deleting from  libraryCache) to work.
( in getLibraryEntry the var path is later used in qkey so can't modify it similar as in saveLibraryEntry )
snippet:

  if (path != "" && path.substr(0,1) != "/") {
           var key = appname+"/lib/"+type+"/"+path;
        } else {
            var key = appname+"/lib/"+type+path;
        }

(add-on no problem fix)
The gui checks that that filename ends with .js  but it does allow multiple slashes .  For instance:

or even:

To avoid multiple slashes in the cloudant key  (gives a "undefined" entry in the UI dir listing)
multiple slashes are striped from the path with:

var p = path.split("/");
p = p.filter(Boolean);
path = p.slice(0,p.length).join("/")

It should work (and its tested)  with my bluemix account. However there are probably still some unexpected things u can do with the dir / file name since its not really good checked.

Hi, thanks for this.
As per our contribution guidelines for this repo, we require all commits to be signed - see https://github.com/ibmets/node-red-bluemix-starter/blob/master/CONTRIBUTING.md#developers-certificate-of-origin for details.
 Alternatively, we can manually apply the fixes and thank you for identifying them.
Let me know - we want to get the boilerplate updated this week and keen to get this rolled in.

OK done,  hope I did it right.
(I just recommited with "signed-off", and synced with my clone.  Using VS-Code.  The "pull request" seems to import the new commits automatically ...)
Greetings from Heidelberg - Michael

Close enough - thanks!


Storage configurations host/port (mongoDB/elasticsearch)

may reuse storage configuration in core.

elasticsearch host/port/tls
mongodb host/port

Probably already implemented in core with storage configurations.
Just make sure to document how it works.

Use chili-core configuration, conf/system/storage.yaml - see README.md. The file is created on first startup.


E-mail workers in response to exit survey comments

One click message sending would help us respond to questions in the exit survey.

See e913aa609440b64c2e98c56b53743049fe4da667, and tested on sandbox!

Looks great! We're now 200% spammier!
Jokes aside, this will make it much easier to contact workers if we think something weird has happened to them.


[BUG] Cycling Mesh.sets_to_int_data / Mesh.int_data_to_sets may drop tag names

The following cycle
from meshio import Mesh
mio = Mesh([[0., 0.], [0., 1.], [1., 0.], [1., 1.]], {'triangle': [[0, 1, 2], [1, 2, 3]]}, cell_sets={'tag': [[0]]})
mio.sets_to_int_data()
mio.int_data_to_sets()

will drop the tag name tag and replace it with set0 while introducing the new tag name set-1:
In [4]: mio
Out[4]:
<meshio mesh object>
  Number of points: 4
  Number of cells:
    triangle: 2
  Cell sets: set-1, set0

This happens because the call to Mesh.sets_to_int_data uses the fallback value -1 for the triangle having the index 1 as it is not part of any cell_sets. The subsequent call to Mesh.int_data_to_sets cannot find any name for -1 and, therefore, it will use the nondescriptive names.
Should we ignore the fallback value -1 in Mesh.int_data_to_sets? E.g.,
modified   src/meshio/_mesh.py
@@ -335,6 +335,7 @@ class Mesh:

             # this call can be rather expensive
             tags = np.unique(np.concatenate(data))
+            tags = tags[tags != -1]

             # try and get the names by splitting the key along "-" (this is how
             # sets_to_int_data() forms the key
@@ -363,6 +364,7 @@ class Mesh:

             # this call can be rather expensive
             tags = np.unique(data)
+            tags = tags[tags != -1]

             # try and get the names by splitting the key along "-" (this is how
             # sets_to_int_data() forms the key

Or is there a danger of losing some data? Could the value -1 be meaningful as something else than a fallback value?

Note that it's pretty easy to make sure that every element is part of some cell_sets but I'm not sure if that should be required in all cases.

Perhaps we could error out if not all cells are part of exactly one set. We should at least print a warning. Let me see...

I'm also looking at a regression where the tag names are not correctly matched, i.e. if there are multiple entries in cell_sets = {'tag1': ..., 'tag2': ...} and then a call to sets_to_int_data will combine those to cell_data = {'tag1-tag2': ...} then the subsequent call to int_data_to_sets will mix up tag1 and tag2. I'm still investigating and trying to produce a minimal example, I'll open another issue for that.

Here is the example:
from meshio import Mesh
from numpy import array, int64

mio = Mesh(
    array([[0., 0.],
           [1., 0.],
           [0., 1.],
           [1., 1.]]),
    {
        'triangle': array([[0, 1, 2],
                           [1, 2, 3]]),
        'line': array([[0, 1],
                       [0, 2],
                       [1, 3],
                       [2, 3]]),
    },
    cell_sets={
        'test': [array([], dtype=int64), array([1])],
        'sets': [array([0, 1]), array([0, 2, 3])],
    }
)

Now observe:
conda-shell-chrootenv:tom@tunkki:~/src/meshio2$ ipython -i regression.py

In [1]: mio.cell_sets
Out[1]:
{'test': [array([], dtype=int64), array([1])],
 'sets': [array([0, 1]), array([0, 2, 3])]}

In [2]: mio.sets_to_int_data(); mio.int_data_to_sets()

In [3]: mio.cell_sets
Out[3]:
{'sets': [array([], dtype=int64), array([1])],
 'test': [array([0, 1]), array([0, 2, 3])]}

Separate issue -> separate report, please.

Separate issue -> separate report, please.

Thanks, will do: #1165


EEG experiments not working with Muse2 via EEG Notebooks on Mac

I have created a virtual environment and I am trying to run the SSVEP experiment via EEG notebooks. On my command line, I execute the command "python run_notebook.py" and choose the appropriate device and configurations. It connects to the Muse and the stimulus presentation appears, but it doesn't seem to record and store any of the data and I also get an error at the end "Value error: need at least one array to concatenate".

Hi Kushal.
One possibility here is that the experiment setup processes are taking longer than 10s to start, and so the record process is timing out before any data is saved.
Could you repeat with, say, 30s for the duration option. Same error?

Also, do you get the same error for all 3 experiment options?

Interestingly enough I am getting the exact opposite error now. The data is recording but no stimulus is shown when using the Muse2.

@kushaalrao I just pushed a fix that remedied my errors. Could you update and rerun and see if you errors still persist? If so, I can begin to figure out what is wrong there.

I ran it again with a recording duration of 30 seconds, and it says that it was able to successfully run and record the file. However, I can't seem to access the file path that it stored the recording in. When I try to step  through the directory in terminal. it says no such file or directory exists

I have the same issue sort of. I get no file recorded although the error it outputs is different. And this depends on the mode of execution. Let's be more precise. If I run in terminal 'eegnb runexp -ip' then I input all the values correctly and  I get the PTB sound from psychopy error.
EEG device successfully connected!
Press [ENTER] when ready to begin...
Traceback (most recent call last):
File "/Users/andraderenew/opt/anaconda3/envs/eeg-notebooks/bin/eegnb", line 33, in
sys.exit(load_entry_point('eeg-notebooks', 'console_scripts', 'eegnb')())
File "/Users/andraderenew/opt/anaconda3/envs/eeg-notebooks/lib/python3.7/site-packages/click/core.py", line 829, in call
return self.main(*args, **kwargs)
File "/Users/andraderenew/opt/anaconda3/envs/eeg-notebooks/lib/python3.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/Users/andraderenew/opt/anaconda3/envs/eeg-notebooks/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/andraderenew/opt/anaconda3/envs/eeg-notebooks/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/andraderenew/opt/anaconda3/envs/eeg-notebooks/lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/Users/andraderenew/eeg-notebooks/eegnb/cli/main.py", line 55, in runexp
run_introprompt()
File "/Users/andraderenew/eeg-notebooks/eegnb/cli/introprompt.py", line 132, in main
run_experiment(experiment, record_duration, eeg_device, save_fn)
File "/Users/andraderenew/eeg-notebooks/eegnb/cli/utils.py", line 38, in run_experiment
module.present(duration=record_duration, eeg=eeg_device, save_fn=save_fn)  # type: ignore
File "/Users/andraderenew/eeg-notebooks/eegnb/experiments/visual_ssvep/ssvep.py", line 20, in present
record_duration = np.float32(duration)
TypeError: float() argument must be a string or a number, not 'EEG'
0.7603 	WARNING 	PTB audio lib was requested but not loaded: psychtoolbox audio failed to import
0.7863 	WARNING 	For experiments that use audio stimuli, timing will be much better if you upgrade your PsychoPy installation to a 64bit Python3 installation and use the PTB backend.
Also I have in this issue one doubt. Muse is never connected correctly although it says here in my code that it connected correctly.
Also I can point out that if I execute the code from python console then the experiments run and it finishes but it never saves and data recorded. My guess is because it never actually gets connected properly. I do have all libraries required. I even have python 3.7 although I run everything in ARM processor M chip apple big sur 11.3.1.

I don't quite follow! Can anyone explain how will this be solved? Sorry for not knowing much of the dynamics here on github.


wasm: migrate to V8's native Bazel rules.

Fixes #15145.
Signed-off-by: Piotr Sikora<EMAIL_ADDRESS>

WIP as a few things are still failing (and were working fine using the existing gn / genrule_cmd build):

Coverage fails either due to relocation R_X86_64_PC32 out of range (when V8 is linked statically with linkstatic=1) or due to an undefined symbol: v8_Default_embedded_blob_code_ (when V8 is linked dynamically with linkstatic=0). The former works for me locally, so it might be an issue with the CI (although, I'm using the same version of LLVM). The latter sounds like an issue with V8's Bazel integration.

MSan tests (not covered by the CI) are reporting reading uninitialized values. Note that the existing gn build is using v8_target_cpu=arm64 when building on x86_64, so I'm not sure why the resulting binary works at all, since we're not running it under a simulator. When I change the existing gn build to target host CPU, then MSan tests also fail, so I'm willing to let this one go.

Please note that this migration involves a dozen or so patches to V8's Bazel integration, but I think merging this is acceptable once the individual patches are merged into V8.
cc @victorgomes @thhous-msft

Also, Docker multiarch is failing due to running out of the disk space. @phlax any ideas how to fix that?

Docker multiarch is failing due to running out of the disk space. @phlax any ideas how to fix that?

We download ~1GB of artefacts before running the docker build. Im guessing we can delete those files once they have been loaded. Not sure if that will be enough, but worth a try. I can raise a PR to do it and you can pick the commit to see if it helps
https://dev.azure.com/cncf/envoy/_build/results?buildId=96709&view=logs&j=2229703b-209a-5c70-43aa-3eacf674f12a&t=5618bc45-8382-5c2b-9d5d-3e45721ec0f0&l=18

docker PR is here #19294

/retest

@PiotrSikora checking CI further it seems the size of the binaries and dwp files increase significantly with this PR
$ tar zvtf ~/Downloads/thispr/envoy-contrib_binary.tar.gz
drwxr-xr-x envoybuild/envoygroup 0 2021-12-16 04:47 build_envoy-contrib_release/
-r-xr-xr-x envoybuild/envoygroup<PHONE_NUMBER> 2021-12-16 04:47 build_envoy-contrib_release/envoy.dwp
-r-xr-xr-x envoybuild/envoygroup  525520416 2021-12-16 04:47 build_envoy-contrib_release/envoy
-r-xr-xr-x envoybuild/envoygroup       8936 2021-12-16 04:47 build_envoy-contrib_release/su-exec
drwxr-xr-x envoybuild/envoygroup          0 2021-12-16 04:47 build_envoy-contrib_release_stripped/
-rwxr-xr-x envoybuild/envoygroup   65236544 2021-12-16 04:47 build_envoy-contrib_release_stripped/envoy
$ tar zvtf ~/Downloads/envoymain/envoy-contrib_binary.tar.gz
drwxr-xr-x envoybuild/envoygroup 0 2021-12-16 05:30 build_envoy-contrib_release/
-r-xr-xr-x envoybuild/envoygroup<PHONE_NUMBER> 2021-12-16 05:30 build_envoy-contrib_release/envoy.dwp
-r-xr-xr-x envoybuild/envoygroup  463377288 2021-12-16 05:30 build_envoy-contrib_release/envoy
-r-xr-xr-x envoybuild/envoygroup       8936 2021-12-16 05:30 build_envoy-contrib_release/su-exec
drwxr-xr-x envoybuild/envoygroup          0 2021-12-16 05:30 build_envoy-contrib_release_stripped/
-rwxr-xr-x envoybuild/envoygroup   63976896 2021-12-16 05:30 build_envoy-contrib_release_stripped/envoy

the PR i raised should help in terms of CI, but wondering about the size change

@phlax yeah, both builds are quite different (including the default options and flags), so I'm trying to figure out what's the issue, but it's getting a bit tricky since the coverage works for me locally using the same rules and RBE toolchain.
Thanks for looking! The size difference might actually have given me an idea... Let's see if snapshot compression helps.

@phlax @wrowe any ideas why Bazel suddenly cannot find CMake.exe when building zlib on Windows? I cannot think of anything in this PR that would affect it.

Let's wait a few days before merging this, to make sure there are no issues with the genrule_repository version (#19652).
/wait

/retest
/wait

/retest

/wait

@lizan @phlax it looks that docker linux multiarch started faliling with No space left on device a few days ago. Could you take a look at it?

@PiotrSikora i can take a look again, but i think the problem is the change in the binary/dwp size
this is particularly painful for docker (esp x-building) because it not only adds these to the image, but sends the "context" to docker daemon - ie copies them repeatedly
probs there are things we can do to recover diskspace, eg aggressively pruning between build runs (which will also potentially slow the build down), but i think the underlying problem is the change in size of the bins - are we expecting them the size increase going forward ?

@phlax the stripped binary size changed by ~1 MiB, so that's probably negligible.
I'm assuming that unstripped binary size increased significantly because V8 is now a part of Bazel's build graph, so it's built and linked as part of Envoy, whereas previously we linked against a static library built in the release mode with minimal debug symbols. DWP previously didn't cover V8 for the same reason.
Basically, it's the cost of using Bazel rules for dependencies. We could potentially try to strip debug info in V8, but I'm not sure if that's a good precedent, since we don't fine-tune builds of other dependencies.

Basically, it's the cost of using Bazel rules for dependencies. We could potentially try to strip debug info in V8, but I'm not sure if that's a good precedent, since we don't fine-tune builds of other dependencies.

k, so if we want to keep the larger sizes, and its failing the docker build, we either need to increase sizes, or do some kind of pruning between builds - cc @lizan

Yeah we want to keep the larger debug symbol size, so we need to do some hack to accommodate this. @phlax are we on track to deprecate alpine images?

are we on track to deprecate alpine images?

i would say yes - i think the only thing that will need to be updated apart from ci/infra is some docs
my only slight concern is that it wasnt really announced anywhere - more just discussed in channels/tickets

issue raised re removing alpine images #19781

my only slight concern is that it wasnt really announced anywhere - more just discussed in channels/tickets

We probably want to email the Envoy mailing lists:

https://groups.google.com/g/envoy-announce
https://groups.google.com/g/envoy-users

@phlax I found some other potential optimization of the current Docker build as well, will post a PR soon.

https://github.com/envoyproxy/envoy/pull/19789 should save enough space for docker multiarch

#19789 should save enough space for docker multiarch

Unfortunately, that didn't help (System.IO.IOException: No space left on device after 1h48m).

removing alpine is still an option, but im not sure it would make that big a difference. We can also try pruning intermediate build images between builds i think

removing alpine is still an option, but im not sure it would make that big a difference. We can also try pruning intermediate build images between builds i think

Could you create a draft PR, so that I could cherry-pick either of those changes to see if it helps?

there is a PR to remove the alpine build queued to land on main here https://github.com/envoyproxy/envoy/pull/19837

@PiotrSikora doesnt seem to have helped - ill fork your Pr and see if i can debug and figure out a way to prune between builds

added #19845

from initial debugging it doesnt seem like there is to much worth pruning between builds for a couple of reasons - one is that there is hardly any space in the first place, also the build are building the same images, just with different envoy artefacts, so there is nothing really prunable there
i have added a commit to remove the images that (i think) come preinstalled in azp, lets see if that works/helps

Finally! #19848 (with temurin-*-jdk purged per @lizan's comment) allows for the succesful Docker multiarch build.
We're good to go once it's merged! Thanks a lot for helping to make a room for this, @phlax @lizan.

/retest

/lgtm deps


Add calculations for Apex commitment

https://github.com/filecoin-project/rust-fil-proofs/issues/563
Although implementation is currently deprioritized, we should know the maximum constraint savings possible for variant constructions. Some of these are relatively straightforward to implement, and we don't yet know that some variant will not be required.
Note that some variants will also depend on max circuit-verifying-key size.

Ubercalc now belongs in Filecoin spec.


[Rule] Variable assigned but not used

Add the checker
Add test case
Close #209

Codecov Report

Merging #393 (22edc08) into master (f8c413e) will increase coverage by 0.02%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #393      +/-   ##
==========================================
+ Coverage   97.84%   97.87%   +0.02%
==========================================
  Files          22       22
  Lines        2093     2121      +28
==========================================
+ Hits         2048     2076      +28
  Misses         45       45

Impacted Files
Coverage Δ

robocop/checkers/misc.py
98.02% <100.00%> (+0.44%)
:arrow_up:

Continue to review full report at Codecov.

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

Misc comments: how about checking [Arguments] as well? Also variable can be passed as kwarg l:
Keyword param=${value}

Another cases I can think of:
Keyword  argument value with ${value} embedded

(arguments would need to be parsed through some kind of regex)
Class instances or dict variables :
${class_instance} Keyword
$(dict} Keyword
Another Keyword ${class_instance.attribute}
Another Keyword ${dict['key']}

You code matches most of the cases - I listed missing ones in previous comments.
Advice for architecture: like I mentioned in other comment you can store token in dictionary, for example:
{
  '${normalized_name}: Token(),
  ${other_normalized_name}: Token()
}

when calling use_variables, you can pop from dict (and ignore if it's not present - most likely variable is global). Remember to correctly recognize variable name - match anything before . or [ for example.
When adding to dictionary (ie. on assign, [Return], [Arguments]) you can extract varable name (in case its "Some ${embedded} variable" or key=${value}), normalize it and check if it already exist in dictionary - if yes, you're trying to redefine variable that was not used so it should be reported. If it doesn't exist yet - just add it.
At the end of Keyword/Test Case if can call for check_unused like you're doing now.

Misc comments: how about checking [Arguments] as well? Also variable can be passed as kwarg l:
Keyword param=${value}

Should the error message and error number be different? Such as argument-variable-not-used

Misc comments: how about checking [Arguments] as well? Also variable can be passed as kwarg l:
Keyword param=${value}

Should the error message and error number be different? Such as argument-variable-not-used

Yes, good idea to split it into separate rule.

Another case I came up with (yeah it's one of the most trickiest rules so far): variable can be used in IF condition or FOR LOOP, not only in keyword call.

There are still same cases needed to handle

Keyword    ${var_one + var_another}
Keyword    ${var by ${place}}

Hi, what's the status, are you working on it or you're awaiting our further review? I apologise but I got lost in the middle of conversation so you could be waiting for review etc and I prefer to confirm (it's fine if you're working on it, just checking if you need any input from me).

Sorry for not updating the code or status
I would close the PR until I finish adjusting the code


feat(model): Support deploy rerank model

Description
DB-GPT now supports deploying rerank models in SMMF, also supports deploying in standalone mode.
How Has This Been Tested?
Method 1: Deploy rerank when starting DB-GPT webserver.

Download the rerank model and put it in the models directory.
Here we take the bge-reranker-base model as an example.

cd DB-GPT/models
git clone https://huggingface.co/BAAI/bge-reranker-base

Modify .env file, just like the following:

## Rerank model
RERANK_MODEL=bge-reranker-base
## If you not set RERANK_MODEL_PATH, DB-GPT will read the model path from EMBEDDING_MODEL_CONFIG based on the RERANK_MODEL.
# RERANK_MODEL_PATH=
## The number of rerank results to return
RERANK_TOP_K=3

Restart the DB-GPT webserver.
Use Chat Knowledge to test the rerank model.
If we start a rerank model, it will automatically use the rerank model to rerank the
results after retrieving the results from the vector store.

Method 2: Deploy rerank in SMMF.

Download the rerank model and put it in the models directory.
Here we take the bge-reranker-base model as an example.

cd DB-GPT/models
git clone https://huggingface.co/BAAI/bge-reranker-base

Start Model Controller.

dbgpt start controller --port 8000

Start rerank worker.

dbgpt start worker --model_name text2vec \
--rerank \
--model_path /app/models/bge-reranker-base \
--worker_type bge-reranker-base \
--port 8004 \
--controller_addr http://<IP_ADDRESS>:8000

Use rerank model in DB-GPT.
Modify the .env file, just like the following:

## Rerank model
RERANK_MODEL=bge-reranker-base
## If you not set RERANK_MODEL_PATH, DB-GPT will read the model path from EMBEDDING_MODEL_CONFIG based on the RERANK_MODEL.
# RERANK_MODEL_PATH=
## The number of rerank results to return
RERANK_TOP_K=3

Start the DB-GPT webserver

dbgpt start webserver --remote_rerank

Use Chat Knowledge to test the rerank model.

Method 3: Use the rerank model through the API of API Server.

Deploy the rerank model in the cluster as the above method.
Start apiserver

dbgpt start apiserver \
--controller_addr http://<IP_ADDRESS>:8000 \
--api_keys EMPTY \
--port 8100

Use rerank model in DB-GPT.
Modify the .env file, just like the following:

## Common HTTP rerank model
RERANK_MODEL=rerank_proxy_http_openapi
rerank_proxy_http_openapi_proxy_server_url=http://<IP_ADDRESS>:8100/api/v1/beta/relevance
rerank_proxy_http_openapi_proxy_api_key=EMPTY
rerank_proxy_http_openapi_proxy_backend=bge-reranker-base

Start the DB-GPT webserver
Use Chat Knowledge to test the rerank model.

Snapshots:
Include snapshots for easier review.
Checklist:

[x] My code follows the style guidelines of this project
[x] I have already rebased the commits and make the commit message conform to the project standard.
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] Any dependent changes have been merged and published in downstream modules

Usage: dbgpt start worker [OPTIONS]
Try 'dbgpt start worker --help' for help.

Error: No such option: --rerank

@fangyinc
Usage: dbgpt start worker [OPTIONS]
Try 'dbgpt start worker --help' for help.

Error: No such option: --rerank

dbgpt start worker --worker_type text2vec --help

ok, this command should be work_type instead of model_name
dbgpt start worker --worker_type text2vec \
--rerank \
--model_path /app/models/bge-reranker-base \
--model_name bge-reranker-base \
--port 8004 \
--controller_addr http://<IP_ADDRESS>:8000

Description
DB-GPT now supports deploying rerank models in SMMF, also supports deploying in standalone mode.
How Has This Been Tested?
Method 1: Deploy rerank when starting DB-GPT webserver.

Download the rerank model and put it in the models directory.
Here we take the bge-reranker-base model as an example.

cd DB-GPT/models
git clone https://huggingface.co/BAAI/bge-reranker-base

Modify .env file, just like the following:

## Rerank model
RERANK_MODEL=bge-reranker-base
## If you not set RERANK_MODEL_PATH, DB-GPT will read the model path from EMBEDDING_MODEL_CONFIG based on the RERANK_MODEL.
# RERANK_MODEL_PATH=
## The number of rerank results to return
RERANK_TOP_K=3

Restart the DB-GPT webserver.
Use Chat Knowledge to test the rerank model.
If we start a rerank model, it will automatically use the rerank model to rerank the
results after retrieving the results from the vector store.

Method 2: Deploy rerank in SMMF.

Download the rerank model and put it in the models directory.
Here we take the bge-reranker-base model as an example.

cd DB-GPT/models
git clone https://huggingface.co/BAAI/bge-reranker-base

Start Model Controller.

dbgpt start controller --port 8000

Start rerank worker.

dbgpt start worker --model_name text2vec \
--rerank \
--model_path /app/models/bge-reranker-base \
--worker_type bge-reranker-base \
--port 8004 \
--controller_addr http://<IP_ADDRESS>:8000

Use rerank model in DB-GPT.
Modify the .env file, just like the following:

## Rerank model
RERANK_MODEL=bge-reranker-base
## If you not set RERANK_MODEL_PATH, DB-GPT will read the model path from EMBEDDING_MODEL_CONFIG based on the RERANK_MODEL.
# RERANK_MODEL_PATH=
## The number of rerank results to return
RERANK_TOP_K=3

Start the DB-GPT webserver

dbgpt start webserver --remote_rerank

Use Chat Knowledge to test the rerank model.

Method 3: Use the rerank model through the API of API Server.

Deploy the rerank model in the cluster as the above method.
Start apiserver

dbgpt start apiserver \
--controller_addr http://<IP_ADDRESS>:8000 \
--api_keys EMPTY \
--port 8100

Use rerank model in DB-GPT.
Modify the .env file, just like the following:

## Common HTTP rerank model
RERANK_MODEL=rerank_proxy_http_openapi
rerank_proxy_http_openapi_proxy_server_url=http://<IP_ADDRESS>:8100/api/v1/beta/relevance
rerank_proxy_http_openapi_proxy_api_key=EMPTY
rerank_proxy_http_openapi_proxy_backend=bge-reranker-base

Start the DB-GPT webserver
Use Chat Knowledge to test the rerank model.

Snapshots:
Include snapshots for easier review.
Checklist:

[x]  My code follows the style guidelines of this project
[x]  I have already rebased the commits and make the commit message conform to the project standard.
[x]  I have performed a self-review of my own code
[x]  I have commented my code, particularly in hard-to-understand areas
[x]  I have made corresponding changes to the documentation
[x]  Any dependent changes have been merged and published in downstream modules

用rerank是不是意味着检索的top选项增大，比如之前默认返回5个最相似的，现在用了rerank 模型，可以默认返回15个，重排序返回top5，这样模型真的会对15个候选进行二次排序？


Use Passed Along Target and Minor Fixes

When I was testing webmention fragments, I discovered Semantic Linkbacks stripped the fragment if enabled. This addresses that by using the target URL if passed in the commentdata array and only using the return from get_permalink if nothing is passed.
It also checks to make sure a string and an array are pased to compare_urls, due an array to string conversion error I was getting.

thanks!


Update troubleshooting.md

Documenting issue and solution referenced in #6150
Effectively, the hash the device provides is unpadded base64 but autopilot (or, at least, the intune UI) can't parse unpadded base64 if it doesn't align properly. Most of the time the data aligns in a way where that doesn't matter. In rare cases it seems it doesn't align right though, and that's where we need to manually pad the payload for autopilot to accept it.
This snippet could be modified and added to the get-windowsautopilotinfo script to autopad directly in the script, effectively fixing this. But some people might still be using the old version of the script, so it might be good to still document this at least for a while.
#Put the hash string in this variable
$hash = ""
#Loop switch
$while = $true
#While the hash is still malformed, keep appending to the hash
while ($while){
    #Try decoding the hash
    try{
        #Convert from Base64 to byte array, but don't return the result
        [System.Convert]::FromBase64String($hash) >> $null
        #If the conversion succeeds, stop the loop
        $while = $false
        }
    #If the base64 can't be decoded
    catch{
        #If there's two consecutive = chars at the end, remove both and add an A
        if(($hash.ToCharArray()[-1]-eq '=') -and ($hash.ToCharArray()[-2]-eq '=')){
            #Replace = with nothing and overwrite with the result
            $hash=$hash.replace("=","")
            #Append A
            $hash=($hash+"A")
        }
        #Otherwise, add an =
        else{
            #Append =
            $hash=($hash+"=")
        }
    }
}
#Return the fixed hash
$hash

Closes #6150

@ShrCaJesmo : Good job, well done. I did not even get time to read through it before it got merged. Anyway, I trust that the research you posted in the issue ticket was as good a foundation as any, so my hat off to you for pulling through on this one. Thank you for the PR and the ticket you based this on. 👍

Happy to help! It was a fun one to figure out. Thanks for your assistance with the process!

That said, I just realized that the "decision tree" I tried making lost it's structure, so the actual steps to manually remediate the hash are a bit hard to read
It should have looked like this:

Does decoding the hash fail?

Yes: Are the last two characters "="?

Yes: Replace both "=" with a single "A" character, then try again
No: Add another "=" character at the end, then try again

No: That hash is valid

OK, very well. Thanks for keeping up with the content and not letting it go. Feel free to create a new PR to resolve that bit (and maybe reference it with "Ref. #6155 " instead of the Close/Fix method in the new PR).

BTW, not sure if you have located a way to update your local public branch to create a new PR branch from. Myself, I use a client tool, Git Extensions, to update my local clone on my computer.

I'm not sure I'm following - do you mean like pulling the current state of the https://github.com/MicrosoftDocs/windows-itpro-docs into my fork of it so it's up to date? I've figured out how to make a PR in the other direction to merge the upstream changes, but that's the best I've got - i imagine my fork's pretty outdated at this point. My access to github is pretty limited in general, so I'm limited to the browser without extensions.

OK, fair enough, it does not seem to be very important in this case. My comment is probably based on how overzealous I tend to be regarding my own PRs, but as long as you don't get any file conflict, you are basically good to go as is. (Ref. #6156 ) Just as an F.Y.I. I am diagnosed with a mild form of autism (highly functioning), so I often tend to be too focused on details, versus keeping an overview of "the big picture".

As someone who tends to overlook the details, thanks for being on the ball! I really appreciate all your help with this!

And I appreciate your coding skills (other than my own) and knowing when to spot IT Pro topical stuff and also report them correctly.. :)


updating names, add more docs

Updating our sample Circom circuits
Forge v1 requires a name change for the main Circom file of a circuit upload.  Previously we required main.circom, however this creates conflicts when compiling via c++.  From now on the main circuit file must be named circuit.circom.  This PR updates the sample Circom circuits.  An extended README has been added which explains the four Circom sample circuits
Reviewer Instructions

[x] Proofread the new circom/README.md
[x] For each sample circuit, upload to Forge (with circuit type Circom C Groth16 bn254) and prove.  Ensure there are no errors:

[x] multiplier2
[x] sudoku
[x] sha256
[ ] foodie (the inputs for this proof require running the circom/foodie/query_model.py script, see the README in that directory for more details)

So, one key change is that I think we should put a bit more emphasis on the use of the input.json file. The quick line, in the README.md about using the input file was glossed over by me.

I ran into the following error when trying to run the foodie_ml `upload_circuit' code:
Signing in.
Traceback (most recent call last):
  File "/forge/frameworks/circom/sample_data/foodie/upload_circuit.py", line 29, in <module>
    ACCESS_KEY = auth_response["access"]
KeyError: 'access'
root@0afe0afbb3c7:/forge/frameworks/circom/sample_data/foodie# ```
I updated the credential.json file. Is there something that I've skipped?

I was able to get foodie working with a few changes:

line 68 "circuit_input": json.dumps(query), -> "proof_input": json.dumps(query)
line 122 validity = verify_request["valid"] -> validity = verify_request["success"]


Refine .gitignore

Ignore IDEA user configuration, specifically data sources.

No more dataSources on .gitignore from 144e5d90134a6b6f1a6f29807f18034975441836 onwards


add PDFs of schematics and PCB layout

Currently we only have the project files for the PCB (dev board v.0.2). Would be nice to have "rendered" PDFs too.

I updated the schematic. Please take a look and check all connections.

All PWM pins are used -> 2x ULN and 16 motor pins (8 are effectively used)
The buzzer is connected to IO4
Breakout pins (2x7) added
ESP pin connections changed according to the new breakout pin image.
OLED polarity (VCC GND) swapped

Schematic_TactJam.pdf

I updated the schematic. Please take a look and check all connections.

All PWM pins are used -> 2x ULN and 16 motor pins (8 are effectively used)
The buzzer is connected to IO4
Breakout pins (2x7) added
ESP pin connections changed according to the new breakout pin image.
OLED polarity (VCC GND) swapped

Schematic_TactJam.pdf

@M6QF please push the files to the develop branch. Afterwards I will review the schematic. Thanks

@M6QF please push the files to the develop branch. Afterwards I will review the schematic. Thanks


updated wwdc (4.1.3)

[x] Commit message includes cask’s name (and new version, if applicable).
[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} left no offenses.

Apologies, didn’t see this one and already merged another with an extra change.


Rate-limiting function

As far as I can tell, there is no option to rate-limit throughput in az.
For example, when doing a large BLOB upload, it would be nice to be able to limit to x Mbps.

As far as I can tell, there is no option to rate-limit throughput in az.

Correct.
For az storage blob upload @williexu, do you know?

@udf2457 there is currently no option to limit throughput for az storage blob upload.
@zezha-msft is this possible through the storage sdk?

Hi @williexu and @udf2457, you are right that the SDK does not support rate limiting at the moment. It is on our radar but hasn't become a priority.
@udf2457, what's the reason that you need the rate-limit? Is it because of Storage account throttling(service returns 503s if ingestion is too high)?

@zezha-msft
The primary reason is simply efficient use of client-side banwidth.  Sometimes, for whatever reason, it is not appropriate to allow Azure ingestion to take 100% of available bandwidth.  As outlined above, achieving rate limiting using built-in OS tools such as tc is difficult and error prone due to complex and poorly documented syntax as well as limited support options because of the lack of community usage of tc.
So I was thinking more in terms of throughput rate-limiting when ingesting large BLOBs, rather than pure rate-limiting, such as you outline, in relation to ingestion-rate.

@udf2457  thanks for the explanation!
I've added this item to our backlog and will discuss it with my team.

Since this is on Storage team's backlog and is a service/SDK issue instead of a CLI issue, I'm closing this thread.

@tjprescott Just to check we're singing from the same hymn sheet here.... the Storage team are planning to implement throughput rate-limiting server-side ?!?
I'm not fussed how you do it, whether server-side or client-side CLI, as long as someone implements it !  Doing it server-side would certainly be innovative.  :smiley:

It could be done server-side or client-side via the SDK.


[FLINK-16666][python][table] Support new Python dependency configuration options in flink-java, flink-streaming-java and flink-table.

What is the purpose of the change
*This pull request adds basic support for the proposed Python Dependency configuration options in flink-java, flink-streaming-java and flink-table.
The python dependencies will be registered to distributed cache while the configure() method of ExecutionEnvironment/StreamExecutionEnvironment is called.
The metadata of Python dependencies will be transfer to TableConfig and convert to PythonConfig when translating the Python UDF RelNode to Python UDF Operator. *
Brief change log

Move PythonOptions to flink-core.
Define the new Python Dependency configuration options in PythonOptions.
Add PythonDependencyManager and use it to process the Python Dependency configuration options while the configure() method of ExecutionEnvironment/StreamExecutionEnvironment is called.
Change access level of the StreamExecutionEnvironment#getConfiguration() method from protected to public and add @Internal annotation.
Transfer the metadata of Python dependencies from the configuration of the
ExecutionEnvironment/StreamExecutionEnvironment to TableConfig before translating the Table API job.

Verifying this change
This change is already covered by existing tests, such as PythonOptionsTest, PythonDependencyManagerTest.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (yes)
If yes, how is the feature documented? (docs)

@HuangXingBo Thanks for your comments! I have updated this PR.

@dianfu Thanks for your comments! I have updated this PR.

@flinkbot attention @aljoscha @guoweiM It would be helpful if you can have a look on this PR as it makes some changes on flink-core, flink-java and flink-streaming-java. :)

@dianfu Thanks for your comments! I have remove the unnecessary space.

I commented on the Jira issue: https://issues.apache.org/jira/browse/FLINK-16666?focusedCommentId=17070813&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17070813.

@dianfu @aljoscha I have updated this PR according to the discussion result on the jira issue. Please take a look.

@dianfu Thanks for your review! I have updated this PR. As it seems not possible to keep atomic between FLINK-16666 and FLINK-16668, I have cherry-picked the content of FLINK-16668 to this PR.

@dianfu Thanks for your review! I have updated this PR according to your comments.

@dianfu Thanks for your review. I have updated according to your comments.

@WeiZhong94 Thanks a lot for the update. LGTM. Will merge once the travis/azure turns green.


Session.End() quit the whole application

Hi, I want to end the experiment but not necessarily end the runtime after ending a session. Right now the app exits, or if I am in the Unity Editor to runtime ends. For example, I wanna show a menu and possibly go back to the experiment after calling Session.instance.End() . Is that possible?

@jackbrookes hi, do you have any thoughts on this? :)

There is no default behaviour in UXF that ends the application after a session. Perhaps you have a method hooked up to your OnSessionEnd event that quits the application when the session ends?


Make build scripts executable

Hopefully will fix CI issue merged in #922
cc @HarelM

Looks good so far, I've created a bump version PR:

#925

Dang, so close! This should fix that latest error: #926


Complete the cache implementation for Configuration Management

Currently, the cache implementation for the Configuration Management feature is partially completed. [1]
[1] https://github.com/wso2/carbon-identity-framework/blob/master/components/configuration-mgt/org.wso2.carbon.identity.configuration.mgt.core/src/main/java/org/wso2/carbon/identity/configuration/mgt/core/dao/impl/CachedBackedConfigurationDAO.java

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


Add Vani Rao as meeting-notes maintainer

Add Vani Rao as a seed maintainer of meeting-notes based on their activity and as per - https://github.com/notaryproject/meeting-notes/issues/5
Signed-off-by: vaninrao10<EMAIL_ADDRESS>

Closing as it is overwritten by #12


Run tests under Python3.8

With the release, yesterday, of pony 0.7.11, tests can now run under Python 3.8

Tests fail in python 3.8 with the lowest versions of the requirements because test dependencies include psycopg2>=2.7.5. Psycopg could not build with Python 3.8 until version 2.8.4, released a few days ago

Coverage needs an update too.


The global output cannot be used correctly after upgrade v3.5.3

Pre-requisites

[X] I have double-checked my configuration
[X] I can confirm the issue exists when I tested with :latest
[X] I have searched existing issues and could not find a match for this bug
[X] I'd like to contribute the fix myself (see contributing guide)

What happened/what did you expect to happen?
Hi all,
We face a regression problem after upgrading to release v3.5.3. It should be related to this PR.
We have a global artifact which is used and exported in two different steps WITH different values:

e2e-test-inject-runner-context
e2e-test-output-testupdate

In the previous release, we can get the current global artifact from the last step (e2e-test-output-testupdate).
But in the new release v3.5.3 , the global artifact will be overwritten. so the artifact will be picked up randomly from these two steps which make our process failed.
I found there is a NEW change here:
https://github.com/argoproj/argo-workflows/blob/main/workflow/controller/taskresult.go#L89-L90
  // Add outputs to global scope here to ensure that they are reflected in archive.
  woc.addOutputsToGlobalScope(newNode.Outputs)

Which will overwrite the global artifact after every task and should be the reason to make our process failed. We can find the overwriting log here:
time="2024-01-19T02:03:53.554Z" level=debug msg="task result name:\ne2e-test" namespace=action-dev2 workflow=e2e-test
time="2024-01-19T02:03:53.554Z" level=debug msg="Marking task result complete e2e-test" namespace=action-dev2 workflow=e2e-test
time="2024-01-19T02:03:53.554Z" level=info msg="overwriting workflow.outputs.artifacts.testUpdate: {testUpdate  <nil>  {<nil> &S3Artifact{S3Bucket:S3Bucket{Endpoint:,Bucket:,Region:,Insecure:nil,AccessKeySecret:nil,SecretKeySecret:nil,RoleARN:,UseSDKCreds:false,CreateBucketIfNotPresent:nil,EncryptionOptions:nil,CASecret:nil,},Key:e2e-test/e2e-test-inject-input-type-instances/testUpdate.tgz,} nil nil nil nil nil nil nil nil}  nil false  false  nil false}" namespace=action-dev2 workflow=e2e-test-1-4065749210214828732

I am not sure if it is a special case that it is not covered well.

start-entrypoint step is a template with some inner steps, and we update the testUpdate global output artifact in these inner steps.
The problem happens in the next step upload-output-type-instances-step just after start-entrypoint, I am not sure if it loads artifacts differently or delays （But it works correctly before).

Before step upload-output-type-instances-step, the status is:

After step upload-output-type-instances-step, sometimes the status is changed to:

Thanks!
Version
v3.5.3
Paste a small workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generation: 21
  generateName: test-artifact-12402-
  namespace: action-dev2
spec:
  activeDeadlineSeconds: 28800
  arguments: {}
  entrypoint: test-root
  serviceAccountName: test
  templates:
  - inputs: {}
    metadata: {}
    name: test-root
    outputs: {}
    steps:
    - - arguments: {}
        name: inject-input-artifact
        template: inject-input-artifact
    - - arguments:
          artifacts:
          - from: '{{workflow.outputs.artifacts.testInput}}'
            name: testInput
          - from: '{{workflow.outputs.artifacts.testUpdate}}'
            name: testUpdate
        name: start-entrypoint
        template: main
    - - arguments:
          artifacts:
          - from: '{{workflow.outputs.artifacts.testUpload}}'
            name: testUpload
        name: upload-output-type-instances-step
        template: upload-output-type-instances
    - - arguments:
          artifacts:
          - from: '{{workflow.outputs.artifacts.testUpdate}}'
            name: testUpdate
        name: upload-update-type-instances-step
        template: upload-update-type-instances

  - inputs: {}
    metadata: {}
    name: main
    outputs: {}
    steps:
    - - arguments:
          artifacts:
          - from: '{{workflow.outputs.artifacts.testInput}}'
            name: input
        name: cp
        template: cp
    - - arguments:
          artifacts:
          - from: '{{workflow.outputs.artifacts.testUpdate}}'
            name: input-parameters
        name: render-update-ti
        template: main-render-update-ti-template
    - - arguments:
          artifacts:
          - from: '{{steps.cp.outputs.artifacts.upload}}'
            name: testUpload
        name: output-testupload
        template: output-testupload
    - - arguments:
          artifacts:
          - from: '{{steps.render-update-ti.outputs.artifacts.render}}'
            name: testUpdate
        name: output-testupdate
        template: output-testupdate

  - container:
      image: alpine:3.7
      command: [sh, -c]
      args: ["sleep 1; echo -n test input > /testInput.yaml; echo -n test update > /testUpdate.yaml"]
    name: inject-input-artifact
    outputs:
      artifacts:
      - globalName: testInput
        name: testInput
        path: /testInput.yaml
      - globalName: testUpdate
        name: testUpdate
        path: /testUpdate.yaml

  - container:
      command: [sh, -c]
      args: ["sleep 1; cp /input /upload"]
      image: alpine:3.7
      name: ""
      resources: {}
    inputs:
      artifacts:
      - name: input
        path: /input
    metadata: {}
    name: cp
    outputs:
      artifacts:
      - name: upload
        path: /upload

  - container:
      image: alpine:3.7
      command: [sh, -c]
      args: ["sleep 1; echo -n change update!!! > /render.yml"]
    metadata: {}
    name: main-render-update-ti-template
    outputs:
      artifacts:
      - name: render
        path: /render.yml

  - container:
      args:
      - sleep 1
      command:
      - sh
      - -c
      image: alpine:3.18.4
      name: ""
      resources: {}
    inputs:
      artifacts:
      - name: testUpload
        path: /typeinstance
    metadata: {}
    name: output-testupload
    outputs:
      artifacts:
      - globalName: testUpload
        name: testUpload
        path: /typeinstance

  - container:
      args:
      - sleep 1
      command:
      - sh
      - -c
      image: alpine:3.18.4
      name: ""
      resources: {}
    inputs:
      artifacts:
      - name: testUpdate
        path: /typeinstance
    metadata: {}
    name: output-testupdate
    outputs:
      artifacts:
      - globalName: testUpdate
        name: testUpdate
        path: /typeinstance

  - container:
      args:
      - sleep 1
      command: [sh, -c]
      args: ["sleep 1; cat /upload/typeInstances/testUpload; cat /upload/typeInstances/testUpload > /upload/result.yaml"]
      image: alpine:3.18.4
      name: ""
      resources: {}
    inputs:
      artifacts:
      - name: testUpload
        path: /upload/typeInstances/testUpload
    metadata: {}
    name: upload-output-type-instances
    outputs:
      artifacts:
      - globalName: uploadresult
        name: uploadresult
        path: /upload/result.yaml

  - container:
      args:
      - sleep 1
      command: [sh, -c]
      args: ["sleep 1; cat /upload/typeInstances/testUpdate"]
      image: alpine:3.18.4
      name: ""
      resources: {}
    inputs:
      artifacts:
      - name: testUpdate
        path: /upload/typeInstances/testUpdate
    metadata: {}
    name: upload-update-type-instances
    outputs: {}

If you run this workflow several times, you will find the final global output artifact will be changed to:

testUpdate is refered to test-artifact-12402-2cntl/test-artifact-12402-2cntl-inject-input-artifact-46224399/testUpdate.tgz
But acutally, it should use the the artifact from later step, like:
test-artifact-12402-2cntl/test-artifact-12402-2cntl-output-testupdate-4251288622/testUpdate.tgz
Please let me know if anything is not clear. Thanks!

### Logs from the workflow controller

```text
kubectl logs -n argo deploy/workflow-controller | grep ${workflow}

time="2024-01-19T02:03:53.554Z" level=debug msg="task result name:\ne2e-test" namespace=action-dev2 workflow=e2e-test
time="2024-01-19T02:03:53.554Z" level=debug msg="Marking task result complete e2e-test" namespace=action-dev2 workflow=e2e-test
time="2024-01-19T02:03:53.554Z" level=info msg="overwriting workflow.outputs.artifacts.testUpdate: {testUpdate  <nil>  {<nil> &S3Artifact{S3Bucket:S3Bucket{Endpoint:,Bucket:,Region:,Insecure:nil,AccessKeySecret:nil,SecretKeySecret:nil,RoleARN:,UseSDKCreds:false,CreateBucketIfNotPresent:nil,EncryptionOptions:nil,CASecret:nil,},Key:e2e-test/e2e-test-inject-input-type-instances/testUpdate.tgz,} nil nil nil nil nil nil nil nil}  nil false  false  nil false}" namespace=action-dev2 workflow=e2e-test-1-4065749210214828732

### Logs from in your workflow's wait container

```text
kubectl logs -n argo -c wait -l workflows.argoproj.io/workflow=${workflow},workflow.argoproj.io/phase!=Succeeded

No error in the wait container

The previous discussion can be found in the issue:
https://github.com/argoproj/argo-workflows/pull/12402

@zhangtbj You marked this as wanting to contribute a fix yourself? I have identified a fix, and am in the process of testing it.

Hi @Garett-MacGowan ,
No, I am waiting for your fix. :)


feat: add margin warning suppression

Not sure this is the best idea, but we are trying cobble together bootstrap v4 with popper without messing with the styles. Accomplishing it with a custom modifier that does check and account for margins when doing element rects https://github.com/react-bootstrap/react-bootstrap/pull/5112
Maybe it's better that we clear the margins manually and do offsets, but I can't think of a way to do that and also respect user overrides of margin.
This seems like it'd be safe to turn off the warning if i know i've handled it?

Another approach could be to move modifier effects before this warning so we could check the margins, store the offsets and then remove the margin on the element

Another approach could be to move modifier effects before this warning so we could check the margins, store the offsets and then remove the margin on the element

That's a lot better, adding an option to disable a warning feels really 🤢

The counter point to that suggestion tho is that, Popper can't know if I have added margin support so the option is helpful for disabling it when it's wrong. Plus there is no runtime behavior change like moving the effect code might have.
I'm a bit torn on which is the best (for our use case) I'd like to not mutate element styles in the effect if possible, but it's also more correct of a solution. I'm not sure if it will break people tho

Would it help if we trigger the warning only if the margins are not equal all around?

good question...let me check

hmm i don't think it'd help, margin is only on the side relevant to the placement.

I have figured out an approach around this warning so maybe nothing is needed after all https://github.com/react-bootstrap/react-bootstrap/pull/5112

Great! Thanks for the help

thanks for the excellent library ya'll


v0.4.0

Bumping versions inline with https://github.com/elastic/terraform-provider-elasticstack/commit/7e3d1129e0c98a218b99887d2a7df9bb18b0b709

@tobio
Hi! Do you have ETA when v0.4.0 is released?

I've been waiting to get the role mapping PR included. I'll get this out in the next few days.

@dimuon are you able to take another quick look at this after rebasing onto main?

@tobio - It looks like this new version wasn't uplifted on the TF Registry, is a resync potentially required to make this available for use via the registry?

Potentially just a conflict between branch and tag names similar to this? - https://github.com/hashicorp/terraform-plugin-sdk/issues/980
Sounds like a resync should work if so as the branch has now been deleted 👍

Thanks for letting me know @RobsonSutton, our repo permissions aren't correct at the moment, so just getting the right auth for my user so I can fix this up. Sorry for the mixup.


feat: Refactor to use SSM ARNs directly from resources

Description

remove the aws_ssm_path variable to get full proper ARN from SSM resources instead of building it manually
Motivation and Context

Breaking Changes

NONE
How Has This Been Tested?

Run with the sample tfvars, added the changes and re-run to get no diffs (aside from regular ECS diff)

Thanks, @DrFaust92 !
v2.18.0 has been just released.


Display last updated field in months instead of days

Fixed by @jollypolly123  in https://github.com/google/devlibrary/pull/336

Thank you @jollypolly123 !! This was a great fix. 🙌


Save Checkpoint File Atomically

This PR:

saves checkpoint atomically by writing to a temporary file, and uses os.rename() to guarantee atomicity.
removes unused chart template: cluster-bindings.yaml and permissions.yaml

Tested on cluster by running bash tests/long-workload/resnet18-cifar10-elastic.sh and the result on tensorboard looks correct.
Closing https://github.com/petuum/adaptdl/issues/70

Codecov Report

Merging #81 (d8b08e8) into master (2148287) will increase coverage by 0.20%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #81      +/-   ##
==========================================
+ Coverage   61.41%   61.61%   +0.20%
==========================================
  Files          30       30
  Lines        2273     2285      +12
  Branches      343      345       +2
==========================================
+ Hits         1396     1408      +12
  Misses        809      809
  Partials       68       68

Impacted Files
Coverage Δ

adaptdl/adaptdl/checkpoint.py
94.00% <100.00%> (+1.89%)
:arrow_up:

Continue to review full report at Codecov.

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


/my-repos functionality

Build repos table
Talk to GitHub repos.
Give a button to user that will initiate the talk

Send user to an intermediary page so that they can confirm which repos they want assignees for.

List any selected repos (read from repos table)

I've ended up implementing a different approach than explained here, but it is completed. Here's notes:

Repos table is built.
We can now talk to GitHub about repos.
Talk is initiated automatically when user goes to /my-repos. This make it by far the slowest page, but it works.
There is no intermediary page, just happens on the scene.
Repos are read from database, and selected repos come up as selected.


'ord' command not recognizing in shell

tried to install using both source binaries and curl --proto '=https' --tlsv1.2 -fsLS https://ordinals.com/install.sh | bash -s. it says "ord already exists in /home/ubuntu/bin" but when i push "ord" in shell it says "command ord not found" ... is there a PATH edit i need to make?

Yes, set PATH to $PATH /home/[your username]/bin.
For me on AWS it's "set PATH $PATH /home/ubuntu/bin".

Hi,
i get the same issue while working on ORD
after usin

g curl --proto '=https' --tlsv1.2 -fsLS https://ordinals.com/install.sh | bash -s and have ord in /home/ubuntu/bin
the o

rd still not install properly
Currently, im running it on AWS. After using "set PATH $PATH /home/ubuntu/bin" as above it show like this:
Any recommendation would be highly appreciated .

You have to update ubuntu to 22.04. See #1430


"Maramureș" county is listed in the drop-down menu

Description:
"Maramureș" county appears in the drop-down menu list alongside the rest of the counties in Romania according to law
Precondition:
The website is up an running.

Step 1
Click on the search bar.

Expected results
The counties appears in the drop-down menu.

Step 2
Scroll down the list

Expected results
The county appears in the drop-down menu as "Maramureș".


Explicitly disable cursor manipulation

I know that cursor manipulation is disabled when output is going to a non-tty output but sometimes that check isn't enough – for example, running tests in Jenkins yields an output file that has control characters and is difficult to parse and it looks like a mess:

In this case, each test name is printed twice and they have leading control chars.
It would be good to have a reporter option to disable such output and print lines in their final form.

It's too old issue, but I don't understand what is the problem.
Please reopen if you still have the problem.


How can I config the IP of machine which I want to store cache?

I don't want to store cache in my node server, it will take a lot of mem. So, how can I config the IP of machine which I want to store cache? Thanks.

See my answer here


GUVNOR-2655: Guided Decision Table: Checkbox remains in row after last row is deleted

See https://issues.jboss.org/browse/GUVNOR-2655

+1

thanks @manstis


Local build problem related to night/midnight theme

When running make serve on the latest GTN version locally, I'm getting:
  Conversion error: Jekyll::Converters::Scss encountered an error while converting 'assets/css/main.scss':
                    File to import not found or unreadable: syntax_highlighting-dark.scss. on line 101
jekyll 3.8.6 | Error:  File to import not found or unreadable: syntax_highlighting-dark.scss. on line 101
make: *** [Makefile:55: serve] Error 1

For sure the file is there and I failed to find the reason for the complaint. My current solution is to remove the problematic line and includes that depend on it.

Hi @wm75, quite strange! I know you're on linux, so, extra odd :) It has worked everywhere else (travis, multiple other linux machines), but, if you find a way to cause it let us know?


Need API call for listing switches

Currently there is no way to tell which switches are registered with HaaS.
Considering HaaS supports a multi-switch environment and that the api calls for port operations require  it will be helpful if we have a call to list the names of the switches registered with HaaS

Is someone working on this right now? If no one, I would like to do it. @SahilTikale

Fixed by #569


feat(protocol-designer): Add multiselect mode UI

Overview
This PR closes #7104 and addresses the tool-tip section of #7105
Changelog

Break out TitlesStepItem (remove dependency on comp-lib TitledList)
Add multiselect toolbar
Add multiselect checkbox(s)
Add new icons to component library

Review requests
Since the initial review I have:

Rebuilt the multiSelectToolbar with primitives
Added a reusable ClickableIcon for the toolbar (it will need to grow when they actually dispatch actions)
Added tests for TitledStepItem

note: this PR does not address the lag we discovered with hovering over step items in longer protocols
Risk assessment
Low, PD only under FF. Please make sure single select step items are unaffected

Oh, can we throw in some unit tests too? might also help sus out what's necessary and what isn't

Oh, can we throw in some unit tests too? might also help sus out what's necessary and what isn't

Just so stuff doesn't get blocked, im gonna address my comments and merge this so we can continue on with https://github.com/Opentrons/opentrons/issues/7105

Just so stuff doesn't get blocked, im gonna address my comments and merge this so we can continue on with https://github.com/Opentrons/opentrons/issues/7105


Adjust nodeinfo user count

Nodeinfo reports all WP users accounts, even though only those with the role author and above can technically post.
$users = \count_users();
Original report @heleucht https://pirati.ca/display/ec054ce7-1363-8f94-6546-944144035152

Makes sense, but it is not true, that commenters are counted, because they will not be added as WordPress users.


Cannot call useEffect in preview component

Describe the bug
I wish to be able to call useEffect in my code, particularly in the preview ./emails/previews/Foo.tsx component. I'm not able though - I'm getting this error:
@org/mailing:dev: error - ../../../node_modules/react/cjs/react.development.js (1634:0) @ useEffect
@org/mailing:dev: error - TypeError: Cannot read properties of null (reading 'useEffect')
@org/mailing:dev:     at useEffect (webpack-internal:///../../../node_modules/react/cjs/react.development.js:1635:21)
@org/mailing:dev:     at Object.Preview (webpack-internal:///./src/moduleManifest.js:663:76)
@org/mailing:dev:     at getPreviewComponent (webpack-internal:///./src/util/moduleManifestUtil.ts:24:43)
@org/mailing:dev:     at getStaticProps (webpack-internal:///./src/pages/previews/[[...path]].tsx:53:104)
@org/mailing:dev:     at Object.renderToHTML (/Volumes/Dev/repos/org-frontend-monorepo/node_modules/next/server/render.tsx:749:20)
@org/mailing:dev:     at runMicrotasks (<anonymous>)
@org/mailing:dev:     at processTicksAndRejections (node:internal/process/task_queues:96:5)
@org/mailing:dev:     at doRender (/Volumes/Dev/repos/org-frontend-monorepo/node_modules/next/server/base-server.ts:1288:30)
@org/mailing:dev:     at cacheEntry.responseCache.get.isManualRevalidate.isManualRevalidate (/Volumes/Dev/repos/org-frontend-monorepo/node_modules/next/server/base-server.ts:1429:24)
@org/mailing:dev:     at /Volumes/Dev/repos/org-frontend-monorepo/node_modules/next/server/response-cache/index.ts:117:28 {
@org/mailing:dev:   page: '/previews/[[...path]]'
@org/mailing:dev: }

To Reproduce
Steps to reproduce the behavior:

Create a preview component for a template
Add import { useEffect } from 'react';
Call

useEffect(() => {
    console.log(1);
  }, []);

within preview component's body
4. Crash
Expected behavior
Calling hooks should be allowed.
Desktop (please complete the following information):

OS: [e.g. iOS]<EMAIL_ADDRESS>Browser [e.g. chrome, safari] irrelevant but<EMAIL_ADDRESS>Version [e.g. 22] 0.8.7

Thanks for making an issue!
Effects are not supported because we just perform a single render to html and send the result. The component is never "mounted" exactly and props never change on the client because the client just gets html.
What would you like the effect to do? Perhaps we can brainstorm another way to accomplish what you're trying to do.

Oh, that's a neat use-case I've never thought of.
I don't think there's a way to accomplish this currently, but we've had a few requests for being able to edit props in the GUI and I'd like to support it.
For your use-case it sounds like we need...

an easy way to edit props in the GUI
a way to do something with those props before rendering

Feature 1 needs some design (@monicakogler <3) but we should just do it.
Hooks would be a nice way to do (2) but I'm a bit scared of mucking with mjml-react. It looks like this person got it to work but I kind of want the rendered email to use the exact html we're sending.
Another possibility for (2) would be to allow for async preview functions and let you edit the arguments of the preview functions via the GUI. This might be nice because you could control which fields are editable and we could generate input UI based on types.
export async function offerBlast(reservationId: string) {

  const response = await fetch(`https://bookbook.com/api/reservation/${reservationId}`);
  const reservation = await response.json();

  return (
    <Offer
      reservation={reservation}
    />
  );
}

One more thought...

URL character limit

https://github.com/sofn-xyz/mailing/issues/136 would solve and I'm happy to prioritize if you want to go that route instead.
It's p2 right now because I don't think anyone uses it really :). I agree this is not the user friendly direction.

I've seen https://github.com/sofn-xyz/mailing/issues/136 and I think it would indeed solve my issue - I'd be able to create a separate page within my main Next.js app that would talk with the mailing API and allow the user to generate html (and even then preview it) based on some arbitrary data passed in via POST request body as the email template props. That should actually work just fine for us! 🙂

Ok sounds good! We'll get that into tomorrow's release. Should be quick. I'll ping back on this thread once it's released.

@klapec I just release 0.8.8 which supports POST to the /api/render method.  Hopefully this unblocks you!  Let us know

@alexfarrill I can confirm your change works as expected. Thank you for the blazing fast🚀 response! 🙂

hell yes. ty @alexfarrill !

Hey @davidgustys! Awesome to hear you guys are finding mailing useful. Chime in here https://github.com/sofn-xyz/mailing/discussions/121 if you have a minute. I'd love to understand use-cases better to prioritize the backlog.
In theory I would like to support hooks, but don't have a clear idea of how we'd do it simply. Beyond what you mention, another advantage of doing rendering in the browser would be easier debugging using react developer tools. That said, there is one big disadvantage / risk: the html you see in the browser might differ from the statically rendered HTML that is sent in emails if you allow hooks to perform updates after the initial render like with normal react. Currently the html in the browser preview is exactly the same html that is used in sending emails which gives me some peace of mind ☺.

I initially wanted to use context with brand details, to later consume deeper in the component tree.

I would recommend using a file with constants exported for this (e.g. theme.ts) and/or composing components. Since the templates must statically compile to HTML this should give you all of the same capabilities as a context object.

mjml-browser

Yes there could be a good solution using mjml-browser but I think it would have to be integrated with mjml-react, not mailing directly. We don't do mjml rendering directly but instead defer to mjml-react to render react -> mjml -> html. You could bring up this issue in the new fork to get their take as well (see where we call it in mjml.ts).

Hi @psugihara, sorry for the late reply, I had an extended weekend.
First of all, thank you for your prompt response.
As mentioned, currently because of your product requirements the "theme" changes based on "templateID"/"brandID" and because of that we are still kinda stateful. Having react context would allow us to basically have nicer less repeating code, and we would avoid the need of passing the "ID" down the component tree.
I understand your concerns and the "clean" approach you are trying to archive without allowing React to have a "state".
But for us having the ability to compose emails the react way (having Initial State) + the nice "Preview" feature provided is the main selling point of using "mailing".
I'm not sure if you have used "next.js" or other similar frameworks before, I think of Initial email rendering as SSR side which does allow initial context; and Preview feature as Client Side.
I'm getting a bit carried away here. For now, we will stick with the strategy of passing the brandID down the component tree, and later experiment with "replacing"/"overriding" mjml-react with mjml-browser they seem to have the same API, maybe it will just work out of the box.

Sounds good. Interested to hear about any good patterns you find as you use Mailing. Also interested in what you find with mjml-browser if you end up going in that direction. I'd like to add it as an option but I'm not sure how we'd do that.
I have used Next extensively, in fact Mailing uses it internally to render the UI in the preview server (but not the email previews because they use the mjml renderer). SSR is a good analog -- all emails must be SSR because no js executes in email clients. So for the simplicity of having one rendering pipeline and to achieve a realistic email client simulation in the previewer, no hooks will run because the react is rendered server-side. This way your preview is 100% the same if you use sendMail to deliver the email to a user or mailing export-previews to export as html.
That said, I hear what you're saying with regards to context and avoiding the need to thread your ID down the component tree and I wish we had a better solution.


feat: Added more data to existing analytics events

Description
This PR adds more data to existing analytics events for audit purposes
Type of change

New feature (non-breaking change which adds functionality)

How Has This Been Tested?

Local tests

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

@vishnu-gp Can you please add the view mode as well to all the analytics events?

/ok-to-test sha=77a7ec8

/ok-to-test sha=c8d415b

@allcontributors add @vishnu-gp as a contributor for code


Add support for silence expiration

Towards: https://github.com/giantswarm/roadmap/issues/739
This PR allow to set expiry date on silences using the value provided in the valid-until label.
The expected date format is 2023-02-23.
Changes:

Expiry date from valid-until annotation is used when it exists
Default expiry date changed from +1000 years to +100 years
Expired silence are not re-created

Tested :heavy_check_mark:

current silences CRs in k8s

$ k get silences -ojson|jq -cr '.items[]|{"name":.metadata.name,"valid-until":.metadata.annotations."valid-until"}'
{"name":"all-kyverno-plugin-and-policy-reporter","valid-until":"2023-03-31"}
{"name":"phoenix-xmass-silence-flowcontrolrejectedrequests","valid-until":"2023-01-07"}
{"name":"phoenix-xmass-silence-flowcontroltoomanyrequests","valid-until":"2023-01-07"}

Before
silence-operator latest version running; all endsAt are shifted 1000 years in the future when created

current silences in alertmanager

$ amtool silence query -ojson|jq -cr '.[]|{"comment":.comment,"endsAt":.endsAt}'
{"comment":"silence-operator-all-kyverno-plugin-and-policy-reporter","endsAt":"3023-02-09T08:24:45.816Z"}
{"comment":"silence-operator-phoenix-xmass-silence-flowcontrolrejectedrequests","endsAt":"3023-02-09T08:24:45.816Z"}
{"comment":"silence-operator-phoenix-xmass-silence-flowcontroltoomanyrequests","endsAt":"3023-02-09T08:24:45.816Z"}

After
silence-operator from this branch deployed; endsAt dates are updated, or the silence are expired/deleted, also expired silence are not re-created.

targets: silences in alertmanager

# updated endsAt date
$ amtool silence query -ojson|jq -cr '.[]|{"comment":.comment,"endsAt":.endsAt}'
{"comment":"silence-operator-all-kyverno-plugin-and-policy-reporter","endsAt":"2023-03-31T00:00:00.000Z"}

# expired/deleted silence
$ amtool silence query --expired -ojson|jq -cr '.[]|{"comment":.comment,"endsAt":.endsAt}'
{"comment":"silence-operator-phoenix-xmass-silence-flowcontroltoomanyrequests","endsAt":"2023-02-23T21:17:23.339Z"}
{"comment":"silence-operator-phoenix-xmass-silence-flowcontrolrejectedrequests","endsAt":"2023-02-23T21:17:23.312Z"}

Logs when freshly deployed showing:

deletion of expired silences
skipped creation for expired silences

What time do silences expire? Is there a risk it expires out of business hours and wakes up oncall person?

That's a good question, We might have them expire at 9 or 10 CET right?

What time do silences expire? Is there a risk it expires out of business hours and wakes up oncall person?

Good point, this would currently expire silences at midnight (e.g. 2023-03-31T00:00:00.000Z). I think we can for now use an arbitrary time like 9am CEST and later add support for time.
Also following cases need to be tested :

Expired silences are re-created once expiry date is updated to a future date
Silence expire at  time (and not in the middle of the night)

This adds:

Expired silences are re-created once expiry date is updated to a future date
Silence expire at time (and not in the middle of the night)

Tested on Gauss

@TheoBrigitte i'm pretty positive you mentionned timezone support will be supported later in the issue so I purposelly ignore dates in there

@TheoBrigitte i'm pretty positive you mentionned timezone support will be supported later in the issue so I purposelly ignore dates in there

That was my own thinking back then, and few discussions later https://github.com/giantswarm/roadmap/issues/739#issuecomment-1478167772 I think its important to add timezone support now as part of this.

I tested the first point and it works like a charm.
I think the other 2 points make sense. Can you open separate issues? I'm trying to deal with some upstream stuff

Alright thank, I created separate issues in the parent one.


⚠ AsianCinema has degraded performance

In cbb008a, AsianCinema ($ACM) experienced degraded performance:

HTTP code: 523
Response time: 16039 ms

Resolved: AsianCinema performance has improved in 3da1a2e after 5 minutes.


runtime: gcc warns about _beginthreadex parameter

Maybe it is not important. But so I don't forget. Failure during TryBots build run of CL 22933:
https://storage.googleapis.com/go-build-log/280cb325/windows-386-gce_045bb639.log
--- FAIL: TestCgoCrashHandler (5.40s)
	crash_test.go:66: building testprogcgo: exit status 2
		# _/C_/workdir/go/src/runtime/testdata/testprogcgo
		.\threadpanic_windows.c: In function 'start':
		.\threadpanic_windows.c:21:26: warning: passing argument 3 of '_beginthreadex' from incompatible pointer type
		  if(_beginthreadex(0, 0, die, 0, 0, 0) != 0)
		                          ^
		In file included from .\threadpanic_windows.c:5:0:
		C:/TDM-GCC-32/include/process.h:100:2: note: expected 'unsigned int (__attribute__((__stdcall__)) *)(void *)' but argument is of type 'unsigned int (*)(void *)'
		  _beginthreadex (void *, unsigned, unsigned (__stdcall *) (void *),
		  ^

And
static unsigned int __attribute__((__stdcall__))
die(void* x)
{
	...
}

gets rid of this warning on my windows/386.
Alex

Related: #14698

Yup, I hit this in https://go-review.googlesource.com/23005


Error handler cleaner registration

Q
A

Is bugfix?
✔

New feature?
❌

Breaks BC?
❌

Tests pass?
✔

This PR allows the error handler (handleException()) to be used when the error handler is not registered.
Currently the error handler works great in a request cycle (because that generally ends after the error handler is called), but causes issues during testing.
Specifically handleException() calling unregister() which changes PHPs global state even when it shouldn't.
This implementation simply stores the registration status and uses that to determine of register() / unregister() should do something.

@SamMousa changelog line?

Does this do sound good?

Bug #17801: Fixed ErrorHandler unregister and register only change global state when applicable (SamMousa)

Yes.

@SamMousa changed your mind?

No it was based on old master branch; I've made a new one

#17804