Redis performance optimization

Bad performance when there are a great many of redis keys,so serialize all the keys when save keys.

No, this just moves the performance penalty from Redis to PHP and it impacts non-array values as well.

You mean we should try to limit array values use ?

You mean we should try to limit array values use?

Yes, that's the source of your problem - Redis doesn't have native support for that structure and therefore you cannot expect it to behave well with it.


\DeclareMathSymbol

Description
There is no public interface for defining new math symbols, maybe taken from the PUA of some font.
Check/indicate

[x] Relevant for XeTeX
[x] Relevant for LuaTeX
[x] Issue tracker has been searched for similar issues?
[x] Reference: https://tex.stackexchange.com/questions/439477/h

Minimal example demonstrating the issue
\documentclass{article}

\usepackage{unicode-math}

% define a font with a NFSS family name
\newfontfamily{\libertine}{Linux Libertine O}[NFSSFamily=libertine]
% declare it as a math symbo font
\DeclareSymbolFont{libertine}{TU}{libertine}{m}{n}
% declare the symbol
\Umathchardef\penguin="3 \symlibertine "E000

\begin{document}

$a\penguin b$

\end{document}

Further details
unicode-math has \__um_set_mathchar:NNnn that could fill the bill, weren't it private. I guess that redefining \DeclareSymbolFont like
\DeclareDocumentCommand{\DeclareMathSymbol}{mmmm}
 {
  \__um_set_mathchar:NNnn #1 #2 { #3 } { #4 }
 }

should also work for standard fonts. Indeed, this appears to work:
\documentclass{article}

\usepackage{unicode-math}

\ExplSyntaxOn
\DeclareDocumentCommand{\DeclareMathSymbol}{mmmm}
 {
  \__um_set_mathchar:NNnn #1 #2 { #3 } { #4 }
 }
\ExplSyntaxOff

% define a font with a NFSS family name
\newfontfamily{\libertine}{Linux Libertine O}[NFSSFamily=libertine]
% declare it as a math symbo font
\DeclareSymbolFont{libertine}{TU}{libertine}{m}{n}
% declare the symbol
\DeclareMathSymbol\penguin{\mathrel}{libertine}{"E000}

% another test
\DeclareSymbolFont{test}{OT1}{cmr}{m}{n}
\DeclareMathSymbol\foo{\mathbin}{test}{`f}

\begin{document}

$a\penguin b\foo c$

\end{document}

Well, there is a small problem: the legacy \DeclareMathSymbol command also accepts a number in the second argument, so possibly  \__um_set_mathchar:NNnn should be  \__um_set_mathchar:Nnnn, with a test for the first argument to be a single control sequence.

Thanks Enrico — that's a good suggestion. In my "original design" of the package I didn't anticipate new symbols in PUA, etc., but that was clearly short-sighted.

As suggested in tex.sx chat, I think the most viable approach first up is to extend 2e — I’ll write something and suggest it to Frank. (In fact, I may already have something in umath2e that never got finished…)

Any progress on this?


Azure App Service fails to swap deployment slots due to http ping failures

Describe the bug
We have a windows App Service, running .NET 6 in West US. When we deploy our application, it sometimes fails with an error on the "swap slot" operation:

Failed swapping site. Error: Cannot swap site slots for site 'my-site' because the 'blue' slot did not respond to http ping.

It is always the same error, and our blue slot always responds successfully to our pings when we hit it manually during these operations.
Further, this doesn't happen consistently, but started to crop up more often (~40-50% of our deploys across two totally separate directories) since 2024-06-28. We have an open support ticket with azure support, but haven't gotten any information, yet and I wanted to open this up to the community to see who else is getting this problem, especially because the previous two GH issues were closed.
This is highly disruptive for our deployments, because when the swap operation hangs and eventually fails, it will hang for 20+ minutes. However, we have seen that restarting the blue slot while the swap is hanging is one way to get things running again, but we don't think that this is an acceptable long term solution.
Related command
Our deployment commands are approximately:

az webapp deployment source config-zip --resource-group rg --name appname --src artifact.zip --slot blue
az webapp deployment slot swap -g rg -n appname --slot blue --target-slot production

Errors
Failed swapping site. Error: Cannot swap site slots for site 'my-site' because the 'blue' slot did not respond to http ping.
Issue script & Debug output
These commands are not failing. It is the swap slot operation in Azure that is failing
Expected behavior
Swap should succeed
Environment Summary
azcliversion: 2.30.0
Additional context

This was reported twice before in GH issues, but closed with no resolution:

https://github.com/Azure/azure-functions-host/issues/8969
https://github.com/Azure/Azure-Functions/issues/2264

We also have an open support ticket with Azure. Ticket ID:<PHONE_NUMBER>008216
We are NOT using App service cache.  Our artifact size is 38 MB

Thank you for opening this issue, we will look into it.

Restarting the slot during swap totally worked in getting my pipeline to go green, which is:

Amazing, would have not thought to do that on my own.
Completely bizarre and doesn't make sense.

I ran into this issue a few months back and honestly can't remember how it got resolved....

My team is experiencing this exact same issue, with a slightly different deployment strategy that I will share in case it is helpful for Azure to isolate the root cause:
# 1 - deploy latest version of docker image in ACR to the Staging slot
az webapp config container set --name app-service-name --resource-group rg-name --docker-custom-image-name image-name-in-ACR --slot Staging
# 2 - restart the Staging slot
az webapp restart --name app-service-name --resource-group rg-name --slot Staging
# 3 - I wrote a custom NodeJs script that polls the staging slot for a successful response to an HTTP GET request. It:
#       - waits 10 seconds after the restart command was issued (to be sure that we're not getting false-positive responses from the previous deployment)
#       - sends an HTTP GET request every 5 seconds until a status code < 400 is received
# 4 - swap the Staging slot into the Production slot
az webapp deployment slot swap --name app-service-name --resource-group rg-name --slot Staging
# step 4 often (yet inconsistently) fails with me message: Cannot swap site slots for site 'app-service-name' because the 'Staging' slot did not respond to http ping.

Step 3 blocks the pipeline's progress until we have reason to believe the Staging slot is healthy. It is essentially an automated way of verifying the original post's claim:

our blue slot always responds successfully to our pings when we hit it manually during these operations... These commands are not failing. It is the swap slot operation in Azure that is failing

The issues described in the original post align with my team's experiences. Specifically

Further, this doesn't happen consistently, but started to crop up more often (~40-50% of our deploys across two totally separate directories) since 2024-06-28.

We don't have such precise times and measurements, but this issue has come up significantly more in the last few months (around June/July 2024)

This is highly disruptive for our deployments, because when the swap operation hangs and eventually fails, it will hang for 20+ minutes. However, we have seen that restarting the blue slot while the swap is hanging is one way to get things running again, but we don't think that this is an acceptable long term solution.

We're having the exact same experience.

I have an update for you folks, as I've spent significant time talking about the issue with Azure Support. Disclaimer, this is just from my conversations with them and I don't think it guarantees that you have the same root cause.
Quoting from my emails:

We confirmed this is happening because the instance(s) intermittently can't process the change notifications due to a caching issue. The official RCA for this was provided by the Product Group on another Support Request from about a month ago:
The App Service team has investigated your issues related to failing slot swaps. Engineers identified a race condition in the swap process that can cause delays in app setting propagation, which can then cause swap failure. While this is not new behavior, it can be hit more often with more workers in the ASP and/or any slowness in KeyVault secret resolution during swap. The cause of the race condition has been identified and a permanent fix will roll out in the next release. In the meantime, some platform behavior has been disabled to prevent your hitting this race condition. We do not expect your slot swap issues to re-occur.
As a mitigation, the Product Group disabled a platform behavior that should prevent you from encountering the problem on this App Service's stamp. In addition to that, it has also been identified the problem can be prevented by restarting the deployment slot, which you have been doing ever since.

Apparently, this will be fixed in ANT 103 (you can check the version via the Kudu console), but no word on when that will be released.
I do not recommend reaching out to Azure support to have them flip this hidden, special switch. I think that poses more risk, as now you're running on a "nonstandard" version of the PaaS which, in my opinion, kind of defeats the purpose of a PaaS.

Thanks for sharing you experience with this.
I am having the same issue with an Apache Tomcat web app when trying to swap between staging and production. I am using the Azure portal and my web apps are apache tomcat/java based. I have not experienced this before ( in last two years) and it has occurred twice the last two weeks.
The swap starts and goes on for 20 minutes and then gives up with the following message.
"Failed to swap slots 'staging' and 'production': Cannot swap site slots for site 'application' because the 'staging' slot did not respond to http ping.
In addition to that, it has also been identified the problem can be prevented by restarting the deployment slot, which you have been doing ever since.
Can I just confirm that the above comment refers to your original workaround, which was, to RESTART the "staging" slot (in your case the blue slot), AFTER the swap has been started ?

@JohnMelody You'll want to restart before you initiate the swap operation.
Abbreviated GHA, for reference:
      - name: Deploy App to Azure in blue slot
        uses: Azure/cli@v2
        with:
          azcliversion: latest
          inlineScript: az webapp deployment source config-zip --resource-group rg --name name --src artifact.zip --slot blue

      - name: Restart blue slot (temporary workaround experiment for deployment swap operation failures)
        uses: Azure/cli@v2
        with:
          azcliversion: latest
          inlineScript: az webapp restart -g rg -n name --slot blue

      - name: Swap slots
        uses: Azure/cli@v2
        with:
          azcliversion: latest
          inlineScript: az webapp deployment slot swap -g rg -n name --slot blue --target-slot production

OK, I have tried that but it doesn't fix my problem.

Unfortunately, I don't have much more for you, then. We've since moved on from this after using this workaround because we don't want to keep running in circles with support.


itemitem typo

Typo I think. Changed responses.itemitem() to responses.items() in Readme and survey data example.

Indeed!


Feedback for "Subscribe to SAP Business Application Studio" - Link to Pricing and Packaging results in 404 page

https://help.sap.com/products/SAP Business Application Studio/9d1db9835307451daa8c930fbd9ab264/6331319fd9ea4f0ea5331e21df329539.html?locale=en-US&version=Cloud
URL links to
https://help.sap.com/docs/link-disclaimer?site=https%3A%2F%2Fwww.sap.com%2Fproducts%2Fcloud-platform%2Fpricing.html
results in
Sorry, this page can’t be found.
Please search SAP.com or browse the links below.

Thank you for bringing thsi to my attention. Will update the link now.

@Paolaufer : The issue was closed, although the link is still not working. Can you re-check. please?

@abap-weasel The link should be working now.


Encoding issue when running Configure checks on German windows 10

Encoding issue on german windows 10 when running configure
I discussed the issue with @bdbaddog on the #scons-help channel on discord and he asked me to add a bug report here.
Table of Contents

Problem statement
Environment
Analysis
Workaround
Conclusion
Reproducing the bug

Problem statement
Consider the following SConstruct
env = DefaultEnvironment(MSVC_VERSION="14.1", TARGET_ARCH="x86")
config_context = Configure(env)
config_context.CheckFunc('filelength')

when this is run the filelength function is not detected, although it is clearly part of the Visual-C++ runtime library.

Environment
F:\devel\scons-bug>ver
Microsoft Windows [Version 10.0.17763.914]

F:\devel\scons-bug>python --version
Python 3.7.6

F:\devel\scons-bug>scons --version
SCons version SCons by Steven Knight et al.:
        script: v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691, 2019-12-17 02:07:09, by bdeegan on octodog
        engine: v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691, 2019-12-17 02:07:09, by bdeegan on octodog
        engine path: ['f:\\devel\\scons-bug\\lib\\site-packages\\scons\\SCons']
Copyright (c) 2001 - 2019 The SCons Foundation

I tried two different editions of Visual Studio: Visual Studio Express 2017
and Visual Studio 2019

Analysis
When looking at the generated config.log file the reason becomes apparent:
cl /Fo.sconf_temp\conftest_0.obj /c .sconf_temp\conftest_0.c /nologo
scons: Configure: Caught exception while building ".sconf_temp\conftest_0.obj":

Traceback (most recent call last):
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Job.py", line 201, in start
    task.execute()
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\SConf.py", line 356, in execute
    raise e
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\SConf.py", line 330, in execute
    self.targets[0].build()
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Node\__init__.py", line 766, in build
    self.get_executor()(self, **kw)
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Executor.py", line 397, in __call__
    return _do_execute_map[self._do_execute](self, target, kw)
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Executor.py", line 128, in execute_action_list
    status = act(*args, **kw)
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Action.py", line 1053, in __call__
    show, execute, chdir, executor)
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Action.py", line 1120, in __call__
    return c.__call__(self, target, source, env, *args, **kw)
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Action.py", line 708, in __call__
    stat = self.execute(target, source, env, executor=executor)
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Action.py", line 952, in execute
    result = spawn(shell, escape, cmd_line[0], cmd_line, ENV)
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\SConf.py", line 574, in pspawn_wrapper
    return self.pspawn(sh, escape, cmd, args, env, self.logstream, self.logstream)
  File "f:\devel\scons-bug\lib\site-packages\scons\SCons\Platform\win32.py", line 223, in piped_spawn
    stdout.write(tmp.read())
  File "C:\Users\Ganssauge\AppData\Local\Programs\Python\Python37-32\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 110: character maps to <undefined>
scons: Configure: no

Workaround
As a workaround I applied the following patch:
diff -ru SCons/Platform/win32.py new/SCons/Platform/win32.py
--- SCons/Platform/win32.py     2020-01-07 19:47:25.753801822 +0100
+++ new/SCons/Platform/win32.py        2020-01-07 10:45:38.000000000 +0100
@@ -219,7 +219,7 @@
         # and do clean up stuff
         if stdout is not None and stdoutRedirected == 0:
             try:
-                with open(tmpFileStdout, "r" ) as tmp:
+                with open(tmpFileStdout, "r", encoding='cp437') as tmp:
                     stdout.write(tmp.read())
                 os.remove(tmpFileStdout)
             except (IOError, OSError):
@@ -227,7 +227,7 @@

         if stderr is not None and stderrRedirected == 0:
             try:
-                with open(tmpFileStderr, "r" ) as tmp:
+                with open(tmpFileStderr, "r", encoding='cp437') as tmp:
                     stderr.write(tmp.read())
                 os.remove(tmpFileStderr)
             except (IOError, OSError):

Conclusion
Another run with the workaround applied yields the following:
Checking for C function filelength()... yes
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
scons: done building targets.
file F:\devel\scons-bug\SConstruct,line 2:
        Configure(confdir = .sconf_temp)
scons: Configure: Checking for C function filelength()...
.sconf_temp\conftest_0.c <-
  |
  |
  |#include <assert.h>
  |
  |#ifdef __cplusplus
  |extern "C"
  |#endif
  |char filelength();
  |
  |#if _MSC_VER && !__INTEL_COMPILER
  |    #pragma function(filelength)
  |#endif
  |
  |int main(void) {
  |#if defined (__stub_filelength) || defined (__stub___filelength)
  |  fail fail fail
  |#else
  |  filelength();
  |#endif
  |
  |  return 0;
  |}
  |
cl /Fo.sconf_temp\conftest_0.obj /c .sconf_temp\conftest_0.c /nologo
conftest_0.c
.sconf_temp\conftest_0.c(11): warning C4163: "filelength": Nicht als systeminterne Funktion verfügbar
link /nologo /OUT:.sconf_temp\conftest_0.exe .sconf_temp\conftest_0.obj
scons: Configure: yes

The character ü above is actually the character with code 0x81 mentioned in the stacktrace of the first run.
filelength not being a function doesn't make it unusable, as the now working check proves.

Reproducing the bug
In order to reproduce the bug you need a computer (or a VM) running a localized version of Windows 10 with Visual Studio and Python 3 installed.
The attached zip archive contains a windows batch script bug.cmd, the SConstruct file, a patched version of SCons\Platform\win32.py and this bug report.
As a convenience I added the output of the warning to the file warning.txt in original cp850 encoding.
After unpacking the archive into an empty directory, simply run bug.cmd.
It creates a virtualenv with the latest scons installed, runs scons to demonstrate the problem, copies a patched version of SCons.Platform.win32 to the scons directory and runs scons again in order to demonstrate that now the bug is gone.

Working on a variety of encoding issues and came across this one again.  Does this change sound reasonable?  It reads the temporary files as bytes, and tries to decode into whatever the codec for the two output streams are, defining an error behavior to avoid bailing on something that can't convert ("backslashreplace" is another option).
diff --git a/SCons/Platform/win32.py b/SCons/Platform/win32.py
index b14582361..c2216eb68 100644
--- a/SCons/Platform/win32.py
+++ b/SCons/Platform/win32.py
@@ -165,16 +165,18 @@ def piped_spawn(sh, escape, cmd, args, env, stdout, stderr):
     # and do clean up stuff
     if stdout is not None and not stdoutRedirected:
         try:
-            with open(tmpFileStdoutName) as tmpFileStdout:
-                stdout.write(tmpFileStdout.read())
+            with open(tmpFileStdoutName, "rb") as tmpFileStdout:
+                output = tmpFileStdout.read()
+                stdout.write(output.decode(sys.stdout.encoding, "replace"))
             os.remove(tmpFileStdoutName)
         except OSError:
             pass

     if stderr is not None and not stderrRedirected:
         try:
-            with open(tmpFileStderrName) as tmpFileStderr:
-                stderr.write(tmpFileStderr.read())
+            with open(tmpFileStderrName, "rb") as tmpFileStderr:
+                errors = tmpFileStderr.read()
+                stdout.write(errors.decode(sys.stderr.encoding, "replace"))
             os.remove(tmpFileStderrName)
         except OSError:
             pass

@mwichmann looks good. does it work with the tarball they attached?

I don't have a German Windows, so hard to repro. I'll take a look.  Manually following the steps (the objectionable message stored in a file) looks like this. Notice since my Windows is set to a US codepage, it doesn't fail on the message, but it displays it wonky; the decode inside Python made it come out okay.
C:\Users\mats\Documents\github\scons\exp\encoded-response>type data
.sconf_temp\conftest_0.c(11): warning C4163: "filelength": Nicht als systeminterne Funktion verf├╝gbar

C:\Users\mats\Documents\github\scons\exp\encoded-response>py
Python 3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> with open("data", "rb") as f:
...     data = f.read()
...
>>>
>>> sys.stdout.write(data.decode(sys.stdout.encoding, errors="convert"))
.sconf_temp\conftest_0.c(11): warning C4163: "filelength": Nicht als systeminterne Funktion verfügbar
102
>>>


ADD: Add notebooks on LASSO (e.g. LASSO-CACTI)

Add initial notebooks for exploring LASSO-CACTI data (@wgustafson)

Closed with #25


UserScript and JavaScript

I have JavaScript disabled by default to reduce data usage. I installed a userscript that gives a "night mode" look to all websites. However, it seems I can use UserScripts only if JavaScript is enabled.
Could you make it possible for us to use UserScripts while also not downloading JavaScripts from websites; that is, enable JavaScript only for internal scripts.

"I installed a userscript that gives a "night mode" look to all websites"
Help me please, explain how to use this script?

@medwatt Adding '.js$' to blacklist in ad block filter and enabling javascript would be a solution. Although it's not the solution because it only checks extension and doesn't check MIME, it uses less bandwidth and less CPU cycle.

@deimosfobos Although I cannot attach English screenshot because I'm using Yuzu in Japanese, I'll tell you because it's so easy that doesn't need to bother @hazuki0x0.

Open settings
Select Browser config (maybe you'll find it at the top)
Select UserScript Config (maybe at the second from the top)
Select Manage UserScript (maybe at the second from the top)
Tap + icon
Select Insert (pencil icon)
Paste the script which works best for you. You should google for it.

@taka-hkd https://userstyles.org/styles/31267/global-dark-style-changes-everything-to-dark
here's a script for "night mode" it gave me hazuki0x0,check if it works for you? And tell me how to properly copy and paste it, I do not receive it, please help

@deimosfobos, for any script that you want to use with Yuzu Browser, you need the one with ".js" extension. Scroll down to the bottom of the page and download the file contained in the link "Install style as userscript". Move the downloaded file to the internal storage of your phone and then follow what @taka-hkd said in his last post. In step 6, you select "Add from file" and browse for the file in your internal storage.

https://userstyles.org/styles/105844/wikipedia-dark-st wikipedia dark the script works well, but global dark is not working.

Everything, the question is removed the script works, thanks @medwatt,@taka-hkd,@hazuki0x0 for the browser.


Spec file cleanup

PR against master, although the real OpenArc works happens in the develop branch, but the 2 previous specfile cleanup commits were not synch'ed to the develop branch.

https://bugzilla.redhat.com/show_bug.cgi?id=1615162
filed.   xavierba, please note that the Source0 URL pattern is incorrect in your PR, compared to the release filename in github.

I may be missing something, but why do you think the Source0 is not correct ? It will expand to:
https://github.com/trusteddomainproject/OpenARC/archive/v1.0.0.Beta0/openarc-1.0.0.Beta0.tar.gz

The file name is
https://github.com/trusteddomainproject/OpenARC/archive/v1.0.0.Beta0.tar.gz
https://github.com/trusteddomainproject/OpenARC/archive/v1.0.0.Beta0/openarc-1.0.0.Beta0.tar.gz
It is poorly named in the release.
On Sun, Aug 12, 2018, 6:03 PM Xavier Bachelot<EMAIL_ADDRESS>wrote:

I may be missing something, but why do you think the Source0 is not
correct ? It will expand to:
https://github.com/trusteddomainproject/OpenARC/archive/v1.0.0.Beta0/openarc-1.0.0.Beta0.tar.gz
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/trusteddomainproject/OpenARC/pull/103#issuecomment-412377883,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAqDqrK8_NAb9gGY_XdPsV6IILeNSHlIks5uQLQDgaJpZM4VsYj4
.

@mskucherawy, I did the tweak you requested.
@mdomsch, I took the opportunity to also add a commit that sync with Fedora specfile where relevant. As stated in the commit message, I sync everything but the release bump and changelog entry and also not the patches. The first patch is/was PR #104, which hes been fixed differently, the second, which is a configure.ac fix, should imho have a PR filed if not done already.

I've merged these changes into the Fedora package rpm spec file and build for epel7, f30, f29, f28. Updates pending.

An additional fix:  use "%{_rundir}" in place of "%{_localstatedir}/run" -- as at least on Fedora, it resolves to "/run" rather than "/var/run" (really the same directory), and systemd complains whenever I perform a systemctl daemon-reload with:
systemd[1]: /usr/lib/systemd/system/openarc.service:8: PIDFile= references a path below legacy directory /var/run/, updating /var/run/openarc/openarc.pid → /run/openarc/openarc.pid; please update the unit file accordingly.
--
Also, to support socket access:

tmpfiles.d: /run/openarc should be {0750 openarc:openarc} (not 0700) so only group members can get to the socket.
And it'd be best to follow good security practices for the rest of the files:
/etc/openarc.conf should be {0644 root:openarc} (no secrets here, but don't want rogue openarc changing things)
/etc/openarc should be {0755 root:openarc} (only root can create files)
key.txt should be {0444 openarc:openarc} - in DNS after all, so all can read
key.private should be  {0400 openarc:openarc}
(NOTE: might be nice to use a keys directory here too, but it'd need to be {0755 root:openarc} too so DNS setup can still get to the .txt records...)
other files in /etc/openarc should be {444 openarc:openarc} (could be 0440...)

All this keeps the openarc user (hacked server) from modifying anything, but makes it easy to "chmod o-rwx" to go extra paranoid mode too :)
--
One other item, openarc.conf doesn't support Umask (best to remove the commented option)... and in line with openarc group being able to read socket files, the openarc.service file needs to have:
[Service]
UMask=0007
Added to it or else the default is 0022, which prevents group writes (prob best in openarc source, but quick patch could be added to the .spec file :)

Thanks much for the suggestions. I finally got around to incorporating them into the Fedora packaging.
https://src.fedoraproject.org/rpms/openarc/blob/master/f/openarc.spec
is building now.
This takes all your suggestions, and also adds systemd system unit file options for ProtectSystem and ProtectHome, which further prevents writes to protected directories.

Finally had a chance to try the build, but there are a couple problems that make it a little broken:
Typo in the config file template: (missing the trailing r)
Socket  local:%{_rundi}/%{name}/%{name}.sock
Protect system too strict:
ProtectSystem=strict
... should be =full (strict makes /run/openarc read-only too, and openarc can't start)
Not a bug, but you could also remove the tmpfiles.d/openarc.conf file completely, and add the following to the [Service] section of the .service file:
RuntimeDirectory=memcached
RuntimeDirectoryMode=0750
Just some more ideas.. might be worth a new build too so people don't have to create a drop-in service file to override the ProtectSystem :)
Bodhi wouldn't load the page with the output, but there appeared to be a bunch of rpmlint issues too; I might try running that later and see if I can find out what it didn't like...

Thanks for catching the typo and for the other suggestions. I implemented RuntimeDirectory, but am getting an selinux denial now when sendmail goes to open the socket, which didn't happen with the tmpfiles.d solution.  This will need more investigation before using this method.  Any ideas?  This is on a CentOS 8 install.
type=AVC msg=audit(1588397271.937:223834): avc:  denied  { getattr } for  pid=9348 comm="sendmail" path="/run/openarc/openarc.sock" dev="tmpfs" ino=17712527 scontext=system_u:system_r:sendmail_t:s0 tcontext=system_u:object_r:var_run_t:s0 tclass=sock_file permissive=0

That's very interesting... you had it working with SELinux using tmpfiles.d??  Openarc isn't in the SELinux config on my Fedora 31 system (and I'm guessing not in CentOS, but I don't have an install to test) -- I had to add my own rules to get it to work:
semanage fcontext -a -t dkim_milter_data_t '/var/run/openarc(/.)?'
semanage fcontext -a -t dkim_milter_data_t '/var/spool/postfix/var/run/openarc(/.)?'
Without those, it always came up as var_run_t regardless of RuntimeDirectory= or tmpfiles.d...
I'm not sure if a package can add it's own "missing" SELinux policies or not, but until the selinux package is fixed, you might need to add a README-SELinux or similar to the docs.

In fact... since openarc is unconfined, I also had to add the following custom policy to get postfix to work (didn't try sendmail, probably needs something similar)...

policy_module(myopenarc,1.0.0)

require {
        type postfix_cleanup_t, postfix_smtpd_t;
        type unconfined_service_t;
        class unix_stream_socket { connectto };
};

# also allow connectto openarc (unconfined)
allow postfix_cleanup_t unconfined_service_t:unix_stream_socket connectto;
allow postfix_smtpd_t unconfined_service_t:unix_stream_socket connectto;

I considered trying to get openarc to use the opendkim context, but I wasn't sure what would happen if an upgrade actually added an openarc policy, so I went with the less conservative approach :)

OK, did a little research, and it appears you can attach a policy to an rpm, see:
https://selinuxproject.org/page/RPM#Adding_Policy_to_an_RPM
I also successfully ran openarc as dkim_milter_t (used by opendkim and opendmarc), which means the policy becomes as simple as 3 fcontext lines in two files:
--- openarc.te ---
policy_module(openarc,0.9.0)
--- openarc.fc ---
/usr/sbin/openarc      --  gen_context(system_u:object_r:dkim_milter_exec_t,s0)
/var/run/openarc(/.)?         gen_context(system_u:object_r:dkim_milter_data_t,s0)
/var/spool/postfix/var/run/openarc(/.)?       gen_context(system_u:object_r:dkim_milter_data_t,s0)
I also tried installing the module when the file context already existed (from another policy, to mock openarc actually getting added to the default policy later), and it installed without error, so it should be "future proof" (at least as long as the opendkim policy doesn't conflict with openarc's behavior :D)

On Centos8 with sendmail, reverting to using tmpfiles.d to create /run/openarc, and setting the fcontext is sufficient for sendmail to be able to open the socket.
I cannot get systemd service RuntimeDirectory labels correct at service startup without manually running a restorecon on them using an ExecStartPost=/sbin/restorecon -r -F /run/openarc.  I suppose that's better than tmpfiles.d but still odd.  I found one reference to a similar problem back in 2015 which was fixed back then.  https://bugzilla.redhat.com/show_bug.cgi?id=1192726
I will see about adding the policy as described above.

Ah, a static fcontext would work for an old redhat build, but newer systemd's put /run on tmpfs (so fresh every boot, RuntimeDirectory just re-creates it on every service start!), and you'd need the ExecStartPost=restorecon anyway without the fcontext in policy...

Oh, and I ran rpmlint (still can't see the bodhi report), but here's the output:
openarc.src: W: spelling-error Summary(en_US) milter -> molter, miler, miter
openarc.src: W: spelling-error %description -l en_US milter -> molter, miler, miter
openarc.src:82: W: macro-in-comment %{_docdir}
openarc.src:82: W: macro-in-comment %{name}
openarc.src:82: W: macro-in-comment %{version}
openarc.src:93: W: macro-in-comment %{_sysconfdir}
openarc.src:94: W: macro-in-comment %{_sysconfdir}
openarc.src:99: W: macro-in-comment %{_sysconfdir}
openarc.src: W: invalid-url Source0: https://github.com/trusteddomainproject/OpenARC/archive/v1.0.0.Beta3/openarc-1.0.0.Beta3.tar.gz HTTP Error 404: Not Found
Clearly, ignore the spelling ones, but the comments can be fixed by either removing the extra %{xx} refs (as they're expanded before parsing, so could break things), or using a double %, eg:
# opendkim-genkey -D %%{_sysconfdir}...
The source error or just because you used a different label for the release, could use the real name, (rel-openarc...) ie:
https://github.com/trusteddomainproject/OpenARC/archive/rel-openarc-1-0-0-Beta3.tar.gz
or just label the same as the source archive next release :)
Just an FYI...

BTW, there's a bug in the current selinux-policy on Fedora wrt opendkim and postfix in chroot (which probably means on other distributions)... I've logged it as:
https://bugzilla.redhat.com/show_bug.cgi?id=1830587
but you could include my fix in your openarc.te file (as it will affect openarc too as it'll use the same executable context):

require {
        type dkim_milter_t;
};

postfix_search_spool(dkim_milter_t);

As the Fedora Packaging Guidelines suggest, I've started a thread on the<EMAIL_ADDRESS>mailing list for advice on how best to proceed - if we need a new module all together or if leaning on the existing dkim module is sufficient, and then how to package the result<EMAIL_ADDRESS>All the rpmlint warnings/errors are benign.  The comment lines are all about content going into configuration files and should be there.  The tarball is misnamed because of the way things are tagged. I left a comment about it and will leave it at that.

Looks good, although you did always refer to /etc/openarc/openarc.sock when I think you meant /run/openarc/openarc.sock, but I'm guessing they'll figure that out :)


[Discussion] Remember TorchRL: the state of memory in TorchRL

Remember TorchRL: the state of memory in TorchRL
Hello! This is a discussion post to recap the state of memory models in TorchRL: what's doable, what's not doable, what is the way to do things, and what is missing.
Why
The goal of this post is to outline what we can imporve in the library to allow the users to have access to state-of-the-art memory models to tackle partially observable (PO) problems
DIsclaimer
I am not a memory guy. In fact, I cannot even remember any birthdays and have to put them in my calendar. The idea of this post is to stimulate discussion with memory researchers. So if anything I write here is incorrect, please point it out so I can learn and fix it.
The state of memory in RL
Traditional architectures are GRUs and LSTMs (available in this library). Despite GRUs have been shown to have good results in PO problems https://arxiv.org/abs/2303.01859, they have problems related to the way they process the sequence.
In fact, to run LSTMs and GRUs parallely over time you need a fixed sequence length without any terminations within it. The way this has been traditionally tackled (and it is tackled in this library) is to split and pad trajectories to a fixed length that does not contain any dones.
This has some major issues. Most importantly: the length of the sequence is an hyperparamter that will affect directly the memory length. A low value will impede remembering things too far in the past and a high value will cause high padding and inefficiency.
Recently, a new class of sequence models, sometimes called Linear Recurrent Models or Linear Transformers has been introduced.
These models can be run parallely in the time dimension with subquadratic space complecity. Examples are S5 and Fast and Forgetful Memory
Most importantly, these models do not require a fixed sequence length (and thus padding) and can be run on consecutive terminating trajectories.
To be precise, LSTM and GRU could be also utilised without padding, but this would mean calling them in a for loop in their "Cell" version, which would lead to better results, but higher complecity (as they could not be batched over time)
What is available in TorchRL
Models:

LSTMCell -> runs a single pass of an LSTM
LSTM -> runs multiple passes of an LSTM on a batch of data with a fixed sequence length
GRUCell -> runs a single pass of a GRU
GRU -> runs multiple passes of a GRU on a batch of data with a fixed sequence length

Tensordict modules:

GRU and LSTM modules to simplify the use of the above in torchrl

Tutorials:

RECURRENT DQN: TRAINING RECURRENT POLICIES -> shows how to train DQN with a policy that uses an LSTM.  The LSTM is use on 1 step during collection and on a fixed sequence length during training. Trajectories are split into padded sequences to achieve this. Suche that there are no episode dones within a sequence.

Replay buffer:

SliceSampler -> enables to store and sample trajectories by concatenating them along the time dimension and provide flexibility in how we want to sample them. This enables the type of buffer described in https://arxiv.org/abs/2402.09900
We can also stack trajectories along a fixed and padded time dimension like traditional buffers (inefficient)

What is doable in TorchRL

TorchRL buffers and samplers can deal with both padded sequences and concatenated sequences (aligning with the buffer proposed in  https://arxiv.org/abs/2402.09900)
TorchRL can run LSTMs and GRUs both on single steps and parallely on padded trajectories
It is also possoble to avoid padding and run LSTM and GRU cells during training using for loops over time. leading to more correct results but worse performance

What is not available in TorchRL
Implementing Linear Recurrent Models efficiently in torch is currently not possible due to the lack of Parallel Associative Scan (https://github.com/pytorch/pytorch/issues/95408), a feature that, on the contrary, is available in JAX and has allowed progress in RL memory research.
These models could still be implemented in their "cell" version (for loop instead of parallel scan). This would be quite inefficient although it would lead to better performance wrt traditional architectures.
What are the next steps?
Easy
I believe that we should make it easier for users to approach memory models in torchrl. This could be done by adding a new tutorial that shows how to use the SliceSampler in a memory context (maybe with a GRU since the other tutorial uses LSTM).
It would also be cool to have a tutorial that shows users how to use the current memory models without padding (in their cell version). Which ia a better although more inefficient implementation.
Medium
We could implement Linear Recurrent Models in their inefficient version, avoiding the use of the Parallel Associative Scan
Hard
Introdice Parallel Associative Scan to pytorch (https://github.com/pytorch/pytorch/issues/95408), allowing us to code the state-of-the-art memory models and catch up with JAX.
Conclusions
I hope to have given a complete picture of the state of memory in TorchRL, if anything is missing or incorrect, please point it out and I will update the comment
I am happy to put coding work into a direction once we have identified one. My only limitation is that I would probably not be able to add torch c++ or cuda kernels without a signficant learning experinece
cc @vmoens @albertbou92 @smorad @EdanToledo

Thanks for posting this!
What kind of speed up does associative scan provides for these models in jax? (jax.jit vs torch eager / jax eager)
To know what would be a satisfactory implementation.

For instance, with torchrl and tensordict nightly and torch 2.4, I run the following code
from torchrl.modules import GRUCell, GRU
import torch
from torch.utils.benchmark import Timer
from torchrl.modules.tensordict_module.rnn import GRUCell
device = torch.device("cuda") if torch.cuda.device_count() else torch.device("cpu")
V = 3  # vector size
B = 4
N_IN = 32
N_OUT = 200
T = 10

gru_cell = GRUCell(input_size=N_IN, hidden_size=N_OUT, device=device)

def call_gru(x, h):
    h_out = gru_cell(x, h)
    return h_out
batched_call = torch.vmap(call_gru)

x = torch.randn(V, B, N_IN, device=device)
h0 = torch.zeros(V, B, N_OUT, device=device)
with torch.no_grad():
    h1 = batched_call(x, h0)

input = torch.randn(V, B, T, N_IN, device=device)
h0 = torch.zeros(V, B, N_OUT, device=device)

def time_batched_call_gru(x, h):
    hs = []
    for x_ in x.unbind(-2):
        h = batched_call(x_, h)
        hs.append(h)
    return torch.cat(hs, -2)

print(Timer("time_batched_call_gru(input, h0).sum().backward()", globals=globals()).adaptive_autorange())

def time_call_gru(x, h):
    hs = []
    for x_ in x.unbind(-2):
        h = gru_cell(x_, h)
        hs.append(h)
    return torch.cat(hs, -2)

batched_time_call_gru = torch.vmap(time_call_gru)

print(Timer("batched_time_call_gru(input, h0).sum().backward()", globals=globals()).adaptive_autorange())

time_batched_call_gru_c = torch.compile(time_batched_call_gru, mode="reduce-overhead", fullgraph=True)
# time_batched_call_gru_c = torch.compile(time_batched_call_gru, fullgraph=True)
time_batched_call_gru_c(input, h0)
time_batched_call_gru_c(input, h0)
print(Timer("time_batched_call_gru_c(input, h0).sum().backward()", globals=globals()).adaptive_autorange())

batched_time_call_gru_c = torch.compile(batched_time_call_gru, mode="reduce-overhead", fullgraph=True)
# batched_time_call_gru_c = torch.compile(batched_time_call_gru, fullgraph=True)
batched_time_call_gru_c(input, h0)
batched_time_call_gru_c(input, h0)
print(Timer("batched_time_call_gru_c(input, h0).sum().backward()", globals=globals()).adaptive_autorange())

and get these very nice results with compile (6x faster than eager on H100 machine)
<torch.utils.benchmark.utils.common.Measurement object at 0x7fd95d72ca30>
time_batched_call_gru(input, h0).sum().backward()
  Median: 5.48 ms
  IQR:    0.05 ms (5.46 to 5.51)
  4 measurements, 10 runs per measurement, 1 thread
<torch.utils.benchmark.utils.common.Measurement object at 0x7fd95d72d810>
batched_time_call_gru(input, h0).sum().backward()
  Median: 5.79 ms
  IQR:    0.07 ms (5.76 to 5.83)
  4 measurements, 10 runs per measurement, 1 thread
/home/vmoens/.conda/envs/torchrl/lib/python3.10/site-packages/torch/_inductor/compile_fx.py:150: UserWarning: TensorFloat32 tensor cores for float32 matrix multiplication available but not enabled. Consider setting `torch.set_float32_matmul_precision('high')` for better performance.
  warnings.warn(
<torch.utils.benchmark.utils.common.Measurement object at 0x7fd9235aca60>
time_batched_call_gru_c(input, h0).sum().backward()
  Median: 861.05 us
  IQR:    68.60 us (834.74 to 903.35)
  9 measurements, 1 runs per measurement, 1 thread
<torch.utils.benchmark.utils.common.Measurement object at 0x7fd8f6f1c3d0>
batched_time_call_gru_c(input, h0).sum().backward()
  Median: 968.07 us
  IQR:    84.75 us (945.94 to 1030.69)
  11 measurements, 1 runs per measurement, 1 thread

Thanks @vmoens, it is nice to see this speed up. Just to understand, what are we vmapping over? I imagine we cannot vmap over time as later  elements in the for loop will depend on earlier ones and if i understant correctly the normal GRUCell can aready deal with a batch size. Also what we need to benchmark is the scaling in the time dimension in the presence of resets (scaling to higher Ts, where the for loop will start to show its limitations).
In any case, this for loop implementation is how I would implement the models. The idea is that in jax the associative scan will leverage the associative property of the recurrent computation and thus it should be way faster than a for loop.
I agree we need to benchmark this. One thing I could do is implement a recurrent model (e.g., S5) with the for loop above and compare it with the jax counterpart.
@smorad if you can help at all in the benchmarking of a torch for vs a jax parallel associative scan that would help a lot, otherwise I'll try to do my best

The VMAP is done over the batch (first dimension). In fact LSTM isn't batched over time, it's just a c++ / cudnn kernel that runs faster than a for loop.
I don't need a very precise benchmark for now, I just need a good description of the model and a rough idea of the speed up from eager for loop to jit + associative scan

Thanks for posting this!
What kind of speed up does associative scan provides for these models in jax? (jax.jit vs torch eager / jax eager) To know what would be a satisfactory implementation.

Runtime becomes $O(\log n)$ instead of $O(n)$ for a sequence of length $n$ (given that the GPU has sufficient parallel processing capacity).

From https://openreview.net/forum?id=KTfAtro6vP, which uses torch <2.0 and garbage 2080TIs. Your results with an updated version of torch and better GPUs probably look significantly different. But maybe around 1-2 orders of magnitude faster?

I am happy to help too.
I agree that SliceSampler tutorial would be nice.
As I understand the current QDN tutorial stores UNPADDED fix-length trajectories that can contain done flags. Then when the LSTMModule processes them, splits and pads the data into separate trajectories to process them in a single call. The main problem of the tutorial approach is that the stored trajectories are fixed. This is not ideal as we would want more diversity in the sampled trajectories.
I am happy to give a shot at a SliceSampler tutorial that solves the previous problem. I haven't used it before, it's a good opportunity to try it out.
To me it also makes sense to provide a script with speedup execution with torch.compile if possible.
I have no experience with these latest memory models that do not require a fixed sequence length, so I will need to catch up a bit in that direction..
Would be super interesting to train on same problem with the different approaches and benchmark and speed and performance.

It would be nice to also have modules that do not split and pad internally but process in a for loop reading the is_init flag.
I have implemented a GRU like this for benchmarl (https://github.com/facebookresearch/BenchMARL/blob/6ee79436f268e65488ee0ce8b3152174afd7c029/benchmarl/models/gru.py#L30-L63)

what do you mean when you say that this approach leads to more correct results? because some sequences are padded the obtained agent performance is worse?
And I have another question regarding you code, but I might be wrong.
For long sequences wouldn't it be faster to reshape your [B, T] to [B * T], split in into consecutive trajectories, pass them sequentially through a GRU module and finally reshape back? since it runs the for loop on c++ / cudnn as Vincent mentioned.

For long sequences wouldn't it be faster to reshape your [B, T] to [B * T], split in into consecutive trajectories, pass them sequentially through a GRU module and finally reshape back? since it runs the for loop on c++ / cudnn as Vincent mentioned.

Unlikely, because a GRU is $O(n)$. In this case, you are choosing between $O(T)$ and $O(B T)$ time complexity. In fact, this is one of the reasons transformers were developed -- long sequences are costly with an LSTM/GRU.

what do you mean when you say that this approach leads to more correct results? with padded sequences the final agent performance is worse? or is it just because processing padded time steps is inefficient?

there is a nice explaination here on the problems of padding https://arxiv.org/abs/2402.09900

what do you mean when you say that this approach leads to more correct results? with padded sequences the final agent performance is worse? or is it just because processing padded time steps is inefficient?

there is a nice explaination here on the problems of padding https://arxiv.org/abs/2402.09900

very nice paper!

And what about your current implementation of GRU with the for loop? is that practical to run in terms of time? can it be accelerated with compile?

It is basically like your implementation with the difference that is_init is passed to the forward and in the time for loop you check it to see if you need to set the hidden states to 0. You can see them in BenchMARL models.
Compile totally fails for me as I then need to vmap the model multiple times and compile complains with some messages I don't understand so I gave up. But the basic module is compilable (similar to yours). I only got slowdowns after compilation though.

SliceSampler -> enables to store and sample trajectories by concatenating them along the time dimension and provide flexibility in how we want to sample them. This enables the type of buffer described in https://arxiv.org/abs/2402.09900

Just yesterday I was looking at the SliceSampler and having a hard time understanding it. Would it make sense to add a link to the paper in the SliceSampler documentation?

Anything that makes the doc better is welcome!
Aside from the paper and a tutorial, wdyt would be valuable addition to the doc (such that my PR is comprehensive)

That should be enough!
On a side note, I noticed some interesting behavior from the SliceSampler:
>>> sample = rb.sample(); print("shape:", sample.shape); print("indices:", sample["index"]); print("episodes:", sample["episode"])
shape: torch.Size([3])
indices: tensor([[11],
        [ 0],
        [ 1]])
episodes: tensor([4, 4, 4], dtype=torch.int32)

Here we see an example where a slice wraps around the end of the trajectory (last step and first two steps). Is this intended?

Code to reproduce
import torch
from tensordict import TensorDict
from torchrl.data.replay_buffers import LazyMemmapStorage, TensorDictReplayBuffer
from torchrl.data.replay_buffers.samplers import SliceSampler, SliceSamplerWithoutReplacement,SamplerWithoutReplacement
torch.manual_seed(0)
rb = TensorDictReplayBuffer(
    storage=LazyMemmapStorage(12),
    # sampler=SliceSampler(slice_len=3),
    sampler=SliceSamplerWithoutReplacement(slice_len=3, shuffle=False),
    # sampler=SamplerWithoutReplacement(shuffle=False),
    batch_size=12,
)
episode = torch.zeros(40, dtype=torch.int)
episode[:5] = 1
episode[5:11] = 2
episode[11:29] = 3
episode[29:] = 4
data = TensorDict(
    {
        "episode": episode,
        "obs": torch.randn((4)).expand(40, 4),
        "act": torch.randn((3,)).expand(40, 3),
    }, [40]
)

rb.extend(data)
sample = rb.sample()
print("shape:", sample.shape)
print("indices:", sample["index"])
print("episodes:", sample["episode"])

short answer: no
long answer: noooooooooo!!!
I'm kidding, I think the behavior is appropriate. I modified obs with:
        "obs": torch.arange(160).view(40, 4),

then at the end of your script I print
print(rb[:]["episode"])
print(rb[:]["obs"])

and i get
MemoryMappedTensor([4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4], dtype=torch.int32)
MemoryMappedTensor([[144, 145, 146, 147],
                    [148, 149, 150, 151],
                    [152, 153, 154, 155],
                    [156, 157, 158, 159],
                    [112, 113, 114, 115],
                    [116, 117, 118, 119],
                    [120, 121, 122, 123],
                    [124, 125, 126, 127],
                    [128, 129, 130, 131],
                    [132, 133, 134, 135],
                    [136, 137, 138, 139],
                    [140, 141, 142, 143]])

What happens is that the buffer is circular, the index 0 is actually the element that comes just after 11!
you should never, however, get the index 4 which belongs to traj 3


[bug] all thing seems like {}

VSCode Version: Code 1.6.0 (e52fb0bc87e6f5c8f144e172639891d8d8c9aa55, 2016-10-10T18:28:55.412Z)
OS Version: Darwin x64 16.1.0
Extensions: Tyriar.lorem-ipsum-1.0.0, Tyriar.theme-glacier-0.0.10, christian-kohler.npm-intellisense-0.1.3, christian-kohler.path-intellisense-1.0.2, codezombiech.gitignore-0.2.0, dbaeumer.vscode-eslint-1.0.7, deerawan.vscode-dash-1.1.2, donjayamanne.githistory-0.1.0, donjayamanne.python-0.4.0, eg2.tslint-0.5.39, eg2.vscode-npm-script-0.0.20, gnhuy91.vscode-theme-onedark-0.0.2, humao.rest-client-0.8.4, lukehoban.Go-0.6.43, mitaki28.vscode-clang-0.2.1, ms-vscode.cpptools-0.9.2, ms-vscode.typescript-javascript-grammar-0.0.4, msjsdiag.debugger-for-chrome-1.1.0, tnaseem.theme-seti-0.0.2, vscodevim.vim-0.3.5, waderyan.gitblame-1.3.0

After update to 1.6
all thing seems as {}

@leaxoy Please, it's called reproducible steps

Just open vscode-go project with all typings file downloaded,  and this appears.
PS: [deps] typescript version is 2.0.3 and vscode version is 1.0.0.

Not for me

Do you use the latest of typescript and vscode dependencies?

Closing until steps allowing to reproduce this are supplied


Feature: Table output

Description
Earlier versions of safety had a table output. That was very good to consume.
The current report format is too verbose. The --short-format option also does not solve that, because it just truncates the explanation (making it pretty useless) without condensing the output format in any way.
Can we get back the table output?

Hi @andy-maier,
Thank you for your feedback and for highlighting the value of the table output format.
After careful consideration, we've decided to move this issue to the "wontfix" category. We'd like to provide some context for our decision:
Current Priorities: While we understand that the table output was useful for many users, reintroducing it is not currently part of our development priorities. We are focusing our efforts on other areas that we believe will have a broader impact on the user experience.
Output Format: We appreciate your feedback regarding the verbosity of the current report format and the limitations of the --short-format option. We are always looking for ways to improve and streamline our output formats.
We appreciate your understanding and encourage you to share any further suggestions or feedback you might have. Your input is invaluable as we continue to evolve and enhance Safety.
Thank you for your continued support and contributions!
Best regards,
The Safety Team


Per-crate linking option in Cargo manifest

Problem
One Rust package may contain a single library crate and multiple binary crates. If only one binary crate needs to link with a C native library, then it doesn't quite make sense to link that native library with the library crate, because

The library crate itself doesn't need it, nor do other binary crates.
Users of the package do not clearly see which native libraries are needed for which crate.

Currently the only way to configure per-crate linking option seems to be using cargo:rustc-link-arg-bin=BIN=FLAG. This requires some effort in the build script, and still doesn't show native library dependencies in documented format.
Proposed Solution
It would be much nicer if each crate lists its own linking dependencies in Cargo.toml like this:
[lib]
name = "foo"
links = "foodeps"

[[bin]]
name = "bar"
links = "bardeps"

[[bin]]
name = "baz"
links = "bazdeps"

or
[lib]
name = "foo"
rustc-link-lib = "foodeps"

[[bin]]
name = "bar"
rustc-link-lib = "bardeps"

[[bin]]
name = "baz"
rustc-link-lib = "bazdeps"

Programmers won't need #link attribute or cargo:rustc-link-lib=LIB build script instruction in many use cases.
Notes 1
Currently Cargo.toml may contain these fields to override build scripts:
[target.x86_64-unknown-linux-gnu.foo]
rustc-link-lib = ["foo"]
rustc-link-search = ["/path/to/foo"]

However this applies to whole package not per crate.
Notes 2
Currently, Cargo on cargo:rustc-link-lib passes -l <lib> to rustc when compiling the lib crate. What I'm looking for is Cargo passing -l <lib> to bin crates on a similar build script instruction or a bin-crate option in Cargo.toml.

As a heads up, we've been talking about shifting the focus to separate bin and lib packages though no decision has been made at this time.

If I were designing the Rust package/crate system, I wouldn't think in bin/lib but only modules. The current lib.rs is a module. The current main.rs is also a module. One module can contain another module (as is the case now). If a module has fn main() then it can be compiled into a binary and run. A crate is a module designated as a translation unit, that is, compiled on its own. The manifest Cargo.toml lists which modules are designated as crates. And rustc still works without Cargo: just specify the module to be compiled as a crate in command line arguments.
Then there will be no more questions like cargo new --lib --bin. cargo new gives a top-level mod.rs, the root module/crate of the new package. In my opinion mod.rs is way nicer than lib.rs or main.rs. We don't have to remember special file names, and the entire package can now be easily attached as a sub-module in a different package.

isn't the official name for these "targets"?  a crate can contain multiple targets, and each target may be composed of several modules.

Crates and build targets (as opposed to platform targets) are the same thing.  Packages contain multiple crates.  crates.io and .crate files cause a lot of confusion on this point.
See https://doc.rust-lang.org/cargo/appendix/glossary.html#crate


hcap 1384/hcap 1385 - phase form validations

Add Placeholder text to input field (going off design in ticket for text)

Add Max character validation to form (I used 255 as the db limit, but can decrease, can update error message to anything)

Added validation to ensure endDate is not before or on the same day as startDate (Can update error message)

@fw-noel I added the BE validations - note the BE is using the dates as string vs the FE which is using date, so the validations are different but still function the same.


[admin-theme] OPENWISP_ADMIN_THEME_CSS > OPENWISP_ADMIN_THEME_LINKS

Improves #82.
Related to #79.

Coverage increased (+0.08%) to 99.057% when pulling f398ab2374793dbfc4b05b04b3f30417422ca7ff on admin-theme-settings into 168b09ba3eda8e47be8f928645439eb2b82baf40 on master.


fix: interstitial of failed token verification

Set signed-out as default request state and return interstitial ONLY when the token verification fails with expired or invalid issued_at (iat) errors.
Extra actions:

[x] unit tests
[x] manual testing

REVIEW IT PER COMMIT

@clerkinc/backend-team could you take a look ?


Support Scheduled Events

Hi,
I'd like to create a recurring event programmatically on the prelast friday every month, which is not supported by Discord itself.
Is it possible to add support for the GuildScheduledEvent class and its methods?

Hey, this was added in the latest PR Added new nodes: Guild Manager, Event Manager, and message search functionality. You can create events, see all events, delete events. Most of the explanation is within the actual node-red interface on how to use the new node.
This issue should now be closed

https://github.com/Markoudstaal/node-red-contrib-discord-advanced/releases/tag/v.3.6.0


fix(client): exit 139 on scratch docker

:tada: This PR is included in version 1.1.2 :tada:
The release is available on:

GitHub release
v1.1.2

Your semantic-release bot :package::rocket:


[CI] Github action tests on Centos7 is broken

Backend
VL (Velox)
Bug description
/__e/node20/bin/node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by /__e/node20/bin/node)/__e/node20/bin/node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.20' not found (required by /__e/node20/bin/node)/__e/node20/bin/node: /lib64/libstdc++.so.6: version CXXABI_1.3.9' not found (required by /__e/node20/bin/node)/__e/node20/bin/node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.21' not found (required by /__e/node20/bin/node)/__e/node20/bin/node: /lib64/libc.so.6: version GLIBC_2.28' not found (required by /__e/node20/bin/node)/__e/node20/bin/node: /lib64/libc.so.6: version GLIBC_2.25' not found (required by /__e/node20/bin/node)
Spark version
None
Spark configurations
No response
System information
No response
Relevant logs
No response

https://github.com/actions/runner-images/issues/10896

https://github.com/apache/incubator-gluten/pull/8042

Hi
We are facing same issue on public.ecr.aws/sam/build-python3.8:latest-x86_64 image
/__e/node20/bin/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /__e/node20/bin/node)
It was working until yesterday now stopped.
Any help is appreciated
Thanks


Create manual regression test suite

Using testspace.com at https://tqlapp.testspace.com/.

App

[ ] TODO

Quick start:

[x] Technical working of the quick start window
[x] Configuration of all plugins
[x] Explanation of usage of the app

Plugins:

[x] Azure plugin
[ ] Azure DevOps plugin
[ ] Confluence plugin
[ ] GitHub plugin
[ ] JIRA plugin
[ ] Outlook plugin
[ ] Microsoft Teams plugin

Using testspace.com.

First steps have been implemented in #131.

Moved manual regression tests for the app to #194.


Export highest resolution monitor to programms or define a primary display

Description
[Problem]
When using two monitors with different resolutions and the lower resolution monitor is picked as primary, the lower resolution is exported to most apps and someone refuse to accept any resolution higher than the lower resolution monitor.
This means If Hyprland picks a monitor, the games might refuse to run at the resolution of the highest monitor, resuling in n low quality and streching if another monitor is used than the primary.
[Fix]
The resolution that apps and games get is the highest resolution of all monitors instead of the primary.
As Alternative settinge the primary monitor via the config would bei a viable fix too.
[Example]
how the config could look:
monitor=eDP-1,1920x1080@60,0x0,1,primary
this would set the display as primary for wayland and Xwayland application.
Sorry if this is the wrong place to report this, i am quite new to bug reports.

wayland has no such thing as a primary display.
For xwayland you can do it with xrandr.


Can't found file： com.airbnb.aerosolve.core.FeatureVector

Hello:
In file： FeatureVectorGen line3，4 can‘t found example and featureVector, is this an error?
Thanks.
import com.airbnb.aerosolve.core.Example;
import com.airbnb.aerosolve.core.FeatureVector;

should install Thrift first

I had the same problem, and I installed it. Can you help me?


Food-Hub-Mart | Twitter-Redesign

Description
The project I was going to build for the Ruby on Rails capstone is based on a redesign of Twitter. This pull request is to check if I  followed the given design of the website, but I must personalize the content, i.e., it can be an app to share opinions about books, wedding business, fishing equipment, mushrooms - anything that you can share opinions about with people who follow you. Feel free to add your own app name and logo!
Fixes # (issue)

[x] I had some issues with image upload. I resolved that using Active storage. I explained most of the issues
on my README.md file

Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update

How Has This Been Tested?
My test configuration

[x] Rspc - Test A
[x] Stylelint - Test B

Test Configuration:

Firmware version:
Hardware:
Toolchain:
SDK:

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 on my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] 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
[x] Any dependent changes have been merged and published in downstream modules

Please TSE  I have taken time to fix all the requirements for the project and reviews from the previous and last TSE's.

The left-side menu should include only links to pages that are implemented. THIS WORKS
There is a discrepancy around the project between the live demo and cloned the project from the repo. make sure to deploy your current version of the project. - THIS WORKS
n the end extend your MVP app with one simple feature of your choice.- I did implement the users following each other inversely and being able to comment on each other posts. Please I would appreciate if this project is approved. thank you

I have fixed the link that is not working on Heroku[live link]as requested by the code reviewer.


edge agent error please help

My server docker-compose.yml:
version: '3.3'
services:
portainer-ce:
container_name: portainer
restart: always
network_mode: host
volumes:

'/var/run/docker.sock:/var/run/docker.sock'
'./portainer-data:/data'
image: 'portainer/portainer-ce:latest'
and when i add edge agent and copy the command to the nat machine such this:docker run -d
-v /var/run/docker.sock:/var/run/docker.sock
-v /var/lib/docker/volumes:/var/lib/docker/volumes
-v /:/host
-v portainer_agent_data:/data
--restart always
-e EDGE=1
-e EDGE_ID=xxxx
-e EDGE_KEY=xxxx
-e EDGE_INSECURE_POLL=1
--name portainer_edge_agent
portainer/agent:2.13.1

but can't connected and the agent log:
2022/06/09 03:02:59 [INFO] [main] [message: Agent running on Docker platform]
2022/06/09 03:02:59 [INFO] [edge] [message: Edge key loaded from options]
2022/06/09 03:02:59 [INFO] [edge,registry] [message: Starting registry credential server]
2022/06/09 03:02:59 [INFO] [http] [server_addr: <IP_ADDRESS>] [server_port: 9001] [secured: false] [api_version: 2.13.1] [message: Starting Agent API server]
2022/06/09 03:03:44 client: Connecting to ws://xx.com:8000
2022/06/09 03:03:51 client: Connection error: read tcp <IP_ADDRESS>:53834-210.xxx:8000: read: connection reset by peer
2022/06/09 03:03:51 client: Give up
the server log:
time="2022-06-09T03:03:50Z" level=info msg="2022/06/09 03:03:50 [DEBUG] [chisel,monitoring] [endpoint_id: 29] [status: ACTIVE] [status_time_seconds: 5.560124] [message: environment tunnel monitoring]"
time="2022-06-09T03:03:50Z" level=info msg="2022/06/09 03:03:50 http: proxy error: dial tcp <IP_ADDRESS>:63166: connect: connection refused"
time="2022-06-09T03:04:20Z" level=info msg="2022/06/09 03:04:20 [DEBUG] [chisel,monitoring] [endpoint_id: 29] [status: ACTIVE] [status_time_seconds: 5.557951] [message: environment tunnel monitoring]"
time="2022-06-09T03:04:23Z" level=info msg="2022/06/09 03:04:23 http: proxy error: dial tcp <IP_ADDRESS>:51018: connect: connection refused"
time="2022-06-09T03:05:20Z" level=info msg="2022/06/09 03:05:20 [DEBUG] [chisel,monitoring] [endpoint_id: 29] [status: ACTIVE] [status_time_seconds: 5.557854] [message: environment tunnel monitoring]"
time="2022-06-09T03:05:23Z" level=info msg="2022/06/09 03:05:23 http: proxy error: dial tcp <IP_ADDRESS>:64692: connect: connection refused"

yes server port 8000 is open, but don't know whether it can be accessed

New  agent log:
2022/06/11 03:01:53 [INFO] [main] [message: Agent running on Docker platform]
2022/06/11 03:01:53 [INFO] [edge] [message: Edge key loaded from options]
2022/06/11 03:01:53 [INFO] [edge,registry] [message: Starting registry credential server]
2022/06/11 03:01:53 [INFO] [http] [server_addr: <IP_ADDRESS>] [server_port: 9001] [secured: false] [api_version: 2.13.1] [message: Starting Agent API server]
2022/06/11 03:02:08 [ERROR] [edge] [message: an error occured during short poll] [error: Get "https://xx.com/portainer/api/endpoints/30/edge/status": context deadline exceeded (Client.Timeout exceeded while awaiting headers)]
2022/06/11 03:02:18 [ERROR] [edge] [message: an error occured during short poll] [error: Get "https://xx.com/portainer/api/endpoints/30/edge/status": context deadline exceeded (Client.Timeout exceeded while awaiting headers)]
2022/06/11 03:02:28 [ERROR] [edge] [message: an error occured during short poll] [error: Get "https://xx.com/portainer/api/endpoints/30/edge/status": context deadline exceeded (Client.Timeout exceeded while awaiting headers)]
2022/06/11 03:02:38 [ERROR] [edge] [message: an error occured during short poll] [error: Get "https://xx.com/portainer/api/endpoints/30/edge/status": context deadline exceeded (Client.Timeout exceeded while awaiting headers)]
2022/06/11 03:02:38 [ERROR] [edge] [message: an error occured during short poll] [error: Get "https://xx.com/portainer/api/endpoints/30/edge/status": dial tcp: lookup hk.cc3c.cf on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:54998-><IP_ADDRESS>:53: i/o timeout]
2022/06/11 03:02:53 [ERROR] [edge] [message: an error occured during short poll] [error: Get "https://xx.com/portainer/api/endpoints/30/edge/status": context deadline exceeded (Client.Timeout exceeded while awaiting headers)]
2022/06/11 03:03:03 [ERROR] [edge] [message: an error occured during short poll] [error: Get "https://xx.com/portainer/api/endpoints/30/edge/status": context deadline exceeded (Client.Timeout exceeded while awaiting headers)]
My server nginx conf:
location /portainer {
rewrite ^/portainer(/.*)$ /$1 break;
proxy_pass http://localhost:9000/;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
    location /portainer/api {
            proxy_set_header Upgrade $http_upgrade;
            proxy_pass http://localhost:9000/api;
            proxy_set_header Connection 'upgrade';
            proxy_http_version 1.1;

}


Cannot read property 'apply' of undefined

I don't know what I'm doing wrong, but I can't seem to get calls to my instance to work. pods show up. Instance of the API logs when I log it, but i noticed it doesn't have any of the Async funcs. figured it didn't matter and I'd just try the regular methods. except they crash too. Your docs make setup seem super basic, so i figure i must be missing something.
import MMKVStorage from 'react-native-mmkv-storage';

const init = async () => {
  const MMKV = new MMKVStorage.Loader().initialize();
  console.log('MMKV: ', MMKV);

  await MMKV.setString('tag', 'test', (e) => {
     // never gets here. crashes on call.
     console.log('set e: ', e)
  });

  const string = await MMKV.getString('tag', (e) => console.log('get e: ', e));

  console.log('map: ', map);
};

init();

react-native-mmkv-storage: "^0.5.3",
ios: 14
react native: 0.63.4

Same problem, please help

update to 0.5.4 to resolve these issues. Follow the updated steps in installation.


Readme update 06/2020

Thanks @StephenWeatherford, at quick glance I agree with all feedback and will start working through it soon.

Thanks a bunch @StephenWeatherford . All feedback has been addressed.


fix(entities): restore Teleport for new entity button only in Konnect app [KHCP-11277]

Summary
https://konghq.atlassian.net/browse/KHCP-11277
Consumed in https://github.com/Kong/konnect-ui-apps/pull/3087
Deploy Preview: https://pr-3087--gateway-manager.cloud-preview.konghq.tech/gateway-manager
~This is an easier solution to avoid the Teleport target warning for Kong Manager by not conditionally rendering this for Kong Manager.~
Context: This PR introduced the regression https://github.com/Kong/public-ui-components/pull/1001
where dynamic component usage for Teleport (instead of constantly using a Teleport component) was resulting in the content being always rendered as a div and never a Teleport
(seems dynamic component and Teleport just don’t work well together).
Summary of next steps:
cc: @Leopoldthecoder

Add destination div for the Teleport <div id="kong-ui-app-page-header-action-button"/>
in all of the Kong Manager GM entities.

Disable the Vue warning  fix(teleport): not throw warning when teleport is disabled by Leopoldthecoder · Pull Request #9818 · vuejs/core
Thanks @Yi Yang for opening this PR up.
Hopefully we can get this merged soon.

Revert the dynamic component PR #1001.

Close this PR without merging.

@kaiarrowood  I tried implementing with the fallback div method  moved outside of the KTable in the last 3 commits but that doesn't work when useActionOutside prop isn't supplied (like in Kong Manager) and I get the following Vue warnings.

As per https://konghq.atlassian.net/browse/KHCP-11277:

Close public-ui-components: fix(entities): restore Teleport for new entity button only in Konnect app [KHCP-11277]
OPEN without merging.

Closing this PR as https://github.com/Kong/public-ui-components/pull/1425 is merged.


[terraform-ibm-modules/terraform-ibm-kms-all-inclusive] Release Pipeline failed 2024-08-10-13:25

For details see: https://github.com/terraform-ibm-modules/terraform-ibm-kms-all-inclusive/actions/runs/10331954367

[1:25:04 PM] [semantic-release] › ✘  An error occurred while running semantic-release: Error: Command failed with exit code 22: ./ci/trigger-catalog-onboarding-pipeline.sh --version=v4.15.6
curl: (22) The requested URL returned error: 424

Retrying: https://github.com/terraform-ibm-modules/terraform-ibm-kms-all-inclusive/actions/runs/10331954367


Support filter threshold with data

Add settings for filter threshold when using data.
Fix citation display issue.

Superceded by #270


Add a Conference A11y test

Adds A11y overlay and legend to the existing Conference screen.

Not clear we want to do this, but it follows on from the approaches in
https://github.com/google/horologist/blob/main/paparazzi/src/main/java/com/google/android/horologist/paparazzi/a11y/A11ySnapshotHandler.kt
and
https://github.com/cashapp/paparazzi/pull/555

Most of the PR is reusable framework code.
The actual conference test https://github.com/joreilly/Confetti/pull/438/files#diff-b6dab13f09410aa4f6acdc2e9cf5a84ac7a5b0eb1c44d15d9b0220e5d60b6139 shows how easy it is to add an A11y test to a single screen.
For tall screens, we may want to do something similar to
https://github.com/google/horologist/blob/main/media-ui/src/test/snapshots/images/com.google.android.horologist.media.ui.screens.browse_PlaylistDownloadBrowseScreenA11yTallScreenshotTest_browseScreen.png

Not clear we want to do this

What's the drawback? Adding complexity to the codebase? On the plus side, it's a very nice incentive to get a11y working when adding screens.

Let's do it then.

This is really cool! So inspiring! 🤩


cgosqlite: set SQLITE_TEMP_STORE=1

SQLITE_TEMP_STORE=1 allows PRAGMA temp_store = MEMORY, while keeping temporary files as the default behavior for temporary storage.
This can be used to accelerate some migrations, when building an in-memory temporary btree to use in a later correlated subquery is faster than the query planner would normally do things, for example when optimizing locality or btree operation order.

What's with the compilation error?

What's with the compilation error?

It's on top of another patch, but didn't need to be, and is no longer.


Fix call to git checkout

In the case of "dev", git checkout dev could be miconstrued
as checking out the dev directory rather than the branch...
https://github.com/flutter/flutter/issues/14865

Credit to @Timmmm, who did the same thing in #14871

Hehe thanks! Sorry, being a bit petty :-S

No worries! Sorry for not seeing it.


Adds Arab Provider

Hi, in the provider of elementum i not found arab torrent, please is possible add one arab provider?
http://arab-torrents.net/
Thank you

This repository is not responsible for any providers.

@Yoshinizar please see https://github.com/elgatito/script.elementum.burst#adding--editing-providers


Scrolling not possible, as we can't get any closer to the destination, pageScrollFinish doesn't fires

Hi, thanks for this directive. I'm having just one problem.
My project has a type of vertical news feed, each feed is a panel that have some buttons in the footer. Those buttons change the way the information is displayed thus causing the height of the panel to change.
In order to the user to always see the correct feed I needed to scroll up to the top of the panel when the information changed. This was really easy to do with this directive.
The thing is that if I want to change the way the information is displayed for a second (or third...) time, and there was no scrolling (the offset to the top hadn't changed) I get this message

"Scrolling not possible, as we can't get any closer to the destination"

and the pageScrollFinish event never fires.
For the moment I managed this issue by assigning a different offset to each anchor (differing by 1px was enough) what I think that the correct thing would be to the event to fire.
Am I missing something?
Thanks,
Martín

Hi Martin,
glad to hear the this library helps you with your project.
Unfortunately I didn't quite get whether you're reporting one or two problems.

pageScrollFinish does not fire in case we can't get any closer to the destination
That's correct and I agree with you that it should fire whenever a "scroll" has been started. I possibly change the emitted value into something else than a boolean to indicate the reason the scrolling stopped in a more detailed way (successful finish, interrupted, can't get closer to destination, can't find target)

no scrolling when "the way information is displayed changes for second time"
Is this desired that no scrolling takes place? Does "changing the way info is displayed" means the positioning changes and scrolling up further would be possible?

Hi @Nolanus, thanks for the response.
It's one problem, the first one you wrote.
"Changing the way info is displayed" may change the height of the element but not the position. Imagine this situation, a news feed with various items (i.e: Facebook or Twitter) with an option to expand or contract each individual item by using a set of button at the items footer. Initially the height of the items makes scrolling needed so that the footer can be seen. The user scrolls down and clicks a button to change what is displayed in the item. This new view form has a smaller height so the panel adapts as needed. Without auto-scrolling the user would have to scroll up again and search for the wanted item. That's where your library comes into play. Once the user clicks the button the page scrolls to the start of the corresponding item and changes the height of the item accordingly.
Now the user want to change again the visualization without having to scroll down (because the new height made that the buttons were available without having to scroll down). As position hasn't changed the plugin shows "Scrolling not possible, as we can't get any closer to the destination" and the event isn't fired.
The solution you describe in 1) is excellent but maybe it hasn't has to be so complex. I was reading your code and by changing the if starting at line 187:
if (pageScrollInstance.distanceToScroll === 0) {
      // We're at the final destination already
      // OR we need to scroll down but are already at the end
      // OR we need to scroll up but are at the top already
      if (_angular_core.isDevMode()) {
           console.log('Scrolling not possible, as we can\'t get any closer to the destination');
      }
      return;
}

with
if (pageScrollInstance.distanceToScroll === 0) {
      // We're at the final destination already
      // OR we need to scroll down but are already at the end
      // OR we need to scroll up but are at the top already
      if (_angular_core.isDevMode()) {
           console.log('Scrolling not possible, as we can\'t get any closer to the destination');
      }
      pageScrollInstance.fireEvent(true);
      return;
}

This wouldn't change the meaning of what the event name declares (that the scroll ended) and by sending true as a parameter you are saying that the scroll position is where the dev want's it to be.
Am I right?
Sorry for my English but it isn't my first language :)

Thanks!


Make Virtualizer log messages more user-oriented

As per review https://github.com/odpi/egeria/pull/316/files/82ba80a5aa4332258e692596e3816de66794012a#diff-456f9029498cc094a86a8b1fb3918d97 -- many of these error messages are coded for the developer - understandable to begin with, but perhaps we should return in a later reiteration to redo the text as more user-centric? This might include being more specific about what access, what database, which user etc. Some will remain as 'internal' issues which require code changes - and for those we may want to use the text we have in other exceptions about raising a github issue.

Hi @planetf1 , the new version of virtualizer also provides up-to-standard audit log, which offers more detailed information on exceptions. This issue can also be closed.

closing


Breaking change involving RefUnwindSafe in 1.1.3

The following code compiles against regex 1.1.2 but not 1.1.3:
fn f(r: regex::Regex) {
    let _ = std::panic::catch_unwind(|| r);
}

error[E0277]: the type `(dyn aho_corasick::prefilter::Prefilter + 'static)` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary
 --> src/main.rs:2:13
  |
2 |     let _ = std::panic::catch_unwind(|| r);
  |             ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn aho_corasick::prefilter::Prefilter + 'static)` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary
  |
  = help: within `regex::exec::ExecReadOnly`, the trait `std::panic::RefUnwindSafe` is not implemented for `(dyn aho_corasick::prefilter::Prefilter + 'static)`
  = note: required because it appears within the type `*const (dyn aho_corasick::prefilter::Prefilter + 'static)`
  = note: required because it appears within the type `std::ptr::Unique<(dyn aho_corasick::prefilter::Prefilter + 'static)>`
  = note: required because it appears within the type `std::boxed::Box<(dyn aho_corasick::prefilter::Prefilter + 'static)>`
  = note: required because it appears within the type `aho_corasick::prefilter::PrefilterObj`
  = note: required because it appears within the type `std::option::Option<aho_corasick::prefilter::PrefilterObj>`
  = note: required because it appears within the type `aho_corasick::nfa::NFA<u32>`
  = note: required because it appears within the type `aho_corasick::ahocorasick::Imp<u32>`
  = note: required because it appears within the type `aho_corasick::ahocorasick::AhoCorasick<u32>`
  = note: required because it appears within the type `std::option::Option<aho_corasick::ahocorasick::AhoCorasick<u32>>`
  = note: required because it appears within the type `regex::exec::ExecReadOnly`
  = note: required because of the requirements on the impl of `std::panic::UnwindSafe` for `std::sync::Arc<regex::exec::ExecReadOnly>`
  = note: required because it appears within the type `regex::exec::Exec`
  = note: required because it appears within the type `regex::re_unicode::Regex`
  = note: required because it appears within the type `[closure@src/main.rs:2:38: 2:42 r:regex::re_unicode::Regex]`
  = note: required by `std::panic::catch_unwind`

I noticed that this is breaking rustfmt (https://travis-ci.org/dtolnay/syn/jobs/513667990). Is there an easy fix on your end or would it be better for us to work around this downstream? Thanks!

@dtolnay Thanks for the bug report! This was definitely not intentional. I've fixed this in regex 1.1.4. (More specifically, I fixed it in aho-corasick 0.7.4, and regex 1.1.4 now requires aho-corasick 0.7.4.)
I'll confess that the UnwindSafe marker trait hasn't been something that I've been keeping a keen eye on. In particular, it seems incredibly easy to foul this up whenever one uses trait objects. But I guess it's the same situation as with Send and Sync. I think I've just gotten used to that, but haven't been thinking about UnwindSafe.
In this particular circumstance, I fixed by just making Prefilter: RefUnwindSafe + UnwindSafe because none of the implementations actually use interior mutability (and I don't think they ever will). You can see my fixes here https://github.com/BurntSushi/aho-corasick/commit/df7fee774310bc4b68f6cd307d82b6e925337ba7 and here https://github.com/BurntSushi/aho-corasick/commit/5f220e63363ff5e5261457805e4a935d155cf76c
Advice is welcome if you think there's anything else I should be doing! (I have now added marker trait tests on regex's public API, so this particular regression shouldn't happen again.)

Thanks for the quick fix! I was unfamiliar with this failure mode too. I guess it is not so common to add new trait objects into a struct and not so common to use catch_unwind, so they don't intersect much.

@BurntSushi https://github.com/rust-lang/regex/blob/1.1.4/Cargo.toml#L29
looks like regex 1.1.4 is still depending on aho-corasick 0.7.3 🤔
https://github.com/Turbo87/ogn-web-gateway/pull/139 seems to be breaking due to that

@Turbo87 No, there was a typo in my comment above. aho-corasick 0.7.3 is the latest release and should have all relevant fixes.
Your build is breaking because of an unrelated reason. Compare the output of your build to the error reported in this ticket, for example. I filed a separate bug here:  #570 (Which is now fixed in regex 1.1.5.)

I see. thanks for the quick response! ❤


Profile Page - Edit profile tab

Closed. Added a button in profile page to edit the profile if the current user is == profile user


⚠ AlphaRatio has degraded performance

In c13bf21, AlphaRatio ($AR) experienced degraded performance:

HTTP code: 200
Response time: 1458 ms

Resolved: AlphaRatio performance has improved in 19ef55e after 6 minutes.


Fix skip ahead.

code = 0x83 check is duplicated, which will cause issues when the code is 0x83 or 0x84.

@evedon not sure if you will have seen this or not.

Thanks @stevep-arm. Will fix in the next release of the manifest tool

Fixed in another PR


APT whitelist request for python-swiftclient

This replaces travis-ci/travis-ci#3966.
The original text by @kahing follows

Needed to run SwiftProxy tests:
https://travis-ci.org/bouncestorage/swiftproxy/builds/64131426

I am still not able to install python-swiftclient on travis:
https://travis-ci.org/bouncestorage/swiftproxy/builds/75179136 :
$ sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install python-pip python-virtualenv python-dev libffi-dev python-swiftclient

Reading package lists...

Building dependency tree...

Reading state information...

E: Unable to locate package python-swiftclient


Update GCP secret keys

Questions
Answers

Description?
Use the right GCP secret keys defined in the PrestaShop Github organisation

Type?
improvement

BC breaks?
no

Deprecations?
no

Fixed ticket?

How to test?
No test needed

Possible impacts?

Thank you @atomiix


fix(useHookAtTopLevel): recognize hook property in member expression calls

Summary
this is needed for parity with eslint-plugin-react-hooks. specifically when using hook APIs like trpc or simply React.useEffect instead of useEffect, the current lint rule will fail to catch rules-of-hooks violations.

Test Plan
updated test case

Can you open a new issue?

Yes, sure: https://github.com/biomejs/biome/issues/3337


Type Status missing

In the table resulting for the Collection objects filter and also DWC Occurrence Report the column for Type Status is missing.

same issue as #1269


Parallelize our test suite

I rule and have completed some work on Case Manager that's ready for review!
Rails 6 or so introduced a test parallelization feature that would split tests between processors. We haven't been able to adopt it because of some complexity around mongo + circle + some other stuff, but this gets us to a pretty good shape.
This drops our test suite in github to around 7m, which is great, and a pretty substantial improvement for pretty low effort (not counting having to get on github actions in the first place).
This pull request makes the following changes:

turn on rails parallelization
do some other odds and ends cleanup

no view changes
It relates to the following issue #s:

Fixes #1876

For reviewer:

Adjust the title to explain what it does for the notification email to the listserv.
Tag this PR:

feature if it contains a feature, fix, or similar. This is anything that contains a user-facing fix in some way, such as frontend changes, alterations to backend behavior, or bug fixes.
dependencies if it contains library upgrades or similar. This is anything that upgrades any dependency, such as a Gemfile update or npm package upgrade.

If it contains neither, no need to tag this PR.

On local environments this was cutting down unit test runtimes down anywhere from 25-50% (around 80s-90s without parallelism on; my best run with parallelism on was 47s and I got mostly 55s-65s runs).
In CI there's more to unfurl here because of knapsack being kinda tightly wound. to be continued.

oh wow, unit tests only runs in ci in 17 seconds: https://app.circleci.com/pipelines/github/DCAFEngineering/dcaf_case_management/1178/workflows/888fd4c9-335a-4525-b233-eaa614e901a2/jobs/7634

Codecov Report

Merging #2348 (ac4537e) into main (5403f04) will decrease coverage by 93.98%.
The diff coverage is n/a.

:exclamation: Current head ac4537e differs from pull request most recent head 8572bb0. Consider uploading reports for the commit 8572bb0 to get more accurate results

@@            Coverage Diff             @@
##             main   #2348       +/-   ##
==========================================
- Coverage   96.24%   2.26%   -93.99%
==========================================
  Files          79      79
  Lines        1651    2782     +1131
==========================================
- Hits         1589      63     -1526
- Misses         62    2719     +2657

Impacted Files
Coverage Δ

app/models/call.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/models/note.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/models/event.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/models/clinic.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/models/config.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/lib/exceptions.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/models/fulfillment.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/mailers/user_mailer.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/helpers/calls_helper.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

app/helpers/lines_helper.rb
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 65 more

Continue to review full report at Codecov.

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

Whats up with CodeCov showing all our coverage disappearing?

I have no idea about codecov but it's pretty annoying! (I'll figure it out at some point.)


Fix safari circular progress bug

Address #863.

@hai-cea Updated to use AutoPrefix.

I'll update the timing function to use autoprefix.

@hai-cea Updated the transitionTimingFunction to use AutoPrefix and the circular progress indicator appears to work in Safari and Chrome.

Thanks @jkruder


Adds RBAC error during apply end-to-end test case

Adds test case in end-to-end test when an RBAC error happens during apply.
Validates the case is reported as failed and the object does not end up in the inventory.

Output for this test case:
Testing RBAC error during apply
kpt live apply e2e/live/testdata/rbac-error-step-1
kpt live apply e2e/live/testdata/rbac-error-step-2
.........SUCCESS


spell: Fix missing parenthesis in config.el

Fixes:
Warning (initialization): An error occurred while loading ‘/home/.../.emacs.d/init.el’:

Error in a Doom module: modules/checkers/spell/config.el, (end-of-file /home/.../.emacs.d/modules/checkers/spell/config.el)

Looks like this was introduced by 5b8b04f0c8b6458a3ac4b41417c69413a3bae92e

Whoops. My bad. Caused by some git add -p shenanigans not catching hunks in between unstaged changes. Pushed a proper fix in 7ecda0d. Thanks for bringing it to my attention!


headersToDownstreamOnAllow in envoyExtAuthzHttp should not include content-type

(This is used to request new product features, please visit https://discuss.istio.io for questions on using Istio)
Describe the feature request
In documentation https://istio.io/latest/docs/tasks/security/authorization/authz-custom/#define-the-external-authorizer an example for oauth2-proxy is given and headersToDownstreamOnAllow includes content-type.
When doing this, both content-type from the auth-proxy and the upstream are mixed (same beavior as this issue https://github.com/istio/istio/issues/30470) resulting in a corrupted content-type header if they are different. Which is almost the case since oauth2-proxy always replies with text/plain.
Describe alternatives you've considered
Documentation should not recommend including content-type in headersToDownstreamOnAllow.
Even better, it should warn that if same header is present in both auth-proxy and upstream they will be combined and separated with a comma (https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.2).
Affected product area (please put an X in all that apply)
[ ] Ambient
[X] Docs
[ ] Dual Stack
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Affected features (please put an X in all that apply)
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Multi Control Plane
Additional context

https://github.com/istio/istio.io/pull/14274 just remove content-type, should be better if someone can send a PR to comment this usecase.


[Feat] Background Changes Based on Time of Day

Is your feature request related to a problem? Please describe.
I'm always frustrated when the app's background remains static and doesn't reflect the time of day. This makes the interface feel less dynamic and engaging. A more adaptive background could enhance user experience and make the app feel more in tune with the user's environment.
Describe the solution you'd like
I would like the app's background to change dynamically based on the time of day. For example:

Morning: Bright, warm colors like soft yellow or light orange to mimic
Afternoon: Clear, neutral colors like light blue or white to represent
Evening: Warm, soothing tones like amber or light purple to reflect
Night: Dark, calming shades like deep blue or black with stars to mimic the night sky.

@pranavkonidena I am unable to work on any issue as the current main code is so much buggy.


~ and $HOME fail for key path

I configured ~/.tugboat using $HOME in the path to my private SSH key, but it didn't work:
$ tugboat ssh rethink
Droplet fuzzy name provided. Finding droplet ID...done, 3346933 (rethink)
Executing SSH (rethink)...
Warning: Identity file $HOME/.ssh/id_rsa_digitalocean not accessible: No such file or directory.
<EMAIL_ADDRESS>password:

Then I edited ~/.tugboat to use ~ in the path, and it still didn't work
$tugboat ssh rethink
Droplet fuzzy name provided. Finding droplet ID...done, 3346933 (rethink)
Executing SSH (rethink)...
Warning: Identity file ~/.ssh/id_rsa_digitalocean not accessible: No such file or directory.
<EMAIL_ADDRESS>password:

Then I used an absolute path, and it worked:
$ tugboat ssh rethink                                        15544  12-01 22:14 EST  ~  tintin
Droplet fuzzy name provided. Finding droplet ID...done, 3346933 (rethink)
Executing SSH (rethink)...
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-40-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Mon Dec  1 22:06:56 EST 2014

  System load: 0.0                Memory usage: 9%   Processes:       52
  Usage of /:  14.9% of 19.56GB   Swap usage:   0%   Users logged in: 0

  Graph this data and manage this system at:
    https://landscape.canonical.com/

Last login: Mon Dec  1 21:22:21 2014 from 108-243-16-73.lightspeed.gdrpmi.sbcglobal.net
root@rethink:~#

Since the authorization setup mentions its default path with a ~, this is surprising and unintuitive.  It would be best to allow the use of $HOME and ~, but if there's some major obstacle to doing that, then it would be better if the default would be mentioned with an absolute path, and perhaps the requirement for an absolute path should be mentioned.

As mentioned in #146 it should be sufficient to allow ~ instead of all environment variables.

Fixed in #146


SARIF 5: binary artifact check uses new structure

Please check if the PR fulfills these requirements

[] Tests for the changes have been added (for bug fixes / features)
[X] PR title follows the guidelines defined in  https://github.com/ossf/scorecard/blob/main/CONTRIBUTING.md#pr-process

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
feature

What is the current behavior? (You can also link to an open issue here)
no structured detail for binary artifacts

What is the new behavior (if this is a feature change)?

structured detail for binary artifacts

Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)
no

Other information:

@chrismcgehee FYI, this is an example to migrate an existing check to the new structure
We can start migrating checks now, even if https://github.com/ossf/scorecard/pull/866 is not merged yet


's' does not mean 'step' as the documentation says

The documentations shows 's[tep]' for step, but typing just an 's' does something else (beginning with 's').
This is driving me nuts. Typing 'step' each time is a pain. The shortest I could come up with was 's 1'.

I found that it is possible to type just return to repeat a 'step', that makes it somewhat easier. Would still like to see 's' being supported as you often shift between 'next' and 'step'.

Don't know wha't going on here. Do you have a local variable called s. If not, s should work.
Please, reopen if you can provide me with a way te reproduce this problem.

I was surprised when debugging complex code that I did not end up where I expected using 's'. On the next round I used 'step' and it worked. There was no 's' variable. I tried recreating this with a simple sample, but no luck. I have moved on from the problem in particular but will come back if I see that behavior again.

Fair enough. Make sure you use Ruby 2.1 for your tests!

Are later rubies than 2.1 ok? I am using 2.2.4 as the default right now.

Yes, yes. Sorry. I meant rubies greater than or equal to 2.1.


docs: specify new instructions for question and discuss

Reference

https://github.com/expressjs/express/discussions/5804

Related,

https://github.com/expressjs/discussions/issues/128


Feature request: Add cotangent

Hi!
Can you please add cot to existing functions?

Added cot to master branch.

released in 0.4.8


Add silent mode

All that left is to document the change

@donno2048 I was able to run init.main with silent mode enabled after running it the first time with silent mode disabled, and it switched to silent mode.
Is this by design or is this a bug?
Should I open another issue

I need to get on a Zoom call so won't see notifications.
Will check after the call...

@donno2048 I was able to run init.main with silent mode enabled after running it the first time with silent mode disabled, and it switched to silent mode.
Is this by design or is this a bug?
Should I open another issue

It's simply because the import function is being changed, it's perfectly fine