Cannot build flutter_tools on Linux, Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.

UPDATE: This issue has been mitigated in the framework by rolling back the engine hash to an unaffected version. However, the latest engine build still has the wrong dart version: https://ci.chromium.org/p/flutter/builders/prod/Linux Host Engine/6083. I suspect we will have to delete the git caches of all the LUCI bots.

Building flutter tools is failing on linux
https://cirrus-ci.com/task/4955835350646784?command=setup#L337
flutter config --no-analytics
Downloading Dart SDK from Flutter engine dcc9a4048da890660f0880b4c2afed7c9470d335...

The current Dart SDK version is 2.10.0-0.0.dev.flutter-9dca49e71e.
Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (9 tries left)
Resolving dependencies...

Seeing this on Cirrus and devicelab.  Windows and macOS is passing.

Dart 2.10 hasn't even been rolled into the engine yet.

This repros for locally at head:
$ ./bin/cache/dart-sdk/bin/dart --version
Dart SDK version: 2.10.0-0.0.dev.flutter-9dca49e71e (be) (Fri Jul 17 13:26:08 2020 +0000) on "linux_x64"

On my mac where it's working, that output is:
$ bin/cache/dart-sdk/bin/dart --version
Dart SDK version: 2.9.0-21.0.dev.flutter-9dca49e71e (be) (Fri Jul 17 13:26:08 2020 +0000) on "macos_x64"

Same Dart SHA 9dca49e71e, different version number.

/cc @a-siva @whesse

I got this error after I run flutter upgrade in Android Studio - Windows 10
Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.

Now, I can't run even a simple flutter clean. I hope this can be fix right away.

Being proactive, assigning to @a-siva and @whesse. Can one of you please have a look?

How did flutter's cache get Dart 2.10, The roll of Dart 2.10 into the engine has not happened yet.

Is the engine build of the Dart SDK taking the version from tags in the Dart repo? Were any new tags added recently? @tvolkert

Yep:
$ git for-each-ref refs/tags/*dev --sort=-taggerdate "--format=%(refname:strip=2)" --count=1
2.10.0-0.0.dev

Do we still do this version tag hack, I thought it was fixed when Patrick switched to the branching strategy for Flutter

I don't know, but it looks like it is probably coming from here: https://github.com/dart-lang/sdk/blob/master/tools/make_version.py#L87

/cc @pcsosinski @christopherfujino

I have this same problem. When I run flutter upgrade console throws "Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed" and it goes into infinite loop with it

cc @athomas

@a-siva @whesse can the tag be removed?

This PR https://github.com/flutter/flutter/pull/62150/files builds for me locally

cc @jakemac53

@a-siva @whesse can the tag be removed?

Apparently @whesse thinks it may be hard to remove the tag.
Is there an option for Flutter to not use the tag when building the version number and instead use the actual version number

Why is it only happening on Linux?

@a-siva, I believe the version string comes from the make_version.py script in the Dart repo.

@christopherfujino To clarify, did the manual engine roll not have the Dart SDK version problem? @jason-simmons if it did not have the problem, do you know why it didn't have the problem?

@a-siva, I believe the version string comes from the make_version.py script in the Dart repo.

This was a hack added for Flutter and only flutter invokes the make_version.py script with the git-hash option. We should get rid of this hack first thing after this current problem is solved.

@christopherfujino To clarify, did the manual engine roll not have the Dart SDK version problem?

Correct, on PR #62150, the tool correctly builds, with:
[✓] Flutter (Channel unknown, 1.21.0-6.0.pre.13, on Linux, locale en_US.UTF-8)
    • Flutter version 1.21.0-6.0.pre.13 at /home/chris/git/flutter
    • Framework revision bd5d8da372 (24 minutes ago), 2020-07-23 11:06:41 -0700
    • Engine revision 4d720dd9e5
    • Dart version 2.9.0 (build 2.9.0-21.0.dev fcd1c5b61a)

These packages all have .2 releases which allow 2.10, and when the sdk version number changes to 2.10 those versions of the packages need to be pinned in the pubspecs.
So for instance given the original failure text:
The current Dart SDK version is 2.10.0-0.0.dev.flutter-9dca49e71e.
Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (9 tries left)
Resolving dependencies...

The flutter_tools pubspec needs to change to have this constraint >=1.15.0-nnbd <1.15.0-nullsafety.2 (this could be landed ahead of time, as it supports versions that are compatible with both 2.9 and 2.10).

I haven't been able to reproduce exactly how LUCI is fetching the Dart repository and why the 2.10.0-0.0.dev tag is showing up in some engine Dart SDK builds but not others.
I suspect the engine recipe might get more consistent results by doing a git fetch --tags instead of just a git fetch (see https://flutter.googlesource.com/recipes/+/refs/heads/master/recipes/engine.py#1496)
@godofredoc

When I build the engine locally at the hash for https://github.com/flutter/flutter/pull/62150, I still see the Dart SDK reporting 2.10.

I haven't been able to reproduce exactly how LUCI is fetching the Dart repository and why the 2.10.0-0.0.dev tag is showing up in some engine Dart SDK builds but not others.
I suspect the engine recipe might get more consistent results by doing a git fetch --tags instead of just a git fetch (see https://flutter.googlesource.com/recipes/+/refs/heads/master/recipes/engine.py#1496)

It's possible the behavior of git fetch is not consistent across different versions of git (git api changes have broken tooling before). Explicitly calling git fetch --tags would probably be a worthwhile change, though if that explains the inconsistency it wouldn't fix the current version solving situation.

When I comment out the setting of dart_custom_version_for_pub here:
https://github.com/flutter/engine/blob/master/tools/gn#L187
Dart reports version:
2.9.0-edge.<git hash>
Do we use the custom version string for anything other than looks?

The contents of the Dart version.cc generated by make_version.py will depend on which git tags have been fetched into your local third_party/dart repository.
make_version.py is selecting the most recenty added dev tag (see https://github.com/dart-lang/sdk/blob/master/tools/utils.py#L521)
If you reset back to an engine commit from a long time ago but your local third_party/dart has more recent tags, then the version.cc will reflect the local tags and not the tag that most closely matches the engine commit's Dart SDK version.

We fetch the tags here: https://flutter.googlesource.com/recipes/+/refs/heads/master/recipes/engine.py#1496
But we should add --tags to it ot make sure it actually gets the tags consistently.

If we change tools/gn in the engine to not setup
gn_args['dart_custom_version_for_pub'] = 'flutter'
then it would not be doing this git-hash hack and instead report the correct version number.

The tag has been deleted, if a manual roll is attempted again it should get the correct version.

The tag has been deleted, if a manual roll is attempted again it should get the correct version.

We would need to either land a new commit to the engine repo, or re-trigger a build for an existing commit.

The tag has been deleted, if a manual roll is attempted again it should get the correct version.

We would need to either land a new commit to the engine repo, or re-trigger a build for an existing commit.

Is that a problem?

Is that a problem?

Nope, but just to clarify that we will have to roll in a new engine build.

A safest solution may be to change the Dart SDK so that both 2.9 and 2.10 are accepted as null-safe language versions for auto-enrolled packages (and when the experiment flag is turned on).  That would make all of these failures disappear.  We can release a new dev version of Dart with this behavior, and then all the circular problems disappear.

I am almost positive that the version hack is no longer used.  @pcsosinski

OK, I misunderstood: Nothing is fetching the Dart SDK repo from that tag, Flutter engine is building the pinned SDK, but changing it's version.cc based on tags in the repo, so it is reporting the wrong version to pub resolve, and won't accept the 2.9 packages even though we haven't rolled to 2.10 in the engine?  Can we stop changing the version.cc, and everything will work?
I think there are other issues hit by users on the dev channel, when they do flutter upgrade, but that is a separate issue.

OK, I misunderstood: Nothing is fetching the Dart SDK repo from that tag, Flutter engine is building the pinned SDK, but changing it's version.cc based on tags in the repo, so it is reporting the wrong version to pub resolve, and won't accept the 2.9 packages even though we haven't rolled to 2.10 in the engine? Can we stop changing the version.cc, and everything will work?
I think there are other issues hit by users on the dev channel, when they do flutter upgrade, but that is a separate issue.

I have filed https://github.com/dart-lang/sdk/issues/42820 to get rid of that support from the Dart tree.

Same issue

@tvolkert @jakemac53 Do we use the custom version string for anything other than looks? Does it matter on master?

I think we do check for flutter in the version string to detect flutter or not in build_resolvers package - if it isn't present dart:ui might not be resolvable for build_runner builds.

Hitting the same issue while trying to
flutter upgrade on master channel.
Building flutter tool...
The current Dart SDK version is 2.10.0-0.0.dev.flutter-9dca49e71e.

Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.
Error: Unable to 'pub upgrade' flutter tool.

Can't output flutter doctor because flutter does not work but I'm from Linux 5.4.51-1-MANJARO x86_64.

@fabiancrx Your existing checkout is in a bad state caused by this issue, so you won't be able to use flutter upgrade. However, you should be able to update your checkout directly using git. Then running any flutter command will first pull a Dart SDK that doesn't have this problem.

Hitting the same issue while trying to
flutter upgrade on master channel.
Building flutter tool...
The current Dart SDK version is 2.10.0-0.0.dev.flutter-9dca49e71e.

Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.
Error: Unable to 'pub upgrade' flutter tool.

Can't output flutter doctor because flutter does not work but I'm from Linux 5.4.51-1-MANJARO x86_64.

Assuming you're on master branch, git pull should get you to the latest (which should have a valid Dart SDK).

Thanks @christopherfujino ,@zanderso. A quick git pull and then any flutter command such as flutter -h does downloads a valid dart SDK (2.9.0-edge.a3815b659047cfc6b63d41d180aa1ca1b781ee68).

It seems this issue is no longer occurring on CI for PRs send to the flutter/flutter repository. However, I just opened one for flutter/packages and I see the issue there again: https://cirrus-ci.com/task/4922239009161216
Is there anything we need to do to make it disappear there as well to unblock PRs?

Most of the changes were landed on recipes which only affect the luci infrastructure. We may also need to implement the same changes on cirrus.

FYI, this is now affecting flutter/flutter master (e.g. https://cirrus-ci.com/task/4775934739873792?command=setup#L333), despite us having not rolled a new engine.

Same on Windows 10.
From scratch... install flutter stable from GitHub.
git clone https://github.com/flutter/flutter.git -b stable
Ok.
flutter doctor
Ok.
flutter channel master (to enable windows desktop test)
Ok.
Any other flutter command automatically starts downloading Dart SDK 2.10 and...
Because flutter_tools depends on collection >=1.15.0-nnbbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.
Error (1): Unable to 'pub upgrade' flutter tool.  Retrying in five seconds...

Some workaround to this issue?

Trying to downgrade to flutter-1.21-candiate.4 (and 5) but same issue:

C:\Dev>git clone https://github.com/flutter/flutter.git -b flutter-1.21-candidate.4
Cloning into 'flutter'...
remote: Enumerating objects: 106, done.
remote: Counting objects: 100% (106/106), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 250921 (delta 53), reused 46 (delta 35), pack-reused 250815
Receiving objects: 100% (250921/250921), 106.66 MiB | 6.06 MiB/s, done.
Resolving deltas: 100% (192759/192759), done.
Updating files: 100% (4836/4836), done.

C:\Dev>flutter doctor
Checking Dart SDK version...
Downloading Dart SDK from Flutter engine dcc9a4048da890660f0880b4c2afed7c9470d335...
Unzipping Dart SDK...
Building flutter tool...
Running pub upgrade...
The current Dart SDK version is 2.10.0-0.0.dev.flutter-9dca49e71e.

Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.
Error (1): Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (9 tries left)

Esperando<PHONE_NUMBER>, presione CTRL+C para salir ...
Running pub upgrade...
The current Dart SDK version is 2.10.0-0.0.dev.flutter-9dca49e71e.

Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.
Error (1): Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (8 tries left)

@alsedev If you are having the same issue, the best way to let us know that it is important to you is to give a thumbs-up to the issue. As for this one, it looks like the tree is turning green for tip-of-tree of master branch. Thanks!

I am currently have the same issue after changing flutter channel from stable to master.

how can we make this problem the number 1 priority of the flutter team?....this one sucks the most

This happened to me , checked flutter repo at git , find out there are some pull request ahead at master branch. problem solved.

Tip-of-tree of master should be in a good state, however we are in danger of this happening again until the following two issues are resolved, so I will leave this open.

[ ] https://github.com/flutter/flutter/issues/55082: "[team] LUCI production builders should never re-upload package that has already been uploaded"
[ ] https://github.com/dart-lang/sdk/issues/42820 "Delete the '--custom_for_pub' argument from make_version.py" (Or at least remove out-of-band changes to the version string of the Dart SDK that Flutter engine vends.)

Also, please note that this issue is marked P0, and is actively being worked on. If you are still experiencing lingering effects of this issue, your patience is appreciated as we get this cleared up as quickly as we can. Thanks!

with regards to https://github.com/dart-lang/sdk/issues/42820 there is a proposal from @athomas which could solve the problem without the need for out-of-band changes to the Dart SDK version string by Flutter engine.

Is this still P0? And if so, is there anything that needs to happen other than what is covered by https://github.com/flutter/flutter/issues/55082 and https://github.com/dart-lang/sdk/issues/42820?

This has been fixed, closing the issue.

Maybe someone finds this useful: if you're trying to build for desktop (in linux), don't use flutter channel dev use instead flutter channel master, this worked for me.

@LisandroDiMeo you are currently seeing this on the dev channel?  What version?

@LisandroDiMeo you are currently seeing this on the dev channel? What version?

I had to uninstall flutter with snap and reinstall it, after that I switched to master branch.

cd ~/development/flutter
git checkout master
flutter -v

Hope this helps someone

Re-opening this as it reared its head again on dev.

Apologies about this happening again. What happened was that a bug in our CI code led to a series of engine commits being re-built and re-uploaded, all reporting the latest Dart SDK version. We are working to fix the dev channel. For the time being, you can fix your local checkout by switching to the master channel:
git checkout
git pull --ff-only
flutter doctor

I will update this issue when the problem has been addressed.

This has been resolved by releasing a new dev release, version 1.21.0-7.0.pre. If you're on the bad dev release and want to upgrade, the following commands should get you back on the happy path:
git pull
flutter --version

Sorry again for the breakage!

This appears to have broken again on dev channel again.

I am facing this issue again
when I run flutter create my_app:
flutter create my_app
Error: PowerShell executable not found.
       Either pwsh.exe or PowerShell.exe must be in your PATH.
Creating project my_app...
  my_app\.gitignore (created)
  my_app\.idea\libraries\Dart_SDK.xml (created)
  my_app\.idea\libraries\KotlinJavaRuntime.xml (created)
  my_app\.idea\modules.xml (created)
  my_app\.idea\runConfigurations\main_dart.xml (created)
  my_app\.idea\workspace.xml (created)
  my_app\.metadata (created)
  my_app\android\app\build.gradle (created)
  my_app\android\app\src\main\kotlin\com\example\my_app\MainActivity.kt (created)
  my_app\android\build.gradle (created)
  my_app\android\my_app_android.iml (created)
  my_app\android\.gitignore (created)
  my_app\android\app\src\debug\AndroidManifest.xml (created)
  my_app\android\app\src\main\AndroidManifest.xml (created)
  my_app\android\app\src\main\res\drawable\launch_background.xml (created)
  my_app\android\app\src\main\res\mipmap-hdpi\ic_launcher.png (created)
  my_app\android\app\src\main\res\mipmap-mdpi\ic_launcher.png (created)
  my_app\android\app\src\main\res\mipmap-xhdpi\ic_launcher.png (created)
  my_app\android\app\src\main\res\mipmap-xxhdpi\ic_launcher.png (created)
  my_app\android\app\src\main\res\mipmap-xxxhdpi\ic_launcher.png (created)
  my_app\android\app\src\main\res\values\styles.xml (created)
  my_app\android\app\src\profile\AndroidManifest.xml (created)
  my_app\android\gradle\wrapper\gradle-wrapper.properties (created)
  my_app\android\gradle.properties (created)
  my_app\android\settings.gradle (created)
  my_app\ios\Runner\AppDelegate.swift (created)
  my_app\ios\Runner\Runner-Bridging-Header.h (created)
  my_app\ios\Runner.xcodeproj\project.pbxproj (created)
  my_app\ios\Runner.xcodeproj\xcshareddata\xcschemes\Runner.xcscheme (created)
  my_app\ios\.gitignore (created)
  my_app\ios\Flutter\AppFrameworkInfo.plist (created)
  my_app\ios\Flutter\Debug.xcconfig (created)
  my_app\ios\Flutter\Release.xcconfig (created)
  my_app\ios\Runner\Assets.xcassets\AppIcon.appiconset\Contents.json (created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
  my_app\ios\Runner\Assets.xcassets\LaunchImage.imageset\Contents.json (created)
  my_app\ios\Runner\Assets.xcassets\LaunchImage.imageset\LaunchImage.png (created)
<EMAIL_ADDRESS>(created)
<EMAIL_ADDRESS>(created)
  my_app\ios\Runner\Assets.xcassets\LaunchImage.imageset\README.md (created)
  my_app\ios\Runner\Base.lproj\LaunchScreen.storyboard (created)
  my_app\ios\Runner\Base.lproj\Main.storyboard (created)
  my_app\ios\Runner\Info.plist (created)
  my_app\ios\Runner.xcodeproj\project.xcworkspace\contents.xcworkspacedata (created)
  my_app\ios\Runner.xcodeproj\project.xcworkspace\xcshareddata\IDEWorkspaceChecks.plist (created)
  my_app\ios\Runner.xcodeproj\project.xcworkspace\xcshareddata\WorkspaceSettings.xcsettings (created)
  my_app\ios\Runner.xcworkspace\contents.xcworkspacedata (created)
  my_app\ios\Runner.xcworkspace\xcshareddata\IDEWorkspaceChecks.plist (created)
  my_app\ios\Runner.xcworkspace\xcshareddata\WorkspaceSettings.xcsettings (created)
  my_app\lib\main.dart (created)
  my_app\my_app.iml (created)
  my_app\pubspec.yaml (created)
  my_app\README.md (created)
  my_app\test\widget_test.dart (created)
  my_app\web\favicon.png (created)
  my_app\web\icons\Icon-192.png (created)
  my_app\web\icons\Icon-512.png (created)
  my_app\web\index.html (created)
  my_app\web\manifest.json (created)
The current Dart SDK version is 2.9.2.

Because my_app depends on flutter any from sdk which requires SDK version >=2.10.0-0.0.dev <3.0.0, version solving failed.
Running "flutter pub get" in my_app...
pub get failed (1; Because my_app depends on flutter any from sdk which requires SDK version >=2.10.0-0.0.dev <3.0.0, version solving
failed.)```
## flutter doctor:

[√] Flutter (Channel beta, 1.21.0-9.2.pre, on Microsoft Windows [Version 10.0.18362.1016], locale en-US)
• Flutter version 1.21.0-9.2.pre at F:\f\mohit\flutter2\flutter
• Framework revision 81a45ec2e5 (13 days ago), 2020-08-27 14:14:33 -0700
• Engine revision 20a9531835
• Dart version 2.9.2
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at f:\f\mohit\Android
• Platform android-30, build-tools 30.0.2
• ANDROID_HOME = F:\f\mohit\Android
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Users\bro\AppData\Local\Google\Chrome\Application\chrome.exe
[√] Android Studio (version 4.0)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 48.1.2
• Dart plugin version 193.7361
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
[√] VS Code (version 1.48.2)
• VS Code at C:\Users\bro\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.14.1
[√] Connected device (3 available)
• Web Server (web) • web-server • web-javascript • Flutter Tools
• Chrome (web)     • chrome     • web-javascript • Google Chrome 85.0.4183.83
• Edge (web)       • edge       • web-javascript • Microsoft Edge 85.0.564.44
• No issues found!

## flutter version:

Flutter 1.21.0-9.2.pre • channel beta • https://github.com/flutter/flutter.git
Framework • revision 81a45ec2e5 (13 days ago) • 2020-08-27 14:14:33 -0700
Engine • revision 20a9531835
Tools • Dart 2.9.2

please help I wanna use flutter web for my project

It is happenning on dev on MacOs.
The current Dart SDK version is 2.10.0-4.0.dev.flutter-20bf2fcf56.
Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.

It is happenning on dev on MacOs.
The current Dart SDK version is 2.10.0-4.0.dev.flutter-20bf2fcf56.
Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0 <=2.9.10, version solving failed.

What Flutter version are you on? This issue was tracking an isolated issue that happened about 2 months ago. If you are on a newer version of flutter, you are experiencing a different issue, and I would appreciate it if you filed a new issue.

Building flutter tool...
Running pub upgrade...
The current Dart SDK version is 2.10.0-4.0.dev.flutter-a3815b6590.
Because flutter_tools depends on collection >=1.15.0-nnbd <1.15.0-nullsafety.2 which requires SDK version >=2.9.0-18.0
<=2.9.10, version solving failed.
Error (1): Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (9 tries left)
I'm also facing this issue

Same happens for me now, after trying to run 'flutter upgrade' on Windows. Now I get this message on all channels.
However, this tip seemed to fix the problem. (Do it in the flutter directory):
git pull origin --ff-only
from the first answer in:
https://stackoverflow.com/questions/63204658/version-solving-failed

To anyone experiencing this, if you can share the output of the following command, we can diagnose whether this has regressed again or if only individuals on versions that were affected by the original issue are experiencing this:
git rev-parse HEAD; git branch --show-current

If you ARE experiencing this issue, the fix should be:
git fetch; git checkout master; flutter doctor

This should get you to a working flutter CLI tool, from which you can then get to your desired channel via the flutter channel command.

@christopherfujino Facing this issue,

@christopherfujino Facing this issue,

git rev-parse HEAD ->
f25bd9c55c48c139524139b477d04b13e9f36b2cdev
git branch --show-current -> dev

@christopherfujino Facing this issue,

git rev-parse HEAD ->
f25bd9c55c48c139524139b477d04b13e9f36b2cdev
git branch --show-current -> dev

Please read the original post, it has instructions for upgrading past.

Already solved it, just want to share output of this command as you mentioned in post. Thanks 👍


Refactor EventClient Informer

Signed-off-by: Frank Jogeleit<EMAIL_ADDRESS>

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

46 of 50 (92.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.2%) to 96.327%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/config/resolver.go
7
9
77.78%

pkg/kubernetes/event_client.go
20
22
90.91%

Totals

Change from base Build<PHONE_NUMBER>:
-0.2%

Covered Lines:
708

Relevant Lines:
735

💛  - Coveralls


Remove dependency on signal() function

Replaces uses of signal() with sigaction() which should be far more portable.
Tested on Linux and FreeBSD. See also #2811
sigaction() has been in POSIX since 2001, so I've not felt it necessary to add any feature tests for this.
@mstone2001 - this should solve a lot of your System-V issues I hope. Please review if you have the time.
Edit: I've added unit tests for the signal functions now, as these will be very useful in tracking down any odd behaviour in #2811 and maybe others

I'm merging this now, as the tests pass on Linux, FreeBSD and even OpenIndiana


add KEP links to home page

Proposal to add KEP links to the site home page.

Previously https://github.com/kubernetes-sigs/sig-multicluster-site/pull/27


GLTF loader: support mipmap filters

This removes the GltfError::UnsupportedMinFilter error.
I don't think this error should have existed in the first place, because it prevents users from using assets that bevy could totally render (without mipmap support as of yet).
It's much better to load the asset properly and then render it (even if it looks a little ugly), than to refuse to load the asset at all, giving users a confusing error.

Do you think we should emit a warning when ignoring the unsupported filters? Or would that be too noisy?

Well, this is a stop-gap. We will have real mipmap support VerySoon™. I just pulled this commit out of my WIP mipmap work, into its own PR, because I keep seeing people struggle with this error.
Also, we aren't technically ignoring them, this code sets them correctly in the texture sampler. It's just that it doesn't make a difference when rendering yet, because the textures don't actually have the mipmaps.
No it would not be noisy, I can add a check to print a warning if one of the mipmap filters is used, I just think it's unnecessary.

FYI, the CI failure that happened here is unrelated to my code. It failed at an earlier step (the ubuntu base image packages), before getting to building bevy.

Yeah I agree that doing a best-effort load instead of failing is the better UX. This is an interesting case because Bevy warnings should be "actionable", but in many cases users can't / won't want to change this setting in their input assets. But we also don't want to give users the impression that mipmaps work when they don't. We're stuck between a rock and a hard place :smile:
I think you made the right call here, given that this is a gap we will fill in soon. There are a number of other GLTF features that we  don't support yet and emitting logs for all of them (by default) would be pretty nasty. Emitting debug logs might be a good middle ground, but I think we should probably just merge this.

bors r+


Is there a plan to support the legacy SEV report handling?

Hi there,
In addition to SEV-SNP, the legacy SEV also produces a guest report, even though it's coming from the hypervisor. The report from the legacy SEV can be obtained from ATTESTATION ioctl from the hypervisor, and it contains a signature from PEK. Is there a plan to support the validate and verify for the legacy SEV report in this project?

No, legacy attestation is out of scope.


Account signup page loses track of any originally requested path in the dashboard

If a user navigates to a path in the dashboard but has to sign up for an account first, the originally requested path is lost.

PR: #1509

:+1:


Refactor for IConvertDataTemplateProviders

Separated logic for default template use case and custom template use case into a DefaultTemplateProvider and a CustomTemplateProvider, which inherits from the DefaultTemplateProvider.

Draft PR no longer relevant. Solution was merged through Convert Refactor for Missing External MI Case #3263.


Minor readme update

Description
The readme example is slightly divergent from the current implementation

LGTM, thank you!


UI router

Merging in ui router changes, google oauth and marketing copy explaining the tool a bit more.

Summary by CodeRabbit

New Features

Introduced authentication functionality with Google OAuth.
Added routing capabilities to enhance navigation structure.
Implemented a user-friendly login component.
Created a dashboard component for user interaction.

Improvements

Enhanced styling for the login, dashboard, and landing page for a more polished interface.
Improved conditional rendering for user information based on authentication status.

Bug Fixes

Adjusted styling to improve the layout and aesthetics of menus and forms.

Documentation

Updated CSS files to reflect new styles and component structures.

I am liking coderabbitai's feedback. So much better than it used to be!


Customizable remove delay attribute

Also, renames original delay attribute
Addresses #2

@drozhzhin-n-e You have a chance to take a look?


Update mup.json

Need to update node version to 0.10.40 to overcome issues with local mongodb

Various PRs that will never see the light of day have changed that along with at least 3 other comments like this one. It simple to change but never did or will here. A new complete replacement is in the works over at kadirahq.
I suspect in a few months if all goes well the Readme here will cleary redirect people when the new version is ready and this one is more officially depreciated.
Thanks for your help and feedback.


api-docs is missing ServletRegistrationBean

given:
import org.springframework.boot.context.embedded.ServletRegistrationBean;

    @Bean
    public ServletRegistrationBean myservlet() {
        return new ServletRegistrationBean(
            new MyServlet(),
            "/myservlet"
        );
    }

api-docs is missing /myservlet

In your Docket  you have access to the pathMapping method where you can specify "/myservlet"

did not help
here is how my Docket config looks like:
    @Bean
    public Docket myApi() {
        return docket().groupName("mygroup")
            .pathMapping("/myservlet");
    }

    private Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2).genericModelSubstitutes(DeferredResult.class)
            .useDefaultResponseMessages(false)
            .forCodeGeneration(false);
    }

Is there a reason you don't have the path mapping on the second one? the default group doesn't have the path mapping set up, which is probably why you're not seeing it.

I don't have a "second" one, the docket() method is a helper for creating a common docket.
If i go to .../v2/api-docs?group=mygroup
then all paths are prefixed with /myservlet, which is wrong:
"paths": {
"/myservlet/docs/**": {
...

it should be like:
"paths": {
"/myservlet": { ...
...
"/docs/**": { ...
...
}

I also tried to annotation the spring bean definition with @Api and @ApiOperation, but it didn't work.

I misunderstood your question, plus I'm not so familiar with servlet registration bean. What does your Myservlet look like? It would be easier if you shared a example repo demonstrating the problem

created example project:
https://github.com/omayevskiy/springfox-servlet-example

Ah I see what's going on. Seems like this is a missed feature. When u register the servlet like that (that's not brought in by the request mapping) it totally ignores it! Thanks for reporting!


[Payment card / Subscription] Integrate “Change billing currency” screen with backend data and “Payment card” section

Drafting cc @fabioh8010

Hi, I'm Fábio from Callstack - expert agency - and I would like to work on this issue.

Hi, I'm Julian from Callstack - expert agency - and I would like to work on this issue.

@JKobrynski confirming this one isn't coming with https://github.com/Expensify/App/pull/43572?

Bump on https://github.com/Expensify/App/issues/38629#issuecomment-2165220748 @JKobrynski

I think you can just close this issue out, as https://github.com/Expensify/App/pull/43572 consolidated https://github.com/Expensify/App/issues/38619, https://github.com/Expensify/App/issues/38630, https://github.com/Expensify/App/issues/44118, https://github.com/Expensify/App/issues/38633.


changes in real time is broken in v1.13

Describe the bug
once I update to v1.13, and even though the subscription is established, any changes in the backend or from any other device will not be synced to the other device.
Steps To Reproduce
Steps to repro:-

upgrade to V1.13
using 2 devices, with the same database ,userID, auth ..etc
create, delete. update any record the changes will not be reflected.

How to solve:-

downgrade to v1.12

Devices:-
physical device or simulator --> same behavior.

Expected behavior
all changes should be synced.
Amplify Framework Version
1.13
Amplify Categories
DataStore
Dependency manager
Swift PM
Swift version
14.6, 14.5, 14.4
CLI version
5.1.0
Xcode version
12.5.1
Relevant log output
No response
Is this a regression? (i.e. was this working before a version upgrade)
No response
Device
Iphone XS max (physical), iPhone 11 pros max simulator and other simulators.
iOS Version
14.6 14.5 14.4
Specific to simulators
No response
Additional context
No response

I'm also seeing this with version d4de998182fa99fea0900acf5bc6ebf7a0bc691f.
I only tried update: In the backend merely the _version increases, but not the updated field.
Checking the log, I get many errors like:
2021-08-05 00:37:53.155011+0200 WhatsLeft[10494:268615] [StarscreamAdapter] websocketDidReceiveMessage: - {"id":"99CDEBFD-E6E1-4710-8E2F-140344B04338","type":"error","payload":{"errors":[{"errorType":"Unauthorized","message":"Not Authorized to access onCreateReceiptContentsFieldZ on type Subscription"}]}}
2021-08-05 00:37:53.155256+0200 WhatsLeft[10494:268615] [RealtimeConnectionProvider] Resetting stale connection timer
2021-08-05 00:37:53.155330+0200 WhatsLeft[10494:268615] [RealtimeConnectionProvider] received error

Some authorisation seems to be missing. However, when syncing from scratch, it does get access to the items. So auth seems to be ok.

Add-on: for me the lambda authorizer broke it. Version is the last version that 872b695d540c93323f64730b760195b486932ee3 still works.

@anatomybook Lambda Authorizer is a new authorization type, so as long as you're not using the feature, no change is necessary to your current code.
What types of authorization are you currently using in your schema?

@yazoonic What types of authorization are you currently using in your schema?

@diegocstn owner auth

@anatomybook Lambda Authorizer is a new authorization type, so as long as you're not using the feature, no change is necessary to your current code.
What types of authorization are you currently using in your schema?

All my table-auths are built the same way:
type ... @model @auth(rules: [{ allow: owner }])
Here's the auth section of amplifyconfiguration.json:
    "auth": {
        "plugins": {
            "awsCognitoAuthPlugin": {
                "UserAgent": "aws-amplify/cli",
                "Version": "0.1.0",
                "IdentityManager": {
                    "Default": {}
                },
                "AppSync": {
                    "Default": {
                        "ApiUrl": "[snip]",
                        "Region": "eu-central-1",
                        "AuthMode": "AMAZON_COGNITO_USER_POOLS",
                        "ClientDatabasePrefix": "whatsleft_AMAZON_COGNITO_USER_POOLS"
                    }
                },
                "CredentialsProvider": {
                    "CognitoIdentity": {
                        "Default": {
                            "PoolId": "[snip]",
                            "Region": "eu-central-1"
                        }
                    }
                },
                "CognitoUserPool": {
                    "Default": {
                        "PoolId": "[snip]",
                        "AppClientId": "[snip]",
                        "Region": "eu-central-1",
                        "AppClientSecret": "[snip]"
                    }
                },
                "Auth": {
                    "Default": {
                        "authenticationFlowType": "USER_SRP_AUTH"
                    }
                },
                "S3TransferUtility": {
                    "Default": {
                        "Bucket": "[snip]",
                        "Region": "eu-central-1"
                    }
                }
            }
        }
    },

Is that the information you were looking for?

@anatomybook can you please confirm that the value of the authorizationType field in the api section is AMAZON_COGNITO_USER_POOLS as well?
I couldn't reproduce the issue with the following minimal schema
type Todo @model @auth(rules: [{ allow: owner }]) {
  id: ID!
  name: String!
  description: String
}

in an Amplify app configured with DataStore and AWS Cognito as the only authorization mode.

@diegocstn ,
here is the api section of my configuration file:
    "UserAgent": "aws-amplify-cli/2.0",
    "Version": "1.0",
    "api": {
        "plugins": {
            "awsAPIPlugin": {
                "whatsleft": {
                    "endpointType": "GraphQL",
                    "endpoint": "[snip]",
                    "region": "eu-central-1",
                    "authorizationType": "AMAZON_COGNITO_USER_POOLS"
                }
            }
        }
    },

so yes, authorizationType seems to be set correctly.
Is there any other info, I can provide?

@anatomybook can you please confirm that the value of the authorizationType field in the api section is AMAZON_COGNITO_USER_POOLS as well?
I couldn't reproduce the issue with the following minimal schema
type Todo @model @auth(rules: [{ allow: owner }]) {
  id: ID!
  name: String!
  description: String
}

in an Amplify app configured with DataStore and AWS Cognito as the only authorization mode.

As I said above all my tables are authorised the same way. However, in order to model n:m relationships, I've two tables with no queries, like so:
type ... @model(queries: null) @auth(rules: [{ allow: owner }])
@key(name: "by...", fields: ["...Id", "...Id"])
@key(name: "by...", fields: ["...Id", "...Id"])

I guess that this won't make a difference, but I thought I'd mention it anyways. And I've lots of enums defined.

As I said above all my tables are authorised the same way. However, in order to model n:m relationships, I've two tables with no queries, like so:

Thanks, you're correct that should not have any impact.
@anatomybook @yazoonic It'd be helpful to have a bit more context. Could you please set the Amplify logging level to verbose with Amplify.Logging.logLevel = .verbose and provide any other auth-related log entries?

Hello @diegocstn ,
I think I may have found something.
In both cases, I started the App from scratch, i.e. erased it and all data beforehand. My code on top is identical. I've merely changed Amplify.
The subscription queries look different. The broken version, i.e. fc7539aa10612a8d7dd89924db6851ff2408de8f, does not provide "owner" information. Here is a working query made by version :
2021-08-06 14:28:19.359105+0200 WhatsLeft[18011:1360008] [StarscreamAdapter] socket.write - {"id":"178BF781-E982-43F1-9581-51D5DA7EB4D5","payload":{"data":"{\"query\":\"subscription OnCreateGroupZ($owner: String!) {\\n  onCreateGroupZ(owner: $owner) {\\n    id\\n    creation\\n    [snip]    buyer {\\n      id\\n      language\\n      [snip]      __typename\\n      _version\\n      _deleted\\n      _lastChangedAt\\n    }\\n    __typename\\n    _version\\n    _deleted\\n    _lastChangedAt\\n    owner\\n  }\\n}\",\"variables\":{\"owner\":\"Init1\"}}","extensions":{"authorization":{"Authorization":"[snip]","host":"[snip].appsync-api.eu-central-1.amazonaws.com"}}},"type":"start"}
and a not working one:
2021-08-06 14:33:41.538945+0200 WhatsLeft[19462:1371885] [StarscreamAdapter] socket.write - {"id":"EEF21922-F0A0-4AE3-AB1E-C15B6B000AED","payload":{"data":"{\"variables\":{\"owner\":\"\"},\"query\":\"subscription OnCreateGroupZ($owner: String!) {\\n  onCreateGroupZ(owner: $owner) {\\n    id\\n    creation\\n    [snip]    buyer {\\n      id\\n      language\\n      [snip]      __typename\\n      _version\\n      _deleted\\n      _lastChangedAt\\n    }\\n    __typename\\n    _version\\n    _deleted\\n    _lastChangedAt\\n    owner\\n  }\\n}\"}","extensions":{"authorization":{"Authorization":"[snip]","host":"[snip].appsync-api.eu-central-1.amazonaws.com"}}},"type":"start"}
Notice that in the non-working version, the owner is not set to "Init1" as it should be. From what I can tell, this may be the cause of the problem!?
In the working case the server replied:
2021-08-06 14:28:19.554097+0200 WhatsLeft[18011:1360015] [StarscreamAdapter] websocketDidReceiveMessage: - {"id":"178BF781-E982-43F1-9581-51D5DA7EB4D5","type":"start_ack"}
2021-08-06 14:28:19.554224+0200 WhatsLeft[18011:1360015] [RealtimeConnectionProvider] Resetting stale connection timer

and the non-working one:
2021-08-06 14:33:41.601993+0200 WhatsLeft[19462:1371879] [StarscreamAdapter] websocketDidReceiveMessage: - {"id":"EEF21922-F0A0-4AE3-AB1E-C15B6B000AED","type":"error","payload":{"errors":[{"errorType":"Unauthorized","message":"Not Authorized to access onCreateGroupZ on type Subscription"}]}}
2021-08-06 14:33:41.602150+0200 WhatsLeft[19462:1371879] [RealtimeConnectionProvider] Resetting stale connection timer
2021-08-06 14:33:41.602205+0200 WhatsLeft[19462:1371879] [RealtimeConnectionProvider] received error

Does this help? Do you need more infos?

@anatomybook thanks, that helps.
In Amplify v.1.12.0 we changed the logic related to how we send the owner field in subscriptions requests.
Before that change, in case of authentication errors, subscriptions were silently failing and triggering other errors upstream.
We introduced that in order to be able to retry a failed subscription request with a different authentication type when multi-auth is enabled.
I believe the issue you're experiencing isn't related to v1.13.0, but might be some race condition between DataStore and the authentication flow.
Is the error showing up right after the startup of your app?
Is there any chance that you're triggering a DataStore operation (query, save, delete) before or during the authentication flow?

@diegocstn ,
a race condition seems unlikely in my opinion. 1.12 always worked, never had any hiccups when it comes to real-time syncing.
Yes, the error occurs right after startup, before any buttons are pushed. I erased the app from the simulator and ran it from scratch both times. My app code did not change during both runs.
I'll look into the authentication flow question momentarily. Again, I never gave much thought into this as it always just worked.

I can positively confirm that it's not a race between Auth and DataStore. I just removed the initial query that fires up DataStore and placed a button for the initial trigger instead. To me that was the quickest way to really wait until everything is settled down and start DataStore manually. The problem remains: it won't even sync, the log is full of errors.
Just to be sure: In my App, the first query is sent to DataStore, only after Amplify.Auth.getCurrentUser() returns a user. Is that the way it's meant to be done or am I missing something?
@diegocstn side note: Gladly I'll send the entire log of both versions. However, I ask you for a more private channel, as I'm not in the mood to check/redact the entire dump for information, I do not wish to share with a wider audience.

In Amplify v.1.12.0 we changed the logic related to how we send the owner field in subscriptions requests.

Judging from the comment "Subscriptions always require an owner field.", do I understand correctly that the error messages, I'm seeing are supposed to be there?
Thanks for your patience.

@diegocstn ,
I spent some time looking into this further. From what I can tell, the trouble is in StorageEngine.startSync. requiresAuthPlugin() comes back false and therefore leads to the sync engine to start without auth. That it turn leads to the problems, I mentioned above.
Next I checked why it comes back false and found that in AuthRule.requiresAuthPlugin provider is nil, which is being mapped to false. I stopped investigating there, but there seems to be some sort of logic error here, no race. Either way, adapted the mapping and everything is working fine now.

@anatomybook thanks for clarifying.
Can you please verify that the auth rules in the generated models schema have the provider field? As a reference, here's a test file generated from a schema with Cognito User Pool as the authentication method.
The provider field has been introduced to support multi-auth and it gets generated by the CLI.
For backward compatibility, this change has been released behind a feature flag which is enabled by default on new projects but disabled on old ones.
Can you please verify the value of the feature flag emitAuthProvider under the codegen key in your project?
CLI feature flags are stored in the cli.json file in your local amplify folder (./amplify/cli.json).
After this change, the feature flag file should look similar to
{
...
"codegen": {
    "emitAuthProvider": true,
    ...
}
...
}

@diegocstn is this confirmed bug at this point? I have to update to v.13.1 at least to resolve the data store ready issue I have raised and fixed in v.131.1
@anatomybook  can you explain to me the workaround you have done if any?

@anatomybook thanks for clarifying.
Can you please verify that the auth rules in the generated models schema have the provider field? As a reference, here's a test file generated from a schema with Cognito User Pool as the authentication method.
The provider field has been introduced to support multi-auth and it gets generated by the CLI.
For backward compatibility, this change has been released behind a feature flag which is enabled by default on new projects but disabled on old ones.
Can you please verify the value of the feature flag emitAuthProvider under the codegen key in your project?
CLI feature flags are stored in the cli.json file in your local amplify folder (./amplify/cli.json).
After this change, the feature flag file should look similar to
{
...
"codegen": {
    "emitAuthProvider": true,
    ...
}
...
}

@diegocstn thanks for your answer.
Looking at a schema, I'm indeed missing the provider. With me, it reads like this:
    model.authRules = [
      rule(allow: .owner, ownerField: "owner", identityClaim: "cognito:username", operations: [.create, .update, .delete, .read])
    ]

What puzzles me is that I can't find any cli.json file. I just did find ~ -name "cli.json" and it returned nothing.
My amplify version is
% amplify --version
5.2.1

So I'm a bit confused. I'll try to upgrade to 5.3.0 and rerun codegen, which I indeed haven't done in a while.

@diegocstn is this confirmed bug at this point? I have to update to v.13.1 at least to resolve the data store ready issue I have raised and fixed in v.131.1
@anatomybook can you explain to me the workaround you have done if any?

Yes. My workaround is to edit internal extension AuthRule in file StorageEngine+SyncRequirement.swift to:
internal extension AuthRule {
    var requiresAuthPlugin: Bool {
        if let provider = provider
        {
            switch provider {
            // OIDC, Function and API key providers don't need
            // Auth plugin
            case .oidc, .function, .apiKey:
                return false
            case .userPools, .iam:
                return true
            }
        }
        return true
    }
}

Last update: The steps I described above, i.e. upgrade from 5.2.1 to 5.3.0 and rerun codegen did not yield a provider field.
@diegocstn Can you please provide further instructions how to deal with this?

Hello, we are experiencing a similar issue.  Our reproduction was on initial sync after login failing, but data sync when using existing credentials is working.
In our case, we do have custom sync expressions that will query data based on the owner field.  I won’t be able to test for a few days, but when I can I will see if reloading the sync expressions after login allow the data sync to run as expected.

@anatomybook a cli.json file should have been created in your project amplify folder during its initialization as described here.
You can still manually create that file with the following content
{
  "features": {
    "graphqltransformer": {
      "addmissingownerfields": true,
      "improvepluralization": true,
      "validatetypenamereservedwords": true,
      "useexperimentalpipelinedtransformer": false,
      "enableiterativegsiupdates": true,
      "secondarykeyasgsi": true,
      "skipoverridemutationinputtypes": true
    },
    "frontend-ios": {
      "enablexcodeintegration": true
    },
    "auth": {
      "enablecaseinsensitivity": true,
      "useinclusiveterminology": true,
      "breakcirculardependency": true
    },
    "codegen": {
      "useappsyncmodelgenplugin": true,
      "usedocsgeneratorplugin": true,
      "usetypesgeneratorplugin": true,
      "cleangeneratedmodelsdirectory": true,
      "retaincasestyle": true,
      "addtimestampfields": true,
      "handlelistnullabilitytransparently": true,
      "emitauthprovider": true,
      "generateindexrules": true,
      "enabledartnullsafety": true
    },
    "appsync": {
      "generategraphqlpermissions": true
    }
  }
}

@diegocstn This appears to have fixed our sync issues as well.  Thank you!


Problem with searching for organizations under source of funds

Describe the bug
There is a problem I am encountering when looking to add funds to a collective and searching for an organization that I know is already been set up. Seems to be related to this project.
To Reproduce
I recorded this short video explaining the flow and the current workaround.
Expected behavior
The name of the organization should come up based on a straightforward input without defaulting the actual slug. In addition, the returned results I see don't really contain the same naming convention so it doesn't look right.
Additional context
Add any other context about the problem here.
P3 high frequency, low impact

@SudharakaP In https://github.com/opencollective/opencollective-api/blob/a040002397238845fcfeff495d2f2b8d3fd47b71/server/lib/search.js#L198, it seems that we're defaulting to sort by createdAt. Can we move that back to sort by relevancy by default?
GQLV1's search doesn't provide an orderBy arg, so we introduced a regression on the collective picker with this default createdAt sort by.


ENG-1368 - Pipeline history

Add created_at, updated_at, and version fields to pipelines
Store previous pipelines under redis key streamdal_pipeline_history:$pipeline_id
Add external.GetPipelineHistory() endpoint

TODO: merge https://github.com/streamdal/protos/pull/108 first and update go.mod

Let's re-open this once the monorepo conversion is done for server; I closed the history PR in protos as I think we might need to add more stuff.


Update sql.py

Fix documentation for index_col parameter to read_sql, read_sql_table and read_sql_query to reflect that a list can be passed.

@azuranski Indeed, that was not fully correct. Thanks for the update!


New snapshot config to validate uniqueness before merge

          @kjstultz thanks again for creating this issue! Appreciate that you invested the time at Coalesce in NOLA to figure out how to reproduce this tricky situation.

Reading the discussion between you and @jtcohen6, it sounds like the feature discussed thus far would look like this:

Add a new snapshot config parameter validate_uniqueness (default to false)
When validate_uniqueness is true, execute a uniqueness test after creating the staging table and before running the merge

Although this proposed feature wouldn't fix a snapshot table that already has duplicates, it would prevent duplicates from being added in the first place! Feels like a win to me, especially with it being configurable for those that (somehow) know that their "unique" key is truly unique.
Originally posted by @dbeatty10 in https://github.com/dbt-labs/dbt-core/issues/6089#issuecomment-1409369785

Notes:

Would be slow in some cases, so want to make sure this is configurable
But valuable to make sure snapshot is accurate

This is similar to running uniqueness test before insert for microbatch -> https://github.com/dbt-labs/dbt-core/issues/10624


Clean up team assessments

Description

To rebase and force-push following the merge of #2548.
Type of change

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

How to test

Checklist

[ ] I have tested this code
[ ] I have updated the documentation

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

95 of 614 (15.47%)  changed or added relevant lines in 32 files are covered.
5 unchanged lines in 5 files lost coverage.
Overall coverage decreased (-1.0%) to 35.299%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/commons/mocks/UserMocks.ts
2
3
66.67%

src/commons/workspace/WorkspaceActions.ts
1
2
50.0%

src/commons/workspace/WorkspaceReducer.ts
0
1
0.0%

src/features/groundControl/GroundControlActions.ts
1
2
50.0%

src/pages/academy/grading/Grading.tsx
0
1
0.0%

src/pages/academy/grading/subcomponents/GradingEditor.tsx
0
1
0.0%

src/pages/academy/groundControl/GroundControlContainer.ts
0
1
0.0%

src/pages/academy/Academy.tsx
0
2
0.0%

src/pages/academy/grading/subcomponents/GradingWorkspace.tsx
0
2
0.0%

src/commons/application/reducers/SessionsReducer.ts
0
3
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/commons/assessmentWorkspace/AssessmentWorkspace.tsx
1
65.14%

src/commons/sagas/BackendSaga.ts
1
50.77%

src/pages/academy/adminPanel/subcomponents/AddUserPanel.tsx
1
0.0%

src/pages/academy/Academy.tsx
1
0.0%

src/pages/academy/groundControl/GroundControl.tsx
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-1.0%

Covered Lines:
5090

Relevant Lines:
13448

💛  - Coveralls


feat: Int.odd_pow

analogous to Int.add_pow and Int.add_pow'

Please run git rebase -i origin/master and remove the commits that are not yours, then git push origin --force-with-lease.

Please run git rebase -i origin/master and remove the commits that are not yours, then git push origin --force-with-lease.

done

Surely the analogy is to even not add?

Surely the analogy is to even not add?

Yeah, that's what I meant. Will edit...

bors merge


Adds pan and zoom gestures to TextureRegion editor

The magic number "8" is used in many pan gesture handling code, e.g. in GraphEdit, ScrollContainer and the Polygon 2D UV editor.

Thanks!

Cherry-picked for 3.2.1.


Badges for package download count

One thing I like about jsdelivr is that it hosts images to be used as badges within Readmes for projects that show the number of monthly downloads for a particular npm package. See example below:

Does this exist in unpkg? Is it something you'd be open to adding? I would be happy to help out with the implementation of it.

We would first have to build out some infra to track download counts for certain packages, which we don't currently do. I've experimented before with automatically importing all our logs into Google BigQuery (we're hosted on GCP) but there was just too much data and my costs ran too high.
I think if I were to attempt doing something like this again I'd probably:

Setup Cloudflare to automatically push logs into a Google Cloud Storage Bucket
Setup a Google Cloud Function to run whenever something is added to the bucket
Increment a bunch of counters in a Redis instance

Once that's built, we can provide an API on top that queries Redis and gives you the count. The actual badge should be pretty easy to make once you have the number.

Side note: we used to track all this when unpkg was hosted on Heroku, and I used a Redis instance for it then. It worked well enough, but I never ported the service over to GCP when I switched hosting providers.

Ah I didn't know that download counts were not already available. That makes it a lot harder.

@mjackson is this something I can help bring to fruition?


Question: Managing many text nodes, updating efficiently

Hi all
I am looking at implementing a footprint chart in Canvas (example attached).
These charts rely on updating several nodes as they are calculated as each price level update event comes in. These events come in very quickly, though can be batched.

What would be the best approach to this given that one update can mean that many text nodes need to be updated, as well as possibly re-rendering boxes to update the fill color.

There is no optimization for rendering only values that changed, the chart always rerenders all visible bars, in your case ~30 bars. This is done to make sure the if bar makes a new all-time-high or low it will not render outside of the visible area.
Slightly simpler example of rendering text was posted in the previous version of the chart but it could provide an idea of how to do it.
As for the actual footprint, I will try to make time this weekend to provide a better example.

Here.

This is an extended implementation of the candle shape that can show a sequence of text labels on the left and right sides of the candle.
using Canvas.Core.Enums;
using Canvas.Core.Models;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Canvas.Core.Shapes
{
  public class FootPrintShape : CandleShape, IGroupShape
  {
    /// <summary>
    /// Price levels on the left side of the bar
    /// </summary>
    public virtual IList<KeyValuePair<double, double>> Ls { get; set; } = new List<KeyValuePair<double, double>>();

    /// <summary>
    /// Price levels on the right side of the bar
    /// </summary>
    public virtual IList<KeyValuePair<double, double>> Rs { get; set; } = new List<KeyValuePair<double, double>>();

    /// <summary>
    /// Render the shape
    /// </summary>
    /// <param name="index"></param>
    /// <param name="name"></param>
    /// <param name="items"></param>
    /// <returns></returns>
    public override void CreateShape(int index, string name, IList<IShape> items)
    {
      if (index % 2 == 0)
      {
        return;
      }

      if (L is null || H is null || O is null || C is null)
      {
        return;
      }

      var open = O ?? 0;
      var close = C ?? 0;
      var size = Composer.Size / 3.0;
      var downSide = Math.Min(open, close);
      var upSide = Math.Max(open, close);
      var coordinates = new DataModel[]
      {
        Composer.GetItemPosition(Engine, index - size, upSide),
        Composer.GetItemPosition(Engine, index + size, downSide)
      };

      var rangeCoordinates = new DataModel[]
      {
        Composer.GetItemPosition(Engine, index, L ?? 0),
        Composer.GetItemPosition(Engine, index, H ?? 0),
      };

      Engine.CreateLine(rangeCoordinates, Line ?? Component ?? Composer.Components[nameof(ComponentEnum.Shape)]);
      Engine.CreateBox(coordinates, Box ?? Component ?? Composer.Components[nameof(ComponentEnum.Shape)]);

      var lastL = double.MaxValue;
      var lastR = double.MaxValue;
      var textSize = 10;

      var comLs = new ComponentModel
      {
        Size = textSize,
        Position = PositionEnum.R,
        Color = Composer.Components[nameof(ComponentEnum.Caption)].Color
      };

      var comRs = new ComponentModel
      {
        Size = textSize,
        Position = PositionEnum.L,
        Color = Composer.Components[nameof(ComponentEnum.Caption)].Color
      };

      Ls.ForEach(o =>
      {
        var coordinate = Composer.GetItemPosition(Engine, index - size - 0.1, o.Key);

        if (lastL - coordinate.Y > textSize)
        {
          lastL = coordinate.Y;
          Engine.CreateCaption(coordinate, comLs, $"{o.Value}");
        }
      });

      Rs.ForEach(o =>
      {
        var coordinate = Composer.GetItemPosition(Engine, index + size + 0.1, o.Key);

        if (lastR - coordinate.Y > textSize)
        {
          lastR = coordinate.Y;
          Engine.CreateCaption(coordinate, comRs, $"{o.Value}");
        }
      });
    }
  }
}

This is how you use it.
@page "/prints"

@using Canvas.Core.Composers
@using Canvas.Core.Engines
@using Canvas.Core.Models
@using Canvas.Core.Shapes
@using Canvas.Views.Web.Views
@using SkiaSharp;

<CanvasView @ref="View"></CanvasView>

@code
{
  public CanvasView View { get; set; }

  protected override async Task OnAfterRenderAsync(bool setup)
  {
    if (setup)
    {
      var generator = new Random();
      var points = Enumerable
        .Range(0, 50)
        .Select((o, i) =>
          {
            var count = 5;
            var open = generator.Next(50, 100);
            var close = generator.Next(50, 100);
            var min = Math.Min(open, close);
            var max = Math.Max(open, close);
            var step = (max - min) / count;

            var longs = Enumerable
              .Range(0, count)
              .Select((o, i) => KeyValuePair.Create<double, double>(min + i * step, generator.Next(0, 1000)))
              .OrderBy(o => o.Key)
              .ToList();

            var shorts = Enumerable
              .Range(0, count)
              .Select((o, i) => KeyValuePair.Create<double, double>(min + i * step, generator.Next(0, 1000)))
              .OrderBy(o => o.Key)
              .ToList();

            return new FootPrintShape
              {
                O = open,
                C = close,
                L = Math.Max(0, min - Math.Abs(open)),
                H = Math.Max(0, max + Math.Abs(open)),
                Box = new ComponentModel { Color = (close > open ? SKColors.DeepSkyBlue : SKColors.OrangeRed) },
                Ls = longs,
                Rs = shorts
              } as IShape;
          }).ToList();

      var composer = new Composer
        {
          Name = "Demo",
          Items = points,
          View = View
        };

      await composer.Create<CanvasEngine>();
      await composer.Update();
    }

    await base.OnAfterRenderAsync(setup);
  }
}

Amazing! Thanks for the sample! I would have thought many text nodes would have affected performance and needed some special consideration.


Error while reading data: read unix<EMAIL_ADDRESS>

Required information

Distribution: Archlinux

# lxc info
config:
  core.https_address: '[::]:8443'
  images.auto_update_interval: "0"
api_extensions:
- storage_zfs_remove_snapshots
- container_host_shutdown_timeout
- container_stop_priority
- container_syscall_filtering
- auth_pki
- container_last_used_at
- etag
- patch
- usb_devices
- https_allowed_credentials
- image_compression_algorithm
- directory_manipulation
- container_cpu_time
- storage_zfs_use_refquota
- storage_lvm_mount_options
- network
- profile_usedby
- container_push
- container_exec_recording
- certificate_update
- container_exec_signal_handling
- gpu_devices
- container_image_properties
- migration_progress
- id_map
- network_firewall_filtering
- network_routes
- storage
- file_delete
- file_append
- network_dhcp_expiry
- storage_lvm_vg_rename
- storage_lvm_thinpool_rename
- network_vlan
- image_create_aliases
- container_stateless_copy
- container_only_migration
- storage_zfs_clone_copy
- unix_device_rename
- storage_lvm_use_thinpool
- storage_rsync_bwlimit
- network_vxlan_interface
- storage_btrfs_mount_options
- entity_description
- image_force_refresh
- storage_lvm_lv_resizing
- id_map_base
- file_symlinks
- container_push_target
- network_vlan_physical
- storage_images_delete
- container_edit_metadata
- container_snapshot_stateful_migration
- storage_driver_ceph
- storage_ceph_user_name
- resource_limits
- storage_volatile_initial_source
- storage_ceph_force_osd_reuse
- storage_block_filesystem_btrfs
- resources
- kernel_limits
- storage_api_volume_rename
- macaroon_authentication
- network_sriov
- console
- restrict_devlxd
- migration_pre_copy
- infiniband
- maas_network
- devlxd_events
- proxy
- network_dhcp_gateway
- file_get_symlink
- network_leases
- unix_device_hotplug
- storage_api_local_volume_handling
- operation_description
- clustering
- event_lifecycle
- storage_api_remote_volume_handling
- nvidia_runtime
- container_mount_propagation
- container_backup
- devlxd_images
- container_local_cross_pool_handling
- proxy_unix
- proxy_udp
- clustering_join
- proxy_tcp_udp_multi_port_handling
- network_state
- proxy_unix_dac_properties
- container_protection_delete
- unix_priv_drop
- pprof_http
- proxy_haproxy_protocol
- network_hwaddr
- proxy_nat
- network_nat_order
- container_full
- candid_authentication
- backup_compression
- candid_config
- nvidia_runtime_config
- storage_api_volume_snapshots
- storage_unmapped
- projects
- candid_config_key
- network_vxlan_ttl
- container_incremental_copy
- usb_optional_vendorid
- snapshot_scheduling
- container_copy_project
- clustering_server_address
- clustering_image_replication
- container_protection_shift
- snapshot_expiry
- container_backup_override_pool
- snapshot_expiry_creation
- network_leases_location
- resources_cpu_socket
- resources_gpu
- resources_numa
- kernel_features
- id_map_current
- event_location
- storage_api_remote_volume_snapshots
- network_nat_address
- container_nic_routes
- rbac
- cluster_internal_copy
- seccomp_notify
- lxc_features
- container_nic_ipvlan
- network_vlan_sriov
- storage_cephfs
- container_nic_ipfilter
- resources_v2
- container_exec_user_group_cwd
- container_syscall_intercept
- container_disk_shift
- storage_shifted
- resources_infiniband
- daemon_storage
- instances
- image_types
- resources_disk_sata
- clustering_roles
- images_expiry
api_status: stable
api_version: "1.0"
auth: trusted
public: false
auth_methods:
- tls
environment:
  addresses:
  - <IP_ADDRESS>:8443
  - '[fd42:1ad1:16d:6df5::1]:8443'
  architectures:
  - x86_64
  - i686
  certificate: |
    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
  driver: lxc
  driver_version: 3.2.1
  kernel: Linux
  kernel_architecture: x86_64
  kernel_features:
    netnsid_getifaddrs: "true"
    seccomp_listener: "true"
    shiftfs: "false"
    uevent_injection: "true"
    unpriv_fscaps: "true"
  kernel_version: 5.3.11-arch1-1
  lxc_features:
    mount_injection_file: "true"
    network_gateway_device_route: "true"
    network_ipvlan: "true"
    network_l2proxy: "true"
    network_phys_macvlan_mtu: "true"
    seccomp_notify: "true"
  project: default
  server: lxd
  server_clustered: false
  server_name: server
  server_pid: 11883
  server_version: "3.18"
  storage: zfs
  storage_version: 0.8.2-1

Issue description
I am trying to run a gui app in the container. Unfortunately, the abstract proxy is giving an error. The host is running Archlinux and the container is Ubuntu-18.04.
My container definition is as follows:
$ lxc config show mycontainer --expanded
architecture: x86_64
config:
  environment.DISPLAY: :0
  environment.TZ: Asia/Kolkata
  image.architecture: amd64
  image.description: ubuntu 18.04 LTS amd64 (release) (20191205)
  image.label: release
  image.os: ubuntu
  image.release: bionic
  image.serial: "20191205"
  image.type: squashfs
  image.version: "18.04"
  nvidia.driver.capabilities: all
  nvidia.runtime: "true"
  raw.idmap: |
    uid 1001 1000
    gid 100 1000
  security.privileged: "false"
  user.user-data: |
    #cloud-config
    runcmd:
      - 'sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf'
    packages:
      - x11-apps
      - mesa-utils
  volatile.base_image: f75468c572cc50eca7f76391182e6fdaf58431f84c3d35a2c92e83814e701698
  volatile.eth0.host_name: vethcc27718a
  volatile.eth0.hwaddr: 00:16:3e:41:43:b7
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000},{"Isuid":true,"Isgid":false,"Hostid":1001,"Nsid":1000,"Maprange":1},{"Isuid":true,"Isgid":false,"Hostid":1001001,"Nsid":1001,"Maprange":999998999},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000},{"Isuid":false,"Isgid":true,"Hostid":100,"Nsid":1000,"Maprange":1},{"Isuid":false,"Isgid":true,"Hostid":1001001,"Nsid":1001,"Maprange":999998999}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000},{"Isuid":true,"Isgid":false,"Hostid":1001,"Nsid":1000,"Maprange":1},{"Isuid":true,"Isgid":false,"Hostid":1001001,"Nsid":1001,"Maprange":999998999},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000},{"Isuid":false,"Isgid":true,"Hostid":100,"Nsid":1000,"Maprange":1},{"Isuid":false,"Isgid":true,"Hostid":1001001,"Nsid":1001,"Maprange":999998999}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000},{"Isuid":true,"Isgid":false,"Hostid":1001,"Nsid":1000,"Maprange":1},{"Isuid":true,"Isgid":false,"Hostid":1001001,"Nsid":1001,"Maprange":999998999},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000},{"Isuid":false,"Isgid":true,"Hostid":100,"Nsid":1000,"Maprange":1},{"Isuid":false,"Isgid":true,"Hostid":1001001,"Nsid":1001,"Maprange":999998999}]'
  volatile.last_state.power: RUNNING
devices:
  X0:
    bind: container
    connect<EMAIL_ADDRESS>    listen<EMAIL_ADDRESS>    type: proxy
  eth0:
    name: eth0
    nictype: bridged
    parent: lxdbr0
    type: nic
  mygpu:
    productid: 1d01
    type: gpu
    vendorid: 10de
  port80:
    connect: tcp:<IP_ADDRESS>:80
    listen: tcp:<IP_ADDRESS>:80
    type: proxy
  root:
    path: /
    pool: lxd
    type: disk
ephemeral: false
profiles:
- default
- x11
stateful: false
description: ""

The container gives an error when trying to use X,
$ lxc exec mycontainer -- glxinfo -B
No protocol specified
Error: unable to open display :0

Also, the container proxy log shows an error,
# tail -f  /var/snap/lxd/common/lxd/logs/mycontainer/proxy.X0.log
Status: Started
Warning: Error while reading data: read unix<EMAIL_ADDRESS>EOF

The X0 file does exist on the host,
# ls -la /tmp/.X11-unix/X0
srwxrwxrwx 1 root root 0 Dec  9 20:11 /tmp/.X11-unix/X0

Could be that your host isn't using the abstract unix socket at all, causing the connection error.
Try removing the @ from the connect side of the proxy device.

I modified the devices to look like so,
devices:
  X0:
    bind: container
    connect: unix:/tmp/.X11-unix/X0
    listen<EMAIL_ADDRESS>    type: proxy

I am still get the same error in /var/snap/lxd/common/lxd/logs/mycontainer/proxy.X0.log when issuing glxinfo -B in the container.

That's odd, the error message should have changed.

The error could also be coming from the fact that you're having the proxy connect to your X server as root rather than as your user, on most systems, this gets immediately rejected.
To get around that, you need to set security.uid and security.gid on your proxy device to match the uid and gid of the user that's running the graphical session on your system.

The non-root user on the host with the X session has UID of 1001 and GID of 100. Thus i modified the devices as follows,
devices:
  X0:
    bind: container
    connect: unix:/tmp/.X11-unix/X0
    listen<EMAIL_ADDRESS>    security.gid: "100"
    security.uid: "1001"
    type: proxy

I still get the same error when running glxinfo like so,
lxc exec mycontainer -- sudo -u ubuntu glxinfo -B

Can you run strace -fF -p PID where PID is the PID of the forkproxy process?
Then try running something that uses it. That may give a clearer error as to what's going on.

Following is the strace output,
# strace -fF -p 4127522
strace: deprecated option -F ignored
strace: Process 4127522 attached with 8 threads
[pid 4128511] futex(0xc00028d9c8, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127533] futex(0xc0000ee4c8, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127532] futex(0x2495878, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127531] epoll_wait(7,  <unfinished ...>
[pid 4127530] epoll_pwait(5,  <unfinished ...>
[pid 4127529] futex(0x24959e0, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127528] restart_syscall(<... resuming interrupted read ...> <unfinished ...>
[pid 4127522] futex(0x1f4da08, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127531] <... epoll_wait resumed>[{EPOLLIN, {u32=4, u64=4}}], 10, -1) = 1
[pid 4127530] <... epoll_pwait resumed>[{EPOLLIN, {u32=2565914376, u64=139966960156424}}], 128, -1, NULL, 3) = 1
[pid 4127531] futex(0x1f4cd70, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 4127530] epoll_pwait(5,  <unfinished ...>
[pid 4127531] <... futex resumed>)      = 1
[pid 4127528] <... restart_syscall resumed>) = 0
[pid 4127531] accept4(6,  <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127531] <... accept4 resumed>{sa_family=AF_UNIX}, [112->2], SOCK_CLOEXEC|SOCK_NONBLOCK) = 8
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127531] epoll_ctl(5, EPOLL_CTL_ADD, 8, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=2565914168, u64=139966960156216}} <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127531] <... epoll_ctl resumed>)  = 0
[pid 4127530] <... epoll_pwait resumed>[{EPOLLIN|EPOLLOUT, {u32=2565914168, u64=139966960156216}}], 128, -1, NULL, 3) = 1
[pid 4127531] getsockname(8,  <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127531] <... getsockname resumed>{sa_family=AF_UNIX<EMAIL_ADDRESS>[112->20]) = 0
[pid 4127530] epoll_pwait(5,  <unfinished ...>
[pid 4127531] socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0 <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127531] <... socket resumed>)     = 9
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127531] setsockopt(9, SOL_SOCKET, SO_BROADCAST, [1], 4 <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127531] <... setsockopt resumed>) = 0
[pid 4127531] connect(9, {sa_family=AF_UNIX<EMAIL_ADDRESS>20 <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127531] <... connect resumed>)    = 0
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127531] epoll_ctl(5, EPOLL_CTL_ADD, 9, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=2565913960, u64=139966960156008}} <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127531] <... epoll_ctl resumed>)  = 0
[pid 4127530] <... epoll_pwait resumed>[{EPOLLOUT, {u32=2565913960, u64=139966960156008}}], 128, -1, NULL, 3) = 1
[pid 4127531] getsockname(9,  <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127531] <... getsockname resumed>{sa_family=AF_UNIX}, [112->2]) = 0
[pid 4127530] epoll_pwait(5,  <unfinished ...>
[pid 4127531] getpeername(9,  <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127531] <... getpeername resumed>{sa_family=AF_UNIX<EMAIL_ADDRESS>[112->20]) = 0
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127531] futex(0xc0000ee4c8, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127533] <... futex resumed>)      = 0
[pid 4127531] <... futex resumed>)      = 1
[pid 4127533] nanosleep({tv_sec=0, tv_nsec=3000},  <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127533] <... nanosleep resumed>NULL) = 0
[pid 4127531] epoll_wait(7,  <unfinished ...>
[pid 4127533] futex(0xc00028d9c8, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4128511] <... futex resumed>)      = 0
[pid 4127533] <... futex resumed>)      = 1
[pid 4128511] futex(0xc00028d9c8, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] <... futex resumed>)      = -1 EAGAIN (Resource temporarily unavailable)
[pid 4127533] futex(0xc00028d9c8, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 4128511] nanosleep({tv_sec=0, tv_nsec=3000},  <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4128511] <... nanosleep resumed>NULL) = 0
[pid 4127533] <... futex resumed>)      = 0
[pid 4128511] mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] <... mmap resumed>)       = 0x7f4c7c000000
[pid 4127533] recvmsg(9,  <unfinished ...>
[pid 4128511] munmap(0x7f4c80000000, 67108864 <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4128511] <... munmap resumed>)     = 0
[pid 4127533] <... recvmsg resumed>{msg_namelen=112}, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 4128511] mprotect(0x7f4c7c000000, 135168, PROT_READ|PROT_WRITE <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] <... mprotect resumed>)   = 0
[pid 4127533] futex(0xc0000ee4c8, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4128511] rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1],  <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4128511] <... rt_sigprocmask resumed>[], 8) = 0
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0 <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4128511] <... mmap resumed>)       = 0x7f4c90110000
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] mprotect(0x7f4c90110000, 4096, PROT_NONE <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4128511] <... mprotect resumed>)   = 0
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] clone(child_stack=0x7f4c9090fcb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
strace: Process 474225 attached
[pid 4128511] <... clone resumed>, parent_tid=[474225], tls=0x7f4c90910700, child_tidptr=0x7f4c909109d0) = 474225
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 474225] set_robust_list(0x7f4c909109e0, 24 <unfinished ...>
[pid 4128511] rt_sigprocmask(SIG_SETMASK, [],  <unfinished ...>
[pid 474225] <... set_robust_list resumed>) = 0
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 474225] sigaltstack(NULL,  <unfinished ...>
[pid 4128511] <... rt_sigprocmask resumed>NULL, 8) = 0
[pid 474225] <... sigaltstack resumed>{ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}) = 0
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 474225] sigaltstack({ss_sp=0xc000338000, ss_flags=0, ss_size=32768},  <unfinished ...>
[pid 4128511] recvmsg(8,  <unfinished ...>
[pid 474225] <... sigaltstack resumed>NULL) = 0
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 474225] rt_sigprocmask(SIG_SETMASK, [],  <unfinished ...>
[pid 4128511] <... recvmsg resumed>{msg_name=0xc00031eac8, msg_namelen=112->0, msg_iov=[{iov_base="l\0\v\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 12
[pid 474225] <... rt_sigprocmask resumed>NULL, 8) = 0
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 474225] gettid( <unfinished ...>
[pid 4128511] sendmsg(9, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\0\v\0\0\0\0\0\0\0\0\0", iov_len=12}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0 <unfinished ...>
[pid 474225] <... gettid resumed>)      = 474225
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 474225] futex(0xc000334148, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4128511] <... sendmsg resumed>)    = 12
[pid 4127530] <... epoll_pwait resumed>[{EPOLLOUT, {u32=2565913960, u64=139966960156008}}], 128, -1, NULL, 3) = 1
[pid 4128511] recvmsg(8,  <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] <... recvmsg resumed>{msg_namelen=112}, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 4127530] epoll_pwait(5,  <unfinished ...>
[pid 4128511] futex(0xc00028d9c8, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127530] <... epoll_pwait resumed>[{EPOLLIN|EPOLLOUT|EPOLLHUP|EPOLLRDHUP, {u32=2565913960, u64=139966960156008}}], 128, -1, NULL, 3) = 1
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127530] recvmsg(9, {msg_name={sa_family=AF_UNIX<EMAIL_ADDRESS>msg_namelen=112->20, msg_iov=[{iov_base="\0\26\v\0\0\0\6\0No protocol specified\n\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127530] sendmsg(8, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\26\v\0\0\0\6\0No protocol specified\n\0\0", iov_len=32}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0 <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127530] <... sendmsg resumed>)    = 32
[pid 4127530] recvmsg(9,  <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127530] <... recvmsg resumed>{msg_name=0xc000322ac8, msg_namelen=112->0, msg_iov=[{iov_base="", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 0
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127530] futex(0xc00028d9c8, FUTEX_WAKE_PRIVATE, 1) = 1
[pid 4128511] <... futex resumed>)      = 0
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127530] write(1, "Warning: Error while reading dat"..., 72 <unfinished ...>
[pid 4128511] epoll_pwait(5,  <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] <... epoll_pwait resumed>[{EPOLLIN|EPOLLOUT|EPOLLHUP|EPOLLRDHUP, {u32=2565914168, u64=139966960156216}}], 128, 0, NULL, 0) = 1
[pid 4127530] <... write resumed>)      = 72
[pid 4128511] futex(0xc000334148, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 474225] <... futex resumed>)       = 0
[pid 4128511] <... futex resumed>)      = 1
[pid 4127530] epoll_ctl(5, EPOLL_CTL_DEL, 9, 0xc000316d9c <unfinished ...>
[pid 474225] epoll_pwait(5,  <unfinished ...>
[pid 4128511] recvmsg(8,  <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 474225] <... epoll_pwait resumed>[], 128, 0, NULL, 0) = 0
[pid 4128511] <... recvmsg resumed>{msg_name=0xc00031eac8, msg_namelen=112->0, msg_iov=[{iov_base="", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 0
[pid 4127530] <... epoll_ctl resumed>)  = 0
[pid 474225] epoll_pwait(5,  <unfinished ...>
[pid 4128511] futex(0xc00028d9c8, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127530] close(9 <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127530] <... close resumed>)      = 0
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127530] epoll_ctl(5, EPOLL_CTL_DEL, 8, 0xc000316d9c <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127530] <... epoll_ctl resumed>)  = 0
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127530] close(8 <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4127530] <... close resumed>)      = 0
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4127530] futex(0xc00028d9c8, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000},  <unfinished ...>
[pid 4128511] <... futex resumed>)      = 0
[pid 4127530] <... futex resumed>)      = 1
[pid 4128511] nanosleep({tv_sec=0, tv_nsec=3000},  <unfinished ...>
[pid 4127528] <... nanosleep resumed>NULL) = 0
[pid 4128511] <... nanosleep resumed>NULL) = 0
[pid 4127530] futex(0xc0000bcbc8, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4128511] futex(0xc00028d9c8, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
[pid 4127528] nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 4127528] futex(0x1f4cd70, FUTEX_WAIT_PRIVATE, 0, {tv_sec=60, tv_nsec=0}

So the above shows the No protocol specified being transferred over the unix socket, suggesting that it is in fact connected to something.
Do you get the same result running xvinfo?

Yes, i get the same result with xvinfo.

Can you look at your xserver log see if maybe something is logged there?

You can also try running "xhost +" on your host, that should eliminate any potential authentication problems

Ok, we are getting somewhere with xhost +. After issuing that glxinfo is working,
$ lxc exec mycontainer -- sudo -u ubuntu glxinfo -B|grep -i render
direct rendering: Yes
OpenGL renderer string: GeForce GT 1030/PCIe/SSE2

How i still get a warning in /var/snap/lxd/common/lxd/logs/mycontainer/proxy.X0.log when the above command is issued,
Warning: Error while sending data: read unix @/tmp/.X11-unix/X0->@: EOF
I did an strace on the forkproxy pid and the results are here.

Yeah, that's probably fine, it's really just a warning that the connection got closed partway through a read, it's not a problem by itself and I've certainly seen it happen before. X is a bit of an odd protocol as it's not really just the single socket, a number of other files are also passed through using scm rights packets, that's especially true for GL workloads, so if things work, and looks like they do, I wouldn't worry about the connection getting disconnected somewhat abruptly by one of the two sides.
Closing as it sounds like the issue was around X authentication and not something to do with LXD.
Most distros allow X connections by the right user/group but it looks like your system may be entirely dependent on Xauthority instead which would explain why you had to use the xhost + trick.
An alternative would probably be for you to transfer the Xauthority token/file into the container and set the XAUTHORITY env variable accordingly, though just keeping using xhost is fine too, so long as your X server isn't exposed to the network (I don't know of any distro which still does that).


At7/gwas/ld update

Reduce output for endpoint ld/id with attribs. Has been asked for by Ridwan for GWAS LD widget

these fields are all new to this release, is that correct?
in other words, these changes are not on the current live endpoint?

Correct. And they will only appear if used with attribs=1. This is foremost for the GWAS LD widget

Trying to understand here, does the reduced output preserve the amount of information returned?

the endpoint receives an input variant and the computes pairwise LD stats for the input variant and all other variants in that region. because you know already everything about your input variant we only return attribs for the second variant. The use case is so far only the LD widget which joins the results of two endpoints. In order to avoid another REST call we put consequence and location information in the ld/id endpoint

Sounds sensible, thanks for the explanation.


fix CarListItem prop with using object destructuring

See https://github.com/timothymiller/t4-app/issues/74

Agh dude! This breaks the web version though!

Agh dude! This breaks the web version though!

ohh sry, have you found a solution for it?

Strange what Flashlist does, but glad a solution was found


Update main.ts

use maxBodyLength: Infinity to avoid problems with large file uploads

duplicate of #5, closing


Select firefox as browser request

Which browser superagent use to the sent HTTP request. Can we use firefox or opera like in selenium driver?

Superagent doesn't emulate any browser. The Node.js version sends request using regular Node.js module, and the version for browsers makes XMLHttpRequest of the browser it's running in.


Add bower support

Adds a bower.json with info from the package.json.  Leaves the dist, dist-modules and modules folders for supporting global, commonjs, and amd consumers.

How do I maintain this? Just increment a version number?
Why use Bower over NPM?

Yes, just incrementing the version number should be fine as you publish.  You'll also need to bower register it so it can be installed by name.

Why use Bower over NPM?

That's a good question, one that I'm sure the rest of the internet has a lot to say about better than I could.  In my current project we are setup to use Bower, and a lot of other components also support it.
If you'd rather not support it, I'm happy to fork and publish it myself.  If you ping me via an @jgable when a new version is published I'll also bump the bower fork.

I added you to collaborators, please feel free to bump it! I'll be pinging you on releases.

@jgable 0.6.4 is out


Setup travis CI build which runs tests and hints code

Having a travis ci build really helps in determining the state of pull requests.

[x] Setup travis
[x] Run hinter on travis
[x] Run unit tests on travis
[ ] Setup coveralls

@mranney Any chance you will be able to log in to Travis CI and enable the build on this repo?

@mranney when you get around to it could you also enable coveralls? https://coveralls.io/repos/new after you do that I will turn on code coverage in the CI build.

I enabled both. I've never used either service, so I'm not familiar with the workflow. Is there a way to kick off a build manually?

@mranney it happens automatically, but yes you can kick one manually as well. If you are online this evening I can give you a tour.


Exploring human-computer interaction for ontologies using Brick

Hi Brick team, just wanted to reach out to you to let you know that last year we did an honours project on 'Exploring Human-Computer Interaction in Ontologies:A Case Study' and we used BRICK with our Facilities Management Team. I've just got around to uploading a youtube video of the honours student's talk if you are interested at https://youtu.be/KC8lRNHTYEM
She got 1st class honours for the thesis and I am happy to share it with you if that would be of interest. Let me have an email and I can send it. Melinda

I would like a copy<EMAIL_ADDRESS>thank you!

That's fantastic! Please send that my way as well, if you can. You can find my email at https://gtf.fyi

Sorry only just seen your emails. I have asked Briana to email you!

Copy of Briana's email of 14/3/2024
Hi Gabe & Joel,
Hope this email finds you well! As outlined in this github issue, I completed an honours project in 2022 on Exploring Human-Computer Interaction in Ontologies where I used Brick as part of my case study. I have attached my thesis and a short presentation I gave, if you are interested.

Just watched a video and thanks for the valuable research!

Thanks so much for sharing @mhodki !


Only records/transcribes when actively paired to device?

Hopefully I'm missing something here because otherwise this is a major bummer… It seems that after using the device for a day that only conversations while the device is within range and actively paired to my mobile device are recorded and transcribed in the app?

Wow, the silence is deafening. Good thing I spent under $100 on this thing. I freely admit that I am a reluctant hack for AI's infinite opportunity if only the dev teams making this stuff could get their heads out of code and see the big picture.

Hi, we have plans to add this in the upcoming version of the Device we have in the works.


Feature to organize files

Will be good if have an option in the typesql.json to organize somehow the output and input files. Currently they are all stored next to the sql file, which is not bad but a bit cluttered.
May be an option like outDir where to output the ts file and by default be set as sqlDir
Additionally, it seems the sqlDir is not recursively taken, so if I try to group some sql files within a directory it seems to skip including into parent index. I mean let consider the example
./src/queries
  /findAll.sql
  /findOne.sql
  /categories
    /findAll.sql
    /findOne.sql

The code being generated next to the sql file is because it make easier to navigate from the generated function to the sql file:

If you are using vscode, you could hide the .ts files with the files.exclude configuration.
.vscode/settings.json
{
   "files.exclude": {
      "**/src/db/sql/**/*.ts": true
   }
}

About recursively adding the export to the index.ts, this could cause ambiguity because of possible duplicated names.

Any use case to have all the exports in the root index.ts instead of importing as below?
import { findAll } from './db/sql/categories';
import { findAll } from './db/sql/products';
import { findAll } from './db/sql';

If that is really necessary, could create other index.ts in the parent folder (./db/index.ts) and add the exports manually. That would avoid adding potentially ambiguous exports in the generated code.