Possible bug related to isolates

Hey Guys,
I am digging further into an issue that maybe affecting the performance(and functionality) from all apps.
When we create a new isolate in flutter (for example when we are using firebase messaging) our plugins are all registered and allocated in different memory spaces so for example,
when we are using N plugins and we are using Firebase Messaging(that uses a new isolate)  in reality we are registering(onAttachedToEngine is running for)  N*(isolates+1) plugins?
If so we should be able to Enable/disable plugins per isolate no? We don't need all plugins registered in each isolate as this affect performance.
I Have an issue that in my plugin onAttachedToEngine was checking if channel == null and was registering and saving to a variable but then when we started the Push notification isolate before the app(that means receiving a push and clicking on it), i was not able to use my plugin because the channel was registered to the Push Isolate.
I Managed to fix by checking if we have already attached to activity but this is a workaround and IMHO we should be able to register/unregister plugin on isolates and/or recognizes on the onAttachedToEngine the "id" from the isolate and then we can do the logic in our app.

Hi, can someone take a look at this issue?

@atrope
Sorry for picking this issue a bit late. Can you provide your flutter doctor -v, a minimal reproducible code sample that possibly shows the issue along with expected and actual result ?
That way, it'll help to address this issue properly.

@darshankawar
Just run the firebase_messaging example adding any plugin in pubspec, for example this one:
  social_share:
    git:
      url: https://github.com/SuaMusica/social_share.git
      ref: feature/nullSafety

I Just added Logs when onAttachedToEngine is run.
Here is the forked example with only this change:
https://github.com/atrope/flutterfire/tree/master/packages/firebase_messaging/firebase_messaging/example
We can see that whenever the isolate is run we see onAttachedToEngine printed in Logcat(This is example is run twice, one for main app and another one after the isolate is created).
We should be able to "blacklist" all plugins from registering if we do not need them in said isolate for example because this can cause trouble by a plugin being registered N Times and being requested things more than once in a channel.
Log:

2022-02-14 15:06:05.282 19691-19691/? I/ssaging.exampl: Late-enabling -Xcheck:jni
2022-02-14 15:06:05.304 19691-19691/? E/USNET: USNET: appName: io.flutter.plugins.firebase.messaging.example
2022-02-14 15:06:05.306 19691-19691/? D/ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
2022-02-14 15:06:05.308 19691-19691/? D/ActivityThread: setConscryptValidator
2022-02-14 15:06:05.308 19691-19691/? D/ActivityThread: setConscryptValidator - put
2022-02-14 15:06:05.277 19691-19691/? I/libc: SetHeapTaggingLevel: tag level set to 0
2022-02-14 15:06:05.282 19691-19691/? I/ssaging.exampl: Late-enabling -Xcheck:jni
2022-02-14 15:06:05.304 19691-19691/? E/USNET: USNET: appName: io.flutter.plugins.firebase.messaging.example
2022-02-14 15:06:05.306 19691-19691/? D/ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
2022-02-14 15:06:05.308 19691-19691/? D/ActivityThread: setConscryptValidator
2022-02-14 15:06:05.308 19691-19691/? D/ActivityThread: setConscryptValidator - put
2022-02-14 15:06:05.277 19691-19691/? I/libc: SetHeapTaggingLevel: tag level set to 0
2022-02-14 15:06:05.282 19691-19691/? I/ssaging.exampl: Late-enabling -Xcheck:jni
2022-02-14 15:06:05.336 19691-19691/io.flutter.plugins.firebase.messaging.example D/ActivityThread: handleBindApplication()++ app=io.flutter.plugins.firebase.messaging.example
2022-02-14 15:06:05.304 19691-19691/? E/USNET: USNET: appName: io.flutter.plugins.firebase.messaging.example
2022-02-14 15:06:05.306 19691-19691/? D/ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
2022-02-14 15:06:05.308 19691-19691/? D/ActivityThread: setConscryptValidator
2022-02-14 15:06:05.308 19691-19691/? D/ActivityThread: setConscryptValidator - put
2022-02-14 15:06:05.336 19691-19691/io.flutter.plugins.firebase.messaging.example D/ActivityThread: handleBindApplication()++ app=io.flutter.plugins.firebase.messaging.example
2022-02-14 15:06:05.336 19691-19691/io.flutter.plugins.firebase.messaging.example D/ActivityThread: handleBindApplication()++ app=io.flutter.plugins.firebase.messaging.example
2022-02-14 15:06:05.337 19691-19691/io.flutter.plugins.firebase.messaging.example D/CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10661; state: DISABLED
2022-02-14 15:06:05.351 19691-19691/io.flutter.plugins.firebase.messaging.example D/ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
2022-02-14 15:06:05.444 19691-19691/io.flutter.plugins.firebase.messaging.example V/GraphicsEnvironment: ANGLE Developer option for 'io.flutter.plugins.firebase.messaging.example' set to: 'default'
2022-02-14 15:06:05.444 19691-19691/io.flutter.plugins.firebase.messaging.example V/GraphicsEnvironment: App is not on the allowlist for updatable production driver.
2022-02-14 15:06:05.445 19691-19691/io.flutter.plugins.firebase.messaging.example D/LoadedApk: LoadedApk::makeApplication() appContext.mOpPackageName=io.flutter.plugins.firebase.messaging.example appContext.mBasePackageName=io.flutter.plugins.firebase.messaging.example
2022-02-14 15:06:05.445 19691-19691/io.flutter.plugins.firebase.messaging.example D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2022-02-14 15:06:05.458 19691-19691/io.flutter.plugins.firebase.messaging.example D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2022-02-14 15:06:05.461 19691-19691/io.flutter.plugins.firebase.messaging.example W/FirebaseApp: Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project.
2022-02-14 15:06:05.461 19691-19691/io.flutter.plugins.firebase.messaging.example I/FirebaseInitProvider: FirebaseApp initialization unsuccessful
2022-02-14 15:06:05.462 19691-19691/io.flutter.plugins.firebase.messaging.example D/FLTFireContextHolder: received application context.
2022-02-14 15:06:05.463 19691-19691/io.flutter.plugins.firebase.messaging.example D/ActivityThread: handleBindApplication() --
2022-02-14 15:06:05.611 19691-19736/io.flutter.plugins.firebase.messaging.example I/ResourceExtractor: Found extracted resources res_timestamp-1-1644861732355
2022-02-14 15:06:05.656 19691-19691/io.flutter.plugins.firebase.messaging.example D/PathProviderPlugin: Use TaskQueues.
2022-02-14 15:06:05.657 19691-19691/io.flutter.plugins.firebase.messaging.example D/SocialShare: onAttachedToEngine
2022-02-14 15:06:05.672 19691-19691/io.flutter.plugins.firebase.messaging.example W/ssaging.exampl: Accessing hidden method Landroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J (unsupported,test-api, reflection, allowed)
2022-02-14 15:06:05.672 19691-19691/io.flutter.plugins.firebase.messaging.example W/ssaging.exampl: Accessing hidden method Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J (unsupported, reflection, allowed)
2022-02-14 15:06:05.672 19691-19691/io.flutter.plugins.firebase.messaging.example W/ssaging.exampl: Accessing hidden field Landroid/view/accessibility/AccessibilityNodeInfo;->mChildNodeIds:Landroid/util/LongArray; (unsupported, reflection, allowed)
2022-02-14 15:06:05.672 19691-19691/io.flutter.plugins.firebase.messaging.example W/ssaging.exampl: Accessing hidden method Landroid/util/LongArray;->get(I)J (unsupported, reflection, allowed)
2022-02-14 15:06:05.677 19691-19691/io.flutter.plugins.firebase.messaging.example W/FlutterActivityAndFragmentDelegate: A splash screen was provided to Flutter, but this is deprecated. See flutter.dev/go/android-splash-migration for migration steps.
2022-02-14 15:06:05.681 19691-19691/io.flutter.plugins.firebase.messaging.example I/DecorView: [INFO] isPopOver=false, config=true
2022-02-14 15:06:05.681 19691-19691/io.flutter.plugins.firebase.messaging.example I/DecorView: updateCaptionType >> DecorView@2014069[], isFloating=false, isApplication=true, hasWindowControllerCallback=true, hasWindowDecorCaption=false
2022-02-14 15:06:05.681 19691-19691/io.flutter.plugins.firebase.messaging.example D/DecorView: setCaptionType = 0, this = DecorView@2014069[]
2022-02-14 15:06:05.690 19691-19691/io.flutter.plugins.firebase.messaging.example I/MSHandlerLifeCycle: isMultiSplitHandlerRequested: ignored. pkg=io.flutter.plugins.firebase.messaging.example parent=null callers=com.android.internal.policy.DecorView.setVisibility:4216 android.app.ActivityThread.handleResumeActivity:5285 android.app.servertransaction.ResumeActivityItem.execute:54 android.app.servertransaction.ActivityTransactionItem.execute:45 android.app.servertransaction.TransactionExecutor.executeLifecycleState:176
2022-02-14 15:06:05.690 19691-19691/io.flutter.plugins.firebase.messaging.example I/MSHandlerLifeCycle: removeMultiSplitHandler: no exist. decor=DecorView@2014069[]
2022-02-14 15:06:05.704 19691-19691/io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: setView = com.android.internal.policy.DecorView@2014069 TM=true
2022-02-14 15:06:05.705 19691-19691/io.flutter.plugins.firebase.messaging.example I/MSHandlerLifeCycle: isMultiSplitHandlerRequested: windowingMode=1 isFullscreen=true isPopOver=false isHidden=false skipActivityType=false isHandlerType=true this: DecorView@2014069[FlutterActivity]
2022-02-14 15:06:05.705 19691-19691/io.flutter.plugins.firebase.messaging.example I/MSHandlerLifeCycle: removeMultiSplitHandler: no exist. decor=DecorView@2014069[FlutterActivity]
2022-02-14 15:06:05.735 19691-19691/io.flutter.plugins.firebase.messaging.example I/SurfaceView: onWindowVisibilityChanged(0) true io.flutter.embedding.android.FlutterSurfaceView{5b32749 V.E...... ......I. 0,0-0,0} of ViewRootImpl@77671ab[FlutterActivity]
2022-02-14 15:06:05.745 19691-19754/io.flutter.plugins.firebase.messaging.example I/flutter: Observatory listening on http://<IP_ADDRESS>:35291/dhJh00f26e4=/
2022-02-14 15:06:05.752 19691-19691/io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: Relayout returned: old=(0,0,1080,2400) new=(0,0,1080,2400) req=(1080,2400)0 dur=13 res=0x7 s={true<PHONE_NUMBER>72} ch=true fn=-1
2022-02-14 15:06:05.753 19691-19725/io.flutter.plugins.firebase.messaging.example D/hw-ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
2022-02-14 15:06:05.753 19691-19691/io.flutter.plugins.firebase.messaging.example I/SurfaceView: windowStopped(false) true io.flutter.embedding.android.FlutterSurfaceView{5b32749 V.E...... ......ID 0,0-1080,2361} of ViewRootImpl@77671ab[FlutterActivity]
2022-02-14 15:06:05.753 19691-19691/io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] dp(1) 1 android.view.ViewRootImpl.reportNextDraw:11233 android.view.ViewRootImpl.performTraversals:4075 android.view.ViewRootImpl.doTraversal:2819
2022-02-14 15:06:05.756 19691-19691/io.flutter.plugins.firebase.messaging.example I/SurfaceView: updateSurface: mVisible = true mSurface.isValid() = true
2022-02-14 15:06:05.757 19691-19691/io.flutter.plugins.firebase.messaging.example I/SurfaceView: updateSurface: mSurfaceCreated = false surfaceChanged = true visibleChanged = true
2022-02-14 15:06:05.757 19691-19691/io.flutter.plugins.firebase.messaging.example I/SurfaceView: surfaceCreated 1 #8 io.flutter.embedding.android.FlutterSurfaceView{5b32749 V.E...... ......ID 0,0-1080,2361}
2022-02-14 15:06:05.764 19691-19691/io.flutter.plugins.firebase.messaging.example I/SurfaceView: surfaceChanged (1080,2361) 1 #8 io.flutter.embedding.android.FlutterSurfaceView{5b32749 V.E...... ......ID 0,0-1080,2361}
2022-02-14 15:06:05.764 19691-19691/io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] dp(2) 1 android.view.SurfaceView.updateSurface:1369 android.view.SurfaceView.lambda$new$1$SurfaceView:253 android.view.SurfaceView$$ExternalSyntheticLambda2.onPreDraw:2
2022-02-14 15:06:05.764 19691-19691/io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] pdf(1) 1 android.view.SurfaceView.notifyDrawFinished:607 android.view.SurfaceView.performDrawFinished:594 android.view.SurfaceView.$r8$lambda$st27mCkd9jfJkTrN_P3qIGKX6NY:0
2022-02-14 15:06:05.764 19691-19691/io.flutter.plugins.firebase.messaging.example D/ViewRootImpl@77671ab[FlutterActivity]: Creating frameCompleteCallback mNextDrawUseBlastSync=false mReportNextDraw=true commitCallbacks size=0
2022-02-14 15:06:05.787 19691-19725/io.flutter.plugins.firebase.messaging.example D/ViewRootImpl@77671ab[FlutterActivity]: Received frameCompleteCallback frameNum=1
2022-02-14 15:06:05.793 19691-19691/io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] pdf(0) 1 android.view.ViewRootImpl.lambda$createFrameCompleteCallback$3$ViewRootImpl:4833 android.view.ViewRootImpl$$ExternalSyntheticLambda15.run:6 android.os.Handler.handleCallback:938
2022-02-14 15:06:05.793 19691-19691/io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] rdf()
2022-02-14 15:06:05.807 19691-19691/io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
2022-02-14 15:06:05.809 19691-19691/io.flutter.plugins.firebase.messaging.example D/InputMethodManager: startInputInner - Id : 0
2022-02-14 15:06:05.809 19691-19691/io.flutter.plugins.firebase.messaging.example I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2022-02-14 15:06:05.814 19691-19691/io.flutter.plugins.firebase.messaging.example D/InputMethodManager: startInputInner - Id : 0
2022-02-14 15:06:06.000 19691-19766/io.flutter.plugins.firebase.messaging.example I/FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT]
2022-02-14 15:06:06.029 19691-19737/io.flutter.plugins.firebase.messaging.example W/FlutterJNI: FlutterJNI.loadLibrary called more than once
2022-02-14 15:06:06.029 19691-19736/io.flutter.plugins.firebase.messaging.example I/ResourceExtractor: Found extracted resources res_timestamp-1-1644861732355
2022-02-14 15:06:06.029 19691-19778/io.flutter.plugins.firebase.messaging.example W/FlutterJNI: FlutterJNI.prefetchDefaultFontManager called more than once
2022-02-14 15:06:06.031 19691-19691/io.flutter.plugins.firebase.messaging.example W/FlutterJNI: FlutterJNI.init called more than once
2022-02-14 15:06:06.033 19691-19691/io.flutter.plugins.firebase.messaging.example I/FLTFireBGExecutor: Creating background FlutterEngine instance, with args: []
2022-02-14 15:06:06.044 19691-19691/io.flutter.plugins.firebase.messaging.example D/PathProviderPlugin: Use TaskQueues.
2022-02-14 15:06:06.044 19691-19691/io.flutter.plugins.firebase.messaging.example D/SocialShare: onAttachedToEngine
2022-02-14 15:06:06.267 19691-19691/io.flutter.plugins.firebase.messaging.example I/FLTFireMsgService: FlutterFirebaseMessagingBackgroundService started!
2022-02-14 15:06:06.700 19691-19738/io.flutter.plugins.firebase.messaging.example I/flutter: FCM Token: dQzJbBioQCGsRy62RJiGhn:APA91bFXbOxR0z6biwVbFYJbVrUHd4HvccnFfjsamDYT-i4avb5iQpi2K9OV9J_DST4dHX_grUciBU9V2y2sotnZg4l6wexELlOmYhGlVTJ2cB2AzPEE1GE7aNKnPMuQV0s7DqhcJdTi

You can even see that PathProviderPlugin is also started twice by the D/PathProviderPlugin: Use TaskQueues. debug message.

@atrope
Thanks for the update. Does this behavior occur only when you run firebase_messaging example ? or with other plugins too ?

@darshankawar this is related to any isolate.
I've put the messaging example because it was easier to setup and show

@atrope
Can you check if you are doing any activity inside MainActivity() ? Like below:
public class MainActivity extends FlutterActivity {
  // You can keep this empty class or remove it. Plugins on the new embedding
  // now automatically registers plugins.
}

@darshankawar  as you can see in the example i sent it doesn't even have  a MainActivity class.

@atrope
Is this happening in debug or in release mode ? Also, are you using --obfuscate ?
If so, if you don't use that flag, is the behavior expected ?

Happening in both, not using obfuscate.

@atrope
Please check this issue and see if it's related to your case.

hey @darshankawar it is not related.It is exactly the opposite.

Thanks for these details. Using the code sample and steps to replicate and running on Android, I do see the same log as reported and specially onAttachedEngine entries:
io.flutter.plugins.firebase.messaging.example D/ActivityThread: handleBindApplication()++ app=io.flutter.plugins.firebase.messaging.example
io.flutter.plugins.firebase.messaging.example D/ActivityThread: handleBindApplication()++ app=io.flutter.plugins.firebase.messaging.example
io.flutter.plugins.firebase.messaging.example D/CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10661; state: DISABLED
io.flutter.plugins.firebase.messaging.example D/ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
io.flutter.plugins.firebase.messaging.example V/GraphicsEnvironment: ANGLE Developer option for 'io.flutter.plugins.firebase.messaging.example' set to: 'default'
io.flutter.plugins.firebase.messaging.example V/GraphicsEnvironment: App is not on the allowlist for updatable production driver.
io.flutter.plugins.firebase.messaging.example D/LoadedApk: LoadedApk::makeApplication() appContext.mOpPackageName=io.flutter.plugins.firebase.messaging.example appContext.mBasePackageName=io.flutter.plugins.firebase.messaging.example
io.flutter.plugins.firebase.messaging.example D/NetworkSecurityConfig: No Network Security Config specified, using platform default
io.flutter.plugins.firebase.messaging.example D/NetworkSecurityConfig: No Network Security Config specified, using platform default
io.flutter.plugins.firebase.messaging.example W/FirebaseApp: Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project.
io.flutter.plugins.firebase.messaging.example I/FirebaseInitProvider: FirebaseApp initialization unsuccessful
io.flutter.plugins.firebase.messaging.example D/FLTFireContextHolder: received application context.
io.flutter.plugins.firebase.messaging.example D/ActivityThread: handleBindApplication() --
io.flutter.plugins.firebase.messaging.example I/ResourceExtractor: Found extracted resources res_timestamp-1-1644861732355
io.flutter.plugins.firebase.messaging.example D/PathProviderPlugin: Use TaskQueues.
io.flutter.plugins.firebase.messaging.example D/SocialShare: onAttachedToEngine
io.flutter.plugins.firebase.messaging.example I/SurfaceView: surfaceCreated 1 #8 io.flutter.embedding.android.FlutterSurfaceView{5b32749 V.E...... ......ID 0,0-1080,2361}
io.flutter.plugins.firebase.messaging.example I/SurfaceView: surfaceChanged (1080,2361) 1 #8 io.flutter.embedding.android.FlutterSurfaceView{5b32749 V.E...... ......ID 0,0-1080,2361}
io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] dp(2) 1 android.view.SurfaceView.updateSurface:1369 android.view.SurfaceView.lambda$new$1$SurfaceView:253 android.view.SurfaceView$$ExternalSyntheticLambda2.onPreDraw:2
io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] pdf(1) 1 android.view.SurfaceView.notifyDrawFinished:607 android.view.SurfaceView.performDrawFinished:594 android.view.SurfaceView.$r8$lambda$st27mCkd9jfJkTrN_P3qIGKX6NY:0
io.flutter.plugins.firebase.messaging.example D/ViewRootImpl@77671ab[FlutterActivity]: Creating frameCompleteCallback mNextDrawUseBlastSync=false mReportNextDraw=true commitCallbacks size=0
io.flutter.plugins.firebase.messaging.example D/ViewRootImpl@77671ab[FlutterActivity]: Received frameCompleteCallback frameNum=1
io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] pdf(0) 1 android.view.ViewRootImpl.lambda$createFrameCompleteCallback$3$ViewRootImpl:4833 android.view.ViewRootImpl$$ExternalSyntheticLambda15.run:6 android.os.Handler.handleCallback:938
io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: [DP] rdf()
io.flutter.plugins.firebase.messaging.example I/ViewRootImpl@77671ab[FlutterActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
io.flutter.plugins.firebase.messaging.example D/InputMethodManager: startInputInner - Id : 0
io.flutter.plugins.firebase.messaging.example I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
io.flutter.plugins.firebase.messaging.example D/InputMethodManager: startInputInner - Id : 0
io.flutter.plugins.firebase.messaging.example I/FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT]
io.flutter.plugins.firebase.messaging.example W/FlutterJNI: FlutterJNI.loadLibrary called more than once
io.flutter.plugins.firebase.messaging.example I/ResourceExtractor: Found extracted resources res_timestamp-1-1644861732355
io.flutter.plugins.firebase.messaging.example W/FlutterJNI: FlutterJNI.prefetchDefaultFontManager called more than once
io.flutter.plugins.firebase.messaging.example W/FlutterJNI: FlutterJNI.init called more than once
io.flutter.plugins.firebase.messaging.example I/FLTFireBGExecutor: Creating background FlutterEngine instance, with args: []
io.flutter.plugins.firebase.messaging.example D/PathProviderPlugin: Use TaskQueues.
io.flutter.plugins.firebase.messaging.example D/SocialShare: onAttachedToEngine
io.flutter.plugins.firebase.messaging.example I/FLTFireMsgService: FlutterFirebaseMessagingBackgroundService started!

 stable, master flutter doctor -v

[✓] Flutter (Channel stable, 2.10.1, on Mac OS X 10.15.4 19E2269 darwin-x64,
    locale en-GB)
    • Flutter version 2.10.1 at /Users/dhs/documents/fluttersdk/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision db747aa133 (5 days ago), 2022-02-09 13:57:35 -0600
    • Engine revision ab46186b24
    • Dart version 2.16.1
    • DevTools version 2.9.2

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

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

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 2.11.0-0.0.pre.612, on Mac OS X 10.15.4 19E2269
    darwin-x64, locale en-GB)
    • Flutter version 2.11.0-0.0.pre.612 at
      /Users/dhs/documents/fluttersdk/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision c50b02f2c3 (60 minutes ago), 2022-02-17 22:44:23 -0500
    • Engine revision 605454e201
    • Dart version 2.17.0 (build 2.17.0-118.0.dev)
    • DevTools version 2.10.0

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

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

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

cc @gaaclarke who may have the most background on plugin initialization.

Isolates spawned in Dart actually don't register plugins.  That is why a developer created flutter_isolates https://pub.dev/packages/flutter_isolate.  I suspect firebase_messaging may be doing a similar trick.  That means your problem with registering plugins multiple times isn't a Flutter issue, but a firebase_messaging issue.  Said differently, I don't think you could reproduce the issue without firebase_messaging.
I'd see if you can reproduce it without firebase_messaging.  If so, add the reproduction here.  If not, I'd file an issue against that package.

@gaaclarke I see that.. @darshankawar is it possible to move this issue to flutterfire repo? Or should i create the same issue linking to this one?

@atrope
Since flutterfire repo is outside of flutter, you'll need to file this separately here: https://github.com/FirebaseExtended/flutterfire/issues
I'll close this so you can create a new one and link it.


Updated data connector code with the fix of pagination and checkpoint related issue and repackaged it with v3 tool

Change(s):

Updated data connector code with the fix of pagination and checkpoint related issue and repackaged it with v3 tool

Reason for Change(s):

Issue with the pagination and some checkpointing

Version Updated:

Created and updated solution with the latest v3 tool and updated version to 3.0.0

Testing Completed:

Yes

Checked that the validations are passing and have addressed any issues that are present:

Yes

Hello @jayeshprajapaticrest Please create a custom table schema for BitSight_Alerts_CL under this folder .script/tests/KqlvalidationsTests/CustomTables
And this PR will investigated and will update about the same before 17 January, 2024.

Hello @jayeshprajapaticrest, Please try to resolve Code Ql errors and Proceed with the above requested changes.

Hello @jayeshprajapaticrest, Please try to resolve Code Ql errors and Proceed with the above requested changes.

@v-prasadboke We have fixed the codeQL erros and KQLValidation errors and updated the PR.
Thanks

Hello @jayeshprajapaticrest, Thanks for committing the requested changes. I'll take a look at it and come back to you by 23 January, 2024.

Hello @jayeshprajapaticrest, Can you share working images of function app. Thanks

Hello @jayeshprajapaticrest, We are waiting for the function app images

Hello @jayeshprajapaticrest, We are waiting for the function app images

@v-prasadboke
Please find attached screenshots of running function app.


Document forceTransactions (TBD)

Prisma Client now has a flag forceTransactions (temporary name, might be changed) that can be set to true in the constructor, to enable a "transaction mode", where each query is wrapped in a transaction:
const client = new PrismaClient({
  forceTransactions: true,
})

This is useful for usage with pgBouncer, which in transaction mode only works correctly with Prisma Client when used in combination with this flag.
TODO paragraph of why using pgBouncer might be wanted.
We need to properly document this in the docs so we have a location we can point users to.
Information

pgBouncer must run in transaction mode. Other modes like session do not make any sense because - see comment below

pgBouncer must be configured in the following way:
[pgbouncer]
pool_mode = transaction
server_reset_query = DEALLOCATE ALL
server_reset_query_always = 1

How this can be configued depends on your hosting provider

Heroku: https://github.com/prisma/prisma-client-js/issues/410#issuecomment-578128901 + waiting for https://github.com/heroku/heroku-buildpack-pgbouncer/pull/129 to be merged for the third option

On some hosting providers there might be no options to set these options directly via UI or otherwise. There you can try to log in to the server manually, and do the following (untested for now TODO)

More info: https://www.pgbouncer.org/usage.html#show-config

If you are using pgBouncer, but do not set the flag you will get an error message similar to this:
ConnectorError(ConnectorError { user_facing_error: None, kind: QueryError(Error { kind: Db, cause: Some(DbError { severity: "ERROR", parsed_severity: Some(Error), code: SqlState("26000"), message: "prepared statement \"s0\" does not exist", detail: None, hint: None, position: None, where_: None, schema: None, table: None, column: None, datatype: None, constraint: None, file: Some("prepare.c"), line: Some(505), routine: Some("FetchPreparedStatement") }) }) })

TODO: We might want to catch this and output something useful (link to new docs page)

Migration Engine and Introspection Engine will not work with pgBouncer (in transaction mode)

use the real database directly instead of the pgBouncer credentials to work around this

PR that merged the feature to Query Engine
https://github.com/prisma/prisma-engines/pull/403
Related issues
https://github.com/prisma/prisma2/issues/556
https://github.com/prisma/prisma2/issues/1638
https://github.com/prisma/prisma-client-js/issues/228
https://github.com/prisma/prisma-client-js/issues/500
https://github.com/prisma/prisma-client-js/issues/410

Earlier notes from @pimeys on pgBouncer that we might want to incorporate into the documentation in some way:

Pgbouncer is a lightweight connection pooler for PostgreSQL. Instead of running
inside the application code, pgbouncer is a separate service offering support
for postgres line protocol and handling the pooling logic outside of
applications using the database.
Typically postgres supports only a certain amount of concurrent connections and
this limit can be reached quite fast when the service usage goes up.
This means the developer cannot just launch more instances of the service due to
the already running instances are reseving all the connections.
Transaction Mode
Now pgbouncer can be run in three different modes, them being session,
transaction and statement mode.
Session mode gives one connection per client, and is useful mainly to define
limits per team in an organization. For common users this mode doesn't allow any
advantages over just connecting to postgres directly.
Statement mode shares a connection with every query coming to the system. It
prevents certain useful features, such as transactions or prepared statements
and is not really useful with Prisma.
Transaction mode offers a connection for every transaction. With this mode and
certain other settings enabled, the prisma query is able to operate normally.
Needed settings:

Prisma needs to be started in a mode that triggers a transaction in every
case, even when just reading data. This allows us to use prepared statements
in Prisma.
Pgbouncer has flag SERVER_RESET_QUERY_ALWAYS set to 1 to delete prepared
statements after each transaction is done. Otherwise the names of the prepared
statements will clash between different clients and this will trigger
nondeterministic crashes in Prisma.
The other pgbouncer flag SERVER_RESET_QUERY should be set to DEALLOCATE ALL to just clean the prepared statements after the transaction is done. We
don't need to clean everything and this will make the queries a tiny bit
faster.

Downsides

Lower perforamance due to extra roundtrips to BEGIN and COMMIT every
single query we do even if we don't really need to run them in a transaction.

We should also make sure to clean up https://github.com/prisma/prisma2/blob/master/docs/faq.md#how-to-handle-connection-pooling-for-prisma-client-js-in-serverless-environments when we do this.

I think the forceTransactions name is fine.
I think the documentation of this option should focus on what it does, and only tangentially mention pgbouncer:

forceTransactions
Default: false
Type: boolean
Prisma Client often needs to perform multiple database queries in order to serve a single query. For performance reasons, these queries are not wrapped in a transaction.
Please note that writes, updates and deletes are always performed in a transaction.
Forcing reads to be done in a transaction can be useful when you use a proxy such as PgBouncer that have certain requirements for proper operation.

There should be separate documentation about how to use pgbouncer that mention this option.

Quick question - is this option supported in Prisma 1, or is this only available in Prisma 2? We are having the pgBouncer issue.

This only refers to Prisma 2.x - for Prisma1 related questions you should open an issue at https://github.com/prisma/prisma1/

Internal Note: We need to do some more investigation before we actually document this.

We changed the implementation, so this needs different documentation.


[EventRequest] Report 82 "Export Budget to Excel".OnBeforeEnterRangeForDimension

Related to the issues #16009 and #16233 please add two additional parameters to the event:

var GLBudgetEntry: Record "G/L Budget Entry"

var ExcelBuffer: Record "Excel Buffer"
[IntegrationEvent(false, false)]
local procedure OnBeforeEnterRangeForDimension(var DimensionRange: array[2, 8] of Integer; var BusUnit: Record "Business Unit"; var DimValue: Record "Dimension Value"; var RowNo: Integer; var IsHandled: Boolean; i: Integer; var GLBudgetEntry: Record "G/L Budget Entry";  var ExcelBuffer: Record "Excel Buffer")
begin
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Unclear succeeded('previousJob'), what it is it referring to and requirements of allowed job

The succeeded documentation is unclear on what it refers to. Is dependsOn still required? I tested with and without and it looks like it is still required even though documentation seems to state that if you want to run job only if  a specific job succeeds you do not need to declare dependsOn
This is valid
- job: C
     dependsOn:
     - B
    condition: succeeded('B')
    steps:
    - script: echo "Should still run"

but this is not valid (or should it be?) and it is not clear if it should be based on what it represents
- job: C
    # dependsOn:
    # - B
    condition: succeeded('B')
    steps:
    - script: echo "Should still run"

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

ID: 77c58a78-a567-e99a-9eb7-62dddd1b90b6
Version Independent ID: 680a79bc-11de-39fc-43e3-e07dc762db18
Content: Expressions - Azure Pipelines
Content Source: docs/pipelines/process/expressions.md
Product: devops
Technology: devops-cicd-process
GitHub Login: @juliakm
Microsoft Alias: jukullam

It refers to the job. I'll make a documentation update shortly.

@rogerprz I talked with the product team about this and will update the docs. Jobs are designed to run in parallel while stages run sequentially. If you want to use succeeded(), they recommended also using dependsOn each time.


Added support for x-ms-blob-content-md5 in PutBlockList

Fixes #118.
This PR:

Adds support for the header x-ms-blob-content-md5 in the PutBlockList builder.
Removes the unsupported hash field (PutBlockList only supports MD5, see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-list#request-headers).
Adds the missing setters! macro (without it the fields can't be accessed).
Removes Borrow<[u8]> and replaces them with BlockId (which in turn is a simple wrap around bytes::Bytes).

Thank you for the feedback 👍!

Thank you for the feedback 👍!


BUG: io.matlab: Squeeze 0d to numpy scalars, not python ones

This squeezes 0d void arrays to void scalars, which are far easier to index
.item() does not do the right thing on void scalars, as it returns a tuple.
Apologies for the commit messages, this was done through the web ui where amending isn't possible. I'm hoping you're OK with squashing them at merge time?

Reference issue
Related to https://github.com/numpy/numpy/issues/14964
What does this implement/fix?
This makes scipy.io.load_mat load scalars as numpy scalars instead of pure-python ones. More valuably, this loads matlab structs as np.void objects instead of 0d np.array objects, which works out better for nested object arrays.
Additional information

I am a little concerned that and arr2.dtype.kind != 'V' code was removed, because I see no difference in .item() and [()] action is the following specific case. Continuing the example from numpy/numpy#14964
In [60]: c = array((3, array((2, array((1, 'str2'), dtype=[('a', 'O'), ('b', 'O')])),
    ...:       dtype=[('c', 'O'), ('d', 'O')]), array((1, 'str2'), dtype=[('a', 'O'), ('b', 'O')])),
    ...:       dtype=[('e', 'O'), ('f', 'O'), ('g', 'O')])
In [61]: c.ndim
Out[61]: 0
In [62]: c.dtype.kind
Out[62]: 'V'
In [63]: c.item()
Out[63]: (3, array((2, array((1, 'str2'), dtype=[('a', 'O'), ('b', 'O')])),
       dtype=[('c', 'O'), ('d', 'O')]), array((1, 'str2'), dtype=[('a', 'O'), ('b', 'O')]))
In [64]: c[()]
Out[64]: (3, array((2, array((1, 'str2'), dtype=[('a', 'O'), ('b', 'O')])),
      dtype=[('c', 'O'), ('d', 'O')]), array((1, 'str2'), dtype=[('a', 'O'), ('b', 'O')]))

The field type info is still stripped and the same tuple is returned by [()] and .item()

@smax1: type(c[()]) is not tuple, even if the repr makes it look like it is.

Ah, interesting. Thanks!

Test failure looks unrelated:
scipy.stats.multiscale_graphcorr
--------------------------------
File "build/testenv/lib/python3.6/site-packages/scipy/stats/stats.py", line 4612, in multiscale_graphcorr
Failed example:
    '%.3f, %.2f' % (mgc.stat, mgc.pvalue)
Expected:
    '0.033, 0.02'
Got:
    '0.033, 0.01'

@eric-wieser Yeah, that's #11100, which we're trying to resolve before 1.4.0rc2, you can ignore.

Backward-incompatible change. I guess this breaks most existing code that uses squeeze_me and record arrays?

This effects users using squeeze_me and:

Saving scalar structs from matlab. These users will get np.void instances instead of 0d arrays. In practice, there's very little difference.
Saving nested scalar structs from matlab. These users will be able to use my_struct['outer']['inner'] instead of my_struct['outer'][()]['inner'].
Saving scalars floats from matlab. These users will get np.float64 instances instead of float instances.

The second point is probably has the most impact (and here resulted to doctest change) --- code loading nested structs with squeeze_me has to be changed.

@pv: For void types, [()] is a no-op, so it will be continue to be legal to write my_struct['outer'][()]['inner'] - but will no longer be necessary. Before, the [()] called ndarray.__getitem__, after this change it calls void.__getitem__

Yes, but it's still a backward compatibility break: .shape and .dtype are different so .item() doesn't work etc., as the returned object is different.


Scrollbar hides in the todo list of the TodoTemplate project

The scrollbar of the to-do list on the Todo page is hidden, so if there are many items below the current items, the users can't see the scrollbar and it causes a bad user experience.

it is not hidden:

it's the feature of the mobile that is simulated correctly in the responsive view of the devtools.

This issue is not valid.


Proper implementations of JIT helpers

Cleanup C++ glue code related to JIT helpers

@smosier PTLA. Thanks!

LGTM


Should validation use box-shadow?

.form-control inputs when focused do not use box-shadow, so why inputs with .is-invalid/.is-valid do? I propose to get rid of the box-shadow. Or maybe there are some variables that need to be used/set properly?
No test case. All you need is to visit https://getbootstrap.com/docs/4.0/components/forms.

Another inconsistence: .btn:focus shadow is disabled on screen width less than 768px. This does not happen on inputs.

Yes it should, and I should re-enable the focus shadow on inputs by default.

I understand you want to see focus/validation state at the same time. I'm fine with this as long as it's consistent. Thanks.


feat: crypto endpoint

Adds the node/configuration/crypto endpoint.

What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Refactor
[ ] Performance
[ ] Tests
[ ] Build
[ ] Documentation
[ ] Code style update
[ ] Continuous Integration
[ ] Other, please describe:

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Does this PR release a new version?

[ ] Yes
[x] No

If yes, please describe the impact and migration path for existing applications:
The PR fulfills these requirements:

[ ] It's submitted to the develop branch, not the master branch [develop is outdated]
[x] All tests are passing
[x] New/updated tests are included

If adding a new feature, the PR's description includes:

[ ] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

Thanks for submitting this pull request! A maintainer will review this in the next few days and explicitly select labels so you know what's going on.
If no reviewer appears after a week, a reminder will be sent out.

A contributor has approved this PR. A maintainer will merge this PR shortly. If it shouldn't be merged yet, please leave a comment saying so and we'll wait.
Thank you for your contribution!

Your pull request has been merged and marked as tier 4. It will earn you $20 USD.


Error on compiling iOS

OS Platform and Distribution
macOS Monterey, v12.4
Compiler version
gcc 13
Programming Language and version
Swift 5.7, Python 3.7.9
Installed using virtualenv? pip? Conda?(if python)
No response
MediaPipe version
Latest at time of posting
Bazel version
6.1.2
XCode and Tulsi versions (if iOS)
Tulsi 0.20221005.88, Xcode 13.4.1
Android SDK and NDK versions (if android)
No response
Android AAR (if android)
None
OpenCV version (if running on desktop)
No response
Describe the problem
Following the instructions from https://developers.google.com/mediapipe/framework/getting_started/ios.
Ran the command "bazel build -c opt --verbose_failures --config=ios_arm64 mediapipe/examples/ios/posetrackinggpu:PoseTrackingGpuApp".
Compiling results in an error.

Complete Logs
INFO: Build option --define has changed, discarding analysis cache.
WARNING: /Users/raphaelthorp/Desktop/mediapipe/mediapipe/framework/tool/BUILD:197:24: in cc_library rule //mediapipe/framework/tool:field_data_cc_proto: target '//mediapipe/framework/tool:field_data_cc_proto' depends on deprecated target '@com_google_protobuf//:cc_wkt_protos': Only for backward compatibility. Do not use.
WARNING: /Users/raphaelthorp/Desktop/mediapipe/mediapipe/framework/BUILD:54:24: in cc_library rule //mediapipe/framework:calculator_cc_proto: target '//mediapipe/framework:calculator_cc_proto' depends on deprecated target '@com_google_protobuf//:cc_wkt_protos': Only for backward compatibility. Do not use.
INFO: Analyzed target //mediapipe/examples/ios/posetrackinggpu:PoseTrackingGpuApp (0 packages loaded, 8943 targets configured).
INFO: Found 1 target...
ERROR: /Users/raphaelthorp/Desktop/mediapipe/mediapipe/modules/pose_landmark/BUILD:28:26: Linking mediapipe/modules/pose_landmark/pose_landmark_model_loader_graph_text_to_binary_graph [for tool] failed: (Exit 1): cc_wrapper.sh failed: error executing command (from target //mediapipe/modules/pose_landmark:pose_landmark_model_loader_graph_text_to_binary_graph)
  (cd /private/var/tmp/_bazel_raphaelthorp/2bdfbff65ac844d4803c48f3ea895249/sandbox/darwin-sandbox/7656/execroot/mediapipe && \
  exec env - \
    APPLE_SDK_PLATFORM=MacOSX \
    APPLE_SDK_VERSION_OVERRIDE=12.3 \
    PATH=/Users/raphaelthorp/Library/Caches/bazelisk/downloads/bazelbuild/bazel-6.1.1-darwin-x86_64/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin \
    XCODE_VERSION_OVERRIDE=<IP_ADDRESS>F100 \
    ZERO_AR_DATE=1 \
  external/local_config_cc/cc_wrapper.sh @bazel-out/darwin-opt-exec-50AE0418-ST-9facee45ddd0/bin/mediapipe/modules/pose_landmark/pose_landmark_model_loader_graph_text_to_binary_graph-2.params)
# Configuration: ed0468280fbc762e7b790d435083e58d9aca6c7b817727625d2e4ab050cd028c
# Execution platform: @local_execution_config_platform//:platform

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
stderr (/private/var/tmp/_bazel_raphaelthorp/2bdfbff65ac844d4803c48f3ea895249/execroot/mediapipe/bazel-out/_tmp/actions/stderr-7) 1523788 exceeds maximum size of --experimental_ui_max_stdouterr_bytes=1048576 bytes; skipping
Target //mediapipe/examples/ios/posetrackinggpu:PoseTrackingGpuApp failed to build
INFO: Elapsed time: 5.247s, Critical Path: 0.97s
INFO: 15 processes: 15 internal.
FAILED: Build did NOT complete successfully

I encountered the same problem ，the version of mediapipe is 0.9.3

the mediapipe of <IP_ADDRESS> compiled ok .
So i think it is the problem of v0.9.3.
btw: i made a wechat group for communication 。
If you are interested , you can add my wechat:<PHONE_NUMBER>1
when you add ,please remark mediapipe

I encountered the same issue. funny enough after going back to an older version that used to work, it doesn't seem to work anymore (this might be unrelated). maybe the upgrade to latest macos and xcode contributes somehow?

In my experience ，xcode14.2+mediapipe v0.9.21. compiled ok, xcode14.3+ mediapipe <IP_ADDRESS> compiled fail, xcode14.2+mediapipe v0.9.3 compiled fail.

@fengyun21,
Apologies for the delayed response, Would you please try with Xcode 14.2 and MediaPipe 0.10.0? There is a known issue in Xcode 14.3 on which team is working and Please revert back if error still persists. Thank you!


The mining fee for split tx calculation is off and did fail when testing 10k+ tx. Save your mnemonic to recover these funds.

@gitcash tip 136199 satoshis to @SpendBCH
Thanks for the UTXO merge! 🎩

Hey SpendBCH, user cgcardona tipped you 1361 bits in Bitcoin Cash ( ~ $0.9888 ).
Click here to claim it!
You can also add the :-1: reaction to cgcardona's comment above to prevent future tips.

Current build is testing well with up to 0.013 BCH


Tractus-X Release Guidelines  Check for Product Trace-X

Is your support request related to a problem? Please describe.

Please check if Tractus-X Release Guidelines are fulfilled for  product Trace-X and release 10.3.0

Due Date

16.02.2024

Link

Please approve the TRGs here https://github.com/eclipse-tractusx/sig-release/issues/506

Describe the solution you'd like

TRG Check is done for product Trace-X and release 10.3.0

Additional context

Hey @mkanal! I'm closing this issue and we'll create the QG check issue and link it to the Release Checks issue soon.


dyld: lazy symbol binding failed: Symbol not found: _clock_gettime

I followd MacOSX instructions on 10.11.6 (El Capitan)
$ ./nodec --version
dyld: lazy symbol binding failed: Symbol not found: _clock_gettime

$ node -pe process.arch
x64
$ ./nodec ./app.js --output=a.out
dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
  Referenced from: /./nodec (which was built for Mac OS X 10.12)
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _clock_gettime
  Referenced from: /./nodec (which was built for Mac OS X 10.12)
  Expected in: /usr/lib/libSystem.B.dylib

Trace/BPT trap: 5


Legendary Raid Dens

A Articuno spawned in a raid den was told its not too and to submit a ticket

.

I do believe this got fixed. :)


Manually port d3dx12.h as expansions partials to generated code

d3dx12.h contains really useful helper APIs for working with Direct3D 12. We should consider porting these to Silk.NET.Direct3D12 to make life easier for our users.
This isn't a hard task, just involves creating additional, manual partials for each struct d3dx12 has helper methods for, or methods in the manual part of the D3D12 class. As such, any help from the community would be appreciated.

Adding this for this year's Hacktoberfest. This doesn't require much foreknowledge of Silk.NET's internals, and just requires making a few manual partial classes which build on top of the automated ones which make a C# mirror of the API in d3dx12.h (linked above).
This can be done incrementally, so you can make a start on this by porting some of the APIs and leave it off where you feel comfortable - just make sure you tell us here if you make a start on this! :smile:

3 years have passed. This is still relevant.

@Aycon3296 No one said it isn’t. You may notice it’s marked as “good first issue” and “help wanted” - we want help with this and we believe anyone can do it. The team has bigger things to work on that aren’t as accessible to external contributors, and we will work on those tasks instead. Be the change you want to see.


Add block I/O latency plugin

@ashu8912 , I have updated the dependencies for all plugins and squashed your biolatency commits.
Please test all the plugins and, if things work fine, we can merge the PR. :partying_face:

@joaquimrocha tested the changes and it LGTM!! :tada:


chore: tweak release scripts and lerna config

This commit tweaks the lerna config a bit and changes the release
scripts in our package.json.
The package.json release scripts now check for existence of GH_TOKEN
environment variable before any kind of release is triggered.
In normal operation a user just has to execute yarn release and lerna
will automatically determine the next suitable version based on the
current version and also based on the current version modifier.
That means, that, if we are currently in a prerelease stage, lerna will
make sure that the next version is a prerelease too.
So in order to start an alpha release phase we need to execute
yarn release:alpha once and then we can continue with yarn release.
This will then create a version such as 2.0.0-alpha.0 and publish it
on the next dist-tag to npm.
Once we want to move up to the beta phase, we execute
yarn release:beta once and then continue with yarn release as
before.
The last stage would be the release candidate which we enter by
executing yarn release:rc once and continue with yarn release.
In order to move from any prerelease stage to a stable stage, we need
to execute yarn release:graduate which will remove the prerelease tag
and publish the version on the latest dist-tag to npm.

This looks brilliant, indeed!


keep getting "thread failed with: fopen() failed" error

I have the set up below and keep getting the "thread failed with: fopen() failed" error (full output below). chia_plot has read & write access to both temp drives. There's no SMART errors for the U.2 temp drive. The U.2 drive worked with no problem when I was running this program in Windows 10. The error even occurs when not using a 2nd temp drive (ramdisk), so it's not that. The same model U.2 drive is working without issue in another plotting machine with essentially the same hardware setup. Any ideas how to solve?
dual XEON E5-2651 v2 1.8 GHz 24c/48t
176 GB RAM
Dell Express Flash 1.6 TB NVMe (rebranded Samsung XS1715)
128 GB ramdisk (via tmpfs)
Ubuntu 20.04.2
Multi-threaded pipelined Chia k32 plotter - f495816
Final Directory: /mnt/u2green/
Number of Plots: infinite
Crafting plot 1 out of -1
Process ID: 11035
Number of Threads: 48
Number of Buckets: 2^7 (128)
Pool Public Key:   xxxxx
Farmer Public Key: xxxxx
Working Directory:   /mnt/u2green/
Working Directory 2: /mnt/ramdisk/
Plot Name: plot-k32-2021-06-14-19-46-xxxxx
[P1] Table 1 took 14.9819 sec
[P1] Table 2 took 152.971 sec, found<PHONE_NUMBER> matches
[P1] Table 3 took 179.724 sec, found<PHONE_NUMBER> matches
[P1] Table 4 took 218.128 sec, found<PHONE_NUMBER> matches
[P1] Table 5 took 215.692 sec, found<PHONE_NUMBER> matches
[P1] Table 6 took 208.46 sec, found<PHONE_NUMBER> matches
[P1] Table 7 took 165.345 sec, found<PHONE_NUMBER> matches
Phase 1 took 1155.33 sec
[P2] max_table_size =<PHONE_NUMBER>
[P2] Table 7 scan took 12.8262 sec
[P2] Table 7 rewrite took 58.3852 sec, dropped 0 entries (0 %)
[P2] Table 6 scan took 38.0498 sec
[P2] Table 6 rewrite took 53.4809 sec, dropped 581355582 entries (13.5377 %)
[P2] Table 5 scan took 36.7685 sec
[P2] Table 5 rewrite took 55.6588 sec, dropped 762055630 entries (17.7441 %)
[P2] Table 4 scan took 32.4061 sec
[P2] Table 4 rewrite took 54.9468 sec, dropped 828906726 entries (19.2999 %)
[P2] Table 3 scan took 37.0746 sec
[P2] Table 3 rewrite took 57.9332 sec, dropped 855097660 entries (19.9095 %)
[P2] Table 2 scan took 36.5062 sec
[P2] Table 2 rewrite took 55.7784 sec, dropped 865645624 entries (20.1546 %)
Phase 2 took 567.484 sec
Wrote plot header with 268 bytes
terminate called after throwing an instance of 'std::runtime_error'
  what():  thread failed with: fopen() failed

Same.
terminate called after throwing an instance of 'std::runtime_error'
what():  thread failed with: input not sorted
Aborted (core dumped)

Same.
With old settings but after  a pull and rebuild  last night.

Same here. fresh pulled from github.
dual xeon 4667v2 , 384gb RAM.

Same.
terminate called after throwing an instance of 'std::runtime_error'
what(): thread failed with: input not sorted
Aborted (core dumped)

That's not the same, that's probably unstable RAM...

Ok try latest master, I might have miscalculated something in 89819ce189b81d7f965d27043949b52c8f53a562

there is something else going on...
if it were that simple it would not be fixed by a re-boot.
I'm sure something is leaking someplace.....

Thank you, i jumped on this thread just now after getting this error and you manage to fix something just minutes ago :) Thats so perfect! It's like Christmas gift!

Ok try latest master, I might have miscalculated something in 89819ce

Yup, the latest version as of 2 hours ago resolved this issue for me. Thanks!

Not sure if it is a regression, but I am receiving this on an Ubuntu box with a 110G ramdisk:
terminate called after throwing an instance of 'std::runtime_error'
  what():  thread failed with: fopen() failed


Enabling proxies for "dist" target

Hello,
This may be a somewhat of a silly question, but I haven't been able to come up with the proper configuration to allow proxying for a dist target.  I have an angular app based on yeoman's angular generators and would like to test some aspects of the dist target without deploying the entire application.
My understanding of Grunt is somewhat limited, but wanted to ask the if this was in fact possible without proceeding down a rabbit hole.
Many thanks.
connect task:
      dist: {
        options: {
          middleware: function(connect, options) {
            if (!Array.isArray(options.base)) {
              options.base = [options.base];
            }

            // Setup the proxy
            var middlewares = [require('grunt-connect-proxy/lib/utils').proxyRequest];

            // Serve static files.
            options.base.forEach(function(base) {
              middlewares.push(connect.static(base));
            });

            // Make directory browse-able.
            var directory = options.directory || options.base[options.base.length - 1];
            middlewares.push(connect.directory(directory));

            return middlewares;
          },
          open: false,
          base: [
            '<%= yeoman.dist %>'
          ]
        }
      }

actual grunt task
  grunt.registerTask('serve', function(target) {
    if (target === 'dist') {
      return grunt.task.run([
        'build',
        'configureProxies:dist',
        'connect:dist:keepalive'
      ]);
    }
...
}

HI @zimbrecka, Can you add an example for "proxies" ?. I try this add the next code in dist configuration.
  dist: {
    options: {
      open: true,
      base: '<%= yeoman.dist %>',
      middleware: function (connect,options) {
        if (!Array.isArray(options.base)) {
            options.base = [options.base];
        }
        // Setup the proxy
        var middlewares = [require('grunt-connect-proxy/lib/utils').proxyRequest];
        // Serve static files.
        options.base.forEach(function(base) {
            middlewares.push(connect.static(base));
        });
        return middlewares;
      }
    },
    proxies: [{
      context: '/api',
      host: 'localhost',
      port: 3000
      // changeOrigin: true
    }]
  }

But I can't fix this. Someone has been able to fix them ?

Hello @patojimenez, for sure I can (we load our Grunt config w/ load-grunt-config) :
  require('load-grunt-config')(grunt, {
    configPath: path.join(process.cwd(), 'grunt/configs'),
    data: {
      ...
      remoteHost: 'backoffice.project-dev.fr',
      proxies: [
        {
          context: '/api',
          host: '<%= remoteHost %>',
          port: 80,
          https: false,
          changeOrigin: true,
          xforward: false,
          headers: {
            'host': '<%= remoteHost %>'
          }
        },...

Thanks a lot @zimbrecka, it works for me.

Happy I could help !

@zimbrecka have you an email contact ?, For some reason after run "grunt build" and create dist directory in my server appear and error 403. How can I check if the proxies settings are in my compiled js ?.

remember to add configureProxies before connect task:
grunt.registerTask('serve', 'Compile then start a connect web server', function (target) {
if (target === 'dist') {
return grunt.task.run([
'build',
'configureProxies:server', // added just before connect
'connect:dist:keepalive'
]);
}
grunt.task.run([
  'clean:server',
  'wiredep',
  'concurrent:server',
  'postcss:server',
  'configureProxies:server', // added just before connect
  'connect:livereload',
  'watch'
]);

});


Question: how to send data on initialization?

Hi there,
I'm creating a custom consent modal that saves consents in a cookie.
So everything works fine when I'm using sendDataToGTM in a callback function. But on a refresh of the page I would like to immediately send the needed triggers (saved in a cookie) to GTM. When using sendDataToGTM in a useEffect it gives me the following error:
TypeError: Cannot read property 'push' of undefined

How should I set the initial dataLayer object to push events on init?
I tried passing a dataLayer array but that didn't work:
init({ id: "GTM-XXX", dataLayer: [{ event: "my-event"} ] })

Thanks in advance!

Hi @brahimmouhamou, thx for opening the Issue.
Probably you get that error because is trying to push before the GTM is fully loaded.
If I understood right, you need to send some consent to the GTM to do operations based on that (I'm thinking about consent like GDPR).
I think a good solution is passing them on init if those are available in the cookie, without firing an event.
So you can do something like:
init({ id: "GTM-XXX", dataLayer: { consent1, consent2 }})
where consents are calculated like:
const consent1 = cookieFn(cookieName) || 'default'
And then, read them into the GTM on load.
Btw, I'll see how, and if is possible, implement the push of an event after the init.
Hope those tips are useful right now 😄

Hi @elgorditosalsero, thanks for fast response!
I was unaware that I could map the dataLayer object to GTM variables and create a trigger that can listen to a pageview with certain GTM variables. This solves my problem!
Much appreciated!


feat: add extrahl in complete function

LSP spec mentioned completion item deprecated field when a completion item mark as deprecate the item should has a special highlight strikethrough.  helix also have this.  currently implement is add an extra field extrahl for combine. in this PR it works like {word: "foo", kind: "func", menu:"menu", extrahl: "Strike"} hi Strike cterm=strikethrough

Ref: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItem

how we test strikethrough in Ci..

Hm, this seems to break the test dumps: Test_wildmenu_pum_24.dump and Test_wildmenu_pum_32.dump but only on 2 runners (I checked the dumps briefly, but couldn't make sense of the diff, the term content seemed to be fine, just some highlighting seemed to be changed).
That is surprising, since this change here doesn't even contain a test case yet :/

this seems to break the test dumps: Test_wildmenu_pum_24.dump and Test_wildmenu_pum_32.dump but only on 2 runners (I checked the dumps briefly, but couldn't make sense of the diff, the term content seemed to be fine, just some highlighting seemed to be changed)

also wired too. because  make test_cmdline passed  every times when i run it

That is surprising, since this change here doesn't even contain a test case yet :/

Still trying to figure out how to test this strikethrough which requires a terminal. GitHub CI doesn't seem to be able to predict screen output like this. Going through our test cases also simply checks the highlight property.

now is passed. but seems like there is no way to test cterm/gui attribute in github ci..

@chrisbra  PTAL

thanks!

maybe just strike the label vs/not menu etc would be looking more nice?
@glepnir how do you think?
otherwise maybe a bit mess, since the menu or others' info maybe still wanted to be clear displayed.

word always aligns with the longest word. If you just enable hl_group on word, you will see some weird  behavior.

word always aligns with the longest word. If you just enable hl_group on word, you will see some weird  behavior.

um.. seems that coz of you didnot give menu to those left all items, otherwise it maybe Not so "weird".
--
shane.xb.qian

I don't think there is anything wrong with the current behavior .

each strike should strike the label only and stop at the menu's left border.

which the 'method' should Not be striked.

I suggest that create an issue as a trick

that is a relevant comment to this merged PR, maybe you can just open a PR to link to that/my comment.
// as your wish, i am ok to open a new issue ticket also,
// but perhaps you knew in cn it is terrible network to play at github.
// so doing a 'comment' is more easy for me than open a new ticket.. :smile:
--
shane.xb.qian


[BUG] Custom Transformation issue with Atlasmap

Describe the bug
I tried to use custom transformation of altasmap with 2.2.3 version. Custom transformation jar imported fine but mapping definition is null while doing XML to JSON transformation. I also tried to use 2.3.1 version but with this version Custom jar is imported but transformation is not present in drop down list.
Attach .adm file and source document examples
I have attached zip file which have following files.
1.Atlasmap demo project - (XmlToJsonTransformation) class which is used for conversion
2.Custom project (for creating custom transformation)
3.altas-map.adm ( mapping definition file for transformation)
4.orderxml.xsd ( sample request for conversion XML to JSON
To Reproduce
Steps to reproduce the behavior:

Go to atlasmap gui
Click on Inport instance or schema file and then import import attached order.json file or any other intstance in source panel and other instance in target panel
After that import jar archive for custom transformation. ( I have attached my custom transformation project).
Apply some custom transformation on target element.
Export .adm file and use this mapping file for transformation.
Check mapping object in session object it is null. while doing transformation

Expected behavior
Mapping objet should not be null. I shoud not get mapping definition null. Transformation should work fine
Environment (please complete the following information):

OS: [e.g. Windows]
Browser [Microsoft Edge]
Version [ 88.0.705.81]

Custom Transformation.zip
)

Please follow the issue template and describe what is the problem, for example steps to reproduce, what is the expected behavior vs. what is the actual behavior you see, etc.

done @igarashitm

What do you mean by Mapping objet and mapping definition? are they different things or referring same one? what is the instance source document you send at runtime? is that orderxml.xsd an instance, but not a schema you load into UI at design time? are you mapping XSD file? How did you test Check mapping object in session object it is null. while doing transformation ? what do you mean by session object? is it same with Mapping objet and/or mapping definition?
In AtlasMap word, mapping definition is a JSON file contained in .adm file, which defines how to process mapping. Do you mean extracted the JSON file from .adm file and looked at that? If so, what do you mean by get mapping definition null? there was no mapping definition file in the .adm? or there was null in the file?

What do you mean by Mapping objet and mapping definition? are they different things or referring same one? what is the instance source document you send at runtime? is that orderxml.xsd an instance, but not a schema you load into UI at design time? are you mapping XSD file? How did you test Check mapping object in session object it is null. while doing transformation ? what do you mean by session object? is it same with Mapping objet and/or mapping definition?
In AtlasMap word, mapping definition is a JSON file contained in .adm file, which defines how to process mapping. Do you mean you extracted the JSON file from .adm file and looked at that? If so, what do you mean by get mapping definition null? there was no mapping definition file in the .adm? or there was null in the file?

Hi @igarashitm ,
Mapping Object and Mapping definition both are same thing. In GUI I have load XML instance i.e. orderxml but the issue is not with source document. I am attaching one zip file of screenshots.

Customtransformationmapping is screenshot of mapping file opened in GUI which is exported and use this .adm file in projet.
MappingObjectNull is screenshot of mapping object which is highlighted is showing null and because of that I get an error mapping definition can't be null.
CodeForTransformation is screenshot of code which is used for conversion. It is working fine without custom transformation


Backport "Make tests resilient to exceptions thrown while reporting exceptions" to LTS

Backports #19566 to the LTS branch.
PR submitted by the release tooling.
[skip ci]

No regressions detected in the community build up to lts-19605.
Reference


dx-validator controlled by *ngIf doesn't work

I validate a textbox based on some condition.
<dx-text-box>
  <dx-validator *ngIf="checked">
      <dxi-validation-rule type="required"></dxi-validation-rule>
  </dx-validator>
</dx-text-box>

Validation doesn't work if I use it as in the above sample. See plunkr.
Steps:

Click on the checkbox
Click on the button
The textbox is not validated.

Hello @Adelor
This scenario will work if you add *ngiF for a validation rule. You can see an example here.

Hello @dxvladislavvolkov
Your solution doesn't works for me.
@Adelor, I can solve same problem this way:
...

<template [ngIf]="definition.Required">

...

Hello @Boombasteg
Your example does not work on our side.
Could you provide an example using a planker or another service?
Please also provide an example where our solution does not work.


Validate binary search tree

I will be happy to work on this problem. Please assign this to me.

Please assign me on this. Would be happy to contribute.


fix: flaky test

No Jira ticket.
Description
This pull request attempts to fix the flakiness of Happo taking screenshots of the packages/picasso-rich-text-editor/src/RichText/story/HTML.example.tsx
Before

After

How to test

Temploy
All tests should pass

Development checks

[x] Add changeset according to guidelines (if needed)
[x] Read CONTRIBUTING.md and Component API principles
[N/A] Make sure that additions and changes on the design follow Toptal's BASE design, and it's been already discussed with designers at #-base-core
[N/A] Annotate all props in component with documentation
[N/A] Create examples for component
[x] Ensure that deployed demo has expected results and good examples
[N/A] Ensure the changed/created components have not caused accessibility issues. How to use accessibility plugin in storybook.
[x] Self reviewed
[N/A] Covered with tests

All development checks should be done and set checked to pass the
GitHub Bot: TODOLess action

PR commands

List of available commands:

@toptal-bot run package:alpha-release - Release alpha version
@toptal-anvil ping reviewers - Ping FX team for review

PR Review Guidelines

When to approve? ✅
You are OK with merging this PR and

You have no extra requests.
You have optional requests.

Add nit: to your comment. (ex. nit: I'd rename this variable from makeCircle to getCircle)

When to request changes? ❌
You are not OK with merging this PR because

Something is broken after the changes.
Acceptance criteria is not reached.
Code is dirty.

When to comment (neither ✅ nor ❌)
You want your comments to be addressed before merging this PR in cases like:

There are leftovers like unnecessary logs, comments, etc.
You have an opinionated comment regarding the code that requires a discussion.
You have questions.

How to handle the comments?

An owner of a comment is the only one who can resolve it.
An owner of a comment must resolve it when it's addressed.
A PR owner must reply with ✅ when a comment is addressed.

@toptal-anvil ping reviewers


Re-add account and support links to the primary nav

The icons look kinda funny since they're both circles but one looks bigger than the other

Yeah, I thought about fixing it but we're going to get a real icon from Mitch so I'm not worried about it for now. The icons are the same size but the borders make them look different I think.


chore(release): 2.69.0

See CHANGELOG

AWS CodeBuild CI Report

CodeBuild project: githubautobuild-for-cdk-v2
Commit ID: cd54ed4b0038e4fdf1ffe7a2995c8aab8549469d
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


Used not installed extension in CreateExtension() tests.

uuid-ossp was already installed.

As stated on the other PR, do we really the extension to be created here or is testing the proper command is generated is sufficient? (real extension addition may be slow, I didn't test for this specific extension).

i think it's worthwhile to have a test that really tests adding the extension.  this is a postgresql specific extension so it's not ANSI SQL and testing it's "correctness" is tricky.
i think the test should:

assert extension not present (SELECT * FROM pg_extension ...)
CREATE EXTENSION
assert extension present (SELECT * FROM pg_extension ...)


Refactorings for c#

Hey, it World be nice to have Code refactorings for c# too.

Man can we have some coconut oil for c# blazingly fast coding?

Any ETA for C# support?

There isn't an ETA right now. PRs are welcomed and I'm happy to guide anyone on how to add support to it, though

@TheLeoP
Hi, I'm interested in getting it working for c#. What are the high level steps to implement it?

@vijairamg

adding a cs.lua file on the lua/refactoring/treesitter/langs with the necessary queries (you can use the builtin Neovim command :InspectTree inside of a c# file to check the nodes and test the queries)
adding a cs.lua file on the lua/refactoring/code_generation/langs with the necessary functions (i.e. a template for a function, a class, etc)
adding tests for each c# refactor that you are adding support to (check lua/refactoring/tests/refactor)

You can use the lua (or any other language) support as a guide:
https://github.com/ThePrimeagen/refactoring.nvim/blob/d07218748c48e756c27aa6859bfa6e62a3d271af/lua/refactoring/treesitter/langs/lua.lua
https://github.com/ThePrimeagen/refactoring.nvim/blob/d07218748c48e756c27aa6859bfa6e62a3d271af/lua/refactoring/code_generation/langs/lua.lua
Have you used treesitter before? If no, you'll need to read its documentation to understand its query syntax.

Thanks for the pointers.
I don't know much about tree sitter (other than InspectTree).

@vijairamg let me know if you want some help c:


Armour questions

Now that ER allows more armour types, I thought I'd have a look around for some options.
The first item I thought of was the crown in the beginner's forest:  I've travelled there, freed the fairy but when I try to wear it I get the error message "Error: Cannot read property 'id' of null"
If I then pick it up I can wear it, but it doesn't change my armour class, and I don't retain it when I get back to the main hall.  I don't know if you intended for it to be armour, but right now it isn't.
So next I went to the Cave of the Mind: there's a helmet there that I could wear, but it also doesn't seem to be armour. It has special qualities in the adventure but it's still a hat made of metal: it would probably protect a player at least a little.
Do the attributes of these items need to be updated?  Or do you think they are not armour?

I note the helmet in the assault on the Clone master has an AC of 1 and is retained when returning to the hall.

The "wear crown" error in the Beginner's Forest is fixed. (You do still have to pick it up first.)
I also gave an armor type and armor class to the other items you mentioned. Those adventures were ported before I added the capability of having armor types other than body armor and shields. I never went back and updated the items, but it makes sense now that I think about it. The combat in some adventures is certainly tough enough that the extra 1 AC will be useful.
BTW, I added the helmet armor type while I was writing Clone Master, so that's why that one was set up with an AC of 1.

There's also a helmet in the Stronghold of Kahr-dur, which I suspect isn't currently armor because it doesn't effect AC and can be worn simultaneously with another helmet.


Bulk adding tags to images results in double quotations for multi-word tags

Issue Summary

A bug when an image is tagged via the option of multi-selecting images and clicking the "Tag" button in the bulk menu.

Quotation marks are added around the tag name if it contains multiple words, both in the bulk tagger as well as in the edit photo tagger. However when this is done in the bulk tagger, saved and the newly tagged photo/s are checked, the multi-word tag gets double quotation marks ("") around it. This prevents the tag from being searchable in Elasticsearch or other search backends being used, as well as creates a significantly larger workload when tens or hundreds of images need to be tagged at once.
Lastly, when an image is saved in the edit view, the tag is fixed and gets a single quotation mark (") around it.
This issue seems to only affect multi-word tags added with the bulk tagger as the single tag is searchable when added. Note, that if a multi-word tag contains the same word ("test test"), then the tag that will be left when an image is saved again is a single ("test") tag, as the image editor tries to split the word.
Bulk adder:

Editing single image:

After saving single image (edit view):

Adding a tag with the same word repeated
Bulk adding:

Image after bulk add:

Image after saving (single img. edit view):

Steps to Reproduce

Select multiple images in the image view
Click "tag" in the bulk menu that appears.
Add a multi-word tag to the list and save
Edit an image that was tagged, and the tags should contain double quotes.
Save the image again, and navigate to it, and it should be fixed.

Using the bulk tag adder in it's current form is not safe for production, especially when hundred of images are needed to be uploaded, tagged, changed every day.
This bug has not been tested on a fresh install of Wagtail, it has however been tested on 4.0.4 and 4.2.2
Technical details
Instance 1:

Python version: 3.11
Django version: 3.2.16
Wagtail version: 4.04
Browser version: any

Instance 2:

Python version: 3.10
Django version: 4.1
Wagtail version: 4.2.2
Browser version: any

I was able to reproduce the issue.
These are the problems:

Bulk adding multi word tags to images adds extra double quotations around them.
When only one multi word tag with different words is added, the multi word tag separates and creates multiple single word tags.
When only one multi word tag with same words is added, the multi word tag separates and creates one single word tag.

Bulk adding two tags (single word + multi word).

The multi word tag gets extra double quotations around it ("hello world") -->(""hello world"") .
On saving individual images the extra double quotations disappear.
Here the multi word tag is not separated into single word tags.

https://github.com/user-attachments/assets/631c1762-d856-4086-8259-6c09b8dc4368

Bulk adding one multi word tag with same words like (test test).

The multi word tag gets the extra double quotations around it ("test test") --> (""test test"").
On saving individual images the extra double quotations disappear.
The multi word tag with same words becomes one single word tag. (""test test"") --> (test)

https://github.com/user-attachments/assets/05b1e5ab-2f13-4aaf-a259-2b1b8e5ccaa0

Bulk adding one multi word tag with different words like (hello world).

The multi word tag gets the extra double quotations around it.
On saving individual images the extra double quotations disappear.
The multi word tag with different words becomes two single word tags. (""hello world"") --> (hello) (world)

https://github.com/user-attachments/assets/45ed3090-6a8c-415a-91e6-9c7d32746e60
Also a possible reason why bulk adding a multi word tag with same words like (test test) becomes a single word tag (test) might be because wagtail tries to separate words in multi word tags and when it finds that there are two tags with same word, it displays only one of them.
As seen in video 3, when one multi word tag with different words is added, the words are separated (""hello world"") --> (hello) (world) causing multi word tag to become two single word tags.
And when one multi word tag with same words is added, the words are again separated but since they are the same words, only one of them is considered causing multi word tag to become one single word tag.
Technical Details:
Wagtail version: 6.2.3
Python version: 3.13.0
OS: (Linux - Fedora 41)
Django version: 5.0.9

Thank you for the initial report @arnarfh, and @joelwilliam2005 for confirming! Seems to me like some of those issues might be fixed with #2952.


Add Google Sign In Scope to README

Similar to https://pub.dev/packages/google_sign_in#use-the-plugin

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


boost-build: 2016.03 -> 4.4.1

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

cc @itkatchev

I have no idea how to make it install bjam.

Turns out bjam was turned into an alias and - I guess - removed later: https://boostorg.github.io/build/manual/master/index.html#bbv2.faq.names

Since some other packages still use bjam, I'll add a symlink.


Write orcids as https

Update http to https in:
https://github.com/inbo/camtraptor/blob/5768940eb76a09441a4597c0b615a40c407742cd/R/write_eml.R#L184
Once https://github.com/gbif/ipt/issues/1819 is included in the next version of the IPT.

Since gbif/ipt#1819 is closed, can we implement this in camtraptor?

Yes


Can't configure storage with the conf.arg parameter

I'm new to the fluentd so it could be that I'm missing something. Trying to configure it to send all the busy journald logs to the OpenSearch I've tried to configure it with multiple workers, so I could perform several parallel processes. Apparently fluent-plugin-systemd still doesn't support multi-worker setup, so I've tried to assign input to one fixed worker.
That seems to work, but the need to specify storage path looked overwhelming(I wanted to keep all work files in the more appropriate /var/lib/fluent dir rather than /var/log/fluent). Especially, as the documentation refers to the storage plugin without any limitations.
So, the configuration I tried first was:
<system>
  workers 2
  log_level "#{ENV['LOG_LEVEL'] || 'warn'}"
  root_dir "/var/lib/fluent"
</system>

<worker 0>
  <source>
    @id systemd
    @type systemd
    tag systemd
    path "/var/log/journal"
    read_from_head true

    <storage>
      @type local
      persistent true
      #path "/var/lib/fluent/systemd-cursor"
    </storage>

    @label @SYSTEMD
  </source>
</worker>

That worked, producing a position file /var/lib/fluent/systemd-cursor/worker0/storage.json. So far so good. But the need to specify /var/lib/fluent seems to be excessive.
So, my next(2) try was:
    <storage>
      @type local
      @id system_cursor
      persistent true
    </storage>

That also worked, producing /var/lib/fluent/worker0/systemd/storage.json. That already brings questions, as the name of the cursor file got hard coded to the storage.json, as well as in the first variant, but there you at least get a custom systemd-cursor in the path which may make the difference in case there are two or more inputs with @type systemd(pretty common setup for K8s, apparently).
Also, log got:
2023-11-04 00:03:56 +0000 [warn]: #0 parameter '@id' in <storage>
  @type "local"
  @id systemd_cursor
  persistent true
</storage> is not used.

which explains the result above.
Ok, how about(3) the conf.arg from the documentation?
    <storage systemd_cursor>
      @type local
      persistent true
    </storage>

That simply doesn't work, failing with the:
Nov  4 00:11:59 bat fluentd[1931750]: /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/plugin_helper/storage.rb:54:in `storage_create': BUG: both type and conf are not specified (ArgumentError)
Nov  4 00:11:59 bat fluentd[1931750]:                   raise ArgumentError, "BUG: both type and conf are not specified"
Nov  4 00:11:59 bat fluentd[1931750]:                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluent-plugin-systemd-1.0.5/lib/fluent/plugin/in_systemd.rb:53:in `configure'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/plugin.rb:187:in `configure'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/root_agent.rb:320:in `add_source'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/root_agent.rb:161:in `block in configure'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/root_agent.rb:155:in `each'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/root_agent.rb:155:in `configure'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/engine.rb:105:in `configure'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/engine.rb:80:in `run_configure'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/supervisor.rb:571:in `run_supervisor'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/lib/fluent/command/fluentd.rb:352:in `<top (required)>'
Nov  4 00:11:59 bat fluentd[1931750]: #011from <internal:/opt/fluent/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/lib/ruby/gems/3.2.0/gems/fluentd-1.16.2/bin/fluentd:15:in `<top (required)>'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/bin/fluentd:25:in `load'
Nov  4 00:11:59 bat fluentd[1931750]: #011from /opt/fluent/bin/fluentd:25:in `<main>'
Nov  4 00:11:59 bat systemd[1]: fluentd.service: Control process exited, code=exited status=1
Nov  4 00:11:59 bat systemd[1]: fluentd.service: Failed with result 'exit-code'.

At this point, I thought that I was doing something wrong, and I re-read the documentation several times as well as tried to understand the Ruby source code(not in my portfolio).
In a few other plugins, I found the way how (local) storage is configured and modified the code accordingly.
Amusingly that helped and I got the desired /var/lib/fluent/worker0/systemd/storage.systemd_cursor.json!
Without conf.arg it gives the expected /var/lib/fluent/worker0/systemd/storage.json.
Configuration (2) also works the same way with the message about redundant @id(I was hoping it'll actually pick the parameter).
I haven't tried though how all those permutations would work without the multiple workers.

So, the change is really small. Without much of the understanding, just mostly cut-n-paste:
--- in_systemd.rb.orig  2023-11-03 17:37:20.875477097 +0000
+++ in_systemd.rb       2023-11-04 00:17:33.088467944 +0000
@@ -50,7 +50,8 @@ module Fluent
       def configure(conf)
         super
         @journal = nil
-        @pos_storage = storage_create(usage: 'positions')
+        config = conf.elements.find{|e| e.name == 'storage' }
+        @pos_storage = storage_create(usage: 'positions', conf: config, default_type: DEFAULT_STORAGE_TYPE)
         @mutator =<EMAIL_ADDRESS>         @mutator.warnings.each { |warning| log.warn(warning) }
       end

If that seems legitimate, I can make an MR, although that diff is trivial to apply by hand as well.


2.0 popovers not respecting custom classes

Since all classes are removed using className custom classes gets overwritten.

got it - thanks!


Add Farnborough Hill

School Name: Farnborough Hill
Website: https://www.farnborough-hill.org
Computing & ICT Curriculum Page: https://www.farnborough-hill.org/curriculum/curriculum/computing-and-ict

@Elmhollow First stage of verification passed, official domain for Farnborough Hill is farnborough-hill.org as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.


User suggestion: enable another attendee to "follow" you

Person asked for /follow: for example, /lead "to offer that someone can follow you to other rooms, so you can teach them where the side quests are".

This has a bundle of trust and safety-related issues (no stalking!!). This might ultimately be a good idea, but I don't want to think about it until we have proper user blocking in place.


[UNR-4321] Entity Refactory

Description
Refactor of the entity factory to try to break up the long functions into smaller, more focused functions, with fewer dependencies. The main product of this refactor is the CreateSkeletonEntityComponents function, which is static and has a single input argument (an actor pointer) which can hopefully be used in the future to create skeleton entities for saving in the snapshot (possibly user hookable as well).
Release note
Internal
Tests
Ran tests.
Includes an example unit test, can expand.
Documentation
N/A for now. Should there be?
Primary reviewers
If your change will take a long time to review, you can name at most two primary reviewers who are ultimately responsible for reviewing this request. @ mention them.

Massive update: v15 merged, ACLs gone, AuthorityDelegations in.
Renamed DataComponent to AbstractMutableComponent (my inner Java programmer is showing).
I think I will be creating two follow-up tickets: remove all SpatialGDK::Components if we can (then we can triage if people think it's a good idea). And remove dependency on the NetDriver from both the ComponentFactory and the EntityFactory, as that will be needed to actually move further in decoupling this code.

@jacquese @sami @ImprobableNic  probably ready for another review, see comment above for what has changed.

which can hopefully be used in the future to create skeleton entities

How confident are you that this is the case still?

which can hopefully be used in the future to create skeleton entities

How confident are you that this is the case still?

which can hopefully be used in the future to create skeleton entities

How confident are you that this is the case still?

Still hopeful, shouldn't be that hard to create a snapshot containing the skeleton entities. The harder thing will be to modify the various flows we have to work with these skeleton entities.

which can hopefully be used in the future to create skeleton entities

How confident are you that this is the case still?

Still hopeful, shouldn't be that hard to create a snapshot containing the skeleton entities. The harder thing will be to modify the various flows we have to work with these skeleton entities.


Add timeout

To bisect hangs.

Timeout to what? What hangs? Can you provide more clarification?

If the rustc regression is a hang, it would be useful for cargo-bisect-rustc to timeout after testing for a certain amount of time and then considering that timeout as if the compiler crashed.

For context: I was trying to bisect https://github.com/rust-lang/rust/issues/72051.

Quite a few "extreme" slowness / hang issues lately where that would help do an unattended bisect instead of using --prompt.

This is now implemented via #135 and should be in the recently published 0.6.1.  Feel free to open new issues if there are any problems with the new --timeout option.


(WIP) update neuralynx io

Add info about inversion
Commented not-used lines in read_txt_header
In read_txt_header writes None to 'recording_opened' or 'recording_closed' if either breaks
TODO:
deal with ring buffer errors
deal with data of different lenghts (dsp)
follow up on #819
Data which cannot be read by current IO (or explaining the issues) are here

Hello @TRuikes! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file neo/rawio/neuralynxrawio.py:

Line 40:100: E501 line too long (106 > 99 characters)

I've moved all the patching functionality for dealing with misalginment and gaps to a separate function, which we can call 1 time per dataset to generate a patched dataset. This way, if you don't think it should be in rawio, we can move it elsewhere.

I'm finished with the draft, for these two files it seems to work, I'm going to check on the other data  we have in the future.
At this point the whole patching story is a separate function. I left it as a static method for convenience.

@TRRuikes : if I understand your PR you want be able to rewrite some some neuralynx files that contains gaps into mono-segment (without gap) new neuralynx folder.
I think that this would be very usefull in a generic (io inpedant) function.
For instance taking any rawio instance that have multi-segment signals and writte then into a raw binary IO files.
Having this functionality inside a rawio is a bit dangerous for long term maintenance because it is too specific.
@JuliaSprenger : what do you think ?

@samuelgarcia I agree, the patching functionality should rather go into some sort of utility function, but in a more generic fashion, such that it can be used across IOs.
@TRuikes: Also, if you have files exhibiting these irregularities, would you be willing to contribute one to the set of neo testfiles so we can cover this in the unittests?

hi @JuliaSprenger @samuelgarcia  @PeterNSteinmetz sorry for the no reply.
I think I'll close this PR since it's on an old version of neo now, and you've implemented some nice features. I had uploaded the breaking data on gin, but something went wrong with a PR, so I tried again just now. It should contain a few files which were/are not readable by the io (the reason specified in the description)
There is still a header parsing bug for me, I commented the solution for my data above.
Your concatenate function works nice, the padding keyword makes it even better. The only problem now is that 'ringbuffer errors' (ie losing datapoints during recording) occurs per channel. So in the case of my example data, for 1 ncs file it might detect 8 segments, and for another it might detect 10 segments, which the current neo does not allow to read (this is a good thing, in the sense that the user is aware something is up). Since I won't be able to read the data, I also cannot use the concatenate function for individual signals to fix them. One solution would be to allow the Neuralynx Io to read a single file, and extend the Io with a 'writer'. This way I can loop over all individual channels, use concatenate and write to store a fixed version.
Finally this section might be a neat addition. It will notify the user if during recordings a lag in one of the channels arises due to digital filtering, and cheetah not correcting for it (a problem we had, an example of this in the data uploaded on gin).

@TRuikes I think the longer term solution for this lies in handling the multiple sections (which is a name I introduced in the source code changes for contiguous groups of blocks of records) in some standardized way. This could be either creating multiple analog signals for a given channel which has multiple sections, or splitting up the Neo segments. I lean toward the former solution presently as the Neo definition is simply a set of data sharing the same common clock, which is the case for these different sections. Analog signals could be named with their normal name and a suffix, like _sect0, _sect1, etc. How would that strike you for your use case?

It sounds good, I think the most important thing is that all the data is able to load and we are warned if something suspiscious happens.

Hi @TRuikes I think the main aim of this PR is already covered in the master branch now via #836, correct? I suggest we continue the discussion in #819 and close this PR. What do you think?