Allow username to be specified in persistence secrets

What was changed
This commit allows the username to be specified alongside the password in persistence credentials secrets.
Why?
Many dynamic database creds generation / rotation systems (such as Hashicorp Vault) generate both the username and password dynamically, which is more secure than just generating / rotating passwords. The functionality has been updated to allow either or both of these to be optionally set via a secret with any or both of username and password keys.

This is a backwards incompatible change. While we can consider optionally storing the username in a secret, I don't want to force that.

@robholland There are two commits that are part of this PR, in the second one I added username to server-secret.yaml (in the same manner as password) - does that not make it backwards compatible such that if password is specified directly it will be included in the secret?  If not, let me know what you're looking for here and I'd be happy to revise it.

I can confirm that it would be great to have this! It blocks me too so it must block quite a few :)

I mean I'm not sure everyone wants their username in a secret. While I can see a use case for that when credentials are being rotated, I think it's unusual to put usernames into a secret. Is their prior art for this in other charts?

@robholland the necessity for the username to be part of the secret is that in systems that make use of advanced security / identity and access management, database creds are automatically and frequently rotated, with usernames rotating as well. Rotating usernames greatly increases security, because a threat would not know the username to be able to try passwords, and if they did gain access to a username it would only be valid for a limited time.
The best-in-class security frameworks such as Hashicorp Vault use this principle, here  is a reference to vault's database creds rotation engine.
And here  is a reference that shows how creds (both usernames and passwords) are automatically rotated in a kubernetes environment using VaultDynamciSecrets, which generate kubernetes secrets with the credentials.
There are plenty of other enterprise apps with helm deployments that support this architecture, a couple that come to mind which we use are grafana  and jenkins, the latter actually has a pretty unique way of doing it where you annotate the secrets to specify which field contains the username and which contains the password, but that's likely overkill for this application as in their case they built it to manage a large number of credentials, whereas here we only have a couple to manage.

I wanted to test backwards compatibility, so I tried testing this first by using the values.yaml as is, without setting up any secrets. I deployed the cluster with the following command:
helm install \
    --set server.replicaCount=1 \
    --set cassandra.config.cluster_size=1 \
    --set elasticsearch.replicas=1 \
    --set prometheus.enabled=false \
    --set grafana.enabled=false \
    temporaltest . \
    --timeout 15m

This resulted in the error:
Error: INSTALLATION FAILED: template: temporal/templates/server-secret.yaml:30:36: executing "temporal/templates/server-secret.yaml" at <b64enc>: invalid value; expected string

@tomwheeler Thanks for flagging this, I'll take a look at what might be causing that.


dialog filters bound to specific dialogs

closes #457

Hi, we have completely rework dialogs. It might fix the issue.


How to fix "Concurrency is only available in iOS 15.0.0 or newer" error Flutter

I recently updated my Flutter SDK to 3.0.4, and my project would no longer build when trying to launch on the iOS Simulator.
I got the following errors and implemented the solutions below each error:
The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99.
Solution that has worked in the past but fails now since this is also included in the error message: https://stackoverflow.com/questions/61823044/flutter-the-ios-simulator-deployment-target-iphoneos-deployment-target-is-se
and
error: 'Flutter/Flutter.h' file not found
Solution when I got above error, worked in the past, not now: https://stackoverflow.com/questions/64973346/error-flutter-flutter-h-file-not-found-when-flutter-run-on-ios (basically deleting and rebuilding ios folder)
I then tried to re-implement this (https://codewithandrea.com/tips/speed-up-cloud-firestore-xcode-builds/) after rebuilding the ios folder (requires a new podfile) in the solution above as the builds took forever to fail, and it worked well before the Flutter update. I used firestore version 9.2.0 since that is what was in my podfile.lock file.
This is when I started getting the swift compiler error I cannot solve, shown below. Other projects are running with the flutter update and on this simulator. Even after reversing the solution from the "code with Andrea" link above, I still get this same error.
pod install, pod update, flutter pub cache repair, flutter clean, flutter pub get, pod install --repo-update, none of these solve the error.
Please help.
Error message (it wouldn't let me post the whole thing, character limits):
Running "flutter pub get" in project_name... Launching lib/main.dart on iPhone 12 in debug mode... Xcode build done.                                           300.1s Failed to build iOS app Error output from Xcode build: ↳     ** BUILD FAILED ** Xcode's output: ↳     Writing result bundle at path:     	/var/folders/5m/btwjgwbs3zz4xt0v29h78lsm0000gn/T/flutter_tools.GaL813/flutter_ios_build_temp_dirDysItT/temporary_xcresult_bundle /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/location-4.4.0/ios/Classes/LocationPlugin.m:176:13: warning: 'UIAlertView' is deprecated: first deprecated in iOS 9.0 - UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead [-Wdeprecated-declarations]                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location is Disabled"                 ^     In module 'UIKit' imported from /Users/projectPath/ios/Pods/Target Support Files/location/location-prefix.pch:2:     /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAlertView.h:27:12: note: 'UIAlertView' has been explicitly marked deprecated here     @interface UIAlertView : UIView                ^ /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/location-4.4.0/ios/Classes/LocationPlugin.m:176:48: warning: 'UIAlertView' is deprecated: first deprecated in iOS 9.0 - UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead [-Wdeprecated-declarations]                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location is Disabled"                                                    ^     In module 'UIKit' imported from /Users/projectPath/ios/Pods/Target Support Files/location/location-prefix.pch:2:     /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAlertView.h:27:12: note: 'UIAlertView' has been explicitly marked deprecated here     @interface UIAlertView : UIView                ^     2 warnings generated. /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/location-4.4.0/ios/Classes/LocationPlugin.m:176:13: warning: 'UIAlertView' is deprecated: first deprecated in iOS 9.0 - UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead [-Wdeprecated-declarations]                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location is Disabled"                 ^     In module 'UIKit' imported from /Users/projectPath/ios/Pods/Target Support Files/location/location-prefix.pch:2:     /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAlertView.h:27:12: note: 'UIAlertView' has been explicitly marked deprecated here     @interface UIAlertView : UIView                ^ /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/location-4.4.0/ios/Classes/LocationPlugin.m:176:48: warning: 'UIAlertView' is deprecated: first deprecated in iOS 9.0 - UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead [-Wdeprecated-declarations]                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location is Disabled"                                                    ^     In module 'UIKit' imported from /Users/projectPath/ios/Pods/Target Support Files/location/location-prefix.pch:2:     /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAlertView.h:27:12: note: 'UIAlertView' has been explicitly marked deprecated here     @interface UIAlertView : UIView                ^     2 warnings generated.     1 warning generated.     error: the following command failed with exit code 0 but produced no further output CompileC /Users/user1/Library/Developer/Xcode/DerivedData/Runner-btumkhqxnfgahyertjizuikcyuzl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/geolocator_apple.build/Objects-normal/arm64/GeolocatorPlugin.o /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator_apple-2.2.0/ios/Classes/GeolocatorPlugin.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'geolocator_apple' from project 'Pods') /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/ios/Classes/ReachabilityConnectivityProvider.swift:23:5: warning: result of call to 'ensureReachability()' is unused         ensureReachability()         ^                 ~~ /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/ios/Classes/PathMonitorConnectivityProvider.swift:31:5: warning: result of call to 'ensurePathMonitor()' is unused         ensurePathMonitor()         ^                ~~ /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/ios/Classes/PathMonitorConnectivityProvider.swift:35:5: warning: result of call to 'ensurePathMonitor()' is unused         ensurePathMonitor()         ^                ~~ /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/ios/Classes/PathMonitorConnectivityProvider.swift:31:5: warning: result of call to 'ensurePathMonitor()' is unused         ensurePathMonitor()         ^                ~~ /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/ios/Classes/PathMonitorConnectivityProvider.swift:35:5: warning: result of call to 'ensurePathMonitor()' is unused         ensurePathMonitor()         ^                ~~ /Users/user1/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/connectivity_plus-2.3.5/ios/Classes/ReachabilityConnectivityProvider.swift:23:5: warning: result of call to 'ensureReachability()' is unused         ensureReachability()         ^                 ~~     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:224:29: error: concurrency is only available in iOS 15.0.0 or newer         open func downloadURL() async throws -> URL {                                 ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:293:25: error: concurrency is only available in iOS 15.0.0 or newer         open func listAll() async throws -> StorageListResult {                             ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:377:29: error: concurrency is only available in iOS 15.0.0 or newer         open func getMetadata() async throws -> StorageMetadata {                                 ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:407:59: error: concurrency is only available in iOS 15.0.0 or newer         open func updateMetadata(_ metadata: StorageMetadata) async throws -> StorageMetadata {                                                               ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:441:24: error: concurrency is only available in iOS 15.0.0 or newer         open func delete() async throws {                            ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/user1/Library/Developer/Xcode/DerivedData/Runner-btumkhqxnfgahyertjizuikcyuzl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FirebaseStorage.build/Objects-normal/x86_64/StorageMetadata.dia:1:1: warning: Could not read serialized diagnostics file: error("Invalid diagnostics signature") (in target 'FirebaseStorage' from project 'Pods')     Command CompileSwift failed with a nonzero exit code     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:224:29: error: concurrency is only available in iOS 15.0.0 or newer         open func downloadURL() async throws -> URL {                                 ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:293:25: error: concurrency is only available in iOS 15.0.0 or newer         open func listAll() async throws -> StorageListResult {                             ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:377:29: error: concurrency is only available in iOS 15.0.0 or newer         open func getMetadata() async throws -> StorageMetadata {                                 ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:407:59: error: concurrency is only available in iOS 15.0.0 or newer         open func updateMetadata(_ metadata: StorageMetadata) async throws -> StorageMetadata {                                                               ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:441:24: error: concurrency is only available in iOS 15.0.0 or newer         open func delete() async throws {                            ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/user1/Library/Developer/Xcode/DerivedData/Runner-btumkhqxnfgahyertjizuikcyuzl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FirebaseStorage.build/Objects-normal/x86_64/StorageObservableTask.dia:1:1: warning: Could not read serialized diagnostics file: error("Invalid diagnostics signature") (in target 'FirebaseStorage' from project 'Pods')     Command CompileSwift failed with a nonzero exit code     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:224:29: error: concurrency is only available in iOS 15.0.0 or newer         open func downloadURL() async throws -> URL {                                 ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:293:25: error: concurrency is only available in iOS 15.0.0 or newer         open func listAll() async throws -> StorageListResult {                             ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:377:29: error: concurrency is only available in iOS 15.0.0 or newer         open func getMetadata() async throws -> StorageMetadata {                                 ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:407:59: error: concurrency is only available in iOS 15.0.0 or newer         open func updateMetadata(_ metadata: StorageMetadata) async throws -> StorageMetadata {                                                               ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:441:24: error: concurrency is only available in iOS 15.0.0 or newer         open func delete() async throws {                            ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:224:29: error: concurrency is only available in iOS 15.0.0 or newer         open func downloadURL() async throws -> URL {                                 ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:293:25: error: concurrency is only available in iOS 15.0.0 or newer         open func listAll() async throws -> StorageListResult {                             ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:377:29: error: concurrency is only available in iOS 15.0.0 or newer         open func getMetadata() async throws -> StorageMetadata {                                 ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:407:59: error: concurrency is only available in iOS 15.0.0 or newer         open func updateMetadata(_ metadata: StorageMetadata) async throws -> StorageMetadata {                                                               ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:441:24: error: concurrency is only available in iOS 15.0.0 or newer         open func delete() async throws {                            ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/user1/Library/Developer/Xcode/DerivedData/Runner-btumkhqxnfgahyertjizuikcyuzl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FirebaseStorage.build/Objects-normal/i386/StorageMetadata.dia:1:1: warning: Could not read serialized diagnostics file: error("Invalid diagnostics signature") (in target 'FirebaseStorage' from project 'Pods')     Command CompileSwift failed with a nonzero exit code                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:407:59: error: concurrency is only available in iOS 15.0.0 or newer         open func updateMetadata(_ metadata: StorageMetadata) async throws -> StorageMetadata {                                                               ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:441:24: error: concurrency is only available in iOS 15.0.0 or newer         open func delete() async throws {                            ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/user1/Library/Developer/Xcode/DerivedData/Runner-btumkhqxnfgahyertjizuikcyuzl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FirebaseStorage.build/Objects-normal/arm64/StorageMetadata.dia:1:1: warning: Could not read serialized diagnostics file: error("Invalid diagnostics signature") (in target 'FirebaseStorage' from project 'Pods')     Command CompileSwift failed with a nonzero exit code                                ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:407:59: error: concurrency is only available in iOS 15.0.0 or newer         open func updateMetadata(_ metadata: StorageMetadata) async throws -> StorageMetadata {                                                               ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:441:24: error: concurrency is only available in iOS 15.0.0 or newer         open func delete() async throws {                            ^     /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:25:39: note: add @available attribute to enclosing class     @objc(FIRStorageReference) open class StorageReference: NSObject {                                           ^     Command CompileSwiftSources failed with a nonzero exit code     note: Using new build system     note: Planning     note: Build preparation complete     note: Building targets in parallel     note: Removed stale file '/Users/user1/Library/Developer/Xcode/DerivedData/Runner-btumkhqxnfgahyertjizuikcyuzl/Build/Products/Debug-iphonesimulator/firebase_core/firebase_core.framework'     /Users/projectPath/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'leveldb-library' from project 'Pods')     /Users/projectPath/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'ReachabilitySwift' from project 'Pods')     /Users/projectPath/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'MTBBarcodeScanner' from project 'Pods')     /Users/projectPath/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'TOCropViewController-TOCropViewControllerBundle' from project 'Pods')     /Users/projectPath/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'TOCropViewController' from project 'Pods')     Result bundle written to path:     	/var/folders/5m/btwjgwbs3zz4xt0v29h78lsm0000gn/T/flutter_tools.GaL813/flutter_ios_build_temp_dirDysItT/temporary_xcresult_bundle Uncategorized (Xcode): Command CompileSwift failed with a nonzero exit code Swift Compiler Error (Xcode): Concurrency is only available in iOS 15.0.0 or newer /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:223:28 Swift Compiler Error (Xcode): Concurrency is only available in iOS 15.0.0 or newer /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:292:24 Swift Compiler Error (Xcode): Concurrency is only available in iOS 15.0.0 or newer /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:376:28 Swift Compiler Error (Xcode): Concurrency is only available in iOS 15.0.0 or newer /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:406:58 Swift Compiler Error (Xcode): Concurrency is only available in iOS 15.0.0 or newer /Users/projectPath/ios/Pods/FirebaseStorage/FirebaseStorage/Sources/StorageReference.swift:440:23 Uncategorized (Xcode): Command CompileSwiftSources failed with a nonzero exit code Could not build the application for the simulator. Error launching application on iPhone 12. Exited

That error is coming from FirebaseStorage; issues with third -party plugins need to be reported to the developers of those plugins.


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/118607

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/120107

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/120196


Deprecate debug in IDEA tasks

These parameters don't do anything in the IDEA tasks, so are deprecated and can be removed in future.

This seems to break the current master build.

The error on the log is confusing... Complains about missing class "org/jetbrains/kotlin/config/JvmTarget" but only on Java 8 on Travis.
I'll revert this then let's see what happens.

Reverting didn't fix it, see the build error on #1924.
I'm closing that and opening a new issue for the build failure.


Add more symbol

this project is very good, can you support to add more symbol, ex: DOGE, MATIC

After i run docker-compose down and running live mode on server, more coin is in list.
thanks


1.3.0 not working with up-to-date KeePass

KeePassHTTP python version 1.3.0 returns an exception on both Windows native python and Cygwin when collecting a credential.  This works if I revert the keepasshttp module to 1.2.3.

KeePass version: 2.43
KeePassHTTP version: <IP_ADDRESS>
Python module: 1.3.0
Python version: 3.6.9 (cygwin)
Python version: 3.7.4 (native)
OS: Windows 7 x64

Example code:
import keepasshttp

kp = keepasshttp.KeePassHTTP(url="localhost:19455")
print(kp.get("www.example.com"))

Exception is the same on both platforms.  KeePass will generate (and regenerate) the correct encryption keys and prompt to add them in the UI.  I know for some libraries it's possible to mess with the trace logging to get more info about the error, but I'm not sure how to do that for this.  From a debugging stance, I'm not sure where to look in KPH to find out what that bad response was.
Traceback (most recent call last):
  File "keepass_test.py", line 4, in <module>
    print(kp.get("www.example.com"))
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 130, in get
    entries = self.search(key)
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 113, in search
    data = self._request("get-logins", Url=key, SortSelection=sort_keys)
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 189, in _request
    self._load()
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 168, in _load
    self._authenticate()
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 185, in _authenticate
    self._request("test-associate")
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 207, in _request
    raise KeePassHTTPException("KeePassHTTP returned an error")  # pragma: no cover
keepasshttp.keepass_http.KeePassHTTPException: KeePassHTTP returned an error

Dependency notes:
Here's what pip shows it had on hand as dependencies:
$ pip3 install keepasshttp --upgrade
Collecting keepasshttp
  Using cached https://files.pythonhosted.org/packages/6a/00/552d4f6d14dd814c8902f4ad694aef1ec04cafccd9cec3d0bb8e4925c042/keepasshttp-1.3.0-py2.py3-none-any.whl
Requirement already satisfied, skipping upgrade: six>=1.12.0 in /usr/lib/python3.6/site-packages (from keepasshttp) (1.12.0)
Requirement already satisfied, skipping upgrade: pycryptodome>=3.8.2 in /usr/lib/python3.6/site-packages (from keepasshttp) (3.9.0)
Requirement already satisfied, skipping upgrade: requests>=2.19.1 in /usr/lib/python3.6/site-packages (from keepasshttp) (2.21.0)
Requirement already satisfied, skipping upgrade: ordereddict>=1.1 in /usr/lib/python3.6/site-packages (from keepasshttp) (1.1)
Requirement already satisfied, skipping upgrade: urllib3<1.25,>=1.21.1 in /usr/lib/python3.6/site-packages (from requests>=2.19.1->keepasshttp) (1.24.1)
Requirement already satisfied, skipping upgrade: idna<2.9,>=2.5 in /usr/lib/python3.6/site-packages (from requests>=2.19.1->keepasshttp) (2.8)
Requirement already satisfied, skipping upgrade: chardet<3.1.0,>=3.0.2 in /usr/lib/python3.6/site-packages (from requests>=2.19.1->keepasshttp) (3.0.4)
Installing collected packages: keepasshttp
  Found existing installation: keepasshttp 1.2.3
    Uninstalling keepasshttp-1.2.3:
      Successfully uninstalled keepasshttp-1.2.3
Successfully installed keepasshttp-1.3.0

Thank you for the thorough investigation. KeePassHTTP has some stacktraces available. But could also add a bit more information.
I will try to reproduce it on my side and come up with a fix.

Ok, so I tried to hit that bug with the same version of KeePass and KeePassHTTP that you had, but everything was fine and all tests passes.
KeePass version: 2.43
KeePassHTTP version: <IP_ADDRESS>
I will publish a new version of this package that add more details in the logs and traces. When published, could you retry and give me the trace again ?

KeePassHTTP v1.4.0 has been released, please see if it solve issue or show more details ?

I've got the same problem as computergeek125, and for me release 1.4.0 does not fix it. But I might be able to give a helpful hint. For me the root cause of the problem appears to be a bug in the refactoring of the _encrypt() function between releases 1.2.3 and 1.3.0. That function now returns - after some if...elif... clauses - with a str(data).lower() statement. Unfortunately this messes with the 'Id' value of the request_data if that value contains uppercase letters. If you add debug print lines before and after the encryption of the request data, you can see that before encryption the Id is, for example, 'SECRETSAUCE', and after encryption it is 'secretsauce'. If I delete the `.lower()' conversion at the end of the _encrypt() function, the exception goes away and everything seems to work. But I don't think that would be a proper fix, since presumedly the lower case conversion is principally there for a reason and if it is taken away completely there could arise problems somewhere else.

Sorry, didn't see this until today.  If the API is not expected to change between the versions, I get this when upgrading working software from 1.2.3 to 1.4.0
Traceback (most recent call last):
  File "*******.py", line 316, in <module>
    init()
  File "*******.py", line 127, in init
    ******* = login.keepass(args.url, session=session)
  File "/cygdrive/c/src/*******/*******.py", line 23, in keepass
    credential = kp.get(url)
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 174, in get
    entries = self.search(key)
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 157, in search
    data = self._request("get-logins", Url=key, SortSelection=sort_keys)
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 233, in _request
    self._load()
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 212, in _load
    self._authenticate()
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 229, in _authenticate
    self._request("test-associate")
  File "/usr/lib/python3.6/site-packages/keepasshttp/keepass_http.py", line 251, in _request
    raise KeePassHTTPBadResponse(response)  # pragma: no cover
KeePassHTTP server return an error
Status: 200 - Body: b'{"RequestType":"test-associate","Success":false,"Count":0,"Version":"<IP_ADDRESS>","Hash":"*******"}'
keepasshttp.keepass_http.KeePassHTTPBadResponse: KeePassHTTP server return an error
Status: 200 - Body: b'{"RequestType":"test-associate","Success":false,"Count":0,"Version":"<IP_ADDRESS>","Hash":"*******"}'

Thank you for the feedbacks guys, really helpful!
The  lower() statement might be the root cause and since the testcases don't use case sensitive Id that would explain the why the test-associate query fails.
I will remove it and test again when I have some time to check it out.

Removing that command in my local copy manually solved the problem, too.
@cyrbil Any reason not to apply this?

Well, I kinda let this issue sits ...
Reason was that during my tests on various environment + kph version, I was not able to find a stable fix.
@just-grizzle which command ? lower() ?
If someone has used a version without the lower part for some time, could you raise your hand ?
Will try to release a version this week with the fix, because it's blocking anyway.

Fixed in latest version.

Sorry, did not see you answered. I removed the lower(), that's what worked for me.

My project got stuck on the back burner for a bit, but to loop back on this, 1.4.1 installed from pip appears to be working


email verification via OTP --completed.

I have added backed methods to do OTP verification for email. Please review once for any correction and merge the PR.
Thanks & Regards,
Suman Kumar

Abhi check nhi kiye hai kr ke batate hai 😃


IPv6: Daily service disruption on prefix change

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:
[x] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[x] I have searched the existing issues and I'm convinced that mine is new.
Describe the bug
When OPNsense is set up with a dynamic ISP prefix (including prefix delegation and prefix tracking on interfaces), the interfaces go down for a few seconds every day when the prefix changes. This (obviously) interrupts all network connections.
However the PPPoE connection in my case remains online (no daily reconnects). It's just that my ISP announces a new IPv6 prefix every 22 hours (which remains valid for 24 hours). The IPv4 address remains the same.
To Reproduce

Enable IPv6 with DHCP-over-IPv4 on PPPoE connection
Set up prefix tracking for interfaces
A new IPv6 address will eventually be picked up by the interfaces
Wait until the IPv6 prefix is due for renewal (22 hours in my case)
As soon as a new prefix is announced the interfaces go down for a second and are brought up again with a new IPv6 address from the new prefix. The old address is lost.

This causes service disruption for the clients (both IPv4 and IPv6) and all clients need to reconfigure their IPv6 addresses immediately.
Expected behavior
There are actually two issues here:

The interfaces should not be brought down at all. It's a simple address change (more precisely an additional IPv6 address). IPv4 connectivity is not affected and hence should not be touched at all.
The old addresses should not be removed from the interfaces (they should only be marked as "deprecated"). The new interface address from the new prefix should be set as an additional IPv6 address with the "preferred" flag. The new prefix should be announced.

This way clients which still have an address from the old prefix will keep their connectivity. As soon as a client picks up a Router Advertisement with the new prefix it can deprecate it's old IPv6 addresses.
Relevant log files
/var/log/system.log
Apr 14 10:05:40 gate dhcp6c[30391]: Sending Renew
Apr 14 10:05:40 gate dhcp6c[30391]: Received REPLY for RENEW
Apr 14 10:12:19 gate kernel: igb1: link state changed to DOWN
Apr 14 10:12:19 gate kernel: igb1_vlan50: link state changed to DOWN
Apr 14 10:12:19 gate kernel: igb1_vlan100: link state changed to DOWN
Apr 14 10:12:19 gate kernel: igb1_vlan200: link state changed to DOWN
Apr 14 10:12:19 gate kernel: igb1_vlan30: link state changed to DOWN
Apr 14 10:12:19 gate opnsense: /usr/local/etc/rc.linkup: DEVD Ethernet detached event for lan
Apr 14 10:12:20 gate opnsense: /usr/local/etc/rc.linkup: Hotplug event detected for MMT(opt3) but ignoring since interface is configured with static IP (<IP_ADDRESS> ::)
Apr 14 10:12:21 gate opnsense: /usr/local/etc/rc.linkup: DEVD Ethernet detached event for opt2
Apr 14 10:12:21 gate opnsense: /usr/local/etc/rc.linkup: Hotplug event detected for SRV(opt1) but ignoring since interface is configured with static IP (<IP_ADDRESS> ::)
Apr 14 10:12:22 gate kernel: igb1: link state changed to UP
Apr 14 10:12:22 gate kernel: igb1_vlan50: link state changed to UP
Apr 14 10:12:22 gate kernel: igb1_vlan100: link state changed to UP
Apr 14 10:12:22 gate kernel: igb1_vlan200: link state changed to UP
Apr 14 10:12:22 gate kernel: igb1_vlan30: link state changed to UP
Apr 14 10:12:23 gate opnsense: /usr/local/etc/rc.linkup: Hotplug event detected for OG(opt4) but ignoring since interface is configured with static IP (<IP_ADDRESS> ::)
Apr 14 10:12:23 gate opnsense: /usr/local/etc/rc.linkup: DEVD Ethernet attached event for lan
Apr 14 10:12:23 gate opnsense: /usr/local/etc/rc.linkup: HOTPLUG: Configuring interface lan
Apr 14 10:12:24 gate dhcp6c[30391]: restarting
Apr 14 10:12:24 gate dhcp6c[30391]: Bypassing address release because of -n flag
Apr 14 10:12:24 gate dhcp6c[30391]: failed to remove an address on igb1_vlan100: Can't assign requested address
Apr 14 10:12:24 gate dhcp6c[30391]: failed to remove an address on igb1: Can't assign requested address
Apr 14 10:12:24 gate dhcp6c[30391]: Sending Solicit
Apr 14 10:12:24 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: entering configure using 'lan'
Apr 14 10:12:24 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: IPv4 default gateway set to wan
Apr 14 10:12:24 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: no IPv6 default gateway set, assuming wan
Apr 14 10:12:24 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: skipping IPv4 default route
Apr 14 10:12:24 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: skipping IPv6 default route
Apr 14 10:12:25 gate dhcp6c[30391]: Sending Request
Apr 14 10:12:25 gate dhcp6c[30391]: Received REPLY for REQUEST
Apr 14 10:12:25 gate dhcp6c[30391]: add an address 2003:f4:xxxx:5364:2099:d2ff:fe7b:xxxx/64 on igb1_vlan100
Apr 14 10:12:25 gate dhcp6c[30391]: add an address 2003:f4:xxxx:5314:2099:d2ff:fe7b:xxxx/64 on igb1
Apr 14 10:12:25 gate dhcp6c: dhcp6c REQUEST on pppoe0 - running newipv6
Apr 14 10:12:25 gate opnsense: /usr/local/etc/rc.newwanipv6: IP renewal is starting on 'pppoe0'
Apr 14 10:12:25 gate opnsense: /usr/local/etc/rc.newwanipv6: On (IP address: fe80::20d:b9ff:fe4a:xxxx) (interface: WAN[wan]) (real interface: pppoe0).
Apr 14 10:12:29 gate opnsense: /usr/local/etc/rc.linkup: Warning! services_dhcpdv4_configure() found no suitable IPv4 address on opt2
Apr 14 10:12:31 gate opnsense: /usr/local/etc/rc.linkup: Hotplug event detected for MMT(opt3) but ignoring since interface is configured with static IP (<IP_ADDRESS> ::)
Apr 14 10:12:31 gate opnsense: /usr/local/etc/rc.newwanip: IP renewal is starting on 'igb1_vlan50'
Apr 14 10:12:31 gate opnsense: /usr/local/etc/rc.newwanip: On (IP address: <IP_ADDRESS>) (interface: MMT[opt3]) (real interface: igb1_vlan50).
Apr 14 10:12:32 gate opnsense: /usr/local/etc/rc.linkup: DEVD Ethernet attached event for opt2
Apr 14 10:12:32 gate opnsense: /usr/local/etc/rc.linkup: HOTPLUG: Configuring interface opt2
Apr 14 10:12:32 gate dhcp6c[30391]: restarting
Apr 14 10:12:32 gate dhcp6c[30391]: Bypassing address release because of -n flag
Apr 14 10:12:32 gate dhcp6c[30391]: failed to remove an address on igb1_vlan100: Can't assign requested address
Apr 14 10:12:32 gate dhcp6c[30391]: remove an address 2003:f4:xxxx:5314:2099:d2ff:fe7b:xxxx/64 on igb1
Apr 14 10:12:33 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: entering configure using 'opt2'
Apr 14 10:12:33 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: IPv4 default gateway set to wan
Apr 14 10:12:33 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: no IPv6 default gateway set, assuming wan
Apr 14 10:12:33 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: skipping IPv4 default route
Apr 14 10:12:33 gate opnsense: /usr/local/etc/rc.linkup: ROUTING: skipping IPv6 default route
Apr 14 10:12:33 gate dhcp6c[30391]: Sending Solicit
Apr 14 10:12:34 gate dhcp6c[30391]: Sending Request
Apr 14 10:12:34 gate dhcp6c[30391]: Received REPLY for REQUEST
Apr 14 10:12:34 gate dhcp6c[30391]: add an address 2003:f4:xxxx:5364:2099:d2ff:fe7b:xxxx/64 on igb1_vlan100
Apr 14 10:12:34 gate dhcp6c[30391]: add an address 2003:f4:xxxx:5314:2099:d2ff:fe7b:xxxx/64 on igb1
Apr 14 10:12:34 gate dhcp6c: dhcp6c REQUEST on pppoe0 - running newipv6
Apr 14 10:12:35 gate opnsense: /usr/local/etc/rc.newwanipv6: IP renewal is starting on 'pppoe0'
Apr 14 10:12:35 gate opnsense: /usr/local/etc/rc.newwanipv6: On (IP address: fe80::20d:b9ff:fe4a:xxxx) (interface: WAN[wan]) (real interface: pppoe0).
Apr 14 10:12:41 gate opnsense: /usr/local/etc/rc.linkup: Hotplug event detected for SRV(opt1) but ignoring since interface is configured with static IP (<IP_ADDRESS> ::)
Apr 14 10:12:41 gate opnsense: /usr/local/etc/rc.newwanip: IP renewal is starting on 'igb1_vlan200'
Apr 14 10:12:41 gate opnsense: /usr/local/etc/rc.newwanip: On (IP address: <IP_ADDRESS>) (interface: SRV[opt1]) (real interface: igb1_vlan200).
Apr 14 10:12:43 gate opnsense: /usr/local/etc/rc.linkup: Hotplug event detected for OG(opt4) but ignoring since interface is configured with static IP (<IP_ADDRESS> ::)
Apr 14 10:12:43 gate opnsense: /usr/local/etc/rc.newwanip: IP renewal is starting on 'igb1_vlan30'
Apr 14 10:12:43 gate opnsense: /usr/local/etc/rc.newwanip: On (IP address: <IP_ADDRESS>) (interface: OG[opt4]) (real interface: igb1_vlan30).

PPPoE Setup:

Additional context
See RFC4862 and RFC3315 for details about preferred-lifetime and valid-lifetime.
Environment
Software version used and hardware type if relevant.
e.g.:
OPNsense 19.1.6-amd64
APU2C4

I can confirm this issue. I am getting a short interface UP/DOWN toggle roughly every 48 hours. This only happens when IPv6 with prefix tracking is enabled. With IPv6 disabled I am not getting these disconnects.
Observations:

PPPoE connection/interface does not toggle. There is no forced PPPoE disconnect from my ISP
IPv4 and IPv6 address/prefix does not change

I think the reason for the interface toggling is that my my ISP assigns me a new temporary IPv6 address and prefix every 2 days. OPNsense does not really care about these temporary addresses, as it only uses the permanent IPv6 prefix anyway. I also don't see why the local interfaces should be brought up/down at all.
Is there any way we can help debugging this further? How can I see the actual reason for the interface toggling? Right now I can only see a dhcp6c log entry, followed by the interface DOWN message.

When dhcp6c receives a renew then nothing should happen. The script it calls is /var/etc/dhcp6c_*_script.sh. It should look like this:
#!/bin/sh if [ -n 'debug' ]; then 	/usr/bin/logger -t dhcp6c "dhcp6c $REASON on igb0" fi case $REASON in REQUEST|RELEASE) 	/usr/bin/logger -t dhcp6c "dhcp6c $REASON on igb0 - running newipv6" 	/usr/local/opnsense/service/configd_ctl.py interface newipv6 igb0 	;; *) 	;; esac
The only time the script does anything is on REQUEST or RELEASE.  Something else is causing the interface to drop and that causes dhcp6c to restart and send a REQUEST message. Not seeing anything like that on my system - my logs show this:
`

Apr 25 07:27:11
dhcp6c: dhcp6c RENEW on igb0

Apr 25 07:27:11
dhcp6c[76594]: T1(2250) and/or T2(3600) is locally determined

Apr 25 07:27:11
dhcp6c[76594]: Received REPLY for RENEW

Apr 25 07:27:11
dhcp6c: dhcp6c RENEW on igb0

`

@klada I am guessing this is radvd advertising the routes as being removed due to WAN changing its prefix. I'm not sure if we can keep the old and the new address on the WAN. To me shifting the prefix is always a bad way to mess with customers and there's no real difference if the ISP gives you a chance to use the new prefix while the old one is still going ok. It essentially means you have to know how long their lifetime is so it can be configured properly. And besides, that is almost equal to IPv4 connection reset, where you are going to be disrupted anyway.
FWIW, I've marked this as "feature" to discuss options because I'm not sure there is any particular bug here. It's more of a requirement that "it should not" but the "how" currently eludes me.
@aofwer can you try 8279f2828, i.e.
# opnsense-patch 8279f2828

Cheers,
Franco

@fichtner I did some observations and it turns out that I am not getting a new prefix every 24 hours any more (I am on 19.1.7 by now). I don't know if my ISP has changed something regarding the prefix or if something IPv6-related has changed in OPNsense. The bad news is that the interface toggling every ~24 hours is still there.
Is there any way to debug the prefix announcements from the ISP? I have already enabled DHCP client debugging for my WAN connection (PPPoE), but I don't see any relevant information in the log.

I've upgraded from 19.1.5 to 19.1.8 and I have not had a single interface toggle for over 4 days now. I did not test the suggested patch yet, as I wanted to see if the upgrade fixes things. So far it's looking good at my side.

I have switched my hardware (from APU2C2 to APU4C4) and also started with a fresh config on 19.1.8 and the issue is gone. So I am closing this, as it's working for me now.

I stumbled across this behaviour during multiwan-test and can confirm this.
LAN-Interface configured with WAN-Tracking loses its IP on reconnect. Simply opening the problematic LAN-IF, save and reload with nothing changed is my workaround so far.
I have PPPoE too in Germany, so 24h disconnect from ISP is same like the OP, but I have a static prefix, so dynamic prefix shouldn't be the problem here.


Modernize codebase

This fixes all current warnings, as well as those generated by rust_2018_compatibility, which contains problems that would prevent switching to the the 2018 edition, and those from rust_2018_idioms, which covers things which are now considered bad style. Additionally, it moves from using FnBox to using FnOnce, which requires a different feature flag, but appears to now be the preferred usage.
I'm happy to divide these up into separate pull requests if you like; I just didn't see the point as is.

By the way, is there any reason you’re not using the Travis CI GitHub integration?

Sorry it took me a while to get to this! No clue why I'm not using Travis for this project. I just never set it up I guess. If I find some time in the next couple of days I'll put it together. PR looks good, I'd like to get Travis on it before I merge it though.

So, looking more closely, you do have Travis set up (build for this pull request). It just isn't posting on GitHub for some reason. It looks like Travis is changing things up, and there will be a new way of doing the integration soon.

Interesting! Alright, well, since the build passes I have no problem merging this. I'll look into fixing the Travis integration later. If the migration is really the cause it's probably broken CI on all my other repositories too...


Unable to get concensus using Ubuntu18 container build

Good Morning,
In our lab, we have 4 ubuntu linux machines, each that represent an partner organization that we are attempting to model.  These virtual machines are behind a load balancer that has a single IP address where we select a node by varying the port number.  Inside the Linux server we run docker and the ubuntu18 container version of the hyperledger node services.
In order to get the node to bind to the container interface and allow the port to be exposed I modified the genesis file for each node to set the node and client ip address to <IP_ADDRESS> and the local port numbers for which the load balancer is mapped.  The client appears to be connecting to all the nodes, but it appears that I'm not getting consensus.
I can't seem to locate a point in the logs that would indicate the source of the consensus issue, have I upset the configuration by modifying the endpoint data in the genesis file.  How would you suggest that I reconcile what endpoints the node has to bind to locally versus what is visible to the outside world?
indy_cli.log
IndyNode1.log
IndyNode2.log
IndyNode3.log
IndyNode4.log
validator.IndyNode1.out.txt
validator.IndyNode2.out.txt
validator.IndyNode3.out.txt
validator.IndyNode4.out.txt

@mgmgwi any thoughts?

Sorry I'm currently offline, without access to my notebook. Setting <IP_ADDRESS> in the genesis file seems strange, but I don't get your setup. Do you have 4 machines with docker or just one? The file should contain the IPs which are reachable from each node. If you are using a loadbalancer then you should use it's IP.
I'm back at the office in about 2 weeks, then I can have a closer look.
Maybe @Echsecutor or @solidnerd can help in the meantime.

Hey @m-madore,
mapping to <IP_ADDRESS> means that this will be every IP Address. Hyperledger Indy Node requires a fixed set of IP addresses (this should never change) or a single one with a port variation.
So you can set the Address to the externally visible IP Adress of the LoadBalancer.
In our approach for generating the genesis file, we have a script to generate all the things that are needed
https://github.com/hyperledger/indy-node-container/blob/main/test/init-test-network.sh
All Docker nodes get a fixed IP address to be readdressable these can be seen in:
https://github.com/hyperledger/indy-node-container/blob/main/test/docker-compose.yaml
For example, you can also do the same without docker-compose
docker network create --subnet "<IP_ADDRESS>/24" --gateway "<IP_ADDRESS>" indy-network

@solidnerd - our test implementation is slightly different to mimic a docker install in multiple physical locations, hence the there are four hosts with one docker each, the 10.x.x.x ip addresses are the host addresses on port 9701 and represent of an internal network within the partner organization and the client addresses and ports are on the load balancer that map individual port numbers back to the client port 9702 at each host inside the private network.
I only set the host address to <IP_ADDRESS> for each container for the respective node in order to control the bind on the listening port for the current node and used the docker compose file to map the docker port to the host port.  From within the docker I was not able to bind directly to host address, so I cheated and bound the docker's listening port to <IP_ADDRESS> and relied on port parameter in docker-compose to expose the listener on the host VM.
So given this use case, I'm trying to demonstrate how to deploy 4 geographically separate nodes that are connected through an internal network with the node wrapped up in a docker deployment.   I think what you are suggesting is that I create an private address range inside the docker and define routing at the hosts to direct traffic to appropriate docker instance??

@solidnerd @mgmgwi any thoughts on how to have the nodes work behind a load balancer??

@m-madore sorry for the late answer. Can you please post your config files? If you have used the init-test-network.sh script to init the nodes, then your pool_transaction_genesis file is probably wrong. You may have to change this line:
docker run -v "${PWD}"/etc_indy:/etc/indy -v "${PWD}"/lib_indy:/var/lib/indy "$IMAGE_NAME_NODE" \
    /bin/bash -c "rm -rf /var/lib/indy/* && generate_indy_pool_transactions --nodes ${NODES} --clients 0 --nodeNum $(seq -s ' ' $NODES) --ips=\"$(seq -f '10.133.133.%g' -s ',' $NODES)

Setting --ips="ENTER_YOUR_LOADBALANCER_IP" may fix this, although the port may be wrong too.

Hi @m-madore !
Sorry to join this discussion quite late. Many helpful things have already been said. Let me recapitulate few points:

I modified the genesis file for each node to set the node and client ip address to <IP_ADDRESS> and the local port numbers for which the load balancer is mapped.

<IP_ADDRESS> is used in our default setup ( https://github.com/hyperledger/indy-node-container/blob/main/run/.env ) in order to tell the indy nodes to listen for incoming connections targeting any destination IP.  This is not a valid IP Adress where you can reach anyone, as is needed for the genesis file.
As mentioned by the others: the nodes need to be able to reach each other via the IP Adresses + ports specified in the genesis file. I.e. you need to set up your local routing such as to enable that.

I only set the host address to <IP_ADDRESS> for each container for the respective node in order to control the bind on the listening port for the current node and used the docker compose file to map the docker port to the host port.

Very good, that's the idea.

any thoughts on how to have the nodes work behind a load balancer??

Say you have an nginx load ballancer like e.g.
server {
    server_name YOUR_REACHABLE_HOST_NAME;
    listen 8030;

location / {
proxy_pass http://<IP_ADDRESS>:8032;
include proxy_params;
}

}

you would put YOUR_REACHABLE_HOST_NAME and 8030 into the genesis file and map the internal indy node port to 8032 on the VM which your node balancer can reach under the local ip <IP_ADDRESS>. the docker container should internally bind to <IP_ADDRESS> (for simplicity) and any port, as long as the latter is mapped to 8032 via e.g. the docker compose file.
I hope that clarifies a littlebit about the setup. Your local routing might be more or less complex, depending on your setting (node balancer on same host/VM as indy container or not, etc.)

@m-madore I hope you could get your setup up and running? If we can provide further advice, please re-open the ticket


Add a rematch button to the game screen

This might not be very useful in a released version of the game, but for testing this could be very helpful.
Not sure if this is ready just yet to be implemented, but possibly the initial invite message could be cached and repeated.
The invite window might need to be added to the game client in addition to the game lobby to make this work properly.
Maybe there needs to be a way to send a game invite that does not pop up the deck builder for specifically this type of game.

Related to #220


Improving Performance of Ionic ActionSheetController

[ ] 2.x
[X ] 3.x
[ ] 4.x
I'm submitting a ...  (check one with "x")
[X ] bug report
[ ] feature request
Current behavior:
I have an Ionic app and I'd like to improve the performance of the ActionSheetController so it renders closer to 60FPS on mobile devices. The problem occurs when I have a VirtualScroll list of 30+ items - the ActionSheet gets slower. I tried using a OnPush change detection strategy in Angular 4 but that didn't really work. I'm thinking the problem has to do with having a large DOM. Does that sound right? I also am loading 300px x 300px images in 80px x 80px squares. Will that slow it down? Is there some trick I can use to increase performance?
I'm using a Samsung Galaxy S8+ and it seems like the app runs faster as a website in the Samsung browser than it does in the app. Maybe all the plugins are causing a slow down? Should I use Crosswalk?
Expected behavior:
60FPS transitions on mobile devices.

Hello! Thank you for opening an issue with us!
The Ionic Framework issues list is designated for the reporting of bugs with the Ionic Framework or for requesting new features. As this seems like more of a support question I am going to close this issue.
I urge that you ask this question on our forum or on our slack channel.
Thanks for using Ionic!


Add parameters for New-ListenerADObject to use named SQL server and instance

I have been having an issue where I can't use the DSC modules to set up a named instance due to the New-ListenerADObject cmdlet in DSCResources/MSFT_xSQLAOGroupEnsure/MSFT_xSQLAOGroupEnsure.psm1 not accepting a named instance. Please let me know if there is anything else I need to do.
Superseding https://github.com/PowerShell/xSQLServer/pull/100 because I can't git.

Hi @ryanl-ee, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla.microsoft.com.

TTYL, MSBOT;

@ryanl-ee, Thanks for signing the contribution license agreement so quickly! Actual humans will now validate the agreement and then evaluate the PR.
Thanks, MSBOT;

Reviewed 2 of 2 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


cacheFolder is invalid in Windows 10

Running a simple bundle fails in Windows 10 because cacheFolder contains an invalid character .fusebox\cache\https:\registry.npmjs.org\fuse-box.
This is the error:
\.fusebox\cache\https:\registry.npmjs.org\fuse-box\-\fuse-box-2.2.31.tgz\F6gbH-vendo r\permanent contains invalid WIN32 path character

Oh.. that was supposed to be a version right?


Item enumeration number is always counting from 1

Describe the bug
Current offer printouts list the service items below different categories (for example data generation). However, the item position number always starts and "1" but needs to be continuous for all categories.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Items with continuous numbering (1,2,3).
System [please complete the following information]:

Offer Manager 1.0.0-beta.2

Additional context
Add any other context about the problem here.

 Item enumeration number is always counting from 1 #562


Issue when not using high quality

The extension does not show the file when I'm not rendering in high quality.  In particular, if I render in low quality (with the command line argument -ql in the Manim Sideview settings), then I get the following error:

ERROR: Manim Sideview: Estimated output file does not exist at "s:\Math\Manim\Vector Calculus\media\videos\nice_3d_plot\1080p60\Nice3DPlot.mp4" Make sure that the designated video directories are reflected in the extension log.

The extension seems to only want to play the file in the 1080p60 folder, no matter what quality I render as.  If I have previously rendered a high quality version, then whenever I run the extension, it only runs the output from that previous high quality render.
This seems to be a new issue in the most recent version of the extension.  I am not using a config file for Manim.
Log file:

[10/9/2022 17:51] INFO: Activating extension.
[10/9/2022 17:51] INFO: Loading globals.
[10/9/2022 17:51] INFO: Loaded all resource paths.
[10/9/2022 17:51] INFO: Successfully loaded all globals.
[10/9/2022 17:51] INFO: Activated extension.
[10/9/2022 17:51] INFO: Asking user for the new scene name.
[10/9/2022 17:51] INFO: Creating a new configuration for file at path s:\Math\Manim\Vector Calculus\nice_3d_plot.py
[10/9/2022 17:51] INFO: Attempting to render via the running configuration {
"srcRootFolder": "s:\Math\Manim\Vector Calculus\",
"srcPath": "s:\Math\Manim\Vector Calculus\nice_3d_plot.py",
"moduleName": "nice_3d_plot",
"isUsingCfgFile": false,
"manimConfig": {
"media_dir": "media",
"video_dir": "{media_dir}/videos/{module_name}/{quality}",
"images_dir": "{media_dir}/images/{module_name}",
"quality": "high_quality",
"image_name": "{scene_name}_{version}{extension}",
"quality_map": {
"fourk_quality": "2160p60",
"production_quality": "1440p60",
"high_quality": "1080p60",
"medium_quality": "720p30",
"low_quality": "480p15",
"example_quality": "480p30"
}
},
"document": {
"uri": {
"$mid": 1,
"fsPath": "s:\Math\Manim\Vector Calculus\nice_3d_plot.py",
"_sep": 1,
"external": "file:///s%3A/Math/Manim/Vector%20Calculus/nice_3d_plot.py",
"path": "/s:/Math/Manim/Vector Calculus/nice_3d_plot.py",
"scheme": "file"
},
"fileName": "s:\Math\Manim\Vector Calculus\nice_3d_plot.py",
"isUntitled": false,
"languageId": "python",
"version": 1,
"isClosed": false,
"isDirty": false,
"eol": 2,
"lineCount": 102
},
"sceneName": "Nice3DPlot"
},
{
"predictedVideoOutputPath": media\videos\nice_3d_plot\1080p60\Nice3DPlot.mp4,
"predictedImageOutputPath": media\images\nice_3d_plot\ManimCE_v0.16.0.post0
}
[10/9/2022 17:51] INFO: [10688] Spawned a new process for command execution.
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "Manim Community "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "v0.16.0.post0\n\n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "[10/09/22 17:52:23] INFO\t Animation "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "0 : Using cached\tcairo_renderer.py:75\n\t\t\t\t\t\t\t data (hash :<PHONE_NUMBER>_28100\t\t\t\t\t \n\t\t\t\t\t\t\t 67070_223132457)\t\t\t\t\t\t\t\t  \n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "[10/09/22 17:52:24] "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "INFO\t Animation 1 : Using cached\tcairo_renderer.py:75\n\t\t\t\t\t\t\t data (hash :<PHONE_NUMBER>_13293\t\t\t\t\t "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "\n\t\t\t\t\t\t\t 14881_2271290059)\t\t\t\t\t\t\t\t "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "\n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "[10/09/22 17:52:27]"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output " INFO\t Animation 2 : Using cached\tcairo_renderer.py:75\n\t\t\t\t\t\t\t data (hash :<PHONE_NUMBER>_15174 "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "\t\t\t\t\t\n\t\t\t\t\t\t\t 15262_537239083)\t\t\t  "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "\t\t\t\t\t\n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "[10/09/22 17:52:31] INFO\t "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "Animation 3 : Using cached\tcairo_renderer.py:"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "75\n\t\t\t\t\t\t\t data (hash :<PHONE_NUMBER>_42601\t\t\t\t\t \n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "\t\t\t\t\t\t\t 22064_2411084731)\t\t\t\t\t\t\t\t \n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "[10/09/22 17:52:32]"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output " INFO\t Combining to Movie file.  scene_file_writer.py:607\n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "\t\t\t\t\t"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "INFO\t\t\t\t\t\t\t   scene_file_writer.py:728\n\t\t\t\t\t\t\t File ready at\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t 'S:\Math\Manim\Vector Cal\t\t\t\t\t\t \n\t\t\t\t\t\t\t "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "culus\media\videos\nice_3\t\t\t\t\t\t \n\t\t\t\t\t\t\t d_plot\480p15\Nice3DPlot.\t\t\t\t\t\t \n\t\t\t\t\t\t\t mp4'\t\t\t\t\t\t\t\t\t\t\t  \n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \n"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "\t\t\t\t\t"
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "INFO\t Rendered Nice3DPlot\t\t\t\t   scene.py:240\n\t\t\t\t\t\t\t Played "
[10/9/2022 17:52] INFO: [10688] Relaying stdout output "4 animations\t\t\t\t\t\t\t   \n"
[10/9/2022 17:52] INFO: [10688] Execution returned code=0 in 36.834 seconds
[10/9/2022 17:52] INFO: [10688] Video output detected.
[10/9/2022 17:52] ERROR: Manim Sideview: Estimated output file does not exist at "s:\Math\Manim\Vector Calculus\media\videos\nice_3d_plot\1080p60\Nice3DPlot.mp4" Make sure that the designated video directories are reflected in the extension log.

You shouldn't use the command line settings to provide the quality settings but rather the manim.cfg

https://www.youtube.com/watch?v=sFpFlMEu7OY
This video explains manim sv very well.

Hey,
Please consider watching the YouTube video KekOnTheWorld linked above.
And also, is there a specific reason as to why you're using the CLI args configuration to set the render quality?
It should be noted that CLI args provided in the settings are globally used, this means whenever manim sideview calls for rendering a scene, all arguments set in the CLI settings are always passed through. (this means if you put it as -ql in the CLI args section, that will affect all renders) People often do not want this to happen, but rather just to change the current render resolution--which is done through a manim.cfg file.
I suppose we could transform this into a feature request for accepting quality changes and so on through the CLI args, but I'd like to hear if you have any other reason than the ones I've mentioned above for configuring quality this way!
Ricky.

A solution would also be to switch to using a global manim.cf. It should be noted, that we could also just transform these settings into vscode's builtin settings system (which can also handle local config files provided in .vscode/settings.json).

Thank you for the replies.  The configuration file works fine for me.  I had simply never used it before for Manim (I'm pretty new to Manim).


PayPal button not showing. Error: unsupported protocol detected (Cordova)

I use Meteor.js and compile my app via Cordova.
The PayPal button does not show up. It throws: "Error: unsupported protocol detected". I guess it has something to do with your helper function  _isBrowserSecure()  since it checks for https: ?
I wrote this on Stackoverflow:
Braintree expects window.location.protocol to be "https:". However, when I compile with cordova the location is:  http://meteor.local/ and so the protocol "http:".
Is there any way to fake window.location.protocol locally to be "https:"?

There is not a supported way to fake the location.protocol value. In order for the PayPal  flows to properly communicate with the braintree code executing on your checkout page, the protocol must be https in webviews.
This seems to be a familiar problem with Meteor and Cordova. A quick google search of "meteor.local https" yields several discussions on the topic. It may be worth reading through those threads to see what options are available.
While I have by no means vetted this package, it seems like it could be something for you to look into: https://github.com/nourharidy/meteor-ssl.


Update fuzzing corpus.

Codecov Report
Base: 25.40% // Head: 25.25% // Decreases project coverage by -0.15% :warning:

Coverage data is based on head (697cd3e) compared to base (60b8a15).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff             @@
##           stable     #800      +/-   ##
==========================================
- Coverage   25.40%   25.25%   -0.16%
==========================================
  Files          70       70
  Lines        5833     5833
  Branches      313      313
==========================================
- Hits         1482     1473       -9
- Misses       4290     4298       +8
- Partials       61       62       +1

Impacted Files
Coverage Δ

library/object/number/mult.cpp
26.81% <0.00%> (-5.03%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Changed play() and prepareRecordingAtPath() to use absolute paths to audio files

Changed play() and prepareRecordingAtPath() to use absolute paths to audio files.
Added AudioUtils module for creating paths to files.  AudioUtils has constants: MainBundlePath, CachesDirectoryPath, DocumentDirectoryPath, LibraryDirectoryPath.  Since the constants are used in both play and record it seemed cleaner to create AudioUtils.
Fixed typo with encoding code, had "caf" as default AudioEncoding type but should be "ima4", "ima4" is the audio encoding for "caf" files.
Here's an example of how to use the new constants.
    var {AudioRecorder, AudioPlayer, AudioUtils} = require('react-native-audio');

    // for recording
    var options = {
        SampleRate: 16000.0,
        Channels: 1,
        AudioQuality: 'Medium',
        AudioEncoding: 'aac',
    };
    var audioPath = AudioUtils.DocumentDirectoryPath + '/filename.m4a';
    AudioRecorder.prepareRecordingAtPath(audioPath, options);

    // for playing
    var audioPath = AudioUtils.DocumentDirectoryPath + '/filename.m4a';
    AudioPlayer.play(audioPath);

AudioUtils is perfect - I wanted to do that anyway. It would be even better if this were a common library that other plugins could use. I thought about using react-native-fs but it may be too heavy a dependency.
Anyway I'll add docs about the breaking change, and we can bump to 1.0.0. If you can, could you look at updating the AudioExample project? If not I'll take a look.


[Key Vault - Keys]Integration test libraries failing in nightly runs

Key Vault - Keys nightly test runs are failing with:

Error message:
[node-tests]   1) CryptographyClient (all decrypts happen remotely)
[node-tests]        RSA keys
[node-tests]          "before each" hook for "manually encrypt locally and decrypt remotely, both with RSA1_5":
[node-tests]      RestError: Key RSA-15420 is currently being deleted and cannot be re-created; retry later.
[node-tests]       at handleErrorResponse (/mnt/vss/_work/1/s/sdk/core/core-client/src/deserializationPolicy.ts:251:17)
[node-tests]       at deserializeResponseBody (/mnt/vss/_work/1/s/sdk/core/core-client/src/deserializationPolicy.ts:159:43)
[node-tests]       at processTicksAndRejections (node:internal/process/task_queues:96:5)
[node-tests]
[node-tests]   2) CryptographyClient (all decrypts happen remotely)
[node-tests]        RSA keys
[node-tests]          "after each" hook for "manually encrypt locally and decrypt remotely, both with RSA1_5":
[node-tests]      RestError: A key with (name/id) RSA-15420 was not found in this key vault. If you recently deleted this key you may be able to recover it using the correct recovery command. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125182
[node-tests]       at handleErrorResponse (/mnt/vss/_work/1/s/sdk/core/core-client/src/deserializationPolicy.ts:251:17)
[node-tests]       at deserializeResponseBody (/mnt/vss/_work/1/s/sdk/core/core-client/src/deserializationPolicy.ts:159:43)
[node-tests]       at processTicksAndRejections (node:internal/process/task_queues:96:5)

For more details check here:
https://dev.azure.com/azure-sdk/internal/_build/results?buildId=2058502&view=results

Haven't seen this particular failure for at least a month, closing for the time being in the hope that it's just a one-off.


Expiration ZERO doesn't remove data.

I'm not sure if what I'm doing is right. I'd like to remove from cache my data when a fixed number of access was tried. So I created a custom ExpiryPolicy, which count this access and set the Duration for ZERO or null. But when I return Duration.ZERO, nothing happens and the data is not removed.
Here is my code:
new ExpiryPolicy<String, JLicense>() {

                    @Override
                    public Duration getExpiryForCreation(String key, JLicense value) {
                        counts.put(key, 0);
                        return Duration.ofMinutes(5);
                    }

                    @Override
                    public Duration getExpiryForAccess(String key, Supplier<? extends JLicense> value) {
                        counts.put(key, counts.get(key) + 1);
                        System.out.println("access: " + counts.get(key));
                        if (counts.get(key) >=4) {
                            System.out.println("should remove?");
                            return Duration.ZERO;
                        }

                        return null;
                    }

                    @Override
                    public Duration getExpiryForUpdate(String key, Supplier<? extends JLicense> oldValue, JLicense newValue) {
                        counts.put(key, 0);
                        return Duration.ofMinutes(5);
                    }
                }

The following test passes for me:
  @Test
  public void testCountingExpiryPolicy() {
    Map<String, Integer> accessCounts = new ConcurrentHashMap<>();

    try (UserManagedCache<String, String> cache = UserManagedCacheBuilder.newUserManagedCacheBuilder(String.class, String.class)
      .withExpiry(new ExpiryPolicy<String, String>() {
        @Override
        public Duration getExpiryForCreation(String key, String value) {
          accessCounts.put(key, 0);
          return ChronoUnit.FOREVER.getDuration();
        }

        @Override
        public Duration getExpiryForAccess(String key, Supplier<? extends String> value) {
          Integer current = accessCounts.computeIfPresent(key, (k, c) -> c > 1 ? null : c + 1 );

          if (current == null) {
            return Duration.ZERO;
          } else {
            return null;
          }
        }

        @Override
        public Duration getExpiryForUpdate(String key, Supplier<? extends String> oldValue, String newValue) {
          return null;
        }
      }).build(true)) {

      cache.put("foo", "bar");

      assertThat(cache.get("foo"), is("bar"));
      assertThat(cache.get("foo"), is("bar"));
      assertThat(cache.get("foo"), is("bar"));
      assertThat(cache.get("foo"), nullValue());
    }
  }

I think the confusion here might be around when the policy is called and when expiration time is assessed. The current code (although I find nothing concrete in the API to actually require this) only checks values for expiry before calling the expiry policy method, then it calls the method to update the expiry value. This means the new expiration time will not be used until the next get from the cache.  For conventional time based policies this wouldn't be noticed... but for counting policies like yours it introduces an off by one error.
I am interested to know what you are doing that requires such a strange policy... since there may be better ways of getting the behavior you want.

I've tried with your suggestion and it worked fine.
Actually I though use this kind of of solution because I'd like to prevent the change of PC time by user. If I delay the clock, the cache register never expires.

If this isn't a cache that lives beyond the lifetime of a given JVM (i.e. it's not using the disk or a cluster) and you really need this guarantee/protection then you're probably better of configuring a custom time source like so:
@Test
public void testTimeStepResilientCache() throws InterruptedException {
  try (UserManagedCache<String, String> cache = UserManagedCacheBuilder.newUserManagedCacheBuilder(String.class, String.class)
    .withExpiry(timeToIdleExpiration(Duration.ofSeconds(1)))
    .using(new TimeSourceService() {
      @Override
      public TimeSource getTimeSource() {
        return () -> TimeUnit.NANOSECONDS.toMillis(System.nanoTime());
      }

      @Override
      public void start(ServiceProvider<Service> serviceProvider) {
        System.out.println("Using System.nanoTime() based time source");
      }

      @Override
      public void stop() {}
    }).build(true)) {

    cache.put("foo", "bar");

    assertThat(cache.get("foo"), is("bar"));
    assertThat(cache.get("foo"), is("bar"));
    assertThat(cache.get("foo"), is("bar"));

    Thread.sleep(2000);

    assertThat(cache.get("foo"), nullValue());
  }
}

This obviously isn't tested by us... but it should work (in principle). This would be the most trivial implementation that only works for non-persistent caches and means your timestamps cease being actual UNIX-epoch based timestamps. More complex solutions could be built that preserve the unix timestamp-ness and/or support persistent caches.

I'll try this approach. Thanks for helping me!


My Better Xcloud is having problems.

Checklist

[X] I will only use English in my report.
[X] I have used the search function for open and closed issues to see if someone else has already submitted the same bug report.
[X] I will describe the problem with as much detail as possible.

Questions

[X] xCloud officially supports my country/region.
[ ] The bug doesn't happen when I disable Better xCloud script.
[X] The bug didn't happen in previous Better xCloud version (name which one).

Device
Phone/Tablet
Device
Motorola G52
Operating System
Android 13
Android app/Browser Version
Chrome 131.0.6778.104
Better xCloud Version
0.22.1
Game list
Call Of Duty Warzone, Call Of Duty Black Ops 6, Call Of Duty Modern Warfare 3
Reproduction Steps
My Better Xcloud has a problem where the mouse pointer does not appear in the game (Black Ops 6/Warzone/Modern Warfare 3), this bug did not happen in the previous version, I don't know how to solve it.. This bug did not happen in the previous version (0.22.0) but in the current version (0.22.1) it is happening 😔
Screenshot/video
No response

I hope there is a solution to this "problem" as soon as possible.

fixed in 6.0.2

corrigido em 6.0.2

Could you send me the link?


Update css-text-box-trim.json

Safari 18.2 adds support for text-box, text-box-trim, and text-box-edge. This PR also updates the title of the feature — since the text-box shorthand is a better way to use this. And the PR updates the description to explain this includes text-box-trim, and text-box-edge... and describing more accurately what it does. I also removed the reference to leading-trim, since 1) the early draft never shipped in customer-facing browsers, and 2) the name change is very old news.

Is the "Limited availability across major browsers" box automated? How do we make it go away? This is a feature developers can use today to progressively enhance sites in browser with support. Warning them to not use it is unnecessary.

Looks good, thanks!
Yes, that's the the Baseline banner that is added automatically. I don't think it's warning users not use a feature, just effectively summarizes the current browser support.


Teach swift-ide-test to print type interface via a given mangled type name.

[ide] Teach swift-ide-test to print type interface via a given mangled type name. related rdar://27306890

Resolved bug number: (SR-)

Before merging this pull request to apple/swift repository:

[ ] Test pull request on Swift continuous integration.

Triggering Swift CI
The swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:
Smoke Testing
    Platform     | Comment
    ------------ | -------------
    All supported platforms     | @swift-ci Please smoke test
    All supported platforms     | @swift-ci Please smoke test and merge
    OS X platform               | @swift-ci Please smoke test OS X platform
    Linux platform              | @swift-ci Please smoke test Linux platform

Validation Testing
    Platform     | Comment
    ------------ | -------------
    All supported platforms     | @swift-ci Please test
    All supported platforms     | @swift-ci Please test and merge
    OS X platform               | @swift-ci Please test OS X platform
    OS X platform               | @swift-ci Please benchmark
    Linux platform              | @swift-ci Please test Linux platform

Lint Testing
    Language     | Comment
    ------------ | -------------
    Python       | @swift-ci Please Python lint

Note: Only members of the Apple organization can trigger swift-ci.

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci Please smoke test OS X platform

@swift-ci Please test

@swift-ci Please test

@swift-ci Please test

Finally all related checks passed. Happily merging.


1.23: Revert networking: match multiple VIPs in sidecar outbound listener

This mirrors https://github.com/istio/istio/pull/52952/files on 1.22 branch.
This PR caused 2 regressions: https://github.com/istio/istio/issues/52847 and https://github.com/istio/istio/issues/52944.
By reverting this, we bring back the original issue (which has been in Istio for many releases): that multiple addresses may be dropped in a SE. However, users can workaround this by creating a Sidecar resource. See TestOverlappingServices for a reproduction of this (with and without Sidecar).
The long term path forward will be to merge https://github.com/istio/istio/pull/51776. This is a risky change, though, so will be kept on the master branch

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio_release-1.23
bac64f20007bd9fa13325229b94a1bc59056c114
link
true
/test release-notes

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio_release-1.23
bac64f20007bd9fa13325229b94a1bc59056c114
link
true
/test release-notes

unit-tests-arm64_istio_release-1.23
bac64f20007bd9fa13325229b94a1bc59056c114
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio_release-1.23
bac64f20007bd9fa13325229b94a1bc59056c114
link
true
/test release-notes

unit-tests-arm64_istio_release-1.23
bac64f20007bd9fa13325229b94a1bc59056c114
link
true
/test unit-tests-arm64

unit-tests_istio_release-1.23
bac64f20007bd9fa13325229b94a1bc59056c114
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.23
bac64f20007bd9fa13325229b94a1bc59056c114
link
true
/test unit-tests-arm64

unit-tests_istio_release-1.23
bac64f20007bd9fa13325229b94a1bc59056c114
link
true
/test unit-tests

integ-basic-arm64_istio_release-1.23
00b3e207ce8165a6de4b69c19d65bf5b1e3bf680
link
true
/test integ-basic-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/retest-required

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-basic-arm64_istio_release-1.23
00b3e207ce8165a6de4b69c19d65bf5b1e3bf680
link
true
/test integ-basic-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-basic-arm64_istio_release-1.23
00b3e207ce8165a6de4b69c19d65bf5b1e3bf680
link
true
/test integ-basic-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-basic-arm64_istio_release-1.23
00b3e207ce8165a6de4b69c19d65bf5b1e3bf680
link
true
/test integ-basic-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.23
00b3e207ce8165a6de4b69c19d65bf5b1e3bf680
link
unknown
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/retest

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.23
00b3e207ce8165a6de4b69c19d65bf5b1e3bf680
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/retest

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.23
00b3e207ce8165a6de4b69c19d65bf5b1e3bf680
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/retest


Infinite busy waiting for lost event

Thanks for finding this bug.
Who is the bug affecting?

The administrator, as the bug occurs particularly frequently in high load situations such as the "Synchronize all environments" functionality.
Any user, as the error can always occur during heavy use.

What is affected by this bug?
The complete usability of Poseidon, because with each occurrence of the bug a thread waits permanently busy and so the resources of the server are quickly overloaded.
When does this occur?
The error occurs when Nomad throws the following error:
2021-11-09T14:21:27.986Z [ERROR] http: request failed: method=GET path=/v1/event/stream?index=0&namespace=default&topic=Evaluation%3Ab5409340-3e32-c9de-b832-bff225d38983 error="event dropped from buffer" code=500.
Poseidon does not realise this and so the existing error handling cannot take effect.
Where on the platform does it happen?
In the local environment, the bug appears quickly - approximately every 25 runners to be created in one second.
In the staging environment, the error occurs much less frequently when an environment is updated. This is mainly due to the fact that the requests for updating each runner are synchronous and the RTT equalises the load for Nomad (700ms vs. 15ms).
How do we replicate the issue?

Use Postman to call the PUT Environment route
Update an environment with about 50 prewarmed runner
(Staging: Repeat the previous step some times)

Expected behavior (i.e. solution)
It would be desirable to avoid or deal with Nomad's error. Exemplary solutions for both variants are indicated in this pull request.

Deal: Introduce a timeout for all synchronous Nomad operations.
Avoid: As we can see from Nomad's error message, the error has to do with the event stream that Poseidon requests. Every time Poseidon tasks Nomad with something, Poseidon requests in extra requests to get all updates on the task. This is an additional load that eventually leads to buffer overflow at Nomad.
Yet the extra event stream is unnecessary. Poseidon has a permanent event stream anyway, which watches out for Nomads allocations and transfers this information to the Poseidon data when creating / removing one. We can use this already existing stream to also pay attention to the other Nomad feedbacks such as "Error No more memory" or "Job created successfully".
The advantage of this is that we save many requests to Nomad and thus reduce the load. Thus, with a prototype-like solution, Nomad's buffer no longer ran full and thus all events could be received.
The disadvantage of this is that we would have to implement an internal waiting system for events so that possible errors can also be returned in the HTTP requests.

These are really good findings and you created a thoughtful analysis of the things that happen at Nomad. From an architectural point of view, the possible solution you outlined in the "avoid" section (e.g. using the same stream to wait for the result of various tasks) feels more natural. However, I am unsure about the expense this might introduce. It sounds like a typical use case for a messaging queue that many listeners can attach to. Another approach would be to register callbacks that get executed once a success or failure message is received through the stream. Still, the problem you mentioned remains: The former synchronous request is now blocked by messages in the event stream and some form of notifications are required to allow Poseidon to return a HTTP response to the caller.

Yes, I would go with your second solution. Or, I was thinking of generating a simple dictionary that maps from the evaluation id to a Go channel. At the point where currently some events are processed, only the content of the events would have to be written into the correct channel.
In comparison, functionality would not be passed around, but would remain in one place. In addition, much of the existing code could be adopted and we would use a construct with the channels that is centrally integrated and optimised in Go. Therefore, I would classify the effort as relatively low.
Even if the probability of an event disappearing is lower with this variant, I would also leave the timeout in. This way we would have no leaking routines and guaranteed HTTP responses.

Yes, I would go with your second solution. Or, I was thinking of generating a simple dictionary that maps from the evaluation id to a Go channel. At the point where currently some events are processed, only the content of the events would have to be written into the correct channel.

This is totally fine for me; a simple yet effective method should be sufficient to deal with this issue.

In comparison, functionality would not be passed around, but would remain in one place. In addition, much of the existing code could be adopted and we would use a construct with the channels that is centrally integrated and optimised in Go. Therefore, I would classify the effort as relatively low.

Sure, async processing is one of the advantages of Go and another argument to go this way.

Even if the probability of an event disappearing is lower with this variant, I would also leave the timeout in. This way we would have no leaking routines and guaranteed HTTP responses.

I also agree here: We should always try to render a response and clean up any failures. This will allow a long running Poseidon without frequent needs to restart the service (allowing higher overall availability) 🙂

Closes #28


[kong] Add warning regarding punctuation in secretVolume names

Using certain punctuation in these secret names can cause issues in
deploying the chart, since the name is used verbatim when creating the
corresponding directory. An alternative could be to add something like
a | replace "." "-" to the _helper.tpl file, but I don't exactly
know how.
Adds information relating to, and thus closing #16.

@oscarlofwenhamn Thank you for your contribution. Please fill in the contributor form to claim your Kong swag: https://github.com/Kong/kong/blob/master/CONTRIBUTING.md#contributor-t-shirt.