CMake variable to number comparison changed to provide meaningful error

In the code using check_size_type a value is assigned to a variable like INT. Then the value is checked in the if-block if it is equal to a value like 4.
if (HAVE_INT AND ("${INT}" EQUAL 4))
This results in an error if check_size_type fails because the value of INT will be "" resulting in an error in the arguments to the if-block. A better comparison is
if (HAVE_INT AND (INT EQUAL 4))
This will fall through as intended to the message( FATAL_ERROR "Message" ) section.

Coverage increased (+0.1%) to 96.145% when pulling d242417db35d1bd6f8b9dc900066b5c13d7ed0db on palmerc:master into e5dbe7bb64a896a42ac3c17f760674d94018e271 on akheron:master.

Hi and thanks for the PR!

Could you separate the whitespace-only changes to a separate commit to make it easier to see what actually changed.
I see the -fPIC handling was also changed and the POSITION_INDEPENDENT_CODE property is now set. Was this intentional or necessary? According to CMake documentation, POSITION_INDEPENDENT_CODE is set by default for SHARED library targets.

I don't see the point of applying PIC to the static library. @JoakimSoderberg do you happen to remember if this is intentional? It seems to me that the whole CMakeLists.txt could use some major cleaning up if anyone knowing CMake has time to do it.

If you include the static library in a shared library.

On 11 May 2018, at 08:57, Petri Lehtinen<EMAIL_ADDRESS>wrote:
I don't see the point of applying PIC to the static library. @JoakimSoderberg do you happen to remember if this is intentional? It seems to me that the whole CMakeLists.txt could use some major cleaning up if anyone knowing CMake has time to do it.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

I merged #408 and this PR now conflicts. If you think this is still relevant, could you please rebase it?

@akheron I believe you'll find this rebased

Merged, thanks!


Simplify interaction with systemd

When xrdp is being managed with systemd...

Forking is not necessary, as systemd does not need the program to exit;
PID files are not necessary, when the program does not fork;
The --kill invocation is not needed, as systemd can send the SIGTERM itself;
The --reload invocation is not needed, as systemd can send the SIGHUP itself.

This PR simplifies the systemd units accordingly. This will not only make managing the files in /run easier, it will also reduce the operating footprint that needs to be accounted for in AppArmor profiles and other security frameworks.

Hi @iskunk
Thanks for this.
Please rebase on latest devel to fix 32-bit CI problems (#2674).
I'm personally happy with this. I should point out however that we're changing a user-visible interface in that xrdp-sesman --reload will no longer work, but this is a major version upgrade and the same functionality is exposed through systemctl anyway. We just shouldn't back-port this to 0.9
@metalefty - what do you think?

Rebased as requested.
It might be worth considering whether --kill and --reload are worth keeping, given that literally all these do is send SIGTERM or SIGHUP to the appropriate process (which then has to be allowed for in the AppArmor profile.) Unix daemons typically just document the signal, and let the user determine which process to send it to with killall/pkill/etc.

I'd rather not remove the existing commands, although I largely agree with where you're coming from.
Here are a couple of quotes from systemd.service(5) [www.man7.org]:-

 ExecReload=
     ...
     Note however that reloading a daemon by sending a signal (as with
      the example line above) is usually not a good choice, because this
      is an asynchronous operation and hence not suitable to order
      reloads of multiple services against each other. It is strongly
      recommended to set ExecReload= to a command that not only triggers
      a configuration reload of the daemon, but also synchronously waits
      for it to complete.

and

 ExecStop=
     ...
      Note that it is usually not sufficient to specify a command for
      this setting that only asks the service to terminate (for example,
      by sending some form of termination signal to it), but does not
      wait for it to do so. Since the remaining processes of the services
      are killed according to KillMode= and KillSignal= or
      RestartKillSignal= as described above immediately after the command
      exited, this may not result in a clean stop. The specified command
      should hence be a synchronous operation, not an asynchronous one.

Systemd recommended usage is at odds with the standard UN*X approach. At the moment systemd appears to be losing this particular battle, but if we ever need to implement synchronous reload or stop, we'll need to do it via the existing command mechanism, or something similar.

Systemd offers Type=notify (described in the same man page), in which the service uses sd_notify(3) to inform the system that it is usable. But that is systemd-specific, of course.
I don't believe there's a general solution to fully synchronous Unix service control. But at the same time, I don't foresee that xrdp will have many services depending on it, to bring about the need for this in the first place.

In my first draft of this change, I similarly got rid of the Type= line altogether, going with the systemd default of Type=simple. But then I noticed in the documentation that in this mode, systemd considers the service started immediately after the fork() call prior to executing the service. Whereas in Type=exec, systemd considers the service started after the exec() call succeeds. And thus, as the man page states outright, the systemd default of Type=simple won't tell you right off the bat if there was a problem executing the service.
(I don't understand why the systemd doc makes such a big deal of services starting up synchronously, when it defaults to a service mode that can't even report the basic fact of whether execution of the service binary was successful or not. I can see all this being of interest if you're gunning for three-second boot times, but for real-world usage, it's an odd design decision.)

For anyone else following this conversation, the text in question is in systemd.service(5) [man7.org]
I agree that this seems a bit complex, but in systemd's defence (that's the first time I've ever written that!) it's trying to solve a problem that's been glossed over for decades in the UN*X world. Sun's SMF in Solaris 10 came close to solving it, but from memory. that was a nightmare to work with.
Digressing slightly, I want to get to a place where sesman can be restarted. We're not far off that, but at that point I can see a use for adding sd_notify() to the code, as sesman needs to rediscover existing services before it announces it's ready. We already detect systemd for makefiles, so adding a C pre-processor symbol is trivial.
What I suggest for now is to stick with Type-exec as you have here, and later we can consider moving to Type-notify.
To respond to your other previous point, the reload and terminate can be made synchronous by adding them to the SCP protocol we already have. Authentication would be done via Unix Domain Socket ownership. This gives us a finer-grain of access control (if we want it) than a signal.
Is that OK? Can I merge this now?

Digressing slightly, I want to get to a place where sesman can be restarted. We're not far off that, but at that point I can see a use for adding sd_notify() to the code, as sesman needs to rediscover existing services before it announces it's ready. We already detect systemd for makefiles, so adding a C pre-processor symbol is trivial.

But wouldn't adding an sd_notify() call be for the benefit of services that depend on sesman (presumably sesman would use it to inform systemd that it is ready to accept connections), rather than sesman finding its own dependencies?

What I suggest for now is to stick with Type-exec as you have here, and later we can consider moving to Type-notify.

Sounds good!

To respond to your other previous point, the reload and terminate can be made synchronous by adding them to the SCP protocol we already have. Authentication would be done via Unix Domain Socket ownership. This gives us a finer-grain of access control (if we want it) than a signal.

If/when you go this route, I would suggest using a separate control program (an xrdpctl or xrdp-control or the like) for this purpose, instead of options to the main binaries. With the existing --kill/--reload options, the permissions required to send the signals to the running process need to be added to the AppArmor profiles for the main binaries---meaning that the normal server processes are then able to send those same signals at will. (The target of those signals can be restricted, so an attacker won't be able to send SIGHUP/SIGTERM to arbitrary processes, but it's still a permission that could be useful to them and would not be necessary if some other program were sending the signals.)
Caveat: An alternative that I've considered is, rather than having the AppArmor confinement apply to any invocation of the binary (as is standard practice), it would be possible for the systemd unit to apply the confinement itself (see AppArmorProfile= in systemd.exec(5)). Thus, any other invocations of the xrdp programs, such as from the command line, would be unconfined. So a program-options approach would then require no additional permissions in the profile. But I'm unsure if using this systemd feature is desirable, not least since having different confinements on the differing invocations may be confusing.

Is that OK? Can I merge this now?

Please do! However the init system interface is elaborated later on, I think for now this is a good move.

Thanks @iskunk
The sd_notify() would indeed tell systemd that sesman is accepting connections. This might be useful (for example) if a later script is going to use xrdp-sesrun to set up a session for a user before they log in.
Thanks for your other detail - that's useful. I can see the point of a separate binary for this. We can maybe use xrdp-sesadmin as that's a command-line utility we already have. I'm planning on greatly increasing the scope of this program over time.

Thank you likewise!
Though service startup synchronicity is a known issue in theory, I'd be curious to see what problems xrdp users run into when it is not addressed. The Unix signal mechanism is simple and well-understood, and there's value in that, too... I'd hope there is a good ROI for implementing a more complex mechanism, or one that is systemd-specific.
I wasn't aware of xrdp-sesadmin! Yes, that looks like a fine place for a one-stop shop xrdp run-time control interface.
Overall, I'm happy to see all the progress happening here under your name, and am looking forward to the result :-)

@iskunk thanks for your work.


ghc-mod crash, probably when no cabal file in super directory  of project

i have the impression this error occurs twice and seems related to the lack of a cabal file in the super directory of project. it is a mulitpackage project similar in structure to the example (in a single project, not loaded as two projects).
Atom: 1.14.3 x64
Electron: 1.3.13
OS: Debian GNU/Linux
Thrown From: haskell-ghc-mod package 1.19.7
Stack Trace
Haskell-ghc-mod: ghc-mod command check failed with error Error
At caps: {"version":[5,7,0,0],"fileMap":true,"quoteArgs":true,"optparse":true,"typeConstraints":true,"browseParents":true,"interactiveCaseSplit":true,"importedFrom":false}
URI: /home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs
Args: --
message: Command failed: /home/frank/.local/bin/ghc-mod check /home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs --
ghc-mod: <command line>: cannot satisfy -package-id litNLP-0.0.4-FmHz13iphM0HijEdxOmASU
    (use -v for more information)

log:
-4.103s: "Trying to run ghc-modi in /home/frank/Workspace8/repo8/litMain"
-4.103s: "Checking for ghc-modi in /home/frank/Workspace8/repo8/litMain"
-4.103s: "Found running ghc-modi instance for /home/frank/Workspace8/repo8/litMain"
-4.103s: "Started interactive action block in /home/frank/Workspace8/repo8/litMain"
-4.102s: "Running ghc-modi command map-file","/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs"
-4.102s: "Writing data to stdin..."
-4.101s: "Got response from ghc-modi:\nOK\n"
-4.101s: "Running ghc-modi command type","/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs","-c","--",87,49
-3.992s: "ghc-modi said: EXCEPTION: types:"
-3.992s: "ghc-modi said:            <command line>: cannot satisfy -package-id litNLP-0.0.4-FmHz13iphM0HijEdxOmASU"
-3.991s: "ghc-modi said:                (use -v for more information)"
-3.991s: "Got response from ghc-modi:\nOK\n"
-3.991s: "Running ghc-modi command unmap-file","/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs"
-3.991s: "Got response from ghc-modi:\nOK\n"
-3.99s: "Ended interactive action block in /home/frank/Workspace8/repo8/litMain"
-3.99s: "Trying to run ghc-modi in /home/frank/Workspace8/repo8/litMain"
-3.99s: "Checking for ghc-modi in /home/frank/Workspace8/repo8/litMain"
-3.99s: "Found running ghc-modi instance for /home/frank/Workspace8/repo8/litMain"
-3.99s: "Started interactive action block in /home/frank/Workspace8/repo8/litMain"
-3.99s: "Running ghc-modi command map-file","/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs"
-3.99s: "Writing data to stdin..."
-3.989s: "Got response from ghc-modi:\nOK\n"
-3.989s: "Running ghc-modi command info","/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs","--","nlpstate"
-3.88s: "ghc-modi said: EXCEPTION: info:"
-3.88s: "ghc-modi said:                <command line>: cannot satisfy -package-id litNLP-0.0.4-FmHz13iphM0HijEdxOmASU"
-3.879s: "ghc-modi said:                    (use -v for more information)"
-3.879s: "Got response from ghc-modi:\nCannot show info\nOK\n"
-3.879s: "Running ghc-modi command unmap-file","/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs"
-3.878s: "Got response from ghc-modi:\nOK\n"
-3.878s: "Ended interactive action block in /home/frank/Workspace8/repo8/litMain"
-0.355s: "Snippets2nt did-save triggered"
-0.355s: "Snippets2nt updating"
-0.355s: "Snippets2nt did-save triggered"
-0.355s: "Snippets2nt updating"
-0.352s: "Running /home/frank/.local/bin/ghc-mod check,/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs,-- with opts = ",{"cwd":"/home/frank/Workspace8/repo8/litMain","env":{"ATOM_HOME":"/home/frank/.atom","NODE_PATH":"/usr/share/atom/resources/app.asar/exports","NODE_ENV":"production","LS_COLORS":"","XDG_MENU_PREFIX":"xfce-","LANG":"en_US.utf8","DISPLAY":":0.0","XDG_VTNR":"7","SSH_AUTH_SOCK":"/tmp/ssh-Ba3luyiOtyIi/agent.1676","CLASSPATH":"pikes-tintop-1.0-SNAPSHOT-jar-with-dependencies.jar:Semafor-3.0-alpha-04.jar:models/stanford-corenlp-3.5.2-models.jar","GLADE_CATALOG_PATH":":","XDG_SESSION_ID":"2","XDG_GREETER_DATA_DIR":"/var/lib/lightdm/data/frank","USER":"frank","GLADE_MODULE_PATH":":","DESKTOP_SESSION":"lightdm-xsession","PWD":"/home/frank","HOME":"/home/frank","SSH_AGENT_PID":"1717","QT_ACCESSIBILITY":"1","XDG_SESSION_TYPE":"x11","XDG_DATA_DIRS":"/usr/share/xfce4:/usr/local/share/:/usr/share/:/usr/share","XDG_SESSION_DESKTOP":"lightdm-xsession","GLADE_PIXMAP_PATH":":","DESKTOP_STARTUP_ID":"wrapper-1.0/|usr|share|atom|atom/1781-0-santafe_TIME1914397","GTK_MODULES":"gail:atk-bridge","SHELL":"/bin/bash","XDG_SEAT_PATH":"/org/freedesktop/DisplayManager/Seat0","XDG_CURRENT_DESKTOP":"XFCE","QT_LINUX_ACCESSIBILITY_ALWAYS_ON":"1","SHLVL":"1","XDG_SEAT":"seat0","LANGUAGE":"en_US:en","GDMSESSION":"lightdm-xsession","LOGNAME":"frank","DBUS_SESSION_BUS_ADDRESS":"unix:path=/run/user/1010/bus","XDG_RUNTIME_DIR":"/run/user/1010","XAUTHORITY":"/home/frank/.Xauthority","XDG_SESSION_PATH":"/org/freedesktop/DisplayManager/Session0","XDG_CONFIG_DIRS":"/etc/xdg","GOOGLE_API_KEY":"AIzaSyAQfxPJiounkhOjODEO5ZieffeBv6yft2Q","PATH":"/home/frank/Workspace8/repo8/.stack-work/install/x86_64-linux-nopie/lts-8.2/8.0.2/bin:/home/frank/.stack/snapshots/x86_64-linux-nopie/lts-8.2/8.0.2/bin:/home/frank/.stack/programs/x86_64-linux/ghc-nopie-8.0.2/bin:/home/frank/.local/bin:/home/frank/.local/bin/:/home/frank/ghc-mod-sandbox/bin/:/home/frank/.cabal/bin:/home/frank/Debinstall83/deb9/amd9.bin:/home/frank/.bin:/home/frank/.bin/corenlp:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games","SESSION_MANAGER":"local/santafe:@/tmp/.ICE-unix/1727,unix/santafe:/tmp/.ICE-unix/1727","_":"/usr/bin/env"},"encoding":"utf-8","maxBuffer":null}
-0.342s: "Running /home/frank/.local/bin/ghc-mod browse,-d,-p,--,Snippets2nt with opts = ",{"cwd":"/home/frank/Workspace8/repo8/litMain","env":{"ATOM_HOME":"/home/frank/.atom","NODE_PATH":"/usr/share/atom/resources/app.asar/exports","NODE_ENV":"production","LS_COLORS":"","XDG_MENU_PREFIX":"xfce-","LANG":"en_US.utf8","DISPLAY":":0.0","XDG_VTNR":"7","SSH_AUTH_SOCK":"/tmp/ssh-Ba3luyiOtyIi/agent.1676","CLASSPATH":"pikes-tintop-1.0-SNAPSHOT-jar-with-dependencies.jar:Semafor-3.0-alpha-04.jar:models/stanford-corenlp-3.5.2-models.jar","GLADE_CATALOG_PATH":":","XDG_SESSION_ID":"2","XDG_GREETER_DATA_DIR":"/var/lib/lightdm/data/frank","USER":"frank","GLADE_MODULE_PATH":":","DESKTOP_SESSION":"lightdm-xsession","PWD":"/home/frank","HOME":"/home/frank","SSH_AGENT_PID":"1717","QT_ACCESSIBILITY":"1","XDG_SESSION_TYPE":"x11","XDG_DATA_DIRS":"/usr/share/xfce4:/usr/local/share/:/usr/share/:/usr/share","XDG_SESSION_DESKTOP":"lightdm-xsession","GLADE_PIXMAP_PATH":":","DESKTOP_STARTUP_ID":"wrapper-1.0/|usr|share|atom|atom/1781-0-santafe_TIME1914397","GTK_MODULES":"gail:atk-bridge","SHELL":"/bin/bash","XDG_SEAT_PATH":"/org/freedesktop/DisplayManager/Seat0","XDG_CURRENT_DESKTOP":"XFCE","QT_LINUX_ACCESSIBILITY_ALWAYS_ON":"1","SHLVL":"1","XDG_SEAT":"seat0","LANGUAGE":"en_US:en","GDMSESSION":"lightdm-xsession","LOGNAME":"frank","DBUS_SESSION_BUS_ADDRESS":"unix:path=/run/user/1010/bus","XDG_RUNTIME_DIR":"/run/user/1010","XAUTHORITY":"/home/frank/.Xauthority","XDG_SESSION_PATH":"/org/freedesktop/DisplayManager/Session0","XDG_CONFIG_DIRS":"/etc/xdg","GOOGLE_API_KEY":"AIzaSyAQfxPJiounkhOjODEO5ZieffeBv6yft2Q","PATH":"/home/frank/Workspace8/repo8/.stack-work/install/x86_64-linux-nopie/lts-8.2/8.0.2/bin:/home/frank/.stack/snapshots/x86_64-linux-nopie/lts-8.2/8.0.2/bin:/home/frank/.stack/programs/x86_64-linux/ghc-nopie-8.0.2/bin:/home/frank/.local/bin:/home/frank/.local/bin/:/home/frank/ghc-mod-sandbox/bin/:/home/frank/.cabal/bin:/home/frank/Debinstall83/deb9/amd9.bin:/home/frank/.bin:/home/frank/.bin/corenlp:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games","SESSION_MANAGER":"local/santafe:@/tmp/.ICE-unix/1727,unix/santafe:/tmp/.ICE-unix/1727","_":"/usr/bin/env"},"encoding":"utf-8","maxBuffer":null}
-0.331s: "Running /home/frank/.local/bin/ghc-mod browse,-d,-p,--,Snippets2nt with opts = ",{"cwd":"/home/frank/Workspace8/repo8/litMain","env":{"ATOM_HOME":"/home/frank/.atom","NODE_PATH":"/usr/share/atom/resources/app.asar/exports","NODE_ENV":"production","LS_COLORS":"","XDG_MENU_PREFIX":"xfce-","LANG":"en_US.utf8","DISPLAY":":0.0","XDG_VTNR":"7","SSH_AUTH_SOCK":"/tmp/ssh-Ba3luyiOtyIi/agent.1676","CLASSPATH":"pikes-tintop-1.0-SNAPSHOT-jar-with-dependencies.jar:Semafor-3.0-alpha-04.jar:models/stanford-corenlp-3.5.2-models.jar","GLADE_CATALOG_PATH":":","XDG_SESSION_ID":"2","XDG_GREETER_DATA_DIR":"/var/lib/lightdm/data/frank","USER":"frank","GLADE_MODULE_PATH":":","DESKTOP_SESSION":"lightdm-xsession","PWD":"/home/frank","HOME":"/home/frank","SSH_AGENT_PID":"1717","QT_ACCESSIBILITY":"1","XDG_SESSION_TYPE":"x11","XDG_DATA_DIRS":"/usr/share/xfce4:/usr/local/share/:/usr/share/:/usr/share","XDG_SESSION_DESKTOP":"lightdm-xsession","GLADE_PIXMAP_PATH":":","DESKTOP_STARTUP_ID":"wrapper-1.0/|usr|share|atom|atom/1781-0-santafe_TIME1914397","GTK_MODULES":"gail:atk-bridge","SHELL":"/bin/bash","XDG_SEAT_PATH":"/org/freedesktop/DisplayManager/Seat0","XDG_CURRENT_DESKTOP":"XFCE","QT_LINUX_ACCESSIBILITY_ALWAYS_ON":"1","SHLVL":"1","XDG_SEAT":"seat0","LANGUAGE":"en_US:en","GDMSESSION":"lightdm-xsession","LOGNAME":"frank","DBUS_SESSION_BUS_ADDRESS":"unix:path=/run/user/1010/bus","XDG_RUNTIME_DIR":"/run/user/1010","XAUTHORITY":"/home/frank/.Xauthority","XDG_SESSION_PATH":"/org/freedesktop/DisplayManager/Session0","XDG_CONFIG_DIRS":"/etc/xdg","GOOGLE_API_KEY":"AIzaSyAQfxPJiounkhOjODEO5ZieffeBv6yft2Q","PATH":"/home/frank/Workspace8/repo8/.stack-work/install/x86_64-linux-nopie/lts-8.2/8.0.2/bin:/home/frank/.stack/snapshots/x86_64-linux-nopie/lts-8.2/8.0.2/bin:/home/frank/.stack/programs/x86_64-linux/ghc-nopie-8.0.2/bin:/home/frank/.local/bin:/home/frank/.local/bin/:/home/frank/ghc-mod-sandbox/bin/:/home/frank/.cabal/bin:/home/frank/Debinstall83/deb9/amd9.bin:/home/frank/.bin:/home/frank/.bin/corenlp:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games","SESSION_MANAGER":"local/santafe:@/tmp/.ICE-unix/1727,unix/santafe:/tmp/.ICE-unix/1727","_":"/usr/bin/env"},"encoding":"utf-8","maxBuffer":null}
-0.318s: "Running /home/frank/.local/bin/ghc-mod check,/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs,-- with opts = ",{"cwd":"/home/frank/Workspace8/repo8/litMain","env":{"ATOM_HOME":"/home/frank/.atom","NODE_PATH":"/usr/share/atom/resources/app.asar/exports","NODE_ENV":"production","LS_COLORS":"","XDG_MENU_PREFIX":"xfce-","LANG":"en_US.utf8","DISPLAY":":0.0","XDG_VTNR":"7","SSH_AUTH_SOCK":"/tmp/ssh-Ba3luyiOtyIi/agent.1676","CLASSPATH":"pikes-tintop-1.0-SNAPSHOT-jar-with-dependencies.jar:Semafor-3.0-alpha-04.jar:models/stanford-corenlp-3.5.2-models.jar","GLADE_CATALOG_PATH":":","XDG_SESSION_ID":"2","XDG_GREETER_DATA_DIR":"/var/lib/lightdm/data/frank","USER":"frank","GLADE_MODULE_PATH":":","DESKTOP_SESSION":"lightdm-xsession","PWD":"/home/frank","HOME":"/home/frank","SSH_AGENT_PID":"1717","QT_ACCESSIBILITY":"1","XDG_SESSION_TYPE":"x11","XDG_DATA_DIRS":"/usr/share/xfce4:/usr/local/share/:/usr/share/:/usr/share","XDG_SESSION_DESKTOP":"lightdm-xsession","GLADE_PIXMAP_PATH":":","DESKTOP_STARTUP_ID":"wrapper-1.0/|usr|share|atom|atom/1781-0-santafe_TIME1914397","GTK_MODULES":"gail:atk-bridge","SHELL":"/bin/bash","XDG_SEAT_PATH":"/org/freedesktop/DisplayManager/Seat0","XDG_CURRENT_DESKTOP":"XFCE","QT_LINUX_ACCESSIBILITY_ALWAYS_ON":"1","SHLVL":"1","XDG_SEAT":"seat0","LANGUAGE":"en_US:en","GDMSESSION":"lightdm-xsession","LOGNAME":"frank","DBUS_SESSION_BUS_ADDRESS":"unix:path=/run/user/1010/bus","XDG_RUNTIME_DIR":"/run/user/1010","XAUTHORITY":"/home/frank/.Xauthority","XDG_SESSION_PATH":"/org/freedesktop/DisplayManager/Session0","XDG_CONFIG_DIRS":"/etc/xdg","GOOGLE_API_KEY":"AIzaSyAQfxPJiounkhOjODEO5ZieffeBv6yft2Q","PATH":"/home/frank/Workspace8/repo8/.stack-work/install/x86_64-linux-nopie/lts-8.2/8.0.2/bin:/home/frank/.stack/snapshots/x86_64-linux-nopie/lts-8.2/8.0.2/bin:/home/frank/.stack/programs/x86_64-linux/ghc-nopie-8.0.2/bin:/home/frank/.local/bin:/home/frank/.local/bin/:/home/frank/ghc-mod-sandbox/bin/:/home/frank/.cabal/bin:/home/frank/Debinstall83/deb9/amd9.bin:/home/frank/.bin:/home/frank/.bin/corenlp:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games","SESSION_MANAGER":"local/santafe:@/tmp/.ICE-unix/1727,unix/santafe:/tmp/.ICE-unix/1727","_":"/usr/bin/env"},"encoding":"utf-8","maxBuffer":null}
-0.021s: "ghc-mod: <command line>: cannot satisfy -package-id litNLP-0.0.4-FmHz13iphM0HijEdxOmASU\n    (use -v for more information)\n"
-0.021s: "Running /home/frank/.local/bin/ghc-mod check,/home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs,-- failed with ",{"killed":false,"code":1,"signal":null,"cmd":"/home/frank/.local/bin/ghc-mod check /home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs --"}
0s: {"killed":false,"code":1,"signal":null,"cmd":"/home/frank/.local/bin/ghc-mod check /home/frank/Workspace8/repo8/litMain/src/Snippets2nt.hs --"}

Error
    at /packages/haskell-ghc-mod/lib/util.coffee:60:26
    at ChildProcess.exithandler (child_process.js:225:5)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:877:16)
    at Socket.<anonymous> (internal/child_process.js:334:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at Pipe._handle.close [as _onclose] (net.js:493:12)

Commands
  8x -4:40.9.0 core:backspace (input.hidden-input)
     -4:35.6.0 ide-haskell:close-tooltip (input.hidden-input)
     -4:35.6.0 autocomplete-haskell:conceal-hint-panel (input.hidden-input)
     -4:35.6.0 autocomplete-plus:cancel (input.hidden-input)
     -4:18.1.0 find-and-replace:show (input.hidden-input)
     -4:14.8.0 project-find:show (input.hidden-input)
 11x -2:09.5.0 core:backspace (input.hidden-input)
     -1:58.1.0 editor:newline (input.hidden-input)
     -1:55.6.0 editor:toggle-line-comments (input.hidden-input)
     -1:37.2.0 core:save (input.hidden-input)
  2x -1:37.2.0 ide-haskell:prettify-file (atom-text-editor.editor.is-focused)
     -1:08.1.0 editor:newline (input.hidden-input)
  3x -1:04.1.0 core:backspace (input.hidden-input)
     -0:50.3.0 core:move-down (input.hidden-input)
     -0:17.4.0 core:save (input.hidden-input)
  2x -0:17.4.0 ide-haskell:prettify-file (atom-text-editor.editor)

Non-Core Packages
autocomplete-haskell 0.7.2
busy 0.7.0
git-plus 7.3.3
haskell-ghc-mod 1.19.7
ide-haskell 1.9.5
ide-haskell-cabal 1.8.1
language-haskell 1.12.1

A workaround here might be running Atom with stack exec atom in superproject directory, I'm not entirely sure. This boils down to one simple fact really, ghc-mod doesn't support stack superprojects too well at the moment, and fixing that is not as straightforward as one would like. So... yeah. Sorry I can't be of more help right now.

i moved to the structure with multiple project loaded independently (similar problems). i may go back and try your suggestion.
thank you for the efforts - i hope ghc-mod can be fixed to work with larger (multi-package) projects soon!


fix: escape xml characters

List parts does not need tests for prefix, marker, next marker as they are string
hashes and not object keys which may have invalid xml characters.
fixes #519

@ironman-machine try

Hello @rahulreddy
Starting end to end procedure using the following payload:
{"REPO_NAME": "S3", "SCALITY_S3_BRANCH": "fix/listingEscapeXML", "DEFAULT_BRANCH": "rel/6.2.5"}
Please follow http://ci.ironmann.io/gh/scality/Integration/8624 for CI status.


MailClient.sendMail fails when called from FreeRTOS Task

When I call MailClient.sendMail in setup(), everything works fine.
However, when it is called from a FreeRTOS task, there is a memory allocation failure as shown below. My task size allocation is 32768.
Any thoughts? Thanks.
Showing end of log....
[DEBUG] - INFO: send STARTTLS protocol command
[DEBUG] - 220 2.0.0 Ready to start TLS
[DEBUG] - INFO: seeding the random number generator
[DEBUG] - INFO: setting up the SSL/TLS structure...
[DEBUG] - INFO: setting hostname for TLS session...
[DEBUG] - ERROR: SSL - Memory allocation failed
[DEBUG] - INFO: cleaning SSL connection
[DEBUG] - ERROR: could not connect to server

You are running out of free heap.

Hi,
Any idea how much is needed by the emailer? Can email memory be pre-allocated?
Thanks
Don
—————

On Oct 29, 2019, at 9:26 AM, mobizt<EMAIL_ADDRESS>wrote:

You are running out of free heap.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

No pre-allocate memory for the library, use ESP.getFreeHeap() to make sure you have enough free memory before send/receive Email to make mbedTLS that handles the SSL connection to work.

Hi Mobizt,
Yes. Reducing task stack usage took care of the problem. To send a one line plain text email looks like it takes about 97k free heap.
As you reduce available heap, the program responds with a couple of different allocation errors which is fine. At one memory level the program crashes and causes a reboot as apparently it doesn’t quite catch every allocation error. That’s not critical as I added a check prior to calling just as you suggested.
Thanks for your help!
Don
Sent from my iPhone

On Oct 29, 2019, at 10:04 AM, mobizt<EMAIL_ADDRESS>wrote:

No pre-allocate memory for the library, use ESP.getFreeHeap() to make sure you have enough free memory before send/receive Email to make mbedTLS that handles the SSL connection to work.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Change default IP address in a multi NIC setup

Hi,
I have multiple NIC adapters on my computers. When invoking phonegap serve it launches on my corporate IP address 192.168.224.xx That lan is not accessible to my devices and the app fails to connect.
I have a wireless NIC(s) with IP on <IP_ADDRESS> which is accessible to my mob devices.
How do I go about changing the IP?
Thanks

Hi is this option added?   Currently I'm using the latest phonegap  and when I run phonegap serve
I get this wired IP:
[phonegap] listening on <IP_ADDRESS>:3000
Which is totally useless as it can only be accessed on the local computer and not from a mobile device on the same network.
~$ phonegap version
5.0.0-0.28.1

Hey all, I've just published support for displaying all available network addresses that are IPv4 and not internal. The first address listed the the PG CLI's best guess at the public network interface.
On most systems, there is only one network address. However, when more are available they will be listed. Hope this helps!


Revert "MGMT-17115: Save the custom catalog sources as extra manifests"

Reverts openshift-kni/lifecycle-agent#375

/lgtm

/approve


DOC-3297: Add documentation for scram-sha-256 authentication

Add overview/reference page, update security overview table and references to available auth methods throughout the docs.
https://cockroachlabs.atlassian.net/browse/DOC-3297

This change is


v2 2.5.1 having issues with firebase auth

Reproduction
What version of Remix are you using?
2.5.1
Are all your remix dependencies & dev-dependencies using the same version?
Yes
Steps to Reproduce
npx create-remix@latest
npm install firebase
In the root create file auth.server.js
import { initializeApp } from "firebase/app";
import {
  signInWithEmailAndPassword,
} from "firebase/auth";

const firebaseConfig = {
  apiKey: "xxxxxxxxxx",
  authDomain: "xxxxxx",
  projectId: "xxxxx",
  storageBucket: "xxxxx",
  messagingSenderId: "xxxxx",
  appId: "xxxxx"
};

const app = initializeApp(firebaseConfig);

async function signIn(email, password) {
  const auth = getAuth(app);
  const result = await signInWithEmailAndPassword(auth, email, password);
  return result;
}

in the routes create login.tsx
import { signIn } from '../../auth.server';
import { createUserSession, requireUserId } from "../../utils/auth/session.server";
import Layout from "~/components/layout";

export const action = async ({ request }) => {
    let formData = await request.formData();

    let email = formData.get("email");
    let password = formData.get("password")

    const result = await signIn(email, password);
    log(result)
    /// never get the result

}

export default function Login() {

        return (

                            <Form method="post">

                                        Email

                                        <input type="text" name="email"
                                             />

                                        Password

                                        <input type={inputType} name="password" autoComplete="off"
                                            />
                                        <button type="submit" >
                                            Submit
                                        </button>

                            </Form>

        )
    }

System Info
Operating System:
──────────────────────────────────────────────────────────────────────────────────────────
Platform         : darwin
Distro           : macOS
Release          : 14.2.1
Codename         : macOS Sonoma
Kernel           : 23.2.0
Arch             : arm64
Codepage         : UTF-8
Build            : 23C71

System:
──────────────────────────────────────────────────────────────────────────────────────────
Manufacturer     : Apple Inc.
Model            : Mac14,9
Version          :
Virtual          :

CPU:
──────────────────────────────────────────────────────────────────────────────────────────
Manufacturer     : Apple
Brand            : M2 Pro
Family           : -634136515
Model            :
Stepping         : 4
Speed            : 2.4
Cores            : 10
PhysicalCores    : 10
PerformanceCores : 6
EfficiencyCores  : 4
Processors       : 1
Socket           : SOC

Used Package Manager
npm
Expected Behavior
Firebase should return or response with token or error
Actual Behavior
It is stuck at  await signInWithEmailAndPassword(auth, email, password);
Will not return or throw error - hangs for indefinite amount of time.

Please provide the entire output of npx envinfo --system --npmPackages '{vite,@remix-run/*}' --binaries --browsers run from within your Remix project so that it includes the declared and resolved versions of the relevant NPM packages.

This seems like potentially a bug with the firebase setup, not with Remix?

same bug did you manage to make it work?

I believe firebase/auth is meant to run on the client only, at least I can see that it uses indexeddb and I don't think that's a thing in Node.
https://medium.com/@jwngr/demystifying-firebase-auth-tokens-e0c533ed330c
Check out this article mentioning the difference between client and admin firebase sdk.
For remix you probably want to use client sdk to generate tokens for a cookie based session on the frontend, and verify it on the backend (action, loader) with admin sdk.

this issue https://github.com/firebase/firebase-js-sdk/issues/7991 was closed because OP has found a different approach but I am wondering where the problem is (Firebase or Remix). According to this SO post: https://stackoverflow.com/questions/77843058/firebase-unresponsive-on-auth-signinwithemailandpassword problem might be on Remix side (new version)

I was on the same Firebase ticket (https://github.com/firebase/firebase-js-sdk/issues/7991) and am still having the issue. I moved everything to the client and had it generally working but now that I've moved to the Vite compiler I seem to be having the issue again? Or rather, the opposite issue?


Cannot set TRACE_SAMPLING percentage with istioctl

Running operator from latest master
$ /home/howardjohn/go/out/linux_amd64/release/istioctl manifest generate --set values.pilot.traceSampling=50 | rg SAMPL -A 1
        - name: PILOT_TRACE_SAMPLING
          value: "1"
$ /home/howardjohn/go/out/linux_amd64/release/istioctl manifest generate -f /tmp/icp.yaml| rg SAMPL -A 1
        - name: PILOT_TRACE_SAMPLING
          value: "1"
$ /home/howardjohn/go/out/linux_amd64/release/istioctl manifest generate --set profile=demo | rg SAMPL -A 1
        - name: PILOT_TRACE_SAMPLING
          value: "100"

my ICP:
apiVersion: install.istio.io/v1alpha2
kind: IstioControlPlane
spec:
  values:
    pilot:
      traceSampling: 100.0

So somehow it seems like the profile can properly apply it, but I cannot with --set or -f
This is blocking https://github.com/istio/istio/pull/18991 so putting as a P0

I think setting it in component k8s spec works, try this below? I would check why the overlay part doesn't work
apiVersion: install.istio.io/v1alpha2
kind: IstioControlPlane
spec:
  trafficManagement:
    enabled: true
    components:
      pilot:
        enabled: true
        k8s:
          env:
            - name: PILOT_TRACE_SAMPLING
              value: "50"

Did some investigation, seems like it is because the k8s resource settings from IstioControlPlaneSpec would override the values pass through overlay. https://github.com/istio/operator/blob/master/pkg/component/component/component.go#L755
Do we need to support this use case, e.g. setting traceSampling under values.pilot? I think we may need to support only setting k8s resource settings from iscp components spec and corresponding overlays field.
@ostromart WDYT since you made this part of change

@richardwxn I think we definitely do. The fact that its an environment variable is an implementation detail that we should not expose to users


Challenge Failed: Connection Error (DDNS)

Hi,
I spent quite a bit of time trying to figure out what's causing this and am at a loss.
I have DDNS setup through namecheap -> tomato router -> computer.
I'm using their "A+ Dynamic DNS Record" and I also tried just a standard A Record.
Port 443 is definitely publicly accessible (not blocked by ISP or anything).
It feels like the challenge is just not getting hosted locally.
Thanks for any help!
Netstat:
tcp6       0      0 :::80                   :::*                    LISTEN      19048/docker-proxy
tcp6       0      0 :::443                  :::*                    LISTEN      19036/docker-proxy

Log:
{
  "identifier": {
    "type": "dns",
    "value": "www.atomsandbits.ai"
  },
  "status": "invalid",
  "expires": "2018-07-24T00:08:56Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "invalid",
      "error": {
        "type": "urn:acme:error:connection",
        "detail": "Fetching http://www.atomsandbits.ai/.well-known/acme-challenge/xOM-bYeaH_-0ZX_tDWDHF_NMPdzsyl6gCuvul3vJ7jc: Timeout during connect (likely firewall problem)",
        "status": 400
      },
      "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/6kI5qbmFJqdeCVkA8W26Neh1X2ncnjBOIfD-MmesMuY/149390393",
      "token": "xOM-bYeaH_-0ZX_tDWDHF_NMPdzsyl6gCuvul3vJ7jc",
      "keyAuthorization": "xOM-bYeaH_-0ZX_tDWDHF_NMPdzsyl6gCuvul3vJ7jc.58HYOuxGNkmgxJNP-C-RKLDZUermSL9dKX5HFFkWb74",
      "validationRecord": [
        {
          "url": "http://www.atomsandbits.ai/.well-known/acme-challenge/xOM-bYeaH_-0ZX_tDWDHF_NMPdzsyl6gCuvul3vJ7jc",
          "hostname": "www.atomsandbits.ai",
          "port": "80",
          "addressesResolved": [
            "<IP_ADDRESS>"
          ],
          "addressUsed": "<IP_ADDRESS>"
        }
      ]
    },
    {
      "type": "dns-01",
      "status": "invalid",
      "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/6kI5qbmFJqdeCVkA8W26Neh1X2ncnjBOIfD-MmesMuY/149390394",
      "token": "vpHMHB6N3ltH7oxdO3aMNRHnnEsiFIeKHiI2XVF1XFw"
    },
    {
      "type": "tls-alpn-01",
      "status": "invalid",
      "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/6kI5qbmFJqdeCVkA8W26Neh1X2ncnjBOIfD-MmesMuY/149390395",
      "token": "G1gf7xOz8QBi6aOUxFi_Trgvr3npx-DPuY3XnNz7Mic"
    }
  ],
  "combinations": [
    [
      2
    ],
    [
      1
    ],
    [
      0
    ]
  ]
}

I'm having the same issue, and the log from letsencrypt is identical. The connection is always refused with a 400 error.
Here's an example of my docker-compose:
version: '2'

services:

  proxy:
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html
      - /opt/srv/certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    labels:
      - com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    volumes:
      - /opt/srv/certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    volumes_from:
      - proxy

  api:
    image: image1
    expose:
      - 8000
    environment:
      - VIRTUAL_HOST=api.domain.com
      - LETSENCRYPT_HOST=api.domain.com
      -<EMAIL_ADDRESS>
  static:
    image: image2
    expose:
      - 80
    environment:
      - VIRTUAL_HOST=static.domain.com,dev.domain.com
      - LETSENCRYPT_HOST=static.domain.com,dev.domain.com
      -<EMAIL_ADDRESS>
I deployed this successfully a little over a month ago.

Try to troubleshoot step by step:

check that your domain(s) DNS A/AAAA record is(are) correctly set.
start a single nginx container with published port 80 and check if you can reach it with the domains that point to your host.
stop/remove the previous container, start nginx-proxy with a single proxyed container (yet another nginx container to keep it simple) and without letsencrypt-nginx-proxy-companion. Again test if the proxy is working correctly and if you can reach your proxyed nginx container.
add the letsencrypt companion container, create a dummy file inside /usr/share/nginx/html/.well-known/acme-challenge and try to access it from the outside.

My issue ended up being that I was hosting from a dorm and 80/443 were blocked externally, but not within the network.
Definitely my bad.


Add testing for multiparser.py to test base64 encoding

Hi, since I ran the testing coverage for this project and found the base64 encoding wasn't tested in multipartparser.py.
Therefore, I added a testing to test the base64 for multiparser.py.
If this PR is inapproriate, please let me know. Thank you!

@benebsiny Thanks :+1: extra tests coverage is always welcome. Can we move new tests to the file_uploads.tests.FileUploadTests where base64 uploads for files are tested?
https://github.com/django/django/blob/4f6a51dfe6a4a8d5ed61c73b902e808109f142b0/tests/file_uploads/tests.py#L127-L182

Hi @felixxm, thank you for your feedback! I've looked into the FileUploadTests.py. This module tests code that related to file. However, my testing is to test the base64 that defined in field instead of file. Is it a good idea to move these testing to FileUploadTests.py ?

Hi @felixxm, I've made changes, have a look at it, thanks!

@benebsiny Thanks :+1: Welcome aboard :boat:


Lower MSRV to 1.34

In principle, I agree that 1.36-37 is a reasonable MSRV but we'd like to use it in Sequoia which targets Debian stable (1.34 for now). cc @teythoon
Changes:

Enum variants are explicitly typed (not using Self type alias)
ULONGs initialized by FFI are always first initialized to 0 (doesn't use MaybeUninit)
Zero-initializes the returned value that's then initialized by FFI (doesn't use MaybeUninit)

The biggest downside is having to rely on a custom ZeroInitSafe trait and impls to safely initialize structs on Rust before passing them to FFI but the cost should be fairly negligible.

It looks like the "old" 1.37 run is still scheduled but isn't triggered - hopefully the required check set will update if/when the relevant GH action definition file is updated on master.

It seems we'll be targeting Rust 1.40 with Sequoia, so there's no need for this PR from our side anymore.


Cannot update kube resource name or namespace

I'm not sure if it's bug, but if you try changing name or namespace when editing kube resource, you will get an error.
This is something that exists already in 5.3.3 (didn't try more)

Just discussed that this isn't bug. Name and namespace cannot be updated.


Update the standalone app and make it easier to open.

Hello.
Please update .jar to the current version and make it possible to run without using the terminal.

Hello! Sorry for late answer ( You can get latest  desktop yamp jar with simpleperf format support in https://github.com/Grigory-Rylov/android-methods-profiler/releases/download/v<IP_ADDRESS>/yamp-24.08.23.jar


[BUG] Error in benchmarking using deepspeed profiler

Describe the bug
Benchmarking any model using benchmark.py using Microsoft deepspeed backend results in error due to recent changes in the get_model_profile API (check deepspeed_profiler). This is due to mismatch in the arguments to this API. There are two such instances in the function profile_deepspeed:

input_res argument is not available. Instead the current deepspeed API has input_shape (see screenshot 1 below).
input_constructor arg is not present anymore (see screenshot 2 below).

Also, the deepspeed profiler returns 3 values: flops, macs, params. Fixing the first two errors (by replacing input_res with input_shape and removing/commenting out input constructor) results in unpacking error (see screenshot 3 below).
To Reproduce
Steps to reproduce the behavior:

python pytorch-image-models/benchmark.py --bench profile_deepspeed --model resnet50 # model name can be replaced with any other model

Expected behavior
Running benchmark should not result in this error.
Screenshots
Error 1

Error 2

Error 3

Desktop (please complete the following information):

OS: Ubuntu 18.04 on Google Colab
This repository version: commit beef62e7abc725df1be55f3057ceeea038ff9acd
PyTorch version w/ CUDA/cuDNN: 1.11.0+cu113

Additional context
I have given edited function profile_deepspeed that fixes these errors:
def profile_deepspeed(model, input_size=(3, 224, 224), batch_size=1, detailed=False):
    _, macs, _ = get_model_profile(
        model=model,
        input_shape=(batch_size,) + input_size,  # input shape/resolution
        print_profile=detailed,  # prints the model graph with the measured profile attached to each module
        detailed=detailed,  # print the detailed profile
        warm_up=10,  # the number of warm-ups before measuring the time of each module
        as_string=False,  # print raw numbers (e.g. 1000) or as human-readable strings (e.g. 1k)
        output_file=None,  # path to the output file. If None, the profiler prints to stdout.
        ignore_modules=None)  # the list of modules to ignore in the profiling
    return macs, 0  # no activation count in DS

@soumendukrg hmm, thanks for the report, this means there will be a backwards compat break on older deepspeed, although I guess most people keep deepspeed relatively up to date... I'll take a look, thanks

@soumendukrg fixed in https://github.com/rwightman/pytorch-image-models/commit/28e01520434930b420aedfc979f0f2fcee513628 , merged now, thanks

Thanks @rwightman for fixing this and merging into the main branch.


WriteObject uses resumable uploads.

With this PR this is enabled only when the application uses
WithObjectMetadata.  In this case it is impossible to use simple
uploads, and really hard to use multipart uploads because the mime
boundary cannot be safely created for an unknown input.

This change is

PTAL.


Half base type

This pr moves the half out of extended_float.hpp with some modification and half is available in the public interface.
Currently, we can still mark some conversion/operation with GKO_ATTRIBUTE and GKO_INLINE.
However, I think it is good to ensure we only use the vendor's impl on device side.
To achieve it, Jacobi needs to use __half not half now.
This also removes the undefined behavior from reinterpret_cast to std::memcpy
one question: should we mark the half precision in experimental namespace? in usual interface from discussion

@MarcelKoch I have made the half without types.hpp dependence such that we can include it directly without circular dependence and the instantiate function have the definition of half now


Enable a field for exact matching of similar cases prerequisites incomplete

The field must be also added to the quick find view in order to be available on the TEXT ANALYTICS ENTITY MAPPING in the drop down lookup for Field.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2e3dff94-8acc-abe5-cc74-bbe78851f53d
Version Independent ID: 33257a54-5065-2e60-94fb-c092059d3d4f
Content: Suggest similar cases for a case with Dynamics 365 Customer Service
Content Source: ce/customer-service/suggest-similar-cases-for-a-case.md
Service: dynamics-365-customerservice
GitHub Login: @neeranelli
Microsoft Alias: nenellim

Dear @toszypul
Thank you for reaching out. We have taken your feedback into account and will be updating the content soon.
Best regards,
Neeraja

@toszypul
The content has been updated. Please see step 5 in the Enable a field for exact matching of similar cases
I hope your query has been addressed. Please let me know so that I can close this issue.
Thank you.
Neeraja

I didn't hear back from you, @toszypul and hope that your issue has been resolved.
I am closing this issue. Please feel free to let us know if you have any questions.
Best regards,
Neeraja


Instructions for preparing icon listings for documentation no longer work

Pertinent section of the Wagtail docs

https://docs.wagtail.org/en/stable/contributing/ui_guidelines.html#adding-icons
The instructions here are worded a bit confusingly but you need to look at the HTML for the styleguide template to see what to do...

https://github.com/wagtail/wagtail/blob/24f5a4a14ce3df580ce5fc7f085f3e6a8357237e/wagtail/contrib/styleguide/templates/wagtailstyleguide/base.html#L507
When I ran that I did not get the actual SVG content, only the svg use references.
The actual svg sources (paths etc) are needed for the generated content https://github.com/wagtail/wagtail/blob/main/docs/_static/wagtail_icons_table.txt
Which gets used on this page: https://docs.wagtail.org/en/stable/advanced_topics/icons.html
Details
The output generated does not contain the actual SVG but just the reference.

<svg class="icon icon-folder-inverse w-w-8 w-h-8" aria-hidden="true"><use href="#icon-folder-inverse"></use></svg>
folder-inverse
 folder (solid): Font Awesome Pro 6.4.0
wagtailadmin/icons/folder-inverse.svg

Originally posted by @rohitsrma in https://github.com/wagtail/wagtail/issues/11768#issuecomment-2002389903
Not sure when this broke but it appears that the last sets of new icons were added over a year ago so maybe sometime since then. See https://github.com/wagtail/wagtail/pull/10320
It's possible this has never worked since we updated to use the new sprite approach sometime around 2022.
Working on this

It's recommended that someone with knowledge of this original set up help support this issue.
There may be a better way to do this instead of copy/pasting console output.

@thibaudcolas or @laymonage  - do either of you know when the icon copy script last worked? Or if we are doing something wrong.

Hmm, we probably broke this as part of #11466, where we switched the icons preview to use the same {% icon %} tag as elsewhere in Wagtail.
Here is a replacement one-liner:
copy($$('[data-sprite]')[0].innerHTML.replace(/\s+/g, ' ').replace(/<symbol/g, '\n<symbol') + $$('[data-icons-table^="wagtailadmin"]')[0].innerHTML.replace(/\s+/g, ' ').replace(/<t/g, '\n<t').replace(/<svg/g, '<svg width="32" height="32"'))

This is something we do rarely enough that I still like this solution personally even if it’s not very ergonomic. A management command would be cool too but feels like a lot of work for something that’s only needed a few times per year at most.


PADV-303: LTI launch complete course rendering ADR

Ticket
https://agile-jira.pearson.com/browse/PADV-303
Description
This PR adds an ADR document where we will address the issue on the ticket PADV-303,
the document contains information on rending a whole course from and LTI course,
these are a description of the multiple approaches to achieve this, its workflow,
and each pros and cons. We will use this ADR to discuss on which approach use to
render the whole course.
Type of Change

Add ADR /docs/decisions/0001-launch-complete-course.rst with discovery on
rendering a whole course for an LTI launch.

Reviewers

[ ] @anfbermudezme
[ ] @Jacatove
[ ] @alexjmpb
[ ] @Squirrel18

Thanks @ormsbee, I agree that using the learning MFE could be a better option to maintain stable courseware concerning future changes in the platform, for now, it seems to us that approach 4 is a simpler way to create an initial implementation for the LTI tool provider that can be developed without having to maintain another repository and allow an easy installation and configuration of the plugin.
Is your proposed new course navigation really LTI-specific?
It doesn't necessarily have to be specific views for LTI, the only thing we need is some views that allow having a course home and courseware with nothing more than the content, to allow a user to easily navigate on an LTI launch of a complete course while having strict control over exposed content on LTI, we also have thought the future implementation to make a launch on a unit or component, in that case, we would use directly render_xblock, as it is implemented in the app lti_provider in the LMS. Right now course launches are our priority. Also, we need to have control over access to these views, in our case we should only be able to allow access to these views if a user is related to an LTI profile, integrating it into the plugin allows us to manage access easily with a middleware that would only allow access to these views and log out the user in case of accessing another view of the LMS (this is to make sure the client is not blocked in case it wants to log in with another account outside the LTI launch).
I think that if we implement something that can be used for other features, this should be done in the learning MFE, it seems to me that maintaining a separate plugin only for these views is less practical and is limited only to our use case right now. Within this ADR discussion this idea came up, that maybe if a similar feature to this could be pushed to the learning MFE, we could use these views instead of keeping a separate one for our use case. I don't know what you think about this, I think it could be a different discussion if there is interest in integrating these views for other features.
Please consider what it would mean to make the Learning MFE integrate this cleanly.
Before deciding to go for approach 4, we thought that if it were to be implemented in the learning MFE approach 3 could be the most practical, add a new path for these views, and add a validation that allows us to detect if the user should or should not have access, for now, it is not completely clear how this access control could be best achieved, if possible I could extend the approach 3 and polish it to have an alternative proposal using the MFE, this could perhaps work as a reference for future features that may need this functionality in the learning MFE for a similar purpose.
Thanks for your feedback! I hope that as with the documentation, my answers to your questions/suggestions are clear enough.


add generation of jupyter book

TO Do by maintainers (I don't have the rights to change the settings):

In settings --> Actions --> General --> Workflow permissions:  enable Read and write permissions
once merged, Settings --> Pages: Deploy from gh-pages branch

The GitHub action is running at the moment!

The GitHub action is running at the moment!

Cool! yes, gh-pages branch is there now: https://github.com/EO-College/cubes-and-clouds/tree/gh-pages
I am not sure GitHub Pages site is configured yet. I do not see the rendered version https://eo-college.github.io/cubes-and-clouds/

Now it's is available

Ok. But it seems to be linked to the main branch and not gh-pages.

True, fixed now


golden file tests

As a way to tackle #87, #88 , etc, this introduces some "golden file tests" (Background).
The basic idea is that we have fogg.json files in testdata and can run apply over them and check them in (make update-golden-files). Then when we run the tests we apply to a temp directory and compare the results.
The code for comparing has some weaknesses, but is a starting point for making sure we don't introduce (unknown) changes to the outputted files.

As a way to tackle #87, #88 , etc, this introduces some "golden file tests" (Background).
The basic idea is that we have fogg.json files in testdata and can run apply over them and check them in (make update-golden-files). Then when we run the tests we apply to a temp directory and compare the results.
The code for comparing has some weaknesses, but is a starting point for making sure we don't introduce (unknown) changes to the outputted files.


SDK to implement 'Query Feature' in Identify cluster

With Latest ToT a2c7af21976195bdae4e2667448d87b70d1651a7,  SDK to implement 'Query Feature' in Identify cluster.
Expected behavior: FeatureMap bit is set to 1.  Reference apps should have all features implemented to verify mandatory commands/attributes during cert/Pre-SVE testing.
Actual behavior: FeatureMap bit is set to 0.
Platform tested: All-cluster-app on raspi, chip-tool on mac.
How to verify
% sudo ./out/debug/chip-tool identify read feature-map 60 0
[1653958559958] [34919:9215613] CHIP: [EM] Removed CHIP MessageCounter:3411946 from RetransTable on exchange 1430i
[1653958559958] [34919:9215613] CHIP: [DMG] ReportDataMessage =
[1653958559958] [34919:9215613] CHIP: [DMG] {
[1653958559959] [34919:9215613] CHIP: [DMG] 	AttributeReportIBs =
[1653958559959] [34919:9215613] CHIP: [DMG] 	[
[1653958559959] [34919:9215613] CHIP: [DMG] 		AttributeReportIB =
[1653958559959] [34919:9215613] CHIP: [DMG] 		{
[1653958559959] [34919:9215613] CHIP: [DMG] 			AttributeDataIB =
[1653958559959] [34919:9215613] CHIP: [DMG] 			{
[1653958559959] [34919:9215613] CHIP: [DMG] 				DataVersion = 0xdfe209b3,
[1653958559959] [34919:9215613] CHIP: [DMG] 				AttributePathIB =
[1653958559959] [34919:9215613] CHIP: [DMG] 				{
[1653958559959] [34919:9215613] CHIP: [DMG] 					Endpoint = 0x0,
[1653958559959] [34919:9215613] CHIP: [DMG] 					Cluster = 0x3,
[1653958559959] [34919:9215613] CHIP: [DMG] 					Attribute = 0x0000_FFFC,
[1653958559959] [34919:9215613] CHIP: [DMG] 				}
[1653958559959] [34919:9215613] CHIP: [DMG]
[1653958559959] [34919:9215613] CHIP: [DMG] 					Data = 0,
[1653958559959] [34919:9215613] CHIP: [DMG] 			},
[1653958559959] [34919:9215613] CHIP: [DMG]
[1653958559959] [34919:9215613] CHIP: [DMG] 		},
[1653958559959] [34919:9215613] CHIP: [DMG]
[1653958559959] [34919:9215613] CHIP: [DMG] 	],
[1653958559959] [34919:9215613] CHIP: [DMG]
[1653958559959] [34919:9215613] CHIP: [DMG] 	SuppressResponse = true,
[1653958559959] [34919:9215613] CHIP: [DMG] 	InteractionModelRevision = 1
[1653958559959] [34919:9215613] CHIP: [DMG] }
[1653958559959] [34919:9215613] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFC DataVersion:<PHONE_NUMBER>
[1653958559960] [34919:9215613] CHIP: [TOO]   FeatureMap: 0

Are Feature maps not optional by definition?

Looking at the spec:
Feature QRY is a feature that controls IdentifyQuery and IdentifyQueryResponse.
My expectation is that we either say Feature = 1 and implement the IdentifyQuery or we set Feature = 0.

As in, Matter devices are not allowed to implement this feature.  It's Zigbee-only.

Matter devices are not allowed to implement this feature

But it sounds like the all-cluster example all is enabling this cluster? Are you saying that we should disable it, or that this isn't a required cluster of matter and therefore shouldn't be a cert blocker?

The cluster is enabled and supported.  The QRY feature, and anything conditioned on it, is not.


Redirect and toast for withdrawn datasets is regressed

Need
On view of a withdrawn dataset, the user is redirected to the dataset's corresponding collection detail page in the Data Portal and a toast is popped detailing the dataset's withdrawn status.

See also the withdrawn collection-related ticket.
See Slack.

Defect Description
What I did:

Deleted a dataset
Viewed the deleted dataset in Explorer

What happened:

A "not found" page was displayed

What I expected:

Redirected to the corresponding collection detail page in the Data Portal
Toast popped (with text as per Figma)

Root Cause
When viewing a dataset in Explorer, Explorer requests the dataset's metadata from the Data Portal.
When viewing a tombstoned dataset, the Explorer is expecting a 200 response code and a tombstoned: true value in the response body from the Data Portal (see here).
The Data Portal is currently throwing a NotFoundHTTPException when requesting metadata for a tombstoned dataset (see here) which is causing Explorer's redirect back to the Data Portal to fail.
Code Updates
portal_api.get_dataset_identifiers
This code block is where the defect occurs. Either get_dataset_version_from_canonical needs to return tombstoned datasets or the NotFoundHTTPException needs to be swallowed such that the get_dataset_identifiers function can return a 200 plus dataset-related details to facilitate the redirect.
base_test.generate_dataset
There is currently a defect in base_test.py that affects tests covering the tombstoned: true case. See here:
explorer_url = f"http://base.url/{dataset_version_id.id}.cxg/"
explorer_url should be generated from the dataset ID if the dataset is published, or the dataset version ID if the dataset is private or part of a revision. The above needs to be updated to below, or similar:
cxg_id = dataset_id.id if publish else dataset_version_id.id
explorer_url = f"http://base.url/{cxg_id}.cxg/"

persistence_mock.get_collection_version_with_datasets
The call to _update_version_with_canonical (see here) should be updated to include get_tomstoned so that tombstoned dataset are included in the returned collection version.
rdev
Spinning Up the Data Portal and Explorer
To test this end-to-end in rdev, both the Portal and Explorer running "together" are required. See blocking ticket.


deps: bump SDK v0.46.7 in v6.1.x

Description

ref: #2929
Commit Message / Changelog Entry
deps: bump SDK v0.46.7

see the guidelines for commit messages. (view raw markdown for examples)

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[x] Targeted PR against correct branch (see CONTRIBUTING.md).
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Code follows the module structure standards.
[ ] Wrote unit and integration tests.
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/).
[ ] Added relevant godoc comments.
[x] Provide a commit message to be used for the changelog entry in the PR description for review.
[x] Re-reviewed Files changed in the Github PR explorer.
[ ] Review Codecov Report in the comment section below once CI passes.

Thanks @crodriguezvega! I think we also need to update main, right?

I was thinking of skipping main since hopefully we will be able to merge the PR with v0.47-alpha2 soon. Do you think it would be worth doing anyway?

Good point! Happy to go with that if you are!


consider adding external links a la wrlc catalog

w/r/t #433:

Link to WorldCat search.
Link to Google Books search.
Link to Google Scholar search.
A Print/Save option

A link to WorldCat search and WorldCat identities is included in m35_001


Clarify ability to add free-text in educator services dropdown

Feedback from Kathleen Seward, principal at the West Somerville Neighborhood School:
When adding a Service for a student, Kathleen wanted to put the name of an outside service provider who works with students at West Somerville, but isn't actually on staff at the school.
She didn't see that person's name in the autocomplete, so assumed she would not be able to add that staff member and put her own name instead.
The autocomplete can accept free-text input. But since that's not immediately clear to our user, we need to brainstorm and implement design changes that will make it obvious and intuitive.

We could have the first row of the autocomplete just mirror what you're typing.  Quick example:

@awalker4 This looks like a really good idea to me!

@awalker4 Could be a fun fix to work on during Code for Boston.

Hey @awalker4! Mirror thing looks pretty cool. If you're working on this, assign yourself.

@erose Awesome, I'll look into it! I don't see any option to assign myself though.

It's a drumroll......... permissions problem! You should see the option now.


[MLS Spec change] Allowlist approach for proposals in external commit (#595)

Description of the changes
This PR changes the logic of what is allowed in an external commit by explicitly allowing proposals, rather than disallowing all others individually.
Link to the exact changes
https://github.com/mlswg/mls-protocol/pull/595

I'd like to be assigned this issue


Dev humble ignition gazebo

Ignition Gazebo
Ignition Gazebo (Gazebo) will be the predecessor of Gazebo (Gazebo Classic). This PR aims to already support Ignition Gazebo.
Currently, most functionality in this PR works, except for the interactive marker for MoveIt 2. For early adoption, this repo can be checked out dev-humble-ignition-gazebo. It can be run as usual.
iiwa7.webm
Tasks

[ ] Add Gazebo install hint

https://gazebosim.org/docs/harmonic/ros_installation
https://gazebosim.org/docs/fortress/ros_installation#installing-the-default-gazebo-version-for-a-ros-distribution-using-binary-installations

[ ] Update launch files
[ ] Update Gazebo plugin in robot description
[ ] Add conditional dependencies

[ ] ros-humble-ros-gz
[ ] ros-humble-gazebo-ros

blocked by https://github.com/ros-controls/gz_ros2_control/issues/182

interactive marker nonreactive for moveit launches

read up on migration guide: https://gazebosim.org/docs/harmonic/migrating_gazebo_classic_ros2_packages

I tried to run this locally, and there is a dependency problem with the fri_vendor package.

hi @jclinton830 and thank you for the feedback. This PR was left a little behind, hence why it likely doesn't work.

@mhubii Any idea on when this will be merged into the humble branch? Happy to assist with the process if it expedites it.

hi @jclinton830 and sorry for the late response. Happy to review your PR if you decide to contribute!
Best way to do this is to start from the humble branch. These need to be implemented:

Implement the launch for the new Gazebo
Replace the old Gazebo plugin here:
https://github.com/lbr-stack/lbr_fri_ros2_stack/blob/71bf3f8957697b31fb887106c5dbe02074d9a9ea/lbr_ros2_control/config/lbr_system_interface.xacro#L18
Replace the old Gazebo plugin here:
https://github.com/lbr-stack/lbr_fri_ros2_stack/blob/71bf3f8957697b31fb887106c5dbe02074d9a9ea/lbr_description/gazebo/lbr_gazebo.xacro#L7
Update dependencies in package.xml

You can get inspiration:

Here: https://github.com/ros-controls/gz_ros2_control/tree/humble
And in this PR

Hi @mhubii I have forked your humble version and have made my own branch called dev-humble-ign.
https://github.com/acfr/lbr_fri_ros2_stack/tree/dev-humble-ign
Do you take PRs directly into humble from forks?

sorry for the late response @jclinton830. This branch should now work.
One remaining issue: Somehow the new Gazebo seems slow. The sdf (simulation description format), which is loaded here:
https://github.com/lbr-stack/lbr_fri_ros2_stack/blob/833ed94a5b773035864ba28479bad179a7867278/lbr_bringup/lbr_bringup/gazebo.py#L23
and accessed from:
/usr/share/ignition/ignition-gazebo6/worlds/empty.sdf
has an integrator step size (max_step_size):
    <physics name="1ms" type="ignored">
      <max_step_size>0.001</max_step_size>

If you set this from 0.001 -> 0.01, then the simulation is quicker.
One might need to add an sdf file to this repo and extend the environment variable GZ_SIM_RESOURCE_PATH.
You can target PRs against this branch (dev-humble-ignition-gazebo)

sorry for the late response @jclinton830. This branch should now work.
One remaining issue: Somehow the new Gazebo seems slow. The sdf (simulation description format), which is loaded here:
https://github.com/lbr-stack/lbr_fri_ros2_stack/blob/833ed94a5b773035864ba28479bad179a7867278/lbr_bringup/lbr_bringup/gazebo.py#L23
and accessed from:
/usr/share/ignition/ignition-gazebo6/worlds/empty.sdf
has an integrator step size (max_step_size):
    <physics name="1ms" type="ignored">
      <max_step_size>0.001</max_step_size>

If you set this from 0.001 -> 0.01, then the simulation is quicker.
One might need to add an sdf file to this repo and extend the environment variable GZ_SIM_RESOURCE_PATH.
You can target PRs against this branch (dev-humble-ignition-gazebo)

What is the average real-time factor you are witnessing? Also have you fixed the problem with not being able to move the robot using the interactive marker?

What is the average real-time factor you are witnessing? In the above branch that I made in my forked version gazebo is working fast, with an average real-time factor of 90%.

With integrator step size 0.001 ~ 20% and with 0.01 about ~ 100%.

Also, have you fixed the problem of not being able to move the robot using the interactive marker?

Yes that's working now.


SOCKS proxy test

Description
This tests internet connectivity when using a SOCKS proxy.
Steps to reproduce issue
1 - Execute on the target device:
# mkdir -p /mnt/boot/system-proxy/
On the target device (ssh into the hostOS) create this file and replace the  with the one of the host which will have the proxy server:
# cat <<'EOF'>> /mnt/boot/system-proxy/redsocks.conf
 base {
   log_debug = off;
   log_info = on;
   log = stderr;
   daemon = off;
   redirector = iptables;
 }
 redsocks {
   type = socks5;
   ip = <SERVER IP>;
   port = 8123;
   local_ip = <IP_ADDRESS>;
   local_port = 12345;
 }
 EOF
# reboot
2 - On a server host machine (your development machine for example) located in the same network, install the ssh server package and start the ssh server daemon.
Then, on the server(your development machine for example), start a ssh tunnel (SOCKS proxy):
$ timeout -sINT 40s ssh -D <IP_ADDRESS>:8123 -C -N <USER>@localhost
3 - Clean-up.
Execute on the target device (on the hostOS):
# rm -rf /mnt/boot/system-proxy && reboot
Expected result
1 - The device should reboot and remain offline in the dashboard.
2 - The device should appear as online in the dashboard in the next 40 seconds and then go offline.
3 - The device should reboot and then appear online in the dashboard once booted up.
Actual result
Device comes online even when the proxy server is not turned on, but strange behaviour, some parts work, some parts don't. Can connect over VPN, but e.g. LED blink does not work and nor there are any application logs (but there are some supervisor logs...). Reboot works, howerver.
Other information

Reported by: Gergely Imreh

Test configuration: RaspberryPi 1

Test case number: TC25

Test run: https://resinio.testlodge.com/projects/16238/runs/276578?tab=2&run_section_id=349929&executed_case_id=12173952#executed_case_12173952

Duplicate of #368 (failed both on Pi Zero and Pi1), submitted it twice by accident.


Add 22.2 to 23 upgrade path

Signed-off-by: John Molakvoæ<EMAIL_ADDRESS>

Shall we wait for beta2 ?

/rebase

Upgrades / Upgrade from 22.2.0 to 23.0.0 beta 1
Should be beta2

/rebase


Request for Firebase App Indexing plugin

We had an internal request to add this plugin. https://firebase.google.com/docs/app-indexing
It seems on iOS, this requires universal links. Do we have core support for this? It seems this is different from Firebase Dynamic Links :-/
For Android, the main plugin work is around enabling this: https://firebase.google.com/docs/app-indexing/android/personal-content

@mehmetf
This issue has been moved to https://github.com/FirebaseExtended/flutterfire/issues/361. Any further collaboration will be done there.


Bad redirect back from poll detail page to profile page

The back button does not work as intended going from profile page to poll detail page.

can you do useHistory and go back -1?

Fixed using window.history.state.
Using only useNavigate(-1) may result in the redirect exiting our domain. For example, as we can share the poll link, when a user goes to the poll from about:blank using the poll link and hit back, useNavigate(-1) will redirect the user to the about:blank.
react-router-dom has a state attached to history, and we could conditionally check if the state exists. If it does, we go back, if not, we go to home. And more customized redirects could be done in a similar fashion.


Add docs for "Copy with control sequences" functionality

See https://github.com/microsoft/terminal/pull/17059

@microsoft-github-policy-service agree

We will revisit this PR this after https://github.com/microsoft/terminal/pull/17059 gets merged in main.

@FuegoFro And so will this PR in a few minutes! Thanks for the work on this, Danny! :D


Add support for more esri layers

New Esri layers:

Feature Layer
Tiled Map layer
Image Layer
Clustered Layer

Refactoring dynamic layer type.

Thanks, I'm sure everyone will appreciate the example you've done as well. :+1:

LGTM, @elesdoar we can not auto merge please remerge with master ty

OK, merged


add user edit modal

Overview

added a modal client, route definition, form validator, model function and API for editing name and email address of users on admin console
fixed some typo

😭


GUACAMOLE-292: Document new user profile columns of guacamole_user.

NOTE: Intended for staging/0.9.13-incubating.


onPositionChanged never fired

Hi,
I'm trygin to use onPositionChanged callback but it's never fired.
I tryed your example only intervals are updating position.
Regards.

Hi, have you been able to use onPositionChanged?

@Angelk90 No I moved on, I'm using react-native-looped-carousel instead. It have a more consistent API.


Fix generation using arrai

The following problems presented with https://github.com/anz-bank/sysl-template
// Service interface for simple
type Service interface {
	Get(ctx context.Context, req *GetRequest) (*Welcome, error)
	GetFoobarList(ctx context.Context, req *GetFoobarListRequest) (*jsonplaceholder.todosResponse, error)
}

There is a reference to an unexported field, that should be exported; ie *jsonplaceholder.TodosResponse instead of *jsonplaceholder.todosResponse
This is the fix to make it work
This isn't to be merged in immediately, as there is some code gen that relies on the current version of arrai and these changes might be breaking changes

Doesn't seem to impact other repos which I tested locally


pushState method works with full URLs only

I'm dissapointed with pushState method right now. It says that I can use full urls only.
Let's imagine I have multistep form and I have routes
<Route path="/" component={ App }
    <Route path="companies" companent={ CompanyPage }>
        <Route path="feedback/:stepName" component={ MultiStepForm } />
    </Route>
    <Route path="staff" component={ StaffPage }>
        <Route path="feedback/:stepName" component={ MultiStepForm } />
    </Route>
</Route>

In this scenario when user clicks "continue" button in the form I need to change url from .../feedback/step_one to .../feedback/step_two, but I don't know in which route(companies or staff) user is located.
It would be very convenient to change last part of the url by calling pushState(null, "step_two") instead of parsing and replacing current url manually. If I understand correct, main goal of react-router is to avoid manual URL parsing, so there should be way to change URL partially.

Dupe of #2172


Add a method to list the name of the parameters for a flow.

Addresses #137 .
You can now do:
for name in self.parameters:
print('I have a parameter %s with a value of %s' % (name, getattr(self, name)))

I thought about that and decided for just the names to respect the lazy loading (a use case may be that you are looking for a specific parameter and don’t want to load all of them). Basically push the cost only to the “using it” path.
Sent from my iPhone

On Mar 2, 2020, at 14:16, Savin<EMAIL_ADDRESS>wrote:
@savingoyal commented on this pull request.
In metaflow/current.py:

@@ -10,6 +10,7 @@ def init(self):
self._namespace = None
self._username = None
self._is_running = False

   self._parameter_names = None

Should these be just parameters? Maybe the structure could be a dictionary of names and values?
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub, or unsubscribe.


Added HistGradientBoostingRegressor_MinMaxScaler

Hey Neel,
Also do the change related to meta description  in you previous week submission ASAP


add mps and xpu to examples

also moved it to bf16 which results in a substantial speedup over fp32

Hey @bghira, thanks for the great contribution!
I actually don't have access neither to MPS or XPS devices, could you make sure that it works by running the code once ? the code looks good to me

thanks for having me check it @ylacombe i incorrectly added the xpu line as i misremembered how it was told me to add it.
that is tested and ready now.

Many thanks for your help! merging now!


Gzip: support for min_length.

Feature requested in https://github.com/mholt/caddy/issues/398

Great work -- good use of interfaces and great that it has tests, too. Thanks!! :100:


Interact and understand the current tables sdk design for single operations

Deliverable: sample files demonstrating usage

Finished samples for broad functionality, but didn't do different query filter/top/etc.
Going to leave the readmes for later after the arch board meeting due to possible changes to current design.


fix(dtatsample): fix rate infinity cause range error

Brief Information
This pull request is in the type of:

[x] bug fixing
[ ] new feature
[ ] others

What does this PR do?

Fixed issues

Details
Before: What was the problem?

After: How is it fixed in this PR?

Misc

[ ] The API has been changed (apache/echarts-doc#xxx).
[ ] This PR depends on ZRender changes (ecomfe/zrender#xxx).

Related test cases or examples to use the new APIs
N.A.
Others
Merging options

[ ] Please squash the commits into a single one when merging.

Other information

Why is your chart width zero?

Why is your chart width zero?

In our application(datart), we set default container with to zero, and wait dataset back and debounce calculate the frame container width and height. For sure, we could set default is 1px or more, then the chart will reset width to 600px for example, the graph will be twinking.
For sure when the width set to 0, is it not make sense to draw any graph for ECharts, but sometime it is useful to init echart instance and resource, so it is much better to avoid Exception I think. In other word, it is seemed not friendly error message when width to zero.

Looks good.


Apply custom classes on content ?

Hi,
is there a way to setup some custom classes to apply to HTML tags when editing content ?
For example: If I put a text as Header 1 (h1), can I automatically add classes to the h1 tag ?
example:
Title 1

Regards

Hi!
Nope, there is no option for that. Sorry :/


createStore can take an enhancer as an optional argument

https://github.com/reactjs/redux/blob/master/docs/api/createStore.md

hope this will be updated soon

This has been fixed in commit: a840c76f958eb791da747ef9a4eb2f98d6c964c6
@amardeep and @gitawego are you happy with a plain Function type or do you see room for a better typing?
Also:

do either of you have opinions on adding generics to Actions
do either of you have opinions about scrapping IAction and using unions instead of an empty interface?

Lastly, thanks for your interest!

@amardeep and @gitawego Redux is implementing official typings
This repository (typings-redux) will be deprecated.


warning on TASK [RHEL7-CIS : PRELIM | Check if prelink package is installed]

TASK [RHEL7-CIS : PRELIM | Check if prelink package is installed] ***************************************************************************
 [WARNING]: Consider using yum, dnf or zypper module rather than running rpm

tasks/prelim.yml
- name: "PRELIM | Check if prelink package is installed"
  command: rpm -q prelink
  register: prelink_installed
  changed_when: no
  failed_when: no
  check_mode: no
  tags:
      - skip_ansible_lint

also applies to other tasks

Thanks! Will get this into my next batch of updates unless someone beats me to it.

I don't consider this a bug, it's more a 'feature'. the Ansible 'package' module (or yum or zypper) does not simply support 'stat'-ing the package itself (e.g.by doing a 'state: query', so you do need to run this command to get the actual status of the package without changing the system.
But 'warn: no' within the task itself will help getting rid of this warning message.

Hello,
I wanted to reach out and let you know that this issue is being closed. We have re-worked the role and want to start with a fresh issues list with this latest version. There was a post in the Ansible-Lockdown google group (https://groups.google.com/g/ansible-lockdown) with the details of the changes that are coming. Please checkout the thread titled RHEL 7 CIS and STIG Changes for all of the details, I also have the message pasted at below.
Please as you use the latest version and open issue tickets as you find them, it is the best way for us to improve the role for everyone. Thank you for being part of the community and providing awareness of problems or advice on improvement. Reporting is a huge part of improving this project.

Hello,
Thank you to everyone in the Ansible-Lockdown community who has contributed to RHEL7 STIG/CIS. Our team at MindPoint Group has been working with the entirety of the Ansible-Lockdown project, and we have some significant updates for both RHEL 7 STIG and CIS. With these updates, some larger changes have been made. I have these changes/updates outlined below.
Testing:

CI/CD - We have implemented some automated testing pipelines to test pull requests into the devel and main branches. With the current workflow, the community will PR into the devel branch (never the main branch) for review by the administrators. When your PR is created, the first check will remain the DCO check. The second check is a functional testing pipeline that will automatically perform a functional test of the branch the PR is initiated from. Once both tests pass, someone from the Administrator Team will review the changes and merge them into the devel branch. From there, an additional review is completed before the devel branch is merged into the main branch. Only the Admin Team will perform PRs/merges into the main branch. There is also an automated pipeline for PRs from devel to main. Please do not edit the .github/workflows files since those are used as part of the pipeline.
Compliance Checking – MindPoint Group has been working to create our own compliance audit scan tool. The tool uses a goss framework executable to run custom checks that we have created. The goal is to provide a more thorough check for control compliance and decrease the number of false positives/negatives. For example, it will check the configuration file related to the control and as well as checking if that configuration is active. With a smarter scan, we can hopefully identify attempts to trick scanners as well (for example stacking a parameter in a config file where the first instance is enabled and second disabled. Most audit tools search for the first instance but the application might look for the last instance of the parameter, thus making the scanning tool think it's enabled). In testing, we have found that our audit scan runs significantly faster than other audit tools, reducing audit times. Our audit tool and profiles will have their own repositories in the Ansible-Lockdown org, but within the remediation role there will be an integrated way to incorporate the audit. Keep an eye out for the audit tools as they are released. We plan on developing a goss audit profile for each current remediation role. Going forward, we plan to release a remediation role and goss audit tool profile simultaneously.
Role Updates:
RHEL 7 STIG/CIS – We have re-written much of the RHEL 7 STIG and CIS roles to increase clarity and readability and address some functionality items. We performed these updates while creating our goss testing framework for each of these roles. We plan on pushing our update to the devel and main branches. We will move the current devel and master branches to a devel_stable_ and master_stable_ branch in the respective repositories. Accordingly, community members who rely on the current version can still use that version going forward; this process will not remove what is currently there. The latest versions of the roles have also been updated to comply with the latest benchmarks.
Role Architecture – All roles will change with regard to the structure in the tasks folder. Taking CIS as an example, there will be a folder per section and yaml files for each sub-section. For example control 1.2.1 in CIS will be located in RHEL7-CIS/tasks/section_1/cis_1.2.x.yml. The cis_1.2.x.yml file will contain all controls related to section 1.2.x. This will hopefully make updates to roles a bit easier with less risk. This matches the architecture of our audit tool, creating consistency across remediation and audit platforms. The end goal is to repeat this architecture (the best we can) on STIG roles, but we are starting with CIS.
Existing PRs and Issues – With all of these changes comes the task of cleaning up existing PR’s and issues. Our plan is to close all of the existing PR’s and issues because of the re-work. Our team is growing and should be able to stay on top of the new issues and PRs as they come in.
Again, I would like to thank the community for your involvement in this project. The input and work from the community has contributed significantly to the success of this project. Please keep an eye out for these changes, which will be rolling out in the coming weeks.


factor out code from pkg/endpoint, cilium-health which depends on pkg/k8s

This PR does some code reorganizing to inject the Kubernetes dependency into the endpoint package and the cilium-health package at runtime.
I had to change endpoint.getLogger() to be exported to allow for this, as well as expose the capability of updating a controller for an endpoint by external packages. I haven't done dependency injection before this, so I am open to alternative proposals in how to remove these dependencies.
Signed-off by: Ian Vernon<EMAIL_ADDRESS>Related-to: #6101

This change is

Pull Request Test Coverage Report for Build 2871

46 of 329 (13.98%)  changed or added relevant lines in 14 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.01%) to 30.429%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

daemon/endpoint.go
4
5
80.0%

daemon/k8s_watcher.go
0
1
0.0%

pkg/endpoint/lock.go
0
1
0.0%

pkg/endpoint/log.go
1
2
50.0%

pkg/endpoint/annotator.go
0
3
0.0%

cilium-health/launch/endpoint.go
0
5
0.0%

daemon/state.go
0
5
0.0%

pkg/k8s/annotate.go
0
5
0.0%

pkg/endpoint/endpoint.go
9
22
40.91%

pkg/endpoint/policy.go
16
31
51.61%

Files with Coverage Reduction
New Missed Lines
%

pkg/k8s/annotate.go
2
0.0%

Totals

Change from base Build 2867:
0.01%

Covered Lines:
21058

Relevant Lines:
69203

💛  - Coveralls

test-me-please

test-me-please

test-me-please

test-me-please

test-me-please

test-me-please

test-me-please

test-me-please

test-me-please

@aanm regarding
https://github.com/cilium/cilium/pull/6126#discussion_r230495823 - I'd be happy to do that in a follow-up PR. I can file an issue for this.

test-me-please

test-me-please

test-me-please

Build failure -
https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-Validated/7871
Long-lived connections test failed.

test-me-please

Build failure :
https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-Validated/7875
Jenkins couldn’t check out Cilium.

See 'docker run --help'.
make: *** [start-kvstores] Error 125
The command "./.travis/build.sh" exited with 2.

Rebased against master, running tests again.


JSON as an Enum

As in
https://github.com/PureSwift/SwiftFoundation/blob/develop/Source/JSON.swift
Way safer, more Protocol Oriented Programming

Speaking of which, why should we reinvent the wheel? Many people have done great work regarding foundation-free Swift. At the very least, shouldn't Perfect be modular so that we can use whichever server/orm/templates we want? Maybe I should move this to a separate issue...

I prefer for server to be serialization-agnostic, if it will still be easy of use.

I think the main intent here is to have both Perfect server and Perfect client use the same JSON decoding, allowing models to be shared between the backend and the frontend codebases.
Of course, this doesn't stop Perfect from adopting @colemancda's Swiftier suggestion.

We provided the JSON encoding/decoding classes as a convenience as that functionality is generally a required part of any backend service. That said, the Perfect system as it stands today does not use encoding/decoding as part of its normal operations. In the examples and in the apps we have in beta using Perfect the JSON responses are created through mustache templates and any input to the server is received as standard url-encoded or multi-part form submissions. So it's certainly possible for one to swap in their own preferred serialization mechanism. We tried to keep things flexible such that you wouldn't be required to add anything extra to your iOS apps and could opt to only use the backend server system.
The Tap Tracker example does use JSONDecode, basically to show how it works. Personally, in real apps, I opt to use the iOS built-in JSON decoding merely in an effort to keep the app's footprint small and reduce dependancies (the Authenticator example iOS app uses NSJSONSerialization).
We do intend to introduce some features which would use, at the least, JSON encoding (as opposed to decoding). We will revisit the state of those classes before we being development on these aspects.
I appreciate the feedback and examples of better approaches to handling JSON serialization.

Closing this issue for now as a lot of effort has gone into increasing the modularity of Perfect, and the ability to flip in your own JSON encoder/decoder options is there regardless.
We would like to hear your ongoing feedback on this and other issues, so please join us on the PerfectlySoft Gitter group!


Support for atomics data types?

Hi,
it seems like there is no Serialize support for atomic data type: https://doc.rust-lang.org/core/sync/atomic/index.html
Is there any reason for this?
A first implementation would be to simply load them using Ordering::Relaxed and that should be quite enough.

I would prefer to match Debug which uses Ordering::SeqCst.
https://github.com/rust-lang/rust/blob/1.33.0/src/libcore/sync/atomic.rs#L1137-L1141
I would be prepared to consider a PR adding impls that use SeqCst.

SeqCst is the strongest guarantee possible. This is ok and maybe even desiderable in debugging code, but I am not sure is desiderable on production code.
What is your take on this?
Do you believe performance won't be a concern? I am not sure of the performance characteristics of serde (never used) so I am really asking a little more feedback on your thoughts!
Cheers

If someone observes serialization of atomics as a bottleneck, they can use a serialize_with attribute to substitute in a Serialize impl with a weaker guarantee. SeqCst is a safe default with the least surprises and frequently no different performance.

I am not sure if I got the time to do this anyway, I don't believe in the next few weeks at the very least.
If anybody wants to jump on it feel free to just implement it!

I believe #1572 solves this (and is ready for review).


Add basic sanity checking for unique usage

This adds some analysis code for variable usages, along with a
checker for a number of issues:

Free variables
Incoherently used variables (i.e. in both the term and type scopes)
Multiply defined variables

We can then check that after running the renamer we pass the appropriate
checks.
This turned up one annoying issue. The renamer normally fixes "incoherent usage" issues for bound variables by renaming the two definitions (and hence uses) to be separate. However, it doesn't rename free variables, so if you have incoherently used free variables it won't fix it.

Free variables are, after all, not valid PLC, even if we wish to provide debugging facilities for compiler authors.

Yes, that's why there's the option to check it or not. At the moment the main user of this is the tests, and the tests generate terms with free variables.
I'm also not sure what the neatest way to make this configurable is. I could pass through the error selection predicate? Or just add even more top-level functions?

I feel like there should be some duplication with what renamer does, because both these machineries track scopes?

They do, but the renamer mostly does so implicitly in its mapping from old to new names. Possibly we could write some more generic scope-handling code and recast both of them in terms of that? I'll have a think.

What is the use of a renamer that works on free variables?

Well, if nothing else it's nice if renaming corresponds to the well-known notion of alpha-renaming.

Another thing (which caught me by surprise): it's not just our term generators which generate terms with free variables, many of the golden test inputs have free variables. We could change that, but I'm inclined not to do so here.

@effectfully thinking about how to share code that handles scopes:

A problem is that we have no handle for a particular scope until we are sure that uniques are not multiply defined. At that point we can use the unique which defines the scope, but not before. So it's not clear how we identify a scope.

Currently the renamer handles this by having it implicit in the traversal - the scope referred to by a unique is the most-recently-seen one in traversal order. The checker in this PR can spot when it won't be able to distinguish scopes, but only emits an error and does not record the information in full fidelity.
We could fix this by doing some kind of annotation pass whereby we annotate things with enough information to uniquely identify scopes (just traverse the tree and number them?).

Once we had done this, we could implement the renamer by simply assigning a new unique to every distinct scoped unique and then replacing them all.
We could also collect more comprehensive definition information, which would simplify the checker somewhat.

That's my best idea for how to share some code. But that would be a pretty big rewrite, and I'm not sure I have the cycles for it right now.

Addressed most of the comments.

That's my best idea for how to share some code. But that would be a pretty big rewrite, and I'm not sure I have the cycles for it right now.

Yeah, I do not propose that.
Great job, feel free to merge.


Bump Node.js version to 20

Problem

Jellyfin-vue fails to build

Solution

Use node 20 as upstream seems to have switched.

PR Status

[ ] Code finished and ready to be reviewed/tested
[ ] The fix/enhancement were manually tested (if applicable)

Automatic tests
Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ after creating the PR, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization)

!testme !bookwormtestme


Add name field for org api

related #21205
The field UserName is not really usefull for an organization. This PR adds a second Name field. The GitHub API uses name too. UserName should be deprecated then.
If merged, the Gitea SDK needs to be updated too.

CreateOrgOption should be changed too but I don't know how to do it without adding a breaking change (the required form attribute).

:rocket:


Result decorations should have more user friendly message

The current message is pretty cryptic and users are confused by it. We should make a more user friendly message that really tells the user what they should do.

Closing, as we don't have this decoration anymore.


Improve IsEmpty to check for zero value

Instead of checking whether a struct value is the zero time, use reflection to compare it against the actual zero value of its type.
We also noticed that TestIsEmpty is expecting struct{}{} to be not empty. From our point of view this does not really make sense. Therefore we have amended the test to expect true for the empty anonymous struct.
@georgethebeatle

@danail-branekov do you think it would be possible to increase test coverage here?

@swithek
I do not know why the code coverage of this PR is reported as being lower. The PR is mostly deleting code, the code that I have introduced has been covered by tests, both already existing and the ones that I have added.

@danail-branekov Thanks for the PR. Merging.


imagepullsecrets are cached and not refreshed

I've configured the deployment by running:
warm-metal-csi-image-install --pull-image-secret-for-daemonset=<mykeyname> >csi-driver-image.yaml

I then copied the docker.io/warmmetal/csi-image-test:simple-fs image to my private registry (gcr.io/my-private-project) and deployed warm-metal/csi-driver-image/master/sample/ephemeral-volume.yaml with the image patched to my private registry. Initially this works, but if I run this a day later it fails:
MountVolume.SetUp failed for volume "target" : rpc error: code = Aborted desc = unable to pull image "gcr.io/my-private-project/csi-image-test:simple-fs": rpc error: code = Unknown desc = failed to pull and unpack image "gcr.io/giza-workcells/csi-image-test:simple-fs": failed to resolve reference "gcr.io/my-private-project/csi-image-test:simple-fs": pulling from host gcr.io failed with status code [manifests simple-fs]: 401 Unauthorized

If I restart the csi (kubectl delete pod -n kube-system csi-image-warm-metal-ndqs5) this will cause it to re-read them dockerconfig from the secret and everything works again.
Here is our service that refreshes the dockerconfig in the imagepullsecret: https://github.com/googlecloudrobotics/core/blob/HEAD/src/go/pkg/gcr/update_gcr_credentials.go
I have not found any flag to disable the caching. I can make a PR, but like to agree first on how to fix this:

(my preference) if dockerconfig has Username=="oauth2accesstoken" don't cache it, just read it each time you mount a volume
add flag to disable caching globally
Handle 401 error, by rereading the key and retrying (sounds complicated)

Of course I am open for additional ideas. WDYT?

It took me 3days to fix CI workflows.
Currently, the cache reads the daemon ServiceAccount to get its imagepullsecrets, then saves all the Secret objects. This only happens on the driver start.
If the cache can watch changes of each Secret object, then the credential of pulling images would be updated. The overhead would be at least one long connection to API server per node. For small-scale clusters, it is not so heavy. For clusters with many work nodes, they can disable the global cache if image pulling is not frequent.

What exactly is the concern you address with the cache? I have this wip change that makes everything work for me:
https://gist.github.com/ensonic/d40e0140d8a682778bdd6636ebbbeda5
Of course this just avoids the cache all together.
Is the concern frequent API server round trips to look up the imagepullsecrets? The usage scenario I test this technology for is to separate code and data. Here mounting new data volumes via csi-driver-image would only ever happen when you redeploy and there the imagepullsecrets will need to be looked up anyway since we're pulling also code images.
 Let me look into watching the secret and reloading on change.

What exactly is the concern you address with the cache?

Just like what you said, it is not necessary to query secrets all the time.
I think a flag to disable the global cache would be enough now, then the short-lived token case will work. The watch-then-reload way can be postponed until new requirements arise.

I created a new release for this feature. Feel free to reopen this issue or create a new one.