MissingPluginException - lets fix this

There are currently all these open issues for flutter_secure_storage, all mention the exception MissingPluginException(No implementation found for method read on channel plugins.it_nomads.com/flutter_secure_storage) in the issue or in the comments:
#5 - Sporadic finalizer exceptions for underlying KeyStore on Android
#49 - MissingPluginException (MissingPluginException(No implementation found for method read on channel plugins.it_nomads.com/flutter_secure_storage))
#71 - MissingPluginException
#83 - MissingPluginException(No implementation found for method write on channel plugins.it_nomads.com/flutter_secure_storage)
#85 - doesn't work on api level 23
#118 - Android 4.4.2: MissingPluginException(No implementation found for method write on cannel plugins.it_nomads.com/flutter_secure_storage))
#129 - Not Working in android 5.1.1 and 4.4.4
#136 - Can't run flutter test due to MissingPluginException in flutter_secure_storage
I'm also experiencing this exception with my end users, but with 8 open issues it's difficult to have to a sensible conversation - can I suggest we use this one thread to resolve this?
Most suggested "solutions" are to uninstall / reinstall the app, flutter clean, etc. however this simply isn't a solution - you can't ask end users to reinstall your app.
One suggestion I have is that based on the data below, it looks like this is an Android only problem - so perhaps there is a problem with how the plugin is registered on Android? The fact that it only happens sometimes, for some users, then occasionally it magically disappears, also suggests it is a timing issue.
Affected versions
After a quick survey of the issues, the exception has been reported on the following versions:

Flutter versions: 1.17.0, 1.17.5, 1.7.8, 1.12.13,
Android versions: 4.4.4, 5.1.1, 6, 8, 10

Affected devices

Emulator and real devices
Devices: Samsung J3, Samsung Galaxy Grand 2, Galaxy Tabs, Moto e5, pixel 3a, Galaxy J7 2015, Samsung note 3

Some questions for flutter_secure_storage developers
To try to help, when looking through the code the following questions came to mind (I'm not a plugin developer so you may have to bear with me!)
Silently swallowing exceptions
There are a couple of places where you catch Exceptions, but then just Log and do nothing else:
try {
          applicationContext = context.getApplicationContext();
          ...
          channel.setMethodCallHandler(this);
      } catch (Exception e) {
          Log.e("FlutterSecureStoragePl", "Registration failed", e);
      }

try {
    Log.d("FlutterSecureStoragePl", "Initializing StorageCipher");
    storageCipher = new StorageCipher18Implementation(applicationContext);
    Log.d("FlutterSecureStoragePl", "StorageCipher initialization complete");
} catch (Exception e) {
    Log.e("FlutterSecureStoragePl", "StorageCipher initialization failed", e);
}

Could these be surfaced to flutter via an error Result instead of silently discarded? This might reveal where there are actual problems when encountered.
Use of volatile
You're using volatile here:
private volatile StorageCipher storageCipher;

and link to a very long and complicated article on double-checked locking. Can you explain the reason behind using this instead of simply using an AsyncTask to perform work on a separate thread? If I had to bet money on why we get MissingPluginException, this would be it - edge case race conditions caused by complex multi-threading code.
Are you passing the right context?
In initInstance you are doing this:
applicationContext = context.getApplicationContext();
preferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
charset = Charset.forName("UTF-8");

StorageCipher18Implementation.moveSecretFromPreferencesIfNeeded(preferences, context);

Notice you are getting and assigning the application context first, but then passing the context from the parameter to the moveSecretFromPreferencesIfNeeded method - is that right? I have no idea if that's a problem, just thought I should ask the question.
BinaryMessenger
It looks like you're getting a BinaryMessenger directly from the binding object here to give to the MethodChannel:
@Override
public void onAttachedToEngine(FlutterPluginBinding binding) {
   initInstance(binding.getBinaryMessenger(), binding.getApplicationContext());
}

However the latest plugin template gets the BinaryMessenger via the flutter engine like this:
channel = MethodChannel(flutterPluginBinding.binaryMessenger.getFlutterEngine().getDartExecutor(), "flutter_plugin")

Is that a problem do you think?
Setting method channel to null
onDetachedFromEngine you're setting channel to null. Is this necessary? Might it not cause a problem if channel is accessed after this is called? The latest plugin template doesn't do this, it just sets channel.setMethodCallHandler(null) and nothing else.
@Override
public void onDetachedFromEngine(FlutterPluginBinding binding) {
   channel.setMethodCallHandler(null);
   channel = null;
}

Same problem here... please fix

It may be related to android backup feature, this plugin handles it very badly. The workaround is to delete all values on first run, or add try catch on every read and delete the value in case of errors.

did anyone get to fix this?

Having the same error here. Will try to flutter downgrade till it becomes usable, updating with findings.

same here with  4.4.4 and 5.1.1

I figure out that this happens with all other keychain package
flutter_keychain , flutter_secured_storage , flutter_secure_storage , store_critical_data , impiger_securestroage
i dont know why all package have same problem, may all have same codebase or there are problem with flutter itself or all make same bug

Hey @jamesncl
Thanks for bringing things together. This problem was for quite a while and after spending some time on it and founding nothing, I stopped looking into the problem. Especially, I failed to replicate it in my app/on my devices.
However, I will check with the latest template for plugins and update the code accordingly.

I hit this yesterday and just figured it out! This is not related to the plugin directly. For secure storage to work on Android I had to modify the MainActivity.kt file. (NOTE: from what I was reading, a lot of Flutter projects are using JAVA and the solution was slightly different but also in the MainActivity.java file)
Instead of MainActivity extending FlutterActivity, I had to extend from FlutterFragmentActivity in order for Touch ID to work on Android. When I did this it broke the project but I normally work on iOS so I didn't notice. Flutter generates a class named GeneratedPluginRegistrant.java. If this doesn't get called then Flutter can't see the plugin and you get the MissingPluginException.
I believe FlutterActivity is calling the plugin registration for you (at least in newer versions of Flutter). FlutterFragmentActivity doesn't make that call so you need to explicitly do it. Here is my new MainActivity.kt that is working:
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        GeneratedPluginRegistrant.registerWith(flutterEngine)
    }

}

If you have a MainActivity.java file, here is what I found online that I had to translate to Kotlin. Note that the only difference is you override OnCreate instead:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    GeneratedPluginRegistrant.registerWith(this)
}

I hit this yesterday and just figured it out! This is not related to the plugin directly. For secure storage to work on Android I had to modify the MainActivity.kt file. (NOTE: from what I was reading, a lot of Flutter projects are using JAVA and the solution was slightly different but also in the MainActivity.java file)
Instead of MainActivity extending FlutterActivity, I had to extend from FlutterFragmentActivity in order for Touch ID to work on Android. When I did this it broke the project but I normally work on iOS so I didn't notice. Flutter generates a class named GeneratedPluginRegistrant.java. If this doesn't get called then Flutter can't see the plugin and you get the MissingPluginException.
I believe FlutterActivity is calling the plugin registration for you (at least in newer versions of Flutter). FlutterFragmentActivity doesn't make that call so you need to explicitly do it. Here is my new MainActivity.kt that is working:
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        GeneratedPluginRegistrant.registerWith(flutterEngine)
    }

}

If you have a MainActivity.java file, here is what I found online that I had to translate to Kotlin. Note that the only difference is you override OnCreate instead:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    GeneratedPluginRegistrant.registerWith(this)
}

that help thanks very thanks.
I now get this but every things work fine
E/dalvikvm( 2809): Could not find class 'android.security.keystore.KeyGenParameterSpec$Builder', referenced from method com.it_nomads.fluttersecurestorage.ciphers.RSACipher18Implementation.createKeys
W/dalvikvm( 2809): VFY: unable to resolve new-instance 254 (Landroid/security/keystore/KeyGenParameterSpec$Builder;) in Lcom/it_nomads/fluttersecurestorage/ciphers/RSACipher18Implementation;
D/dalvikvm( 2809): VFY: replacing opcode 0x22 at 0x007f
E/dalvikvm( 2809): Could not find class 'android.security.keystore.StrongBoxUnavailableException', referenced from method com.it_nomads.fluttersecurestorage.ciphers.RSACipher18Implementation.createKeys
W/dalvikvm( 2809): VFY: unable to resolve instanceof 256 (Landroid/security/keystore/StrongBoxUnavailableException;) in Lcom/it_nomads/fluttersecurestorage/ciphers/RSACipher18Implementation;
D/dalvikvm( 2809): VFY: replacing opcode 0x20 at 0x00fb
D/dalvikvm( 2809): DexOpt: unable to opt direct call 0x042e at 0x84 in Lcom/it_nomads/fluttersecurestorage/ciphers/RSACipher18Implementation;.createKeys
D/dalvikvm( 2809): DexOpt: unable to opt direct call 0x042e at 0x104 in Lcom/it_nomads/fluttersecurestorage/ciphers/RSACipher18Implementation;.createKeys

this for kotlin i get it from local_auth
change MainActivity.kt
package com.[your.package]

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }
}

also that work with 3.3.3 version

if need to replicate this error
it is happens  in emulator 4.4.4 all the time.

For me it happen on android 10, flutter 1.20.3.
@BrightChad solution doesn't work for me as I didn't change anything on the activity and PluginRegistrant call is already there.

still happening and reproducable.
Real Device, Android 9, release Mode, Flutter 1.22.0
Way to reproduce it for me:

Open the App (not opened in Background) <- SecureStorage Working
Switch to another App, so its moved to the Background
After 2-3 Minutes, close the App Completely via "Task-Manager"
open the App <- MissingPluginException(No implementation found for method read on channel plugins.it_nomads.com/flutter_secure_storage)

If i put the App to the Background, close it completly right after it and reopen it, the error its happening. It has something to do with, that the App is put in the Background for a while, then closed and reopened.

Please try the new version 3.3.5. It fixed a bunch of android thread safety issues.

@koskimas still same error, but the solution from @BrightChad seems to work.

Hello,
Same error on my side with the version "3.3.5".
I can't create a simple unit test to store and get a simple value, I get this error:
"MissingPluginException(No implementation found for method write on channel plugins.it_nomads.com/flutter_secure_storage)"
Flutter (Channel stable, 1.22.4, on Mac OS X 10.15.7 19H2 darwin-x64, locale fr-FR)

@antoinepemeja I believe it's a different error, and actually not an error, as it's expected behavior. The plugin requires iOS or Android, that you don't have in unit test environment.
Try to use mocks for unit testing, see details in https://pub.dev/packages/mockito.

See here: https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration
This stuff happens for a lot of plugins right now - annoying AF.

So I ran into this issue and for an entire day I proceeded to try every single solution I found.
After quite a while I actually found out this issue was caused by another dependency: flutter_facebook_login: ^3.0.0.
Temporarely removing this dependency would allow secure_storage to work just fine.
I realized I did not setup the flutter_facebook_login library  properly as stated in their documentation, some stuff needed to be added in the AndroidManifest.xml. Once added, everything is back to normal.
I know I'm probably the only one here that ran into this specific issue but might be able to help someone.

Did anyone managed to run Android with flutter_secure_storage? If I change MainActivity.kt the app doesn't run at all.

So, this is a common issue. I ran into it unit testing flutter app.
Here is the error:
`package:flutter/src/services/platform_channel.dart 157:7  MethodChannel._invokeMethod
MissingPluginException(No implementation found for method read on channel plugins.it_nomads.com/flutter_secure_storage)`
Running the latest plugin:
flutter_secure_storage: ^3.3.5
Testing on physical device:
OnePlus 8T
Here's the setup:
`khalid@linux:~$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 1.25.0-5.0.pre.90, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Android Studio
[✓] VS Code (version 1.52.1)
[✓] Connected device (1 available)
• No issues found!`

So, this is a common issue. I ran into it unit testing flutter app.
Here is the error:
`package:flutter/src/services/platform_channel.dart 157:7  MethodChannel._invokeMethod
MissingPluginException(No implementation found for method read on channel plugins.it_nomads.com/flutter_secure_storage)`
Running the latest plugin:
flutter_secure_storage: ^3.3.5
Testing on physical device:
OnePlus 8T
Here's the setup:
`khalid@linux:~$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 1.25.0-5.0.pre.90, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Android Studio
[✓] VS Code (version 1.52.1)
[✓] Connected device (1 available)
• No issues found!`

I still got this issue when ran the unit tests

I still got this issue when ran the unit tests

@thongdinh it's expected behavior in Unit Tests as there is no mobile environment and no plugins are available there. Please use mocks (e.g. mocking)

@thongdinh it's expected behavior in Unit Tests as there is no mobile environment and no plugins are available there. Please use mocks (e.g. mocking)

@thongdinh it's expected behavior in Unit Tests as there is no mobile environment and no plugins are available. Please use mocks (e.g. mocking)

Thanks for the quick reply. Could you please add a default catch error to pass this exception, because we need to use https://pub.dev/packages/mock_web_server as a Fake server endpoint, and use a common HTTP request same as the real endpoint.

@thongdinh it's expected behavior in Unit Tests as there is no mobile environment and no plugins are available. Please use mocks (e.g. mocking)

Thanks for the quick reply. Could you please add a default catch error to pass this exception, because we need to use https://pub.dev/packages/mock_web_server as a Fake server endpoint, and use a common HTTP request same as the real endpoint.

@jamesncl I think you observed and brought up a set of great points on code quality. As a generalist developer, I'm on board with your highlights of the code smells.
I wish I had any expertise with Android development to be able to review this sections of code, but I am actually super new even to Flutter development.
Stumbling onto the same issue. What @szotp mentioned with removing all keys on first run, did work for me, but it's a terrible work around:
import 'package:flutter_secure_storage/flutter_secure_storage.dart';

const String DEMO_SECRET_KEY = 'demo-secret';

class Secrets {
  final _storage = FlutterSecureStorage();

  Future<String> loadDemoSecret(bool isFirstTimeApplicationExecution) {
    final buildReadFuture = () => _storage.read(key: DEMO_SECRET_KEY);
    final buildDeleteAllFuture = () => _storage.deleteAll();

    return (isFirstTimeApplicationExecution)
        ? buildDeleteAllFuture().then((_) => buildReadFuture())
        : buildReadFuture();
  }

  Future<void> saveDemoSecret(String demoSecret) {
    return _storage.write(key: DEMO_SECRET_KEY, value: demoSecret);
  }

  Future<void> deleteDemoSecret() {
    return _storage.delete(key: DEMO_SECRET_KEY);
  }
}

@jamesncl I think you observed and brought up a set of great points on code quality. As a generalist developer, I'm on board with your highlights of the code smells.
I wish I had any expertise with Android development to be able to review this sections of code, but I am actually super new even to Flutter development.
Stumbling onto the same issue. What @szotp mentioned with removing all keys on first run, did work for me, but it's a terrible work around:
import 'package:flutter_secure_storage/flutter_secure_storage.dart';

const String DEMO_SECRET_KEY = 'demo-secret';

class Secrets {
  final _storage = FlutterSecureStorage();

  Future<String> loadDemoSecret(bool isFirstTimeApplicationExecution) {
    final buildReadFuture = () => _storage.read(key: DEMO_SECRET_KEY);
    final buildDeleteAllFuture = () => _storage.deleteAll();

    return (isFirstTimeApplicationExecution)
        ? buildDeleteAllFuture().then((_) => buildReadFuture())
        : buildReadFuture();
  }

  Future<void> saveDemoSecret(String demoSecret) {
    return _storage.write(key: DEMO_SECRET_KEY, value: demoSecret);
  }

  Future<void> deleteDemoSecret() {
    return _storage.delete(key: DEMO_SECRET_KEY);
  }
}

After few hours of surfing. Finally SOLVED for me. Here is what I found out.
If you are calling flutter_secure_storage (or any packages) method in background service (as example, when you are using notification onBackgroundMessage). This exception occurred because usually our plugin registered at main.dart in foreground, but if we are calling our plugin's method in background we need to manually registered our plugin in our app/src/main/[kotlin/java]/.../Application.[java or kt].
Inside the Application.java or Application.kt

After done that, do flutter run again. Hope it helps!

http://blog.z7ge.com/archives/flutter-missingpluginexception-bu-yao-huang 希望能帮到你

I see this too, on API 27 / Android 8.1, but not on API 29 / Android 10.0 after upgrading my setup to Android embedding V2.
However, before the MissingPluginException there is this:
StorageCipher initialization failed
which may be the root cause. Seems like the plugin process crashes after the init failure which the causes the exception mentioned above.

After few hours of surfing. Finally SOLVED for me. Here is what I found out.

Can you please post your whole Application.java file @wilyanto ?
I don't have one, but do have a MainActivity.java file... Is that where I should put this code?

In my case I just had to set the minSdkVersion to 18 (as mentioned in the doc), do a "flutter clean" and my error disappeared.
flutter_secure_storage: v3.3.5
flutter: v1.22.6

The problem I'm running into is trying to use flutter_secure_storage in the background on android, specifically during firebase push notification handlers. Works fine on iOS. I don't think the flutter_secure_storage plugin supports running in the background on android without additional configuration. I wouldn't mind this if there were some simple docs on how to configure it to run in the background.

I was able to get it fixed. For me it involved upgrading to v2 embedding as my project was generated before flutter 1.12. I followed this guide and it fixed everything.
https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects

My problem is solved and I think it is a compatibility issue between plugins. I created a new project and added the plugins one by one. Arrived at the flutter_barcode_scanner: ^1.0.2 plugin the error appeared. So I just removed it and my app works fine with version 4.1.0 of flutter_secure_storage
Hope this helps other people.

I still have problems with Android 5 and 6 with flutter_secure_storage: 4.2.0

Can everyone that is still facing this issue make sure they are using embedding V2 on their application? Also, please post the output of flutter doctor -v and try it with the latest version of this plugin v4.2.1.

Can everyone that is still facing this issue make sure they are using embedding V2 on their application? Also, please post the output of flutter doctor -v and try it with the latest version of this plugin v4.2.1.

I'm using embedding V2 with fresh project install.
flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale en-US)
    • Flutter version 2.2.3 at /Users/imac/development/flutter
    • Framework revision f4abaa0735 (7 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/imac/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

[✓] Connected device (3 available)
    • Redmi Note 8 (mobile)  • 17eba2c2   • android-arm64  • Android 10 (API 29)
    • moto g 7 plus (mobile) • ZY225G7TW3 • android-arm64  • Android 10 (API 29)
    • Chrome (web)           • chrome     • web-javascript • Google Chrome 92.0.4515.131

• No issues found!
Felipes-iMac-2:myklick imac$ flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale en-US)
    • Flutter version 2.2.3 at /Users/imac/development/flutter
    • Framework revision f4abaa0735 (7 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/imac/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

[✓] Connected device (3 available)
    • Redmi Note 8 (mobile)  • 17eba2c2   • android-arm64  • Android 10 (API 29)
    • moto g 7 plus (mobile) • ZY225G7TW3 • android-arm64  • Android 10 (API 29)
    • Chrome (web)           • chrome     • web-javascript • Google Chrome 92.0.4515.131

• No issues found!

Any workaround?

Can everyone that is still facing this issue make sure they are using embedding V2 on their application? Also, please post the output of flutter doctor -v and try it with the latest version of this plugin v4.2.1.

I'm using embedding V2 with fresh project install.
flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale en-US)
    • Flutter version 2.2.3 at /Users/imac/development/flutter
    • Framework revision f4abaa0735 (7 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/imac/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

[✓] Connected device (3 available)
    • Redmi Note 8 (mobile)  • 17eba2c2   • android-arm64  • Android 10 (API 29)
    • moto g 7 plus (mobile) • ZY225G7TW3 • android-arm64  • Android 10 (API 29)
    • Chrome (web)           • chrome     • web-javascript • Google Chrome 92.0.4515.131

• No issues found!
Felipes-iMac-2:myklick imac$ flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale en-US)
    • Flutter version 2.2.3 at /Users/imac/development/flutter
    • Framework revision f4abaa0735 (7 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/imac/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)

[✓] Connected device (3 available)
    • Redmi Note 8 (mobile)  • 17eba2c2   • android-arm64  • Android 10 (API 29)
    • moto g 7 plus (mobile) • ZY225G7TW3 • android-arm64  • Android 10 (API 29)
    • Chrome (web)           • chrome     • web-javascript • Google Chrome 92.0.4515.131

• No issues found!

Same output, same problem

@juliansteenbakker any update?

I can't seem to reproduce this so i can't debug it. It seems like it happens alot on Redmi and Huawei devices. I don't have those devices so i'm hoping someone else who can reproduce this is able to find the problem.

I can't seem to reproduce this so i can't debug it. It seems like it happens alot on Redmi and Huawei devices. I don't have those devices so i'm hoping someone else who can reproduce this is able to find the problem.

I have a moto g7 plus, Poco x3 pro, in android emulator and nothing works

Do all these devices have access to Google Play API? And which version of this plugin are you using? I have tried with fresh install on emulator and it works just fine

Do all these devices have access to Google Play API? And which version of this plugin are you using? I have tried with fresh install on emulator and it works just fine

Moto g7 plus and Poco x3 pro are physical devices, they have Google play, i'm using flutter_secure_storage: ^4.2.1
I will try with other emulator maybe it don't have google play, i'll let you know

I just try with this emulator

and keep crashing

I try Nexus 5x to ensure it's not a problem with Pixel emulators

and the same

Let me know if i can do to help with this

The plugin works fine in  the same project but in ios

The plugin works fine in  the same project but in ios

On a real device? Because it doesn't work on my iPhone emulator

I need to publish an app in one week and i do not know what to do, any help?

After upgrade flutter to 2.5.0 works fine in android and emulators
@Rubensb
@juliansteenbakker

Any news about this problem ?
I've got the same problem here. It seems to work on real device but not on an emulator (Pixel 5, API 27)
Flutter 2.5.1

I have released version 5.0.0. Please try again with that version or comment if this problem still exists.

Had this issue with version 4.2.1 on a Windows target. Upgrading to 5.0.0 fixed the issue perfectly, thanks!

In OS 5.1.1 it didn't work

In OS 5.1.1 it didn't work

What do you mean with OS 5.1.1?

Sorry, I updated the package to version 5.0.0 but on android 5.1.1 the same error still occurs.
MissingPluginException(No implementation found for method read on channel plugins.it_nomads.com/flutter_secure_storage)

Hey, this is probably not fixed. Running 5.1.0 and still getting the MissingPluginException(No implementation found for method write on channel plugins.it_nomads.com/flutter_secure_storage) when trying to invoke flutter test
Works fine when I run the tests via the UI in VS Code but not when running flutter test via the command line.

Hey, this is probably not fixed. Running 5.1.0 and still getting the MissingPluginException(No implementation found for method write on channel plugins.it_nomads.com/flutter_secure_storage) when trying to invoke flutter test
Works fine when I run the tests via the UI in VS Code but not when running flutter test via the command line.

Which test are you trying to run? The only test available is an integration test which you can run in the example app by running flutter drive --target=test_driver/app.dart

Oh sorry, while running my own bloc test which is using secure storage. As of now I just skipped the part where I'm adding to the storage to make it work.
void login() async {
    try {
      emit(const LoginState.loading());
      final result = await authRepository.login();

      result.fold(
        (failure) => _handleAuthFail(),
        (success) => _handleAuthSuccess(success),
      );
    } catch (e) {
      _handleAuthFail();
    }
  }

  void _handleAuthSuccess(AuthResponse success) {

    if (!Platform.environment.containsKey('FLUTTER_TEST')) {
      const storage = FlutterSecureStorage();

      storage.write(
          key: SectureStorageConstants.accessToken,
          value: success.accessToken!);
    }

    emit(const LoginState.success(loggedIn: true));
  }

The test
blocTest<LoginCubit, LoginState>(
      'emits [LoginState.loading, LoginState.success] when '
      'login() is called successfully.',
      setUp: () =>
          when(() => mockAuthRepo.login()).thenAnswer((_) async => response),
      build: () => loginCubit,
      act: (cubit) => cubit.login(),
      expect: () => <LoginState>[
        const LoginState.loading(),
        const LoginState.success(
          loggedIn: true,
        ),
      ],
      verify: (_) async {
        verify(() => mockAuthRepo.login()).called(1);
      },
    );


Invalid Code review and issue tracker URLs

As reported by<EMAIL_ADDRESS>the code review server link in https://webrtc.org/contributing/ currently points to http://webrtc-codereview.appspot.com/, but should be https://codereview.webrtc.org.
And in https://webrtc.org/native-code/, the bug tracker link should be changed from https://code.google.com/p/webrtc/issues/list to https://bugs.chromium.org/p/webrtc/issues/list?
There are also several stale URLs to Chromium build instructions.

I believe you fixed the URL's in https://github.com/webrtc/webrtc-org/pull/21? If so please close this (Tip: If you add Fixes #bugnumber in the pull request it will auto close the bug).

Ooops :)

Ah yes, I was going to close this (forgot about it back then, just wanted to rush those fixes in).
I'll make sure to use the "Fixes #bugnumber" feature in the future.

link from http://webrtc.org/native-code/ to issue tracker doesn't work: it redirects to google.com.
http://bugs.webrtc.org/ (same link without https) redirects correctly.

Well spotted, yeah redirects often do not work with HTTPS ;).

Hm... strange. I thought I'd fixed both bugs.webrtc.org and code.webrtc.org.
Let me check.
On 2 February 2016 at 14:46, Christoffer Jansson<EMAIL_ADDRESS>wrote:

Well spotted, yeah redirects often do not work with HTTPS ;).
—
Reply to this email directly or view it on GitHub
https://github.com/webrtc/webrtc-org/issues/20#issuecomment-178607891.

Apparently I forgot one bit. Sorry! Fixing it now...
On 2 February 2016 at 14:49, alex<EMAIL_ADDRESS>wrote:

Hm... strange. I thought I'd fixed both bugs.webrtc.org and
code.webrtc.org.
Let me check.
On 2 February 2016 at 14:46, Christoffer Jansson<EMAIL_ADDRESS>
wrote:

Well spotted, yeah redirects often do not work with HTTPS ;).
—
Reply to this email directly or view it on GitHub
https://github.com/webrtc/webrtc-org/issues/20#issuecomment-178607891.

I mean, don't change from https to http. The https version should start working soon.

The redirects should start working within a couple hours.
On 2 February 2016 at 16:05, alex<EMAIL_ADDRESS>wrote:

Apparently I forgot one bit. Sorry! Fixing it now...
On 2 February 2016 at 14:49, alex<EMAIL_ADDRESS>wrote:

Hm... strange. I thought I'd fixed both bugs.webrtc.org and
code.webrtc.org.
Let me check.
On 2 February 2016 at 14:46, Christoffer Jansson <
<EMAIL_ADDRESS>wrote:

Well spotted, yeah redirects often do not work with HTTPS ;).
—
Reply to this email directly or view it on GitHub
https://github.com/webrtc/webrtc-org/issues/20#issuecomment-178607891.

@DanilChapovalov both https://bugs.webrtc.org and https://code.webrtc.org work now. Thanks for noticing.


Removed leafBlock from synchronizer

I wanted to study the semantics of the synchronizer, and I found that the leafBlock is always the block from the highQC.
Therefore, in the current implementation, we could omit the leafBlock.

I've looked at the code, and it looks fine to me. But could edit the PR description to provide some more context for this. Do you think we won't need the LeafBlock() for alternative synchronizer implementations?

I don't see any issues with this PR.
@hanish520 Would this conflict with any of your other changes?
@johningve If you have a cycle to spare, please let us know your take.
I want to merge this if there are no concerns with this.


Iotedge service fails to start - armhf

Hi,
I installed iot edge following "https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge-linux-arm" on raspberry pi 3.
Iotedge service fails to start. Below is the log:
$ systemctl status iotedge
● iotedge.service - Azure IoT Edge daemon
Loaded: loaded (/lib/systemd/system/iotedge.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Thu 2018-07-12 05:36:12 UTC; 16min ago
Docs: man:iotedged(8)
Process: 1305 ExecStart=/usr/bin/iotedged -c /etc/iotedge/config.yaml (code=exited, status=127)
Main PID: 1305 (code=exited, status=127)
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 12 05:36:12 ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Start request repeated too quickly.
Jul 12 05:36:12 ubuntu systemd[1]: Failed to start Azure IoT Edge daemon.
$ journalctl -u iotedge --no-pager --no-full
-- Logs begin at Thu 2016-02-11 16:28:02 UTC, end at Thu 2018-07-12 05:51:16 UTC. --
Jul 12 05:36:10 ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 12 05:36:10 ubuntu systemd[1]: iotedge.service: Main process exited, co.../a
Jul 12 05:36:10 ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 12 05:36:10 ubuntu systemd[1]: iotedge.service: Failed with result 'exi...'.
Jul 12 05:36:10 ubuntu systemd[1]: iotedge.service: Service hold-off time o...t.
Jul 12 05:36:10 ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 12 05:36:10 ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 12 05:36:10 ubuntu systemd[1]: iotedge.service: Main process exited, co.../a
Jul 12 05:36:10 ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 12 05:36:10 ubuntu systemd[1]: iotedge.service: Failed with result 'exi...'.
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Service hold-off time o...t.
Jul 12 05:36:11 ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 12 05:36:11 ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Main process exited, co.../a
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Failed with result 'exi...'.
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Service hold-off time o...t.
Jul 12 05:36:11 ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 12 05:36:11 ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Main process exited, co.../a
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Failed with result 'exi...'.
Jul 12 05:36:11 ubuntu systemd[1]: iotedge.service: Service hold-off time o...t.
Jul 12 05:36:12 ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 12 05:36:12 ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Main process exited, co.../a
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Failed with result 'exi...'.
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Service hold-off time o...t.
Jul 12 05:36:12 ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 12 05:36:12 ubuntu systemd[1]: iotedge.service: Start request repeated ...y.
Jul 12 05:36:12 ubuntu systemd[1]: Failed to start Azure IoT Edge daemon.
$sudo iotedge list
An error in the management http client occured/
caused by: Hyper error
caused by: Connection refused (os error 111)

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

ID: 1cf7aade-9690-1b15-edca-952e4f509601
Version Independent ID: b99f0f0f-87fe-5446-670e-b3fd8eb1c34d
Content: How to install Azure IoT Edge on Linux
Content Source: articles/iot-edge/how-to-install-iot-edge-linux-arm.md
Service: iot-edge
GitHub Login: @kgremban
Microsoft Alias: kgremban

@saifuddin123 thank you for the feedback. This issue #11046 is related with yours and some troubleshooting suggestions were suggested. What did you already tried from there?
This is how it was fixed: https://github.com/MicrosoftDocs/azure-docs/issues/11046#issuecomment-402361152
Thank you.

@saifuddin123 We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.

Hi Eveeryone,
I am trying to install edge on NVidia Jeston T2 hardware. we are running ubuntu 16 on it and we are facing the same issues as mentioned above. It has ARM64 architecture which there no official support. I tried the above suggestions uninstalling docker and installing moby.
Its still not working for me.
IOT Edge status logs after configuring and restarting iotedge.
nvidia@tegra-ubuntu:~$ sudo systemctl status iotedge
● iotedge.service - Azure IoT Edge daemon
Loaded: loaded (/lib/systemd/system/iotedge.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Fri 2018-07-20 07:26:41 UTC; 4min 53s ago
Docs: man:iotedged(8)
Process: 2773 ExecStart=/usr/bin/iotedged -c /etc/iotedge/config.yaml (code=exited, status=127)
Main PID: 2773 (code=exited, status=127)
Jul 20 07:26:41 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 07:26:41 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 07:26:41 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 07:26:41 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 20 07:26:41 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 07:26:41 tegra-ubuntu systemd[1]: iotedge.service: Start request repeated too quickly.
Jul 20 07:26:41 tegra-ubuntu systemd[1]: Failed to start Azure IoT Edge daemon.
Journal Logs:
nvidia@tegra-ubuntu:~$ journalctl -u iotedge
-- Logs begin at Tue 2018-06-26 07:05:22 UTC, end at Fri 2018-07-20 07:38:14 UTC. --
Jul 20 06:34:35 tegra-ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 06:34:35 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: iotedge.service: Start request repeated too quickly.
Jul 20 06:34:36 tegra-ubuntu systemd[1]: Failed to start Azure IoT Edge daemon.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 06:35:08 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: Stopped Azure IoT Edge daemon.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: Started Azure IoT Edge daemon.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 20 06:35:08 tegra-ubuntu systemd[1]: iotedge.service: Unit entered failed state.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 20 06:35:08 tegra-ubuntu systemd[1]: iotedge.service: Service hold-off time over, scheduling restart.

@saifuddin123 Sergio is out in vacation. I apologize that this is not working for you. Can you redeploy the modules? Do the IoTEdge commands hang and do not return status information? The following issue has been logged: Azure/iotedge#54 And want to see if you are experiencing the same?

We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.

Thanks, @Mike-Ubezzi-MSFT . I will follow up on the link you shared. I am facing issue while installing iot edge on arm64 and the issue you shared is wrt . armhf. I did reinstall all modules, but for me the iot edge preview gets installed but the GA version fails.


sqlproj SDK style add system database reference is not working

Azure Data Studio Version:
OS Version:

Steps to Reproduce:

Create a sqlptoj SDK style
in the viewlet right click on Database References
in the dialog click on Add Reference
build the project
Expected: successful  build
Actual: Error "Build error SQL72027: File "C:\Users[user].nuget\packages\microsoft.build.sql\0.1.1-alpha\tools\netstandard2.1\SystemDacpacs\130\master.dacpac"

Does this issue occur when all extensions are disabled?: Yes/No

It's looking for the master dacpac at "$(NETCoreTargetsPath)\SystemDacpacs\150\master.dacpac", but it isn't working anymore because the targets file being used is no longer in the same location as the system dacpacs in the sql database projects extension. Either we can change the variable and pass it in when building for the location of the dacpacs, or we can look into adding the system dacpacs in the SDK.

@dzsquared Do you know of any issues with shipping the system dacpac's inside the SDK? Only adds about 1.5MB in total size so size isn't a huge concern

related issue: #14825


Adding pinchToZoom method

Thanks a lot, I'm very grateful and I hope to see many more excellent contributions from you 🙏


Create CONTRIBUTION.md

A base guide for contributors.
For the formatting, I am just putting what I had while I was making the more operators change, but it may not be the same as the hxformat.json that was used by @kisetil, so please do change what is needed.
Feel free to add or change anything that may make the guide better.

Thanks @marinight, that's a good idea!


Real valued spherical harmonics.

Introduce real spherical harmonics.
Rename sht to SH.

Is this in the scope of this package?

Closing in favor for https://github.com/chris-hld/spaudiopy .


LoRa MergedLinear Layer merging doesn't work

(This is from Version 0.1)
The current version doesn't appear to have an implementation for MergedLinear but the version I trained my models with has a bug that is preventing me from merging the weights.
Is there any way I can update my model to use the new version without retraining? So that I can calculate the delta_w and combine the weights so I can export as a GPTNeoX model rather than a PeftModel. (I know this will need some custom code but once I get this math worked out should just be load model, assign merged layer weights, save state dict)

peft lora implementation ~line 263 here
https://github.com/huggingface/peft/blob/29357d41eb5cb6f4161279a5c02379a6a040e882/src/peft/tuners/lora.py
loralib implementation is ~line 229 here https://github.com/microsoft/LoRA/blob/375704a4f7e376f8f1c4b43e2fd524859dac6a59/loralib/layers.py#L156
Interestingly I've tried both and unless I'm missing something it seems like neither works for reconstructing the weight delta. Is there a bug in this version of the LoRa implementation?

After double checking my environment, it seems like I may have trained with peft version 0.2.0 but the problem persists.
I'll try again sometime with a smaller NeoX model so I can train a LoRa quickly and see if I can replicate this issue with know package versions.

there are bugs when run model.eval() with peft 0.2.0, use peft 0.1.0 can solve this problem

Was able to find a fix. Both 0.2.0 and 0.1.0 appear to have an issue with this, haven't tested anything in 0.3.0. The code to merged all the MergedLinear layers is
def transpose(weight, fan_in_fan_out):
    return weight.T if fan_in_fan_out else weight

def merge_weights(layer):
    assert layer.merged == False, f"Module was already merged!"
    # Merge the weights and mark it
    if layer.r > 0 and any(layer.enable_lora):
        delta_w = F.conv1d(
             layer.lora_A.weight.data.unsqueeze(0),
             layer.lora_B.weight.data,
             groups=sum(layer.enable_lora),
         ).squeeze(0)
    layer.weight.data += layer.zero_pad(transpose(delta_w * layer.scaling, True)).T
    layer.merged = True

def apply_peft_merge(module):
    if isinstance(module, peft.tuners.lora.MergedLinear):
        merge_weights(module)
    for child in module.children():
        apply_peft_merge(child)

Big thanks to ShengleiH for providing the changes to the broken code that made the above script work.
https://github.com/microsoft/LoRA/issues/75#issuecomment-1558965652


Using v2 vs v2.1.3

An action I am using, uses by default actions/cache@v1.
When I configured Dependabot, it created a PR with an update to<EMAIL_ADDRESS>I saw on the page of actions/cache, the version in the example code is v2 and not the latest release v2.1.3.
Should I update to v2.1.3 or is there a specific reason to use v2 instead, as showed in the example code ?

We update the v2 tag to point to the latest release, so currently v2 is the same as v2.1.3.  We recommend using v2 so you are always using the latest version.

We update the v2 tag to point to the latest release, so currently v2 is the same as v2.1.3.  We recommend using v2 so you are always using the latest version.

We update the v2 tag to point to the latest release, so currently v2 is the same as v2.1.3. We recommend using v2 so you are always using the latest version.

Does that apply automatically to all actions or do you do it for yourself manually ?

We update the v2 tag to point to the latest release, so currently v2 is the same as v2.1.3. We recommend using v2 so you are always using the latest version.

Does that apply automatically to all actions or do you do it for yourself manually ?

Yes, if you have uses: actions/cache@v2 in your workflow, it will automatically start using the latest 2.x.x version when we update the tag.

Yes, if you have uses: actions/cache@v2 in your workflow, it will automatically start using the latest 2.x.x version when we update the tag.

(I realized there's a second possible interpretation of your last question.  This way of versioning, where we have a "major version" tag such as @v2 that points to the latest patch version, is something we do manually for the official GitHub actions.  This is not automatically done for all actions.)

(I realized there's a second possible interpretation of your last question.  This way of versioning, where we have a "major version" tag such as @v2 that points to the latest patch version, is something we do manually for the official GitHub actions.  This is not automatically done for all actions.)

Thank you!

Thank you!


(C/C++) "TYPE_DECL" node has empty label in dot output

This is the code:
struct R
{
    int a;
} r;

This is the attribute of "TYPE_DECL" node "R":
  "7": {
    "inheritsFromTypeFullName": [],
    "name": "R",
    "astParentFullName": "",
    "fullName": "R",
    "astParentType": "",
    "_label": "TYPE_DECL",
    "code": "struct R",
    "isExternal": false,
    "id": 7,
    "order": 1,
    "filename": "/root/workspace/slice/testcase1/tmpdir/a.c"
  },

This ast dot file of global function is:
digraph "<global>" {
"5" [label = <(METHOD,<global>)30> ]
"6" [label = <(BLOCK,<empty>,<empty>)> ]
"7" [label = <> ]
"8" [label = <32> ]
"9" [label = <33> ]
"10" [label = <> ]
"11" [label = <(LOCAL,struct R s: R)35> ]
"12" [label = <(METHOD,main)37> ]
"13" [label = <(BLOCK,<empty>,<empty>)38> ]
"14" [label = <(RETURN,return 0;,return 0;)39> ]
"15" [label = <(LITERAL,0,return 0;)39> ]
"16" [label = <(METHOD_RETURN,int)37> ]
"18" [label = <(METHOD_RETURN,ANY)> ]
  "5" -> "6"
  "5" -> "18"
  "6" -> "7"
  "6" -> "9"
  "6" -> "10"
  "6" -> "11"
  "6" -> "12"
  "7" -> "8"
  "12" -> "13"
  "12" -> "16"
  "13" -> "14"
  "14" -> "15"
}

The dot "7" has empty labe l (label = <>), this is an error in syntax?
This dot file couldn't be used to generate graph picture at my computer because of this syntax error.
And there are so many "&lt", "&gt", "" and "", is something wrong with them?

The "&lt", "&gt", "" and "" lines are from #1349 as part of adding line number information to each node to map back to source code

The "&lt", "&gt", "" and "" lines are from #1349 as part of adding line number information to each node to map back to source code

Got it, thanks.

Closing, because the issue seems to be "solved". Please re-open it if this is not the case :)


About the input shape of the model

Thank you for sharing this amazing work!
One question I wanted to ask is that I see you used the "batch" dimension of the input to wrap the multi-view input images, which means this model can never really be used with a batch size larger than 1 right?
Thanks!

Indeed the code wasn't written to be used with a higher batch size than one.
I tried to modify it (I'm not one of the author of the Git, but I've used the architecture extensively over the last months) but it would be pretty complicated.
Considering that not all GT models have the same number of vertices, there's already a first problem since the dimension of the GT wouldn't be constant over a batch.

Indeed the code wasn't written to be used with a higher batch size than one.
I tried to modify it (I'm not one of the author of the Git, but I've used the architecture extensively over the last months) but it would be pretty complicated.
Considering that not all GT models have the same number of vertices, there's already a first problem since the dimension of the GT wouldn't be constant over a batch.

Thank you for the answer. I'm curious though, if you are talking about other GNN models that take meshes of different shapes as input, yes I agree with you that multi-batch is difficult. But this model always starts with the same ellipse right? And then you deform it into various shapes.
And now actually I think using the batch dimension to wrap the multi-view images is a great idea, so Tensorflow will take care of the parallelism of the encoding process of the image features.

Yeah the prediction will always have the same number of vertices, but the ground truths won't, so what would the batch of ground truth look like?
If for example I have a batch where the expected models have 1000, 1500 and 2000 vertices, what will the ground truth batch dimension be?

Yeah the prediction will always have the same number of vertices, but the ground truths won't, so what would the batch of ground truth look like?
If for example I have a batch where the expected models have 1000, 1500 and 2000 vertices, what will the ground truth batch dimension be?

You are right......
BTW, I have another question about this model. I realized that the hypothesis sampling module is basically just extending each vertex to its 42 neighbors and then choosing one of them as its next destination. However, that icosahedron is preset, with a fixed dimension, which means with two deformation reasoning modules, the deformation can be no further than 2 x that_fixed_length. And also, I found that fixed length...is quite small, like 0.015 something, and it is universal, so no matter you are deforming a chair or a plane, you are dealing with the same range of misalignment, which is very curious to me.
Or, maybe the ShapeNet models are pre-normalized into a dimensionless state, so the physical size of the models no longer matter? Do you have any idea about this? Thanks!

Yeah the prediction will always have the same number of vertices, but the ground truths won't, so what would the batch of ground truth look like?
If for example I have a batch where the expected models have 1000, 1500 and 2000 vertices, what will the ground truth batch dimension be?

I found it, paper that describes ShapeNet said the models are normalized. The equation is like (V - Centroid)/Diagonal , that means the normalized locations can be negative? How well is the model with all "relu" activation functions handle negative outputs?

Okay so about your first question, yes the deformation cannot be higher than 2 x that_fixed_length. However you can adapt that length to whatever you want. Since the icosahedron is centered on zero, you can make it bigger or smaller at your convenience using this line of code : `data["sample_coord"] = data["sample_coord"] * SOME_SCALE_FACTOR).
With normalized models, this gives you the possibility to make quite big deformations.
Now, regarding the negative vertices locations, relu doesn't matter much because if you look at the DeformationReasoning module, you compute a probability density on each directions using a sigmoid activation function, you multiply this probability density by the directions and then you add this deformation to the existing points.
Considering relu is used only when computing the scores, it doesn't matter much if some coordinates are negative or positive. Hope this answers your questions.


Multiple concerns surrounding eval_freq

The eval_freq passed to train.py as a command line arg is completely thrown out during optimization in favor one one generated from n_evaluations. This is either large omission in the command line argument description or a bug and I am not certain which.
If that is not a bug, exp_mananger.py essentially has two different variables floating around named eval_freq, which makes tracking down what's going on very confusing. One should presumably be renamed or something.
This is a minor issue that I wouldn't have created an issue for on it's own, but the underscore in the variable name here https://github.com/DLR-RM/rl-baselines3-zoo/blob/8f41f40b24adf7c5ee3843f3ad4b5025d25b46f8/utils/exp_manager.py#L601 is not best style practices and I've stared at that line for a pretty long time now.

I'm also going to create a related issue in SB3.

The eval_freq passed to train.py as a command line arg is completely thrown out during optimization in favor one one generated from n_evaluations. This is either large omission in the command line argument description or a bug and I am not certain which.

eval_freq is for normal training only.
For hyperparameter optimization, only n_timesteps and n_evaluations is used.

If that is not a bug, exp_mananger.py essentially has two different variables floating around named eval_freq, which makes tracking down what's going on very confusing. One should presumably be renamed or something.

yep, the hyperparameter optimization can be rename to optuna_eval_freq or something similar with a comment to explain what it does.

This is a minor issue that I wouldn't have created an issue for on it's own, but the underscore in the variable name here

well, it was mostly to avoid overwriting eval_freq (I probably tried with both when creating the code).


Smart Cursor #948

Cursor changes to pointer when hovered over elements in simulation
Fixes # #948
Describe the changes you have made in this pr -
The cursor now changes to a pointer when hovered over the circuit elements , thus giving us feedback that the elements is clickable and dragable. When we drag elements or drag screen the cursor changes to grabbing hand
Screenshots of the changes (If any) -
CAPTURING CURSOR IN SCREEN SHOT IS TOUGH!, SEE THE GIF BELOW
Before :

After :
When Hovered

When Dragged

In Action:
GIF!

PS : I suggest you to watch the gif in full screen , kinda hard to see whats happening
Any feedback is welcome. Mods do review...

Coverage remained the same at 84.266% when pulling 4238f0fdd3a120165c9a20a89f7341918e06124d on gkan30:feature/pointer into 087e1aedf0159e83d3257d6e50ce446f978c23c3 on CircuitVerse:master.

@tachyons @satu0king Please review

@shubhankarsharma00 @Shivansh2407 It's done

@satu0king merge this ?


SOCKS proxy support

I don't know what an app needs to do to support SOCKS (isn't it automatic when you add proxies to the OS?) but we will figure it out :)

Wouldn't want it for the entire OS, just for Amethyst (ie, a local Tor/Orbot). :)

https://github.com/05nelsonm/kmp-tor

To be clear, I'm not expecting Amethyst to embed an entire Tor service, just make it practical to use one run separately in a normal Tor app.

Hi Luke,
Another user mentioned that we could make it work (accessing a local relay) with Orbot over Tor.
Did you have any issues with it?
Best,

cc @luke-jr

I don't understand the question.

I think he meant using Orbot as a VPN and accessing a relay through that.(Please, am I right @vitorpamplona ?)

just add
        .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)))
to
    private val httpClient = OkHttpClient.Builder()
        .followRedirects(true)
        .followSslRedirects(true)
        .build();

i think orbot uses localhost:9050, so that could be default...

Hi Luke,
Another user mentioned that we could make it work (accessing a local relay) with Orbot over Tor.
Did you have any issues with it?
Best,

using your own relay is one option but there is an inherent risk with somehow reverting to the default relays and leaking ip. orbot vpn mode is also not reliable in not leaking your ip randomly. using orbot as http proxy ensures that it either works and builds a circuit, or you are not connecting to a relay. it should be a just few lines of code in theory plus an extra triplet of settings.

Is this what you want?
Enable orbot

Enable a setting in amethyst and connect to an onion relay or any other relay through tor
https://user-images.githubusercontent.com/115044884/233052355-6e368edc-4dd6-4787-b45b-d96297eab711.mp4

Is this what you want?
Enable orbot
Enable a setting in amethyst and connect to an onion relay or any other relay through tor
Untitled.mp4

i think so, yes. but i couldn't do it myself. i gave it a try, but didn't manage to start the emulator. stuck there.
the important thing is that you force connecting to relays over tor proxy even if they are wss tcp endpoints.

Created a draft pull request #357 so we can discuss what's the best approach to implement this

Tor Support through Orbot released in https://github.com/vitorpamplona/amethyst/releases/tag/v0.46.0
@luke-jr, let us know if this satisfies your needs.


cmd/go: unable to build with a v4 module

What version of Go are you using (go version)?

$ go version
go version go1.14.2 windows/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\XXX\AppData\Local\go-build
set GOENV=C:\Users\XXX\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\XXX\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=c:\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\Users\XXX\go\src\github.com\pierrec\tmp\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\XXX\AppData\Local\Temp\go-build610762850=/tmp/go-build -gno-record-gcc-switches

What did you do?

See issue https://github.com/pierrec/lz4/issues/77
What did you expect to see?
A successful build.
What did you see instead?
go: finding module for package github.com/pierrec/lz4/internal/lz4errors
go: finding module for package github.com/pierrec/lz4/internal/lz4block
go: finding module for package github.com/pierrec/lz4/internal/lz4stream
........\pkg\mod\github.com\pierrec\lz4\v4@v4.0.0\lz4.go:14:2: module github.com/pierrec/lz4@latest found (v2.5.2+incompatible), but does not contain package github.com/pierrec/lz4/internal/lz4block
........\pkg\mod\github.com\pierrec\lz4\v4@v4.0.0\lz4.go:15:2: module github.com/pierrec/lz4@latest found (v2.5.2+incompatible), but does not contain package github.com/pierrec/lz4/internal/lz4errors
........\pkg\mod\github.com\pierrec\lz4\v4@v4.0.0\reader.go:7:2: module github.com/pierrec/lz4@latest found (v2.5.2+incompatible), but does not contain package github.com/pierrec/lz4/internal/lz4stream

This doesn't look like a bug with the Go command itself, so I'll close this issue.
I commented on pierrec/lz4#77 though. Happy to answer further questions there.


feat(header):  add links to taipy products in the header

Add a dropdown in the header with links to different Taipy products and services like Enterprise, Cloud or TTT.

Up. Please review the PR.

Not applicable


How to change screen Res

Is it possible to adapt fztea to 720x720px diplay?

I'm afraid that changing the resolution of fztea isn't that easy. It requires a grid of at least 128x32 cells to draw the TUI and since you can't paint fractions of terminal cells (at least not with a text based method), you can't really adapt the TUI to a screen resolution.
To be honest, I never used fztea on a screen smaller than 1920x1080p. Is the TUI to big for 720x720p display?


Feature/wsdev 865 heading

Created Test for heading component

Please, resolve the conflicts :)

Looks great. Great job!


ci for local docker tests

Current dependencies on/for this PR:

main

PR #217   👈

This stack of pull requests is managed by Graphite.

Merge activity

Dec 13, 7:00 PM: @@dongreenberg started a stack merge that includes this pull request via Graphite.


Any error satisfies ErrNotExist

What version of the package are you using?
2f78e52
What are you trying to do?
I am working on a module implementing the Storage interface. While testing my code, I noticed that any error satisfies the ErrNotExist interface. The following code is always true regardless of the error:
if _, ok := err.(certmagic.ErrNotExist); ok {
    // this is always true!
}

What steps did you take?
Here is an example to illustrate the issue
https://go.dev/play/p/u-eYGshvKDp
How do you think this should be fixed?
ErrNotExist should not be an interface.

Oops. Thanks for pointing that out. :sweat_smile: That's kinda embarrassing.
When I first wrote CertMagic, the io/fs package did not exist (heh). Nor did errors.Is(). Now, though, I wonder if we could use fs.ErrNotExist instead.

@chaudyg Can you give #170 a look when you have a chance?


F# Option type is not supported

Given model like this
type C = {
    D: Nullable<int>;
    E: Option<int>;
}

Swashbuckle fails to recognize Microsoft.FSharp.Core.Option type as the idiomatic F# equivalent to System.Nullable: it generates following docs:
"c": {
    "d": 0,
    "e": {}
}

... and outputs following model:
C {
    d (integer, optional, read only),
    e (FSharpOption[Int32], optional, read only)
}

I think it should be
"c": {
    "d": 0,
    "e": 0
}

and
C {
    d (integer, optional, read only),
    e (integer, optional, read only)
}

respectively.

You need to contribute some filter. I think it is an ISchemaFilter
https://github.com/domaindrivendev/Swashbuckle.AspNetCore#schema-filters

@domaindrivendev
I am using version 5.5.1 of Swashbuckle and this appears to be an issue again:
type UserItem =
    { id: string option
      ``type``: string option
      directoryId: string option
      graphUserId: string option
      clients: string list option }

[<SwaggerOperation(Summary = "Create a new user", Tags = [| "Directory" |])>]
[<SwaggerResponse(200, "The new user", typeof<UserItem>)>]
[<HttpPost>]
member this.CreateUser([<FromBody>] user: UserItem) =
    async {
       ...
       return OkObjectResult(user) :> IActionResult
    }

For those who're facing this issue - I just wrote a ISchemaFilter as a workaround https://gist.github.com/danslapman/5ac4f9bc6fd69b5d36f3fae15d940c94


ci: bump alpha release for breaking change

Automatically detect breaking changes based on commit messages
and bump the alpha release number accordingly.
E.g. v0.23.1-alpha.1 will be bumped to v0.24.0-alpha.0 if any commit
since v0.23.0 has a breaking change.

I'm not 100% sure of the right syntax for running a script from the workflow step is correct or if there's something extra I need to specify.

I'll test this.


Formly Material - Validation error message doesn't seem to show

I'm submitting a ...  (check one with "x")
[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request

Current behavior
When configuring formly as follows:
{
  key: 'name',
  type: 'input',
  templateOptions: {
    label: 'Name (required)',
    required: true
  }
}

..the form is properly invalidated, but the error message doesn't display. I'm using Angular Material here.


[MARLIN-511] dashboards not showing

Kpi does not have a name attribute -- causes 500 error.
Contingent on: https://github.com/maestrano/mnoe-admin-panel/pull/349

@alexmaestrano @paulstuartparker @ouranos
plz review.

@iseessel @alexmaestrano back merging this one is 4.0 as it's affecting jpiv1
5.0 is basically 4.0 + jpiv2.
So change affecting jpiv1 should go in 4.0 and 4.0 merged in 5.0


Vector Clock: Fix problem with "Bangle.CLOCK"

https://github.com/espruino/BangleApps/issues/1437

Thanks!


pull request for e2e test at 02/05/2017 21:56:06

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


adds menuconfig.sh, deploy.sh, applies fixes

Streamlines configuring and deploying the app.
This allows repeatable edit->deploy cycles on MacOS M1 Ventura - 13.0.1 (22A400).
Fixes Applied:
Installing, building, deploying the app will fail on a compontent.hash not being the expected value. The work around is to touch and remove the file before running commands. This method was recommend by the tools themseleves when they abort.
The environment activation.sh puts in an include guard to ensure the idf.py environment is activated once.
This system is able to build and deploy to a WT32-SCO-PLUS board. I have tested the WT32-SCO (non plus) and it fails to install because it's missing #defines for one of the GPIO pins. I'm investigating fixes for this.

This system is able to build and deploy to a WT32-SCO-PLUS board. I have tested the WT32-SCO (non plus) and it fails to install because it's missing #defines for one of the GPIO pins. I'm investigating fixes for this.

This is because you need to delete the build folder and again run idf.py menuconfig to select the correct device. This is important because WT32-SC01 uses ESP32 and WT32-SC01 Plus uses ESP32-S3.
I have already mentioned it here https://github.com/sukesh-ak/ESP32-TUX/issues/16

And just to let you know, I have tested with all 4 supported devices listed in the README.md file.

Have started working on the Documentation Wiki. Will get it completed by weekend.
https://github.com/sukesh-ak/ESP32-TUX/wiki
Appreciate your help and contributions.
Have added credits on the Wiki as well.

There's a bunch of foot guns that I keep hitting trying to get this working. Things go wrong and I have trouble trying to figure out how to take corrective action, but I'm able to work through it pretty ok.
I think that what is needed is to take all the manual build steps and turn them into scripts.
My current fork I've got

config.bat/.sh

Configures the devices with set-target and then menuconfig

deploy.bat/.sh

Compiles and then deploys the device

activate.bat/.sh

Activates the current environment (from the default installation paths) and includes guards to prevent double environment activation.

For some reason, at every step of the config/build/deploy process I have to delete the components.hash on both mac and windows. Fortunately the scripts allow me to do this painlessly and serves as a nice abstraction layer.
I find that automating the installation process truly reduces the friction of setup and install. If you allow me, I would like to merge my changes into this repo. It's obvious you are an expert on the ESP32 and have done some great work, I'm about one month into ESP32 dev so I have a more naive knowledge approach that more closely matches the experience of the target audience for this open source project. This audience isn't really that aware of how ESP32 idf.py works that well and is more likely is trying to use VSCode. Giving them a script to configure and deploy the code to a working device very quickly would really open up this project to a much wider audience and allow it to take off. It also brings the project closer to have CI testing on each push/pull review which I think would help catch bugs like the ones I'm facing on Mac/Windows.
If you don't want these changes, this is totally fine. But I'd like to contribute back. This WT32-SCO(+) is a great little device and there is a total lack of quick solutions to get a great looking GUI up and running on it, so I think this repo really hits the sweet spot, but the barrier for entry needs to come down a little.

Also, I realize that my CL history here is a little dirty. I may just go ahead and save everything to a folder and then recreate the fork so that the entire history is submitted as one PR.

How do I run the business logic loop in this demo?
When I do the following in app_main()
    while (true) {
        vTaskDelay(5 / portTICK_PERIOD_MS);
    }

The watch dog timer immediately halts the program. Do I need to run all my business logic via xTaskCreate?

...i figured it out

...i figured it out

How do I run the business logic loop in this demo?
When I do the following in app_main()
    while (true) {
        vTaskDelay(5 / portTICK_PERIOD_MS);
    }

The watch dog timer immediately halts the program. Do I need to run all my business logic via xTaskCreate?

Please take some time to understand the code.
Check how Remote screen is shown, Don't touch the code related to loops etc which will get you into trouble.

Okay some questions here on the layout of the project:

Why so many uses of *.hpp files instead of h/cpp units?
Is there a way to reduce the size of the framebuffer to increase speed? I tried using the menuconfig to use one byte color but the colors don't change nor the performance.

Okay some questions here on the layout of the project:

Why so many uses of *.hpp files instead of h/cpp units?

When you are developing with cmake, sometimes its easier to use .hpp so that it gets included by referring it in source code.

Is there a way to reduce the size of the framebuffer to increase speed? I tried using the menuconfig to use one byte color but the colors don't change nor the performance.

Read my previous comment.

@zackees
I have added video walkthrough of Clone, Build and Flash for the project in the readme.
It's pretty straight forward with just 3 commands. Nothing complicated.

Please feel free to use Discussion option of the project for questions if any.
https://github.com/sukesh-ak/ESP32-TUX/discussions
All the basics of using ESP32-TUX project is explained in Wiki (will be improving it further soon)
https://github.com/sukesh-ak/ESP32-TUX/wiki
Closing this PR, since there is no reason to create another script which complicate things.
Btw, idf.py itself is a python wrapper on top of esptool to get everything done easily.
I highly appreciate your efforts. Thank you.


RBD: getImageInfo() on rbd images on which flattening is in progress throws ErrImageNotFound

Running getImageInfo() may return ErrImageNotFound when rbd images are undergoing flattening operation.
https://github.com/ceph/ceph-csi/blob/43f753760b0800beb023de066ff33e850fb4189e/internal/rbd/rbd_util.go#L1292
We need to try to do cleanup when we encounter ErrImageNotFound since it maybe unreliable in such cases

Ceph exec logs
root@rook-ceph-tools-7b96766574-wh7sf /]# ceph rbd task add flatten replicapool/tmp
{"sequence": 9, "id": "e2a2df32-3edb-48c4-b538-a41985232e99", "message": "Flattening image replicapool/tmp", "refs": {"action": "flatten", "pool_name": "replicapool", "pool_namespace": "", "image_name": "tmp", "image_id": "41c9e3608f0b"}}
^[[A[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten, operations
        op_features: clone-child
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021
        parent: replicapool/csi-vol-673a80bb-eea1-11eb-80f6-0242ac110006@18f674b3-62f5-4f3c-b248-add99476c0c0
        overlap: 1 GiB
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
2021-07-27T11:31:04.642+0000 7f0802fef700 -1 librbd::image::OpenRequest: failed to set image snapshot: (2) No such file or directory
2021-07-27T11:31:04.642+0000 7f0802fef700 -1 librbd::image::RefreshParentRequest: failed to open parent image: (2) No such file or directory
2021-07-27T11:31:04.642+0000 7f0802fef700 -1 librbd::image::RefreshRequest: failed to refresh parent image: (2) No such file or directory
2021-07-27T11:31:04.642+0000 7f0802fef700 -1 librbd::image::OpenRequest: failed to refresh image: (2) No such file or directory
rbd: error opening image tmp: (2) No such file or directory
[root@rook-ceph-tools-7b96766574-wh7sf /]# rbd info replicapool/tmp
rbd image 'tmp':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 41c9e3608f0b
        block_name_prefix: rbd_data.41c9e3608f0b
        format: 2
        features: layering, deep-flatten
        op_features:
        flags:
        create_timestamp: Tue Jul 27 11:29:40 2021
        access_timestamp: Tue Jul 27 11:29:40 2021
        modify_timestamp: Tue Jul 27 11:29:40 2021

This was the reason for failure at https://github.com/ceph/ceph-csi/issues/1883 and PVC-PVC clone stale images which I observed in a ci run.
Some of the scenarios this can occur:

multiple simultaneous snapshot/restore/pvc-pvc clone > minsnap limit
provisioner pod restart at particular steps
When we need force flatten at pvc restore/snapshot  into another pool / when we hit clonedepth hard limit

Cephcsi uses getImageInfo() at various places listed below.
If it returns false positive  ErrImageNotFound in situations where the image is still present(but undergoing flattening), it will leave stale images in ceph cluster.
https://github.com/ceph/ceph-csi/search?q=getImageInfo()
Operations which may leave stale images are create/delete Snapshot, create PVC from data source(PVC or snapshot)& delete PVC created from another data source.
Note: Task to flatten images is added by cephcsi when we hit snap / imageclonedepth limit. (So this combination occurring together may not be common)

This waiting for a fix at ceph layer.

https://jenkins-ceph-csi.apps.ocp.ci.centos.org/blue/rest/organizations/jenkins/pipelines/mini-e[…]8s-1.23/runs/218/nodes/103/steps/106/log/?start=0
from #2754
image list:
csi-vol-7f6b1b8d-721d-11ec-a974-52723c9f3c2f
csi-vol-8ae3a235-721d-11ec-a974-52723c9f3c2f
csi-vol-8ae3a235-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-8b38ff57-721d-11ec-a974-52723c9f3c2f
csi-vol-8b38ff57-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-8b579fd2-721d-11ec-a974-52723c9f3c2f
csi-vol-8b579fd2-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-8bb95bc5-721d-11ec-a974-52723c9f3c2f
csi-vol-8bb95bc5-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-8c0c4d7d-721d-11ec-a974-52723c9f3c2f
csi-vol-8c0c4d7d-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-8c188f09-721d-11ec-a974-52723c9f3c2f
csi-vol-8c188f09-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-9619a3a9-721d-11ec-a974-52723c9f3c2f
csi-vol-9619a3a9-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-9622c1e0-721d-11ec-a974-52723c9f3c2f
csi-vol-9622c1e0-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-96272a5d-721d-11ec-a974-52723c9f3c2f
csi-vol-96272a5d-721d-11ec-a974-52723c9f3c2f-temp
csi-vol-9c391ae8-721d-11ec-a974-52723c9f3c2f
csi-vol-9c391ae8-721d-11ec-a974-52723c9f3c2f-temp

stray image: csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp
[rakshith@fedora kubernetes-csi-addons]$ cat log.txt | grep "ID: 152 Req-ID"
I0110 13:59:35.234075       1 utils.go:191] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 GRPC call: /csi.v1.Controller/CreateVolume
I0110 13:59:35.234412       1 utils.go:195] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 GRPC request: {"accessibility_requirements":{"preferred":[{"segments":{"topology.rbd.csi.ceph.com/region":"testregion","topology.rbd.csi.ceph.com/zone":"testzone"}}],"requisite":[{"segments":{"topology.rbd.csi.ceph.com/region":"testregion","topology.rbd.csi.ceph.com/zone":"testzone"}}]},"capacity_range":{"required_bytes":1073741824},"name":"pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36","parameters":{"clusterID":"c99878bd-af0b-4010-bebd-c71cd53e425d","csi.storage.k8s.io/pv/name":"pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36","csi.storage.k8s.io/pvc/name":"rbd-13182","csi.storage.k8s.io/pvc/namespace":"rbd-1318","dataPool":"ec-pool","imageFeatures":"layering","pool":"replicapool"},"secrets":"***stripped***","volume_capabilities":[{"AccessType":{"Mount":{"fs_type":"ext4","mount_flags":["discard"]}},"access_mode":{"mode":1}}],"volume_content_source":{"Type":{"Volume":{"volume_id":"0001-0024-c99878bd-af0b-4010-bebd-c71cd53e425d-0000000000000002-7f6b1b8d-721d-11ec-a974-52723c9f3c2f"}}}}
I0110 13:59:35.234747       1 rbd_util.go:1296] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 setting disableInUseChecks: false image features: [layering] mounter: rbd
I0110 13:59:35.236069       1 omap.go:87] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 got omap values: (pool="replicapool", namespace="", name="csi.volume.7f6b1b8d-721d-11ec-a974-52723c9f3c2f"): map[csi.imageid:11dde88bffdd csi.imagename:csi-vol-7f6b1b8d-721d-11ec-a974-52723c9f3c2f csi.volname:pvc-f99fec9c-8c83-458c-80f8-4d33e2b5ad8d csi.volume.owner:rbd-1318]
I0110 13:59:35.253669       1 omap.go:87] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 got omap values: (pool="replicapool", namespace="", name="csi.volumes.default"): map[]
I0110 13:59:35.287632       1 rbd_util.go:816] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 clone depth is (0), configured softlimit (2) and hardlimit (6) for replicapool/csi-vol-7f6b1b8d-721d-11ec-a974-52723c9f3c2f
I0110 13:59:35.308288       1 omap.go:155] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 set omap keys (pool="replicapool", namespace="", name="csi.volumes.default"): map[csi.volume.pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36:8afbd20e-721d-11ec-a974-52723c9f3c2f])
I0110 13:59:35.311266       1 omap.go:155] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 set omap keys (pool="replicapool", namespace="", name="csi.volume.8afbd20e-721d-11ec-a974-52723c9f3c2f"): map[csi.imagename:csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f csi.volname:pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 csi.volume.owner:rbd-1318])
I0110 13:59:35.311294       1 rbd_journal.go:482] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 generated Volume ID (0001-0024-c99878bd-af0b-4010-bebd-c71cd53e425d-0000000000000002-8afbd20e-721d-11ec-a974-52723c9f3c2f) and image name (csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f) for request name (pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36)
I0110 13:59:35.311503       1 rbd_util.go:1375] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 rbd: snap create replicapool/@csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp using mon
I0110 13:59:35.930554       1 rbd_util.go:1434] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 rbd: clone replicapool/csi-vol-7f6b1b8d-721d-11ec-a974-52723c9f3c2f@csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp replicapool/csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp (features: [layering deep-flatten]) using mon rook-ceph-mon-a.rook-ceph.svc.cluster.local:6789
I0110 13:59:36.049488       1 rbd_util.go:1388] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 rbd: snap rm replicapool/csi-vol-7f6b1b8d-721d-11ec-a974-52723c9f3c2f@csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp using mon
I0110 13:59:36.157205       1 rbd_util.go:816] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 clone depth is (1), configured softlimit (4) and hardlimit (8) for replicapool/csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp
I0110 13:59:36.157242       1 rbd_util.go:1375] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 rbd: snap create replicapool/@csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f using mon
I0110 13:59:37.043532       1 rbd_util.go:1434] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 rbd: clone replicapool/csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp@csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f replicapool/csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f (features: [layering]) using mon rook-ceph-mon-a.rook-ceph.svc.cluster.local:6789, data pool ec-pool
E0110 13:59:37.109442       1 snapshot.go:43] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 failed to clone rbd image csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f from snapshot csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f: failed to create rbd clone: RBD image not found
I0110 13:59:37.109489       1 rbd_util.go:1388] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 rbd: snap rm replicapool/csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f-temp@csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f using mon
E0110 13:59:40.654609       1 clone.go:158] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 failed to get volume id replicapool/csi-vol-8afbd20e-721d-11ec-a974-52723c9f3c2f: image not found: RBD image not found
I0110 13:59:40.678940       1 omap.go:123] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 removed omap keys (pool="replicapool", namespace="", name="csi.volumes.default"): [csi.volume.pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36]
E0110 13:59:40.679011       1 utils.go:200] ID: 152 Req-ID: pvc-d9153236-16a8-447f-bd2f-b2fa6c8f5d36 GRPC error: image not found: RBD image not found

since received error is rbd image not found, no cleanup of tmp clone  is done
cc @ceph/ceph-csi-contributors ,@idryomov

Ceph tracker : https://tracker.ceph.com/issues/52810

Ceph tracker : https://tracker.ceph.com/issues/52810

moving out of 3.6, depends on Ceph fix

https://tracker.ceph.com/issues/52810
This has got a fix in ceph master
quincy pr https://tracker.ceph.com/issues/52810
pacific pr https://github.com/ceph/ceph/pull/47995
Next quincy release will have this fix.

https://tracker.ceph.com/issues/52810
This has got a fix in ceph master quincy pr https://tracker.ceph.com/issues/52810 pacific pr ceph/ceph#47995
Next quincy release will have this fix.

The latest qunicy release has the fix.
cephcsi v3.7.2 is built on this image.
Closing this issue as done.

https://github.com/ceph/ceph-csi/blob/cd2e25c290a642154c25c4bf42e739f39c1d51bd/e2e/rbd.go#L88 <- not sure but this line is marked as "set to 10 when #2327 is fixed". Should we set it to 10?!

https://github.com/ceph/ceph-csi/blob/cd2e25c290a642154c25c4bf42e739f39c1d51bd/e2e/rbd.go#L88
<- not sure but this line is marked as "set to 10 when #2327 is fixed". Should we set it to 10?!

Thanks for noticing. That was done to avoid hitting this issue in ci.
I think it is good idea to increase the count at one of the places where that variable is used to a higher number.
Increasing it at all places may unnecessarily add too much delay to the ci.
@Spacefish do you want to send a pr to introduce a new variable set to 10 and use it in one of the places where the current default is used ?


Add Ambie to Scoop & Chocolatey.

Fairly self-explanatory.

Unfortunately, I don't believe scoop and Chocolatey have support for MSIX packaging. Ambie requires MSIX because it runs on Windows and Xbox, and Xbox requires MSIX for app distribution.
If you'd like to install Ambie via command line, you can use winget.


Failing to deploy with MEDIACONNECT source

Failing to deploy stack with MediaConnect source. Exception is not descriptive:
2021-06-23T16:34:43.379+03:00	START RequestId: 8817d515-64df-43b2-8b85-adf9c45ea01e Version: $LATEST
2021-06-23T16:34:43.379+03:00	Request::Create Resource:: MediaLiveInput
2021-06-23T16:34:43.379+03:00	Creating::MEDIACONNECT Input
2021-06-23T16:34:43.379+03:00	Exception: 'RoleArn'
2021-06-23T16:34:43.651+03:00	Status code: OK
2021-06-23T16:34:43.651+03:00	'RoleArn'
2021-06-23T16:34:43.653+03:00	END RequestId: 8817d515-64df-43b2-8b85-adf9c45ea01e

From https://github.com/awslabs/live-streaming-with-automated-multi-language-subtitling/blob/master/source/customresources/custom-resource-py/lib/medialive.py :
if config['Type'] == 'MEDIACONNECT':
        response = medialive.create_input(
            Name = config['StreamName'],
            Type = config['Type'],
            RoleArn = config['RoleArn'],
            MediaConnectFlows = [
                {
                    'FlowArn': config['PriMediaConnectArn']
                }
            ]
        )

RoleArn is not being set anywhere. Maybe it is the issue?

The RoleArn is passed in as part of the event['ResourceProperties'] this should be working with the newest update. Please reopen if you are still seeing this issue.


fix jodeTime jpa externalizer

using openJPAs externalizer together with temporal annotation cases trouble

try char[] as return value of externalizer method

Done. Cause was a missing @Persistance annotation on the DateTime members...