Unable to install from bootstrap script (package list fails to download from entware)

Hello lovely people-
Many apologies if this has already been posted, but I couldn't find it.
I'm trying to install on my RM2 for the first time, using the bootstrap script, RM version <IP_ADDRESS>. Here's the output:
bootstrap: OK
INFO:  Fetching secure wget
INFO:  Creating /home/root/.entware and mounting to /opt
INFO:  Installing Entware to /opt
failed: Network is unreachable.
failed: Network is unreachable.
2021-04-02 01:52:15 URL:https://bin.entware.net/armv7sf-k3.2/installer/opkg [752476/752476] -> "/opt/bin/opkg" [1]
failed: Network is unreachable.
failed: Network is unreachable.
2021-04-02 01:52:17 URL:https://bin.entware.net/armv7sf-k3.2/installer/opkg.conf [171/171] -> "/opt/etc/opkg.conf" [1]
failed: Network is unreachable.
failed: Network is unreachable.
2021-04-02 01:52:25 URL:https://bin.entware.net/armv7sf-k3.2/installer/ld-2.27.so [134428/134428] -> "/opt/lib/ld-2.27.so" [1]
failed: Network is unreachable.
failed: Network is unreachable.
2021-04-02 01:52:28 URL:https://bin.entware.net/armv7sf-k3.2/installer/libc-2.27.so [1247408/1247408] -> "/opt/lib/libc-2.27.so" [1]
failed: Network is unreachable.
failed: Network is unreachable.
2021-04-02 01:52:29 URL:https://bin.entware.net/armv7sf-k3.2/installer/libgcc_s.so.1 [50848/50848] -> "/opt/lib/libgcc_s.so.1" [1]
failed: Network is unreachable.
failed: Network is unreachable.
2021-04-02 01:52:31 URL:https://bin.entware.net/armv7sf-k3.2/installer/libpthread-2.27.so [92656/92656] -> "/opt/lib/libpthread-2.27.so" [1]
Downloading https://bin.entware.net/armv7sf-k3.2/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
Installing entware-opt (227000-3) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/entware-opt_227000-3_all.ipk
Installing libgcc (8.4.0-11) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/libgcc_8.4.0-11_armv7-3.2.ipk
Installing libc (2.27-11) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/libc_2.27-11_armv7-3.2.ipk
Installing libssp (8.4.0-11) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/libssp_8.4.0-11_armv7-3.2.ipk
Installing libpthread (2.27-11) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/libpthread_2.27-11_armv7-3.2.ipk
Installing librt (2.27-11) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/librt_2.27-11_armv7-3.2.ipk
Installing libstdcpp (8.4.0-11) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/libstdcpp_8.4.0-11_armv7-3.2.ipk
Installing entware-release (1.0-2) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/entware-release_1.0-2_all.ipk
Installing zoneinfo-asia (2021a-1) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/zoneinfo-asia_2021a-1_armv7-3.2.ipk
Installing zoneinfo-europe (2021a-1) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/zoneinfo-europe_2021a-1_armv7-3.2.ipk
Installing findutils (4.7.0-3) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/findutils_4.7.0-3_armv7-3.2.ipk
Installing terminfo (6.2-1) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/terminfo_6.2-1_armv7-3.2.ipk
Installing libpcre (8.44-4) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/libpcre_8.44-4_armv7-3.2.ipk
Installing grep (3.6-1a) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/grep_3.6-1a_armv7-3.2.ipk
Installing locales (2.27-9) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/locales_2.27-9_armv7-3.2.ipk
Installing opkg (2020-12-24-9bbc7eae-1) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/opkg_2020-12-24-9bbc7eae-1_armv7-3.2.ipk
Installing entware-upgrade (1.0-1) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/entware-upgrade_1.0-1_all.ipk
Configuring libgcc.
Configuring libc.
Configuring libssp.
Configuring libpthread.
Configuring librt.
Configuring terminfo.
Configuring libpcre.
Configuring grep.
Configuring locales.
Entware uses separate locale-archive file independent from main system
Creating locale archive /opt/usr/lib/locale/locale-archive
Adding en_EN.UTF-8
Adding ru_RU.UTF-8
You can download locale sources from http://bin.entware.net/other/i18n_glib227.tar.gz
You can add new locales to Entware using /opt/bin/localedef.new
Configuring entware-upgrade.
Upgrade operations are not required.
Configuring opkg.
Configuring zoneinfo-europe.
Configuring zoneinfo-asia.
Configuring libstdcpp.
Configuring entware-release.
Configuring findutils.
Configuring entware-opt.
INFO:  Adding the Toltec stable repository
Downloading https://bin.entware.net/armv7sf-k3.2/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
Downloading https://toltec-dev.org/stable/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/toltec
Installing ca-certificates (20210119-1) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/ca-certificates_20210119-1_all.ipk
Installing wget-nossl (1.21.1-1) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/wget-nossl_1.21.1-1_armv7-3.2.ipk
Installing zlib (1.2.11-3) to root...
Downloading https://bin.entware.net/armv7sf-k3.2/zlib_1.2.11-3_armv7-3.2.ipk
Configuring ca-certificates.
Configuring zlib.
Configuring wget-nossl.
Downloading https://bin.entware.net/armv7sf-k3.2/Packages.gz
*** Failed to download the package list from https://bin.entware.net/armv7sf-k3.2/Packages.gz

Downloading https://toltec-dev.org/stable/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/toltec
Collected errors:
 * opkg_download: Failed to download https://bin.entware.net/armv7sf-k3.2/Packages.gz, wget returned 8.
ERROR: Unexpected error on line bootstrap:251 in function toltec-install
ERROR: This script failed to install. If you can't solve the above
       issue yourself, please report it at:

Internet access from the remarkable seems fine, and I can download the entware package list from other devices on my LAN.

Hi @IvoryTinplate! Thanks for your report.
This unrelated to your issue, but please note that Toltec support for version 2.6 is not yet complete (see #322).
In the output you posted, wget seems unable to fetch resources from the network. Could you try running the following command manually to see if it reports more detailed information?
$ /usr/bin/wget https://example.com

The command above will test the system wget, which is only used as a bootstrap to fetch another wget that is actually used for the rest of the install. (This is because the default wget lacks TLS support.) Could you also check that Toltec’s wget works? You can try the following commands to verify that:
$ /usr/bin/wget https://toltec-dev.org/thirdparty/bin/wget-v1.21.1
$ echo "8798fcdabbe560722a02f95b30385926e4452e2c98c15c2c217583eaa0db30fc  wget-v1.21.1" | sha256sum -c
$ chmod u+x wget-v1.21.1
$ ./wget-v1.21.1 https://example.com

Thanks!

Hi @matteodelabre thanks for all your hard work on this. Appears that I'm getting the same error as @IvoryTinplate. Please see below for the output when I tried your commands...
reMarkable: ~/ opkg update
Downloading https://bin.entware.net/armv7sf-k3.2/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
Downloading https://toltec-dev.org/testing/Packages.gz
*** Failed to download the package list from https://toltec-dev.org/testing/Packages.gz

Collected errors:
 * opkg_download: Failed to download https://toltec-dev.org/testing/Packages.gz, wget returned 8.
reMarkable: ~/ /usr/bin/wget https://example.com
Connecting to example.com (<IP_ADDRESS>:443)
wget: note: TLS certificate validation not implemented
saving to 'index.html'
index.html           100% |********************************|  1256  0:00:00 ETA
'index.html' saved
reMarkable: ~/ rm index.html
reMarkable: ~/ /usr/bin/wget https://toltec-dev.org/thirdparty/bin/wget-v1.21.1
Connecting to toltec-dev.org (<IP_ADDRESS>:443)
wget: note: TLS certificate validation not implemented
saving to 'wget-v1.21.1'
wget-v1.21.1         100% |********************************| 3042k  0:00:00 ETA
'wget-v1.21.1' saved
reMarkable: ~/ echo "8798fcdabbe560722a02f95b30385926e4452e2c98c15c2c217583eaa0db30fc  wget-v1.21.1" | sha256sum -c
wget-v1.21.1: OK
reMarkable: ~/  chmod u+x wget-v1.21.1
reMarkable: ~/ ./wget-v1.21.1 https://example.com
--2021-04-05 16:13:36--  https://example.com/
Resolving example.com... 2606:2800:220:1:248:1893:25c8:1946, <IP_ADDRESS>
Connecting to example.com|2606:2800:220:1:248:1893:25c8:1946|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'

index.html          100%[===================>]   1.23K  --.-KB/s    in 0s

2021-04-05 16:13:37 (5.56 MB/s) - 'index.html' saved [1256/1256]

Hi @briankaemingk. Based on the output you provided, I think you’re seeing a separate issue. It appears that you’re using the testing branch, whose directory layout has recently been changed (see #310). To fix your issue, you have two choices:

Revert back to the stable branch, which still has the old repository layout. When we move the new layout to the stable branch, it will have an automatic transition mechanism in place so you won’t have to edit your configuration again. In general, the testing branch is only intended for devs to test packages and features more thoroughly before they land in stable. So if you wish to avoid similar issues in the future, I would advise moving back to the stable branch (at the cost of having slightly older packages). To do this change, you need to edit /opt/etc/opkg.conf on your device, replace each occurrence of testing with stable, then run opkg update && opkg upgrade.

Update your configuration for the new repository layout in testing. To do this, you need to download the updated bootstrap script (not the one hosted at https://toltec-dev.org/bootstrap) and run it on your device with bash bootstrap. The script will detect your existing install and automatically update its configuration.

All of this does not apply to @IvoryTinplate since their logs show that they’re using the stable branch.

Thanks, I reverted back to the stable branch, and all is well.
A little background here...I was using draft launcher and rm2fb to launch a
number of apps, but I haven't been able to get anything to render on my rm2
after the reMarkable 2.6 update. I realize 2.6 isn't supported yet, but I
was hoping to try the test version to try to help the process along and get
in on the bleeding edge, hence switching to the test repository. However,
it seems like it's still a blank screen for me when I try to launch any
apps even on the testing branch.
Not sure how I can help, a little out of my element here, but happy to try
to contribute if needed. Thanks again!
On Mon, Apr 5, 2021 at 9:51 AM Mattéo Delabre @.***>
wrote:

Hi @briankaemingk https://github.com/briankaemingk. Based on the output
you provided, I think you’re seeing a separate issue. It appears that
you’re using the testing branch, whose directory layout has recently been
changed (see #310 https://github.com/toltec-dev/toltec/pull/310). To
fix your issue, you have two choices:

Revert back to the stable branch, which still has the old repository
layout. When we move the new layout to the stable branch, it will have an
automatic transition mechanism in place so you won’t have to edit your
configuration again. In general, the testing branch is only intended for
devs to test packages and features more thoroughly before they land in
stable. So if you wish to avoid similar issues in the future, I would
advise moving back to the stable branch (at the cost of having slightly
older packages). To do this change, you need to edit /opt/etc/opkg.conf
on your device, replace each occurrence of testing with stable, then
run opkg update && opkg upgrade.
Update your configuration for the new repository layout in testing. To
do this, you need to download the updated bootstrap script
https://raw.githubusercontent.com/toltec-dev/toltec/testing/scripts/bootstrap/bootstrap
(not the one hosted at https://toltec-dev.org/bootstrap
https://toltec-dev.org/bootstrap) and run it on your device with bash
bootstrap. The script will detect your existing install and
automatically update its configuration.
All of this does not apply to @IvoryTinplate
https://github.com/IvoryTinplate since their logs show that they’re
using the stable branch.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/toltec-dev/toltec/issues/324#issuecomment-813499718,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACXK2ZGY4DVNE5TIDDPGUA3THHTCDANCNFSM42IDWLKQ
.

We’re still working on 2.6 support—you can track its status in #322. Currently, most apps using the Qt framework (e.g., draft) will not work on 2.6 unless recompiled using the 2.x version of our toolchain. But on the flip side, apps compiled with this version of the toolchain will not work on older system versions such as 2.5, so it’s not simply a matter of updating all of our the packages to use the new toolchain, since that would break support for users who have not received the update yet.

Got it, thanks! I would love to try to cross compile draft with the latest
Docker toolchain and learn more, but, as I mentioned, I'm a little out of
my element. I just downloaded the docker qt toolchain with a docker pull ghcr.io/toltec-dev/qt:v2.0.1... Is there a good next step or somewhere I
can read instructions or learn about how to proceed? I'll try to do my own
research as well..
On Mon, Apr 5, 2021 at 11:33 AM Mattéo Delabre @.***>
wrote:

We’re still working on 2.6 support—you can track its status in #322
https://github.com/toltec-dev/toltec/issues/322. Currently, most apps
using the Qt framework (e.g., draft) will not work on 2.6 unless recompiled
using the 2.x version of our toolchain
https://github.com/toltec-dev/toolchain#version-matrix. But on the flip
side, apps compiled with this version of the toolchain will not work on
older system versions such as 2.5, so it’s not simply a matter of updating
all of our the packages to use the new toolchain, since that would break
support for users who have not received the update yet.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/toltec-dev/toltec/issues/324#issuecomment-813563314,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACXK2ZAVSXQPN2JNRCBH2V3THH7A3ANCNFSM42IDWLKQ
.

Here are some instructions to compile draft with toolchain v2.0.1. Make sure to install on your computer all the required dependencies listed here first.

Clone this Git repository.
Switch to the testing branch.
Edit the package/draft/package file, change image=qt:v1.4 to image=qt:v2.0.1.
Run make draft.
The resulting package can be found in build/repo/rmall/draft_…_rmall.ipk—copy it to your device.
On your device, run opkg install path/to/draft_…_rmall.ipk (uninstall draft first if it’s already installed).

Thank you! And forgive me for taking over this thread, but this is really helpful, hoping I can help pay it forward and contribute in the future..
Here's what I'm getting after verifying I've installed all the dependencies (docker, bsdtar, python, and the requirements.txt python files)...
(env) (base) briankaemingk@brians-MacBook-Pro toltec % make draft
./scripts/package_build.py  "draft"
Traceback (most recent call last):
  File "./scripts/package_build.py", line 44, in <module>
    repo = Repo(paths.RECIPE_DIR, paths.REPO_DIR)
  File "/Users/briankaemingk/Documents/toltec/scripts/toltec/repo.py", line 56, in __init__
    self.generic_recipes[name] = GenericRecipe.from_file(
  File "/Users/briankaemingk/Documents/toltec/scripts/toltec/recipe.py", line 45, in from_file
    return GenericRecipe(name, path, recipe.read())
  File "/Users/briankaemingk/Documents/toltec/scripts/toltec/recipe.py", line 58, in __init__
    variables, functions = bash.get_declarations(definition)
  File "/Users/briankaemingk/Documents/toltec/scripts/toltec/bash.py", line 144, in get_declarations
    assert next_token == "("
AssertionError
make: *** [draft] Error 1

No problem. So this looks like an error with our Bash parser. Can you please share your Bash version and Python version?

GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.6.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
(env) (base) briankaemingk@brians-MacBook-Pro toltec % python --version
Python 3.8.5

Unfortunately I can’t reproduce this using the same versions as you, but I’m not on macOS so that might be why. Could you please insert a print(declarations) statement between lines 122 and 123 in scripts/toltec/bash.py and share the output so that we can see exactly what is causing the parser to fail? (The output should normally be free of personal info, but please double check before posting.) Thanks!

Happy to, please see below.. I was also able to successfully run your make instructions on ubuntu, so I have a working copy of draft on my rm2, thanks again!
Let me know what else I can do to help debug the parser issue..
toltec % make draft
./scripts/package_build.py  "draft"
build ()
{
    rm .cargo/config;
    cargo build --release
}
package ()
{
    install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/target/armv7-unknown-linux-gnueabihf/release/retris;
    install -D -m 644 "$srcdir"/oxide "$pkgdir"/opt/etc/draft/retris;
    install -D -m 644 "$srcdir"/icon.png "$pkgdir"/opt/etc/draft/icons/retris.png
}
BASH=/usr/local/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="2" [2]="57" [3]="1" [4]="release" [5]="x86_64-apple-darwin20")
BASH_VERSION='3.2.57(1)-release'
DIRSTACK=()
EUID=501
GROUPS=()
HOSTNAME=<HOSTNAME>
HOSTTYPE=x86_64
IFS=$' \t\n'
MACHTYPE=x86_64-apple-darwin20
OPTERR=1
OPTIND=1
OSTYPE=darwin20
PATH=/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
PIPESTATUS=([0]="0")
PPID=59039
PS4='+ '
PWD=/Users/<USER>/Documents/toltec
SHELL=/bin/zsh
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=1
TERM=dumb
UID=501
_=-f
flags=([0]="patch_rm2fb")
image=rust:v1.4
installdepends=([0]="display")
license=MIT
maintainer='Linus K<EMAIL_ADDRESS>pkgdesc='Tetris game'
pkgnames=([0]="retris")
pkgver=0.6.3-2
section=games
sha256sums=([0]="ecc7215098c03e79cd92b1835626e6739a5a932d5aa709899d183347e2a4108e")
source=([0]="https://github.com/LinusCDE/retris/archive/0.6.3-1.zip")
timestamp=2021-01-30T02:41Z
url=https://github.com/LinusCDE/retris
build ()
{
    rm .cargo/config;
    cargo build --release
}
package ()
{
    install -D -m 755 -t "$pkgdir"/opt/bin "$srcdir"/target/armv7-unknown-linux-gnueabihf/release/retris;
    install -D -m 644 "$srcdir"/oxide "$pkgdir"/opt/etc/draft/retris;
    install -D -m 644 "$srcdir"/icon.png "$pkgdir"/opt/etc/draft/icons/retris.png
}

Traceback (most recent call last):
  File "./scripts/package_build.py", line 44, in <module>
    repo = Repo(paths.RECIPE_DIR, paths.REPO_DIR)
  File "/Users/<USER>/Documents/toltec/scripts/toltec/repo.py", line 56, in __init__
    self.generic_recipes[name] = GenericRecipe.from_file(
  File "/Users/<USER>/Documents/toltec/scripts/toltec/recipe.py", line 45, in from_file
    return GenericRecipe(name, path, recipe.read())
  File "/Users/<USER>/Documents/toltec/scripts/toltec/recipe.py", line 58, in __init__
    variables, functions = bash.get_declarations(definition)
  File "/Users/<USER>/Documents/toltec/scripts/toltec/bash.py", line 145, in get_declarations
    assert next_token == "("
AssertionError
make: *** [draft] Error 1

Thanks for sharing more details. Your output says BASH_VERSION='3.2.57(1)-release' and BASH=/usr/local/bin/bash, which is different from the version information you provided above. Could it be that there are two different versions of Bash on your system and that Toltec picks up the older one?

Very strange indeed... a which bash gives me the expected later version...
/usr/local/bin/bash
% bash --version
GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.6.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

This may be because our script launches Bash subprocesses with empty environments (in particular with empty PATHs). So if you have customized your PATH to point to a non-default location, the Toltec script may end up launching a different Bash version. To try preserving the PATH value, can you try changing line 97 of scripts/toltec/bash.py from
    env: Dict[str, str] = {}

to
    import os
    env: Dict[str, str] = {"PATH": os.environ["PATH"]}

Indeed, that did the trick, thank you!
On Wed, Apr 7, 2021 at 12:38 PM Mattéo Delabre @.***>
wrote:

This may be because our script launches Bash subprocesses with empty
environments (in particular with empty PATHs). So if you have customized
your PATH to point to a non-default location, the Toltec script may end up
launching a different Bash version. To try preserving the PATH value, can
you try changing line 97 of scripts/toltec/bash.py
https://github.com/toltec-dev/toltec/blob/83dfeade32c7b8d0cf197ee3ac3bc3c64534ba1b/scripts/toltec/bash.py#L97
from
env: Dict[str, str] = {}

to
import os
env: Dict[str, str] = {"PATH": os.environ["PATH"]}

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/toltec-dev/toltec/issues/324#issuecomment-815173967,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACXK2ZFZ45VWAJ6WRPNMKCTTHSYBXANCNFSM42IDWLKQ
.

@briankaemingk Thanks for helping me troubleshoot this! I opened the PR mentioned above to fix this in our codebase.
@IvoryTinplate Sorry that we used your thread to diagnose a different issue. If your issue still persists, could you please provide more details as per my comment above (https://github.com/toltec-dev/toltec/issues/324#issuecomment-812840838)?

@IvoryTinplate Any update?

I’m closing this issue for now. Please feel free to re-open it if the same issue happens again.


Plug-in this control is being held down after quick-hopping worlds

I have control set to "USE" for items in my inventory. When I quick hop worlds using shift+control+arrow keys, after swapping worlds, RuneLite thinks my control key is still being held down (all my items in my inventory are set to USE). I need to press control again to revert my inventory options to normal.

sounds like a duplicate of #8.


Certificates Setup

Maybe I'm missing something but this line right here looks «impossible» for non-artsy employees

Login as<EMAIL_ADDRESS>to Certificates, Identities and Profiles.

Which then takes us to the next issue:

Have the admin approve your certificate.

Unless the project doesn't actually required this and perhaps it could be removed from the setup steps for the OSS version?

I just noticed that perhaps that kind of a "regular how to user a development device" instruction set but doesn't look like its required for this codebase.

I think in general this is reasonable, I'd like to hope that OSS people aren't submitting our app to the store. I kept it in as it can act as a linkable guide for others doing certificate setup. Know it's a pain.

I guess it makes more sense for future Artsy devs coming to the project but the<EMAIL_ADDRESS>part won't make much sense for developers outside the organization.
No biggie; just wanted to brought it to light in case you did not notice it.
Feel free to close it anytime :) :lock:

:heart:

how do I login?
Login as<EMAIL_ADDRESS>to Certificates, Identities and Profiles.
I don't know the password?

@pcompassion we don't give out our password for iTunes Connect etc.
I'll make a note about changing the bundle id to be something that you own in order to run it on a device.


Estimation: Estimation seems on a downward spiral

Probably caused by recent optimizations.

IDs are now strings and integers, meaning tickets can "see themselves" in estimations.
Change to string keys only.

continues to spiral, db is clean tho

ConvergenceWarnings are back and estimations fold over themselves - there must be some data insufficiency


Use new IPAM changes in v3.6

[ ] Tests
[ ] Documentation
[ ] Release note

None required

Deploy preview for calico ready!
Built with commit de588f35784cbe76774724a24f2588e499039154
https://deploy-preview-2562--calico.netlify.com

You need to set ipam: host-local in v3.6/getting-started/kubernetes/installation/manifests/app-layer-policy/kubernetes-datastore/calico-networking/calico.yaml

Update on my comment: Looks like it was a bug that that manifest was using host-local! So this PR correctly switches it to calico-ipam.


Builds failing in IE <= 10

https://travis-ci.org/martyjs/marty-lib/builds/62897390
@taion any thoughts?

Ah, I see that IE <= 10 doesn't have .__proto__. One sec - might not have time to fix this until later tonight.

Okay, turns out static inheritance just doesn't work as implemented on Babel with IE <= 10, without enabling an extra optional transform: https://babeljs.io/docs/usage/caveats/#classes-10-and-below-
I think this is a cool enough feature to be worth having, but I'm not happy with an approach that would require everyone to use a specific optional extra Babel transform. One other option might be to have some separate method (maybe Marty.registerStatic or something) instead of making it a static method on the class itself.

I'm not a massive fan of the name registerStatic but I agree having a static on Marty is likely the best solution. I'm becoming quite a fan of decorators so I'm wondering if a more declarative name would make sense?
e.g.
let { dependency } = require('marty');

@dependency('userStore')
class UserStore extends Marty.Store {

}

module.exports = UserStore;

I'm fine with whatever name. I was planning on using currying, so that
dependency(Application, 'userStore', UserStore);
dependency(Application, 'userStore')(UserStore);
dependency(Application)('userStore')(UserStore);

all do exactly the same thing, and the latter two could be used as decorators on UserStore (as could just dependency(Application) on its own, if you don't need the custom name).
Thing is, while this makes registrations fairly nice and pretty close to what's in v0.9.x, even with injection from containers, it's still a bit more verbose to access Stores and ActionCreators from components, so this doesn't fully accomplish what I'm looking for.

out of interest, how do you plan on requiring in all the dependencies? Will you require in the dependency into each component but not use it?
require('../stores/userStore');

class User extends React.Component {
}

or do a mass require before application start?

require('./stores/fooStore');
require('./actions/fooActions');

Shoot, I hadn't thought through that part. There'd be no point to it being anything other than (1), but that's really finicky and doesn't quite work, and (2) is no better than just putting all the registrations in the constructor.
The only way to make (1) work would be to pass in the class itself to something like app.get(...), to avoid having unused imports/variables, but that doesn't work if you name these dependencies.
Maybe we're better off backing this out for now. I'm going to prototype something with continuation locals that might give me the best of both worlds and see how that turns out.

OK cool, removed for now :smile:


Allow styling of menu actuators

Bug, feature request, or proposal:
Feature request
What is the expected behavior?
When I trigger an md-menu with an actuator (usually a button) connected with md-menu-trigger-for, I want an easy way to change the appearance of the actuator for as long as the menu is open that doesn't involve a custom component or directive.
What is the current behavior?
md-menu-trigger-for offers onMenuOpen and onMenuClose events that allow for custom behaviors but it does nothing to allow custom appearances with just template logic and CSS.
What are the steps to reproduce?
Standard button menu example:
<button md-icon-button class="md-primary"
[md-menu-trigger-for]="myMenu">
create

<cfc-menu #myMenu="cfcMenu" [menu]="myMenuModel">
What is the use-case or motivation for changing an existing behavior?
Many Material menu buttons I know use a "held open" appearance for the button while the menu is opened. This goes away when the menu is closed by any means (clicking on the backdrop, clicking on the button again, etc.).
Which versions of Angular, Material, OS, browsers are affected?
ng2 Material 2
Is there anything else we should know?
jelbourn proposed: "I would implement it as the menu exposing an isOpen property, so you could do something like:"
<button md-menu-trigger-for="myMenu" [class.xx-menu-open]="myMenu.isOpen">

@dansanderson The menu trigger already exposes a menuOpen property that is true when the menu is open. Is this not doing what you need?

@kara Ah, sorry, I didn't see that. :) Can you teach me how to refer to that property in a binding expression on the element? I assume I can do something like <button md-button md-menu-trigger-for="myMenu" [class.xx-menu-open]="....menuOpen">? Thanks for your help!

@dansanderson Ah, I missed that property. It would be
<button md-menu-trigger-for="..."
    #trigger="MdMenuTrigger"
    [class.xx-open]="trigger.menuOpen">

Thanks for the help!


Support for poe.com (quora's chatbot service) api

Hey team! I'm using poe.com on their web interface, which:

Allows users to create custom bots with unique names
4000 GPT4 messages/month for 20 bucks

With openai api, I'm sending 50 gpt-4 messages/day/4$ ~ 1500 msg/month and it's costing me 100$/month 🥲
Can I propose the feature to support adding poe.com api as an option to access their model through my personal poe.com api key, which will be counted towards my poe.com montly limit?

Adding an input field for taking poe.com api key
Adding an input field for default bot name to send query to (each bot on poe has a unique name, but I don't think it's possible to retrieve a list of bot names, so an input field to specify which bot to default to would be useful enough already)

Context

Here is the doc for the python api interfact, it's quite straightforward: https://creator.poe.com/docs/accessing-other-bots-on-poe
Here's what it looks like

import asyncio
import fastapi_poe as fp

# Create an asynchronous function to encapsulate the async for loop
async def get_responses(api_key, messages):
    async for partial in fp.get_bot_response(messages=messages, bot_name="GPT-3.5-Turbo", api_key=api_key):
        print(partial)

# Replace <api_key> with your actual API key, ensuring it is a string.
api_key = <api_key>
message = fp.ProtocolMessage(role="user", content="Hello world")

# Run the event loop
# For Python 3.7 and newer
asyncio.run(get_responses(api_key, [message]))

Thank you so much for your hardwork!

We're sorry to have kept you waiting.
After internal discussions, we currently do not have the manpower to support this request.
Thank you for your support.
@knamnguyen


TC-OPCREDS-3.7 - step 3.2 is assuming there is only one fabric

Please follow the below template to file issues/concerns/feature enhancement against Test Scripts:
Summary Title:
TC-OPCREDS-3.7 - step 3.2 is assuming there is only one fabric
Description:
 step 3.2 is assuming there is only one fabric. The test will fail for any DUT which has more than 1 fabric.

Additional Info:
Found in Matter 1.2

@akrithika27 Script has been updated with latest test plan, Could you please take look when you get chance.


NPE in TopicFragmentFilter module [DITA OT 2.x]

DITA Map:
<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
<map>
 <title>DITA Topic Map</title>
 <keydef href="zuzu.dita" keys="zuzu"/>
 <topicref href="test.dita"/>
</map>

zuzu.dita:
<!DOCTYPE dita PUBLIC "-//OASIS//DTD DITA Composite//EN" "ditabase.dtd">
<dita>
  <topic id="a">
    <title>A</title>
  </topic>
  <topic id="Z">
    <title>A</title>
  </topic>
</dita>

test.dita:
<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
<topic id="topic_fyk_zzc_x5">
  <title>AAA</title>
  <body/>
  <topic id="id_kq2_11d_x5" conkeyref="zuzu" conrefend="default.dita#default/Z">
    <title/>
  </topic>
</topic>

NPE when publishing:
BUILD FAILED
D:\projects\eXml\frameworks\dita\DITA-OT2.x\build.xml:41: The following error occurred while executing this line:
D:\projects\eXml\frameworks\dita\DITA-OT2.x\plugins\org.dita.base\build_preprocess.xml:226: java.lang.NullPointerException
    at java.util.ArrayDeque.addFirst(Unknown Source)
    at org.dita.dost.writer.TopicFragmentFilter.startElement(TopicFragmentFilter.java:48)
    at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
    at org.ditang.relaxng.defaults.RelaxNGDefaultsComponent.startElement(RelaxNGDefaultsComponent.java:200)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:268)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1655)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:325)

Marking as a bug because any NPE is a bug - but in this case the NPE is caused by invalid markup. The conref end value is set to conrefend="default.dita#default/Z", which means "The element with id="Z" inside the topic with id="default", and that does not exist.

Actually the specs:
https://docs.oasis-open.org/dita/v1.2/os/spec/common/theconrefendattribute.html

says:
When the conkeyref attribute is used in place of conref, a key is used to address the target of the reference. The conrefend attribute, which indicates the end of a conref range, may not use a key. Instead the the map or topic element addressed by the key name component of the conkeyref is used in place of whatever map or topic element is addressed by the conrefend attribute.

So when using conkeyref, the conrefend attribute just needs to have the proper pattern, the only bit from it used is the element ID. So my example is valid.

That ... is odd. I'm sure that was written in the context of elements-within-topics, without regard to topic elements. The value "default.dita#default/Z" on its own would not be valid, for the reason given above. If working with something like <section> or <li> elements, the quoted text from the spec would make sense, replacing default.dita#default with the topic at the start of the range. But in this case, you're referencing actual topics, so you can't actually use "the map or topic element addressed by the key name", because you end up with thetopicID/topicID construct.
This all just feels ... odd. I feel sure this wasn't considered when working on that language about ranges.

Looked again at my example and now it also looks wrong to me. Maybe the bottom line would be the fact that you cannot use conkeyref range to pull a range of topic elements. And the NPE would need to be guarded somehow.

@robander should we throw an error for conrefend="default.dita#default/Z" because @conrefend points to another topic? Just using Z, even with a warning, feels too aggressive error recovery.

I think so. Probably should raise this at the TC - I think this is probably a case that was never considered, and I'm not confident of a quick working solution that would allow it.

Still get an NPE from this in 3.1.
2222.zip

Ahh - this isn't actually related to conkeyref, or even (directly) to the topic fragment module.
When we evaluate a conref range, the code processes the first element correctly, and then processes everything in sequence from there up to the end. For each node in that sequence (including any nodes in the middle + the end node), the @id attribute is explicitly ignored -- which is correct for most elements. But in this case, it means we generate <topic> elements without an ID. Many DITA-OT modules assume every topic has an ID (it's a pretty basic requirement). The topic fragment module is just the first post-conref one we get to that explicitly tries to read topic/@id and doesn't have exception handling in place for a missing ID.

Fixed with #3033


replace_class in test runner

This change is

Current dependencies on/for this PR:

main

PR #3416   👈

This comment was auto-generated by Graphite.


Some fancy currency symbols

Here are some fancy currency symbols.  If there is interest, I can update the documentation and possibly add some more tests.

Interesting ... If we do this, I would prefer to keep the code in ASCII and
use the Unicode escaping syntax for double quoted strings such as \x{NNNN}
or \N{NAME}. Also the format_price method accepts a symbol argument, so we
can use that in the test suite to format using these strings. It should
also be possible to set the internal currency_symbol or int_curr_symbol to
one of these strings. Would you like to work on those changes?
On Wed, Jan 20, 2016 at 8:38 AM, brianmed<EMAIL_ADDRESS>wrote:

Here are some fancy currency symbols. If there is interest, I can update
the documentation and possibly add some more tests.
You can view, comment on, or merge this pull request online at:
https://github.com/billward/number-format-perl/pull/8
Commit Summary

Some fancy currency symbols

File Changes

M Format.pm
https://github.com/billward/number-format-perl/pull/8/files#diff-0
(32)
M t/format_picture.t
https://github.com/billward/number-format-perl/pull/8/files#diff-1
(1)

Patch Links:

https://github.com/billward/number-format-perl/pull/8.patch
https://github.com/billward/number-format-perl/pull/8.diff

—
Reply to this email directly or view it on GitHub
https://github.com/billward/number-format-perl/pull/8.

--
Check out my LEGO blog at brickpile.com http://www.brickpile.com/
Follow/friend me: Facebook http://facebook.com/billward • Flickr
http://flickr.com/photos/billward/ • Twitter
http://twitter.com/williamward • LinkedIn
http://www.linkedin.com/pub/william-ward/63/393/985/ • Goodreads
https://www.goodreads.com/user/show/2554312-bill-ward

?Sure!
I'm moving this week, so give me some time.

From: Bill Ward<EMAIL_ADDRESS>Sent: Wednesday, January 20, 2016 10:52 AM
To: billward/number-format-perl
Cc: Brian Medley
Subject: Re: [number-format-perl] Some fancy currency symbols (#8)
Interesting ... If we do this, I would prefer to keep the code in ASCII and
use the Unicode escaping syntax for double quoted strings such as \x{NNNN}
or \N{NAME}. Also the format_price method accepts a symbol argument, so we
can use that in the test suite to format using these strings. It should
also be possible to set the internal currency_symbol or int_curr_symbol to
one of these strings. Would you like to work on those changes?
On Wed, Jan 20, 2016 at 8:38 AM, brianmed<EMAIL_ADDRESS>wrote:

Here are some fancy currency symbols. If there is interest, I can update
the documentation and possibly add some more tests.
You can view, comment on, or merge this pull request online at:
https://github.com/billward/number-format-perl/pull/8
Commit Summary

Some fancy currency symbols

File Changes

M Format.pm
https://github.com/billward/number-format-perl/pull/8/files#diff-0
(32)
M t/format_picture.t
https://github.com/billward/number-format-perl/pull/8/files#diff-1
(1)

Patch Links:

https://github.com/billward/number-format-perl/pull/8.patch

https://github.com/billward/number-format-perl/pull/8.diff

Reply to this email directly or view it on GitHub
https://github.com/billward/number-format-perl/pull/8.

--
Check out my LEGO blog at brickpile.com http://www.brickpile.com/
Follow/friend me: Facebook http://facebook.com/billward * Flickr
http://flickr.com/photos/billward/ * Twitter
http://twitter.com/williamward * LinkedIn
http://www.linkedin.com/pub/william-ward/63/393/985/ * Goodreads
https://www.goodreads.com/user/show/2554312-bill-ward

Reply to this email directly or view it on GitHubhttps://github.com/billward/number-format-perl/pull/8#issuecomment-173269847.

No rush. The whole of CPAN seems to be back burnered these days anyway.
If we use the \N{NAME} then the names used for the symbols should match the
Unicode names for them, do you agree?
On Wed, Jan 20, 2016 at 8:56 AM, brianmed<EMAIL_ADDRESS>wrote:

?Sure!
I'm moving this week, so give me some time.

From: Bill Ward<EMAIL_ADDRESS>Sent: Wednesday, January 20, 2016 10:52 AM
To: billward/number-format-perl
Cc: Brian Medley
Subject: Re: [number-format-perl] Some fancy currency symbols (#8)
Interesting ... If we do this, I would prefer to keep the code in ASCII and
use the Unicode escaping syntax for double quoted strings such as \x{NNNN}
or \N{NAME}. Also the format_price method accepts a symbol argument, so we
can use that in the test suite to format using these strings. It should
also be possible to set the internal currency_symbol or int_curr_symbol to
one of these strings. Would you like to work on those changes?
On Wed, Jan 20, 2016 at 8:38 AM, brianmed<EMAIL_ADDRESS>wrote:

Here are some fancy currency symbols. If there is interest, I can update
the documentation and possibly add some more tests.
You can view, comment on, or merge this pull request online at:
https://github.com/billward/number-format-perl/pull/8
Commit Summary

Some fancy currency symbols

File Changes

M Format.pm
https://github.com/billward/number-format-perl/pull/8/files#diff-0
(32)
M t/format_picture.t
https://github.com/billward/number-format-perl/pull/8/files#diff-1
(1)

Patch Links:

https://github.com/billward/number-format-perl/pull/8.patch

https://github.com/billward/number-format-perl/pull/8.diff

Reply to this email directly or view it on GitHub
https://github.com/billward/number-format-perl/pull/8.

--
Check out my LEGO blog at brickpile.com http://www.brickpile.com/
Follow/friend me: Facebook http://facebook.com/billward * Flickr
http://flickr.com/photos/billward/ * Twitter
http://twitter.com/williamward * LinkedIn
http://www.linkedin.com/pub/william-ward/63/393/985/ * Goodreads
https://www.goodreads.com/user/show/2554312-bill-ward

Reply to this email directly or view it on GitHub<
https://github.com/billward/number-format-perl/pull/8#issuecomment-173269847

.

—
Reply to this email directly or view it on GitHub
https://github.com/billward/number-format-perl/pull/8#issuecomment-173271745
.

--
Check out my LEGO blog at brickpile.com http://www.brickpile.com/
Follow/friend me: Facebook http://facebook.com/billward • Flickr
http://flickr.com/photos/billward/ • Twitter
http://twitter.com/williamward • LinkedIn
http://www.linkedin.com/pub/william-ward/63/393/985/ • Goodreads
https://www.goodreads.com/user/show/2554312-bill-ward

Also, this is for the CPAN Pull Request Challenge - 2016


Extract gRPC interceptors from lookout

Lookout contains two gRPC interceptors in the grpchelper package, see NewServer and DialContext in helper.go.
The Ctxlog interceptor requires that the analyzers also have these interceptors to pass around the log fields like this: lookoutd client -> analyzer server -> analyzer client -> lookoutd server.
If we move the Ctxtlog interceptor to this repo it probably makes sense to move also the Log interceptor, to have uniform logs for lookoutd and all the analyzers.
I'm not sure about extracting the util/ctxlog package to this repo. Maybe we just want to have methods to set and get map[string]interface{} in the context, using context.WithValue(), ctx.Value().
Ideally the python code should have the same functionality to get the log fields from the gRPC metadata.

The Ctxlog interceptor requires that the analyzers also have these interceptors to pass around the log fields like this: lookoutd client -> analyzer server -> analyzer client -> lookoutd server.

Could you please elaborate a bit more? Having a wider picture would help a lot.
So basically the idea is to move the followings from lookout repo to lookout-sdk repo:

CtxlogStreamServerInterceptor
CtxlogUnaryServerInterceptor
CtxlogStreamClientInterceptor
CtxlogUnaryClientInterceptor
LogStreamServerInterceptor
LogUnaryServerInterceptor
LogStreamClientInterceptor
LogUnaryClientInterceptor

right?
And also to add some utility functions to get/set map[string]interface{} in contexts.

Ideally the python code should have the same functionality to get the log fields from the gRPC metadata.

Maybe we could add a separate issue for this.

The Ctxlog interceptor requires that the analyzers also have these interceptors to pass around the log fields like this: lookoutd client -> analyzer server -> analyzer client -> lookoutd server.

Could you please elaborate a bit more? Having a wider picture would help a lot.

Yes, see https://github.com/src-d/lookout/issues/248.
Basically, in lookout we add log fields to every log entry, like event-id, repo, github.pr.
But there are actions that come from a gRPC request (like GetChanges), and we didn't have those log  fields. So we had log entries like "fetching references" or whatever that did not give any hint as to what PR triggered that initially, or what analyzer initialized the gRPC request.
This was solved in https://github.com/src-d/lookout/pull/359, but that code requires collaboration from the analzyer. The flow of the log-fields is like this:
lookoutd client -> analyzer server -> analyzer client -> lookoutd server.
The lookout client will always send the log fields, and the lookout server will always take the log fields if they are present. But the analyzer code needs to get the fields from the incoming gRPC requests (NotifyReview/Push), and send them in their requests to lookout (GetChanges/GetFiles).

So basically the idea is to move the followings from lookout repo to lookout-sdk repo:

CtxlogStreamServerInterceptor
CtxlogUnaryServerInterceptor
CtxlogStreamClientInterceptor
CtxlogUnaryClientInterceptor
LogStreamServerInterceptor
LogUnaryServerInterceptor
LogStreamClientInterceptor
LogUnaryClientInterceptor

right?
And also to add some utility functions to get/set map[string]interface{} in contexts.

Yes. As I said, I'm not sure about moving the ctxlog package here too. It would make sense to standardize the logs in all the Go analyzers (using go-log), but maybe it's too much bloat for an SDK library. And then we would need to find a similar functionality for python... So I think for now it's best to make those utilities to get/set should deal with map[string]interface{}, not  Logger.

Ideally the python code should have the same functionality to get the log fields from the gRPC metadata.

Maybe we could add a separate issue for this.

I don't mind having 2 PRs for this issue, or to open a new issue for python. But I think it's important to keep both languages on par, if possible.

I totally agree with Carlos on using map[string]interface{} in sdk instead of bringing full ctxlog.
At least for now.

So if I understood correctly the main concern about bringing here ctxlog is actually the fact that it uses go-log, right? Coz if this is the case we could just move ctxlog here by removing the go-log dependency, and currently, it only uses the log.Fields alias and the log.New factory.
And if we're not using go-log here, should I use the stdlib log for logging?

the main concern about bringing here

I think that in the current state sdk shouldn't provide any solution for logging. Each analyzer can use any library for that. To do logging "right" is a difficult problem especially for a library that will be used by many different applications.

And if we're not using go-log here, should I use the stdlib log for logging?

sdk shouldn't log anything (for now). It should just extract log fields from lookout request and send it back when analyzer calls lookout.

I'm gonna mimic what has been done in #77 for python. No need to open new issue, this is going to be closed once Go and Python SDK are aligned.

Moving this to TODO until I'm actively working on it again.


[Bug] Invoke-DbaQuery doesn't close connections which it creates

Environmental information
PowerShell version:
Name                           Value
----                           -----
PSVersion                      5.1.18362.145
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.145
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

dbatools Module version:
Name    : dbatools
Path    : C:\Users\joel\Documents\PowerShell\Modules\dbatools\1.0.72\dbatools.psd1
Version : 1.0.72

SQL Server:
Microsoft SQL Azure (RTM) - 12.0.2000.8
   Oct 12 2019 22:46:48
   Copyright (C) 2019 Microsoft Corporation

Report
As stated above, Invoke-DbaQuery creates connections but does not close them. At least when working against Azure SQL
Run any simple query against an Azure SQL database in a loop, over 100 times.
For what it's worth, the little I know:

the default Maximum size of an ADO.NET connection pool is 100
I'm using SQL Azure. This bug doesn't seem to affect us when it's not Azure
You can reproduce this just running Connect-DbaInstance in a loop if you don't call .ConnectionContext.Disconnect() on the connections it outputs.
Adding the database name has no effect on this bug.

Host used

[x] powershell.exe
[ ] ISE
[ ] VS Code
[ ] Other (please specify)

Errors Received

writeErrorStream      : True
PSMessageDetails      :
Exception             : System.Exception: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred                           because all pooled connections were in use and max pool size was reached. ---> System.Exception: Timeout expired.  The timeout period                           elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool                          size was reached. ---> System.Management.Automation.MethodInvocationException: Exception calling "Connect" with "0" argument(s):                                "Failed to connect to server TCP:ausc1-frg9sqlwttqrx.database.windows.net,1433." --->
                        Microsoft.SqlServer.Management.Common.ConnectionFailureException: Failed to connect to server
                        TCP:ausc1-frg9sqlwttqrx.database.windows.net,1433. ---> System.InvalidOperationException: Timeout expired.  The timeout period elapsed                          prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size                             was reached.
                           at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry,                                DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
                           at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory                                 connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
                           at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
                           at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
                           at System.Data.SqlClient.SqlConnection.Open()
                           at Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect(WindowsIdentity impersonatedIdentity)
                           at Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
                           --- End of inner exception stack trace ---
                           at Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
                           at CallSite.Target(Closure , CallSite , Object )
                           --- End of inner exception stack trace ---
                           at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
                           at Connect-DbaInstance<Process>(Closure , FunctionContext )
                           --- End of inner exception stack trace ---
                           --- End of inner exception stack trace ---
TargetObject          : ausc1-frg9sqlwttqrx.database.windows.net
CategoryInfo          : NotSpecified: (ausc1-frg9sqlwttqrx.database.windows.net:PSObject) [Write-Error], Exception
FullyQualifiedErrorId : dbatools_Invoke-DbaQuery,Stop-Function
ErrorDetails          : Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled                          connections were in use and max pool size was reached.
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at Stop-Function, C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.22\allcommands.ps1: line 80172
                        at Invoke-DbaQuery<Process>, C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.22\allcommands.ps1: line 44943
                        at <ScriptBlock>, <No file>: line 2
PipelineIterationInfo : {0, 1}

Steps to Reproduce
Literally run any query (against a *.database.windows.net server) in a loop over 100 times to exhaust the default connection pool size:
foreach($c in 1..102) {
    Invoke-DbaQuery -SqlInstance "joel-test.database.windows.net" -SqlCredential $Credential -query "SELECT @@VERSION"
}

Expected Behavior
I should see 102 lines of
Column1
-------
Microsoft SQL Azure (RTM) - 12.0.2000.8 ...

Actual Behavior
I see 100 lines of output, followed by two warnings after we exceed the limit of the pool and can no longer connect. E.g.:
WARNING: [16:39:17][Invoke-DbaQuery] Failure | Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have
occurred because all pooled connections were in use and max pool size was reached.

I stumbled across this today as well. It seems like this only happens when using the SqlCredential parameter.

Passing a credential will also cause separate connection pools to be created..even if you are using the same credential.

@wsmelton - I don't believe that is the case when passing a -SqlCredential to these cmdlets (as you can see more clearly from the repros on #6211). Despite the parameter name, dbaTools never creates a SqlCredential object. Instead, the PSCredential is put into the connection string (not added as a credential to the SqlConnection object) which means the connection string is exactly the same each time, so all the connections share one pool and use it up. If it created a different pool for each we might (eventually) run out of memory, but it wouldn't fill the pool up (so I would never have noticed that this was wrong). It would still be a bug that the connection's not closed, though 😉
@awickham10 as opposed to using a token? If you're using a token (or -Tenant or -AuthenticationType "AD Universal with MFA Support" or ClientSecret, etc. all of which result in generating a token), then you're in a far worse spot! As far as I can tell, this results in generating a new token every time it has to reconnect (which is every time #6211). To do that it's making web requests and parsing json, etc. Then, on top of that, because you have a different token in the connection string every time, you create a new connection pool every time. If you're doing that, you should definitely be filing a bug 🤨 and should consider -NonPooledConnection since there's no point in the overhead of a connection pool if it's impossible to reuse connections.

I was experiencing it using Windows authentication with domain joined computers.

For what it's worth: I ended up having to pull in the code from Invoke-SqlCmd2 to one of our modules to replace our need for Invoke-DbaQuery because of this and the related bug #6211 bug.  We found that it also had this bug. I've fixed that and will send a PR to that repo with the fix -- and some tests.
The root cause is that you're creating objects that are IDisposable and not calling Dispose() on them. One of them is holding on to the connection to the SQL Server. I'm pretty sure that will be the fix here, too:

Dispose the SqlConnection (closing it isn't enough)
Dispose the SqlCommand
Dispose the SqlDataAdapter

I encountered this while working on a script that runs multiple Invoke-DbaQuery commands inside a loop.  I am working around it by running the Clear-DbaConnectionPool command inside the loop.  So far it seems to be working without impact.

I believe I ran into this today.  Azure SQL DB target using SQL Auth/SqlCredentials.  Ran out of pool connections.  I'll try your Clear-DbaConnectionPool fix, @ahardin13

I think I nailed it but need further directions.
Changing a small bit of Connect-DbaInstance makes this open one connection only
$oneconnect = Connect-DbaInstance -SqlInstance "mydb.database.windows.net" -SqlCredential $Credential

foreach($c in 1..102) {
   Invoke-DbaQuery -SqlInstance $oneconnect  -query "SELECT @@VERSION"
}

this is true even if you add -Database master on one or both.
Now, the hard part ..... Should repeated calls like this
Connect-DbaInstance -SqlInstance "mydb.database.windows.net" -SqlCredential $Credential
Connect-DbaInstance -SqlInstance "mydb.database.windows.net" -SqlCredential $Credential
Connect-DbaInstance -SqlInstance "mydb.database.windows.net" -SqlCredential $Credential
Connect-DbaInstance -SqlInstance "mydb.database.windows.net" -SqlCredential $Credential

create new connections or reuse them ?
Because it seems that the fact that
Invoke-DbaQuery -SqlInstance "mydb.database.windows.net" -SqlCredential $Credential -query "SELECT @@VERSION"

(irregardless of specifying the database) do ehxaust the connpool is due to the fact that repeated Connect-DbaInstance calls (with the same params) open new connections.
@wsmelton , @potatoqualitee : can you weight in ?

What method could/would be used to see if a connection already existed for the SQL instance?
I feel that any call to Connect should be explicit to make another connection. However, I'd note that Invoke-DbaQuery only makes one call to Connect-DbaInstance.

I have my Azure DB up and running, so I played a little bit on this one here.
Every command does this:
$server = Connect-DbaInstance -SqlInstance $instance

And there are two different cases:

$instance is a full server smo
$instance is just a [DbaInstanceParameter]

In the first case, $instance is just transfered to $server and so no new connection is opened.
In the second case, a new full server smo is build and "sometimes" a new connection is opened.
So when is this "sometimes"?
In the non-Azure-world, a new connection is only opened when the connection string changes. So the dll manges the connections in pools.
In Azure it looks different, as far as my tests show. Even when the connections string does not change, a new connection is opened.
Is there a way around? I tried the hints from @Jaykul (https://github.com/sqlcollaborative/dbatools/issues/6210#issuecomment-600929627).
Disposing the SqlCommand and the SqlDataAdapter alone does not help, but disposing the connection in Invoke-DbaQuery right after Invoke-DbaAsync alone works: $server.ConnectionContext.SqlConnectionObject.Dispose()
So back to the two different cases. What about handling them different within the commands. The Connect-DbaInstance has to return the info, if $server is a new object or just the old $instance. If it is a new object, it was created within the command and has to be disposed within the command. The user has no chance to do so later, because it is not returned. Ok, every command must be changed and this is only for the Azure objects, as connection pooling works with non-Azure.
Other idea: can the command (or Connect-DbaInstance) just put the newly created $server object in a global array or something, so that the user (or other commands) can get to them and issue the .Dispose()?
Ok, a lot of unstructured ideas - I will stop here...

I feel that any call to Connect should be explicit to make another connection. However, I'd note that Invoke-DbaQuery only makes one call to Connect-DbaInstance.

yeah, the point is users expect that multiple calls of Invoke-DbaQuery with the same target do not exhaust the connpool. Granted, there are a few subtleties that makes the problem with Azure db target a little worse than it should be.

In Azure it looks different, as far as my tests show. Even when the connections string does not change, a new connection is opened.

and that is my finding, too. BUT, somehow, with that simple fix to  Connect-DbaInstance, repeated calls to Invoke-DbaQuery that use a "full server smo" (aka $oneconnect) just reuse one connection. And it makes the loop a hella-lot speedier (supposedly because indeed the connection is not reestablished each time). This leads me to think that in that usecase, Dispose(ing) is not needed.
I'm okay(ish) with commands Dispose()ing the conn (should go back to the connpool, right, not close the whole thing ?) but I'm trying to figure out if there is a way to avoid micromanaging in lower-level commands what supposedly Connect-DbaInstance should do, which ultimately is "doing a lot of work" but relying on the fact that an equal connstring should not create a new connection but reuse an existing one. Before going to bed I was thinking that the TCP: hostname part of the connstring was the culprit.

If you pass a full server smo of an Azure connection to Connect-DbaInstance this is the only code that is run (my test version of the code with more Debug):
            if ($connstring -match $AzureDomain -or $instance.ComputerName -match $AzureDomain -or $instance.InputObject.ComputerName -match $AzureDomain) {
                Write-Message -Level Debug -Message "We are about to connect to Azure"
                # so far, this is not evaluating
                if ($instance.InputObject.ConnectionContext.IsOpen) {
                    Write-Message -Level Debug -Message "Connection is already open, test if database has to be changed"
                    $currentdb = $instance.InputObject.ConnectionContext.ExecuteScalar("select db_name()")
                    if (($Database -and ($Database -eq $currentdb))) {
                        Write-Message -Level Debug -Message "Same database, so return instance.InputObject"
                        $instance.InputObject
                        continue

yeah, and adding a small fix (if $Database is not passed, set it to "master", after $currentdb) closes the "issue" of Invoke-DbaQuery exhausting the connpool when reusing a full server smo. Now my "target" is .... how to make it not exhaust the connpool when passed the same set of sqlinstance, credentials and database ?

I thinks that's a problem inside the dll - because it works for non-Azure.
One idea (I have no time to test at the moment): Try to shorten the connection string. Maybe there are parts that prevent the connection pooling but can be left out.
And I also deleted $null = $serverconn.Connect() because in the non-Azure-world this prevents the connection pooling. This line seems not be needed - it works without.

The server.Connect() is there for an explicit reason. This was there for use with credentials because SMO will try to connect as the console user when the desire is to connect using a credential if I recall.
Please run your test using a credential where your account running the session has no rights to the instance.

I'd also note all this discussion on Connect-DbaInstance should be moved to #6211 as a good bit has already been discussed.

yup, I'm trying to address both, that one got a bit stale.

@niphlod I made one (big?) step: Azure and non-Azure both create new connections, if we use a connection string to build the smo. So this has nothing to do with Azure, but with building the smo. I will go on and work with non-Azure and try to find a way to use a connection string without opening a new connection.

Here is some code to show the difference:
Import-Module -Name dbatools -MinimumVersion 1.0.121

# Version 1: Let Smo.Server handle the connection
#################################################

$credentialSa = New-Object -TypeName System.Management.Automation.PSCredential('sa', ("P@ssw0rd" | ConvertTo-SecureString -AsPlainText -Force))
$fullSmoName = 'sqlix.ordix.de\pstest,14331'  # At Connect-DbaInstance "$instance.FullSmoName" is used
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $fullSmoName
$server.ConnectionContext.ApplicationName = 'Test Smo.Server V0'
$connstring = $server.ConnectionContext.ConnectionString
$server.ConnectionContext.LoginSecure = $false
$server.ConnectionContext.set_Login($credentialSa.UserName)
$server.ConnectionContext.set_SecurePassword($credentialSa.Password)  # No connection is opened jet
$server.ConnectionContext.SqlConnectionObject.Open()  # This connects to the SQL Server
$server.ConnectionContext.ProcessID

# We use the same connection string again, so pooling should work
$processIds = @()
1..10 | ForEach-Object -Process {
    $server = New-Object Microsoft.SqlServer.Management.Smo.Server $fullSmoName
    $server.ConnectionContext.ApplicationName = 'Test Smo.Server V1'
    $connstring = $server.ConnectionContext.ConnectionString
    $server.ConnectionContext.LoginSecure = $false
    $server.ConnectionContext.set_Login($credentialSa.UserName)
    $server.ConnectionContext.set_SecurePassword($credentialSa.Password)  # No connection is opened jet
    $server.ConnectionContext.SqlConnectionObject.Open()  # Do we get another connection?
    $processIds += $server.ConnectionContext.ProcessID  # No! It works as expected
}
$processIds -join ' '

# And that works with dbatools aswell
$processIds = @()
1..10 | ForEach-Object -Process {
    $server = Connect-DbaInstance -SqlInstance $fullSmoName -SqlCredential $credentialSa -ClientName 'Test Smo.Server V2'
    $processIds += $server.ConnectionContext.ProcessID
}
$processIds -join ' '

# Version 2: We use SqlClient.SqlConnection, Common.ServerConnection and Smo.Server
###################################################################################

$connstring = 'Data Source=sqlix.ordix.de\pstest,14331;User ID=sa;Password=P@ssw0rd;Application Name="Test SqlClient.SqlConnection V0"'
$sqlconn = New-Object System.Data.SqlClient.SqlConnection $connstring
$serverconn = New-Object Microsoft.SqlServer.Management.Common.ServerConnection $sqlconn
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $serverconn  # No connection is opened jet
$server.ConnectionContext.SqlConnectionObject.Open()  # This connects to the SQL Server
$server.ConnectionContext.ProcessID

# We use the same connection string again, so pooling should work
$processIds = @()
1..10 | ForEach-Object -Process {
    $connstring = 'Data Source=sqlix.ordix.de\pstest,14331;User ID=sa;Password=P@ssw0rd;Application Name="Test SqlClient.SqlConnection V1"'
    $sqlconn = New-Object System.Data.SqlClient.SqlConnection $connstring
    $serverconn = New-Object Microsoft.SqlServer.Management.Common.ServerConnection $sqlconn
    $server = New-Object Microsoft.SqlServer.Management.Smo.Server $serverconn
    $server.ConnectionContext.SqlConnectionObject.Open()  # Do we get another connection?
    $processIds += $server.ConnectionContext.ProcessID  # Yes!  That is not what we expect.
}
$processIds -join ' '

# What can we do? If we (and not the smo) explicitly open a connection, we have to take care and close it.
$processIds = @()
1..10 | ForEach-Object -Process {
    $connstring = 'Data Source=sqlix.ordix.de\pstest,14331;User ID=sa;Password=P@ssw0rd;Application Name="Test SqlClient.SqlConnection V2"'
    $sqlconn = New-Object System.Data.SqlClient.SqlConnection $connstring
    $serverconn = New-Object Microsoft.SqlServer.Management.Common.ServerConnection $sqlconn
    $server = New-Object Microsoft.SqlServer.Management.Smo.Server $serverconn
    $server.ConnectionContext.SqlConnectionObject.Open()  # Do we get another connection?
    $processIds += $server.ConnectionContext.ProcessID  # No!
    $server.ConnectionContext.SqlConnectionObject.Close() # Because we close it, so it gets back to the connection pool
}
$processIds -join ' '

My output:

But the best is yet to come:
# Try to use version 1 with Azure
#################################

$credentialSa = New-Object -TypeName System.Management.Automation.PSCredential('user1', ("P@ssw0rd" | ConvertTo-SecureString -AsPlainText -Force))
$fullSmoName = 'sqlserver-db-dbatools.database.windows.net,1433'  # At Connect-DbaInstance "$instance.FullSmoName" is used
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $fullSmoName
$server.ConnectionContext.ApplicationName = 'Test Azure Smo.Server V0'
$server.ConnectionContext.DatabaseName = 'database-db-dbatools'
$connstring = $server.ConnectionContext.ConnectionString
$server.ConnectionContext.LoginSecure = $false
$server.ConnectionContext.set_Login($credentialSa.UserName)
$server.ConnectionContext.set_SecurePassword($credentialSa.Password)  # No connection is opened jet
$server.ConnectionContext.SqlConnectionObject.Open()  # This connects to the SQL Server
$server.ConnectionContext.ProcessID

$processIds = @()
1..10 | ForEach-Object -Process {
    $server = New-Object Microsoft.SqlServer.Management.Smo.Server $fullSmoName
    $server.ConnectionContext.ApplicationName = 'Test Azure Smo.Server V1'
    $server.ConnectionContext.DatabaseName = 'database-db-dbatools'
    $connstring = $server.ConnectionContext.ConnectionString
    $server.ConnectionContext.LoginSecure = $false
    $server.ConnectionContext.set_Login($credentialSa.UserName)
    $server.ConnectionContext.set_SecurePassword($credentialSa.Password)
    $server.ConnectionContext.SqlConnectionObject.Open()  # Do we get another connection?
    $processIds += $server.ConnectionContext.ProcessID  # No! It works as expected
}
$processIds -join ' '

It works with Azure SQL Databases! On my machine... But with a user that has no access to the master database.
So the question is: Why do we ever want to use explicit connections with SqlClient.SqlConnection and Common.ServerConnection, and not just let the Smo.Server handle the connections?

@andreasjordan - if i recall, i was reusing the code proposed by Microsoft as I don't know enough about SMO. But it could also be the dual domain issue or I may have needed it for it to work with MFA? do you have a lab that could test those scenarios?

I don't have a lab with dual domains. Maybe we can first focus on azure and try to change the code there to build the smo without first build a connection.
Because it has a big impact: Can we have a config item "experimental feature" and have dual code: Only use the new way if users activate this in the config? This way we can ship the code to interested users with a lot of different azure environments and they can test it.

@andreasjordan : great find! at least we do have a reproducible case.
@potatoqualitee : I guess we can also start the fixes to make sure a new connection is not opened when a single Connect-DbaInstance is used with multiple Invoke-DbaQuery calls and propose that "form" for users in the need of calling it in a tight loop when the target is Azure, so in the meantime they get to use it ^_^

Any update here ? I am having same issue
Exception calling Open with 0 argument(s): Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. Exception calling Open with 0 argument(s): Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. Exception calling Open with 0 argument(s): Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. You cannot call a method on a null-valued expression. Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. System.Management.Automation.RuntimeException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. ---> System.Exception: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. ---> System.Management.Automation.MethodInvocationException: Exception calling Open with 0 argument(s): Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. ---> System.InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at CallSite.Target(Closure , CallSite , Object )
   --- End of inner exception stack trace ---
   at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
   at Connect-DbaInstance<Process>(Closure , FunctionContext )
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
   at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
   at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.

Hi @TheRockStarDBA : Yes, the first improvements are part the the new version 1.0.123. The command is still not perfect, more updates are planned. I would like to hear from you if your case is already solved with the new version. If not, please provide more details about your situation and the commands you use.

Sorry to jump in, but this Issue has become stale. And no idea the current state of the issue. I use Invoke-DbaQuery in some scripts, and provide it with a $SqlInsance object returned by the Connect-DbaInstance. I have 30-50 connections established lingering around on my local mssql dev db, where only my single script is running.
Can this be avoided?

Sorry to jump in, but this Issue has become stale. And no idea the current state of the issue. I use Invoke-DbaQuery in some scripts, and provide it with a $SqlInsance object returned by the Connect-DbaInstance. I have 30-50 connections established lingering around on my local mssql dev db, where only my single script is running.
Can this be avoided?

@mkellerman It's a little hacky but you can Clear-DbaConnectionPool until this bug is fixed.

@TheRockStarDBA To be clear this bug affects any function in DbaTools that uses Connect-DbaInstance or the internal wrapper Connect-SqlInstance.

@andreasjordan  I'm testing with 1.0.145 and the issue still persists as noted by the original repro case from @Jaykul

Have you used the experimental code path (see last example in the docs)?
Am 21.04.2021 22:04 schrieb sdecker @.***>:
@andreasjordanhttps://github.com/andreasjordan I'm testing with 1.0.145 and the issue still persists as noted by the original repro case from @Jaykulhttps://github.com/Jaykul
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/sqlcollaborative/dbatools/issues/6210#issuecomment-824323032, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AP6YI5PFWRE27OONI3NVAMDTJ4VVBANCNFSM4JPGH4VA.

I did not use the experimental code path. Sorry missed that. I will try it now. But I also found that the problem goes away if I add  $server.ConnectionContext.Disconnect() at the end of the
foreach ($instance in $SqlInstance) {
section.

@andreasjordan I confirm that with sql.connection.experimental I cannot reproduce the simple use case on the same DB.  I'm going to setup 200 DBs on my test setup now because I think it will still fail with more than 100 unique DBs on Azure Sql. Basically in which case all functions that use create a connection themselves need to use the $newConnection logic like Test-DbaRestoreVersion implements.

@sdecker You can do that with:
Set-DbatoolsConfig -FullName sql.connection.experimental -Value $true -Passthru | Register-DbatoolsConfig

My plan is to set this code path as the default later. So please give feedback if there are any problems or limitations with this setting.

Sorry for not being clear. I know how to make the experimental feature permanent on my system. I was asking what I can do to help move it from experimental to the installed default. I am pleasantly surprised that this experimental fix also works with connection to mutliple DBs with other commands like Get-DbaDbSpace
$SecurePW = ConvertTo-SecureString 'Just4Now' -AsPlainText -Force
foreach($c in 1..110) {
$cred = New-Object System.Management.Automation.PSCredential("testpooldb$($c)",$SecurePW)
Get-DbaDbspace -SqlInstance $InstanceInfo.InstanceName -SqlCredential $cred -Database $cred.UserName | ft
}
I've tested various commands and so far not seeing any issues.

Hi @sdecker : Thanks for your offer to help!
Have a look at the source code at https://github.com/sqlcollaborative/dbatools/blob/master/functions/Connect-DbaInstance.ps1 and search for "TODO". There are still some questions we have to answer and some decisions we have to make.
Then we need the final ok from @potatoqualitee .

I will close this for now, but you can reopen it if you have further questions.

This is finally fixed in dev! 🥳  will release to PS Gallery in 5 days, after testing


Make all NNBD-related warnings into errors in weak mode

Context: https://github.com/dart-lang/language/issues/851

@stefantsov why did some ffi_2 tests turn red here? https://dart-ci.firebaseapp.com/cl/139463/6
tests/ffi_2/* tests are the legacy tests, the tests/ffi/* tests are the tests which are migrated to NNBD.
Does that mean the CFE FFI tests are set up wrongly?

Yep, that's an issue with correctly opting in and out the tests.  We're currently working on solving it.  The affected tests and the CLs that surfaced the issue are listed here: https://github.com/dart-lang/sdk/issues/41053.


insert or update on table external sources violates foreign key constraint

This fixes #12488.

Ey, I'm moving this backwards because after a last look I think that there's a redundant .save!.

@mayoral sorry, I realized about a redundant .save!, and then I also realized that I could wrap the iteration through the data sources in a transaction, making it much faster. In addition, I've added a workaround that makes change? detection better, so we don't trigger unnecessary UPDATE requests. Could you do a second CR + Acceptance, please?
This involves user creation (normal signup, organization signup, organization creation, superadmin creation), and data library refresh (you can force it setting last_common_data_update_date to null and then opening the dashboard again).
Take a look at the queries in first insert, no metadata change, and changed metadata, I think they're close to optimal now. Let me know if you have trouble reproducing.


Add some dependencies from commits and WIP PRs

this PR is ready for review :) thanks!

just a extra note about conda constructor: it is using specs for now, if we want to use environment_file we should wait for a new constructor release or use it from its dev subchannel (https://github.com/conda/constructor/issues/407#issuecomment-712888862)

@scopatz could it be merged? or is there anything missing here that I need to address first? thanks!

@kcpevey when you have time, could you review this PR pls? thanks


js/install: Fix path of the base infrastructure script

kelda base-infrastructure shells out to kelda-base-infra-init.js,
but we installed the script as kelda-base-infra.js instead. This
caused the command to fail since it couldn't find the script.

Thanks for fixing this!

No problem, I missed it in my review as well


Always scroll to the bottom of ScrollView

Your ListView works. But when start an activity, it always goes to the bottom of ScrollView. How can I fix this?

Sorry, it's not your problem. I managed to fix it by simply adding lv.setFocus(false)


Generated documentation is missing

The docstrings are pretty good at this point, but it would be good to generate documentation from them, instead of having the separately maintained documentation in the README.md.

After the entire thing is ready I intend to sphinx it and have it hosted on rtd.

PR #57 is a first stab at Sphinx documentation.

Addressed by PR #57.


Fix typo in required_capabilities? documentation

Coverage remained the same at 100.0% when pulling 37cc0eef39a54c2b07b3002f30888d40dd2fc6de on mcwqy9-patch-2 into 8e0a59eb2d0b9063daef4a974d44c9eacbab542a on master.


Release/2018 02 27

02/27/2018

aws-amplify - v0.2.8

Enhancement: Allow service info config for API #312
Enhancement: Add expires key to s3.get() #327
Bug Fix: currentUserInfo should check for user if no credentials source #331
Enhancement: Push Notification #343
Enhancement: Add a method to change password for currently authenticated user #349

aws-amplify-react - v0.1.34

Enhancement: Export VerifyContact #365

aws-amplify-react-naitve - v0.2.5

Enhancement: Push Notification #343
Bug Fix: Fix typo #356

Codecov Report

Merging #372 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master    #372   +/-   ##
======================================
  Coverage    89.4%   89.4%
======================================
  Files          54      54
  Lines        2595    2595
  Branches      530     530
======================================
  Hits         2320    2320
  Misses        264     264
  Partials       11      11

Continue to review full report at Codecov.

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


Addition of Quantization Directive

quantize <source-column-name> <dest-column-name>  [low:high=value][,low:high=value]*

@abhinavbansal246 addressed your comments. Please approve to merge.

LGTM


SCD0080 uss_qualifier checks to verify ASTM F3548-21

As part of #274, we should add check SCD0080.
One possible approach:
DSS ensures operational intents are always covered by subscriptions, so a USS is compliant with this requirement if they use a DSS that provides this assurance -- so, migrate those DSS prober tests to uss_qualifier.
To certify other participants' (who are not providing their own DSS instance) compliance, we may want to gather information about what participants are using each DSS instance (perhaps an optional additional property of DSSInstance resources) and mark those participants as compliant with this requirement when this requirement is checked for the DSS instance.

Before building a scenario with new USS behavior, could we take advantage of the existing situations we have already created in order to check whether notifications are received correctly?  It seems like this is a candidate check any time mock_uss or uss_qualifier sends a notification to a known participant due to a subscription covering an operational intent, so we can add another branch here and here if a notification was actually found.  We can also add an analysis scenario that looks back to past instances of, e.g., conflict_equal_priority_not_permitted and, when a mock_uss instance was involved, query its interactions to see if the appropriate notifications were received (also here, here, here, here, here).
Note that the only aspect of "maintain awareness" that this will test regarding "received by the USS" will be "did the USS respond 204", which a USS could satisfy by implementing an endpoint that 204s every incoming request after discarding it.  A more valuable test would probably include some level of verification that comprehension and appropriate actions were taken by the USS in response to an event that the USS must have maintained awareness for.  For that reason, this aspect of "maintain awareness" would probably be well-tested along with SCD0095 since SCD0095 provides us a way to determine whether or not the USS actually comprehended and responded accordingly to a notification (rather than just 204'ing and discarding the notification).

I would not like to use get_op_data_validation.md for this test. As the goal of that scenario is to test data validation of GET requests for operational intent by tested_uss from mock_uss.

We generally want to take every reasonable opportunity to check for compliance with requirements for which we are testing, developer resources and test time permitting.

So getting notifications from mock_uss to tested_uss is not a given in this scenario.

Correct, but if we encounter that branch, there is a simple check we can perform.

Basically, this scenario is not set up that notification will be required to be sent by mock uss to tested_uss.

Nor is this scenario set up so that the GET request is required to be made by tested_uss, but it is still valuable to perform the checks that we can with the outcomes/branches we observe.

Also, conflict_equal_priority_not_permitted has first flight by control_uss, and the second by tested_uss. However for maintaining-awareness-through-subscriptions tests, we need tested_uss to plan the first flight, and the second flight by mock_uss.

As linked above, this is where we know the notification will be sent to tested_uss in that scenario.

I have a draft PR for a test scenario. Could you please see if that looks good. https://github.com/interuss/monitoring/pull/478

Looks like that PR is not yet ready for review?


special characters ( Draft75 & Draft76 )

Hello, I have some problems with iPhone and Windows Safari. I write WebSocket.DEBUG = true for enabling debug information (I seen same theme there):
process(194): {GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:8887
Origin: file://
Sec-WebSocket-Key1: 1323@331  zS)V8L= 00
Sec-WebSocket-Key2: 2L7v5j 9'  4 f< X7N22 46

їn't5љ}
open using draft: Draft_76
org.java_websocket.WebSocket@6ea9d2
process(76): {

There is also exists
@Override
    public HandshakeBuilder postProcessHandshakeResponseAsServer( ClientHandshake request, ServerHandshakeBuilder response ) throws InvalidHandshakeException {
        response.setHttpStatusMessage( "WebSocket Protocol Handshake" );

In Draft_76.java
But it doesn't  work :( What should I do in order to this framework works fine with Safari?

Closing issue. The Draft_76 should not be used anyway!
Greetings
marci4


Allow xts (and other object types) to be transferred to Excel

Hello,
In the Variable Explorer window, currently only data frames can be opened in Excel. There are other R types, which are widely used, and are quite similar to a data frame. Time series objects (package xts) come to mind as an example. Could these be supported as well?
Thanks in advance

Currently, we use write.csv to produce the files to then open in Excel - do those types support that?

Yes they do. The output can be tweaked using write.csv parameters as well. Here is one way to write a csv out:
require(quantmod)
s = getSymbols("SPY", auto.assign=F)
write.csv(s, file = "s.csv", quote=F, row.names=F)

@karthiknadig, I think your recent change to check for as.data.frame is 99% of the solution here. The only potential problem is that we also check for a bunch of other stuff before showing the Excel button:
https://github.com/Microsoft/RTVS/blob/267f5525ff62611756cd74ac46d627b42ca7f9e4/src/Package/Impl/DataInspect/VariableViewModel.cs#L65
It seems that the only check we should really be making there is CanCoerceToDataFrame, and drop the rest. Then we'll just show the button for anything that as.data.frame (and hence write.csv) can handle, even if our data grid viewer doesn't support it. Maybe also have a length check, since exporting 0- and 1-length vectors is kinda pointless.


Look into AzSecPack for APIView

Reading the documentation, it doesn't look like we need to install it as APIView is an Azure App Service. We are still responsible of audit logs and other metric collection.
More information here: https://eng.ms/docs/microsoft-security/cloud-ecosystem-security/azure-security/security-health-analytics/azure-security-monitoring-asm-slam/azure-security-monitoring/azuresecuritypack/home/azsecpackoverview

While we are at it, might as well check: https://identitydivision.visualstudio.com/IdentityWiki/_wiki/wikis/IdentityWiki.wiki/55423/Otel-Audit-Library-Usage
We might be able to do both in one go as both are about audit logs

While we are at it, might as well check: https://identitydivision.visualstudio.com/IdentityWiki/_wiki/wikis/IdentityWiki.wiki/55423/Otel-Audit-Library-Usage
We might be able to do both in one go as both are about audit logs

It's unclear what is required to be done. Can you please provide more context about this change?

This change is not required for APIview which is deployed as Azure app service and also note that APIView does not use Geneva.


How to dynamically skip over empty layers when performing model speedup after pruning?

Describe the issue:
When pruning a model at various pruning percentages (10%-95%) using the L1Norm Pruner, I get a nni.compression.pytorch.speedup.error_code.EmptyLayerError: Pruning a Layer to empty is not legal error. I was wondering if I can dynamically skip over such layers in these cases? Based on the documentation, I can't determine if a layer will be empty after pruning and before model speedup.
I couldn't find it in the documentation, but I was wondering if there was a way to tell if a layer is empty after pruning and before speedup, so that I can exclude it when speeding up, preventing the EmptyLayerError. Any help would be greatly appreciated, thanks!
Environment:

NNI version: nni==2.7
Python version: Python 3.8.10
PyTorch/TensorFlow version: torch==1.10.2+cu113

How to reproduce it?:
Prune a model to the point where it gets very small, or start with a small model and continue to prune.

Hello @pmmitche , nni don't have a feature can auto skip empty layer right now, this problem could mainly occur in convolutional layers with group_num>1. You could have a try with pruner = L1NormPruner(..., mode='dependency_aware'), https://nni.readthedocs.io/en/stable/reference/compression/pruner.html#l1-norm-pruner , in this mode, pruner will try to prune same filter number in each group in one conv layer.
If mode='dependency_aware' can not solve your problem, maybe you need to skip these layers in config_list with {'exclude': True, 'op_names': ['net.conv1']}, https://nni.readthedocs.io/en/stable/compression/compression_config_list.html#exclude , and we will try to support a way to auto skip these empty layers.

Awesome! I'll try that out, thank you!

@J-shang sorry to bother again, but when trying to use the exclude functionality within the config list, the exclude term seems to be ignored. I have tried it on my custom model and on a base timm model of efficientnet and experience the same issue. It seems that the exclude does not prevent NNI from trying to prune the layer, leading to the empty layer exception again. I'm wondering if I'm using it wrong, or if this is an issue with the model or a small bug.
The log output from my minimal example can be found here: https://github.com/pmmitche/Masters-Thesis/blob/main/nni_example_output.txt
(Note, I added some print statements in the source code based on the stack trace to see what layer was causing the issue. Those prints are seen in the log).
A minimal working example that highlights the issue (that the log file is based off of) can be found here: https://github.com/pmmitche/Masters-Thesis/blob/main/minimal_pruning_error_example.py
Thank you for your time and help so far, and any additional help with this would be greatly appreciated!

any progress in this？