Error when communicating with Google API(20)

Describe the bug
Opening the CWA for the first time today resulted in display of error message Fehler bei Kommunikation mit Google API(20), Error when communicating with Google API(20). Every opening of the app shows this error until Google API(39508) error kicks in (too many calls to API).
Today would have been the first time to have 14/14 active days. Now it stays at 13/14 days.
Sorry I cannot provide more details right now. Unfortunately I had USB debugging off and after switching it on, only the Google API(39508) error was captured in the log. Also, it is a massive hindrance to documentation not being able to take screenshots. I didn't have another smartphone or a computer nearby when the error happened. Users of CWA on iOS apparently can take screenshots without hindrance. Friends on iPhones share screenshots of CWA with me all the time. Frustrating.
Expected behaviour
The app opens without any errors.
Steps to reproduce the issue

Install the app on 16 June 2020 via Google Play Store, keep it updated, version is 1.0.4 before any error in CWA appears
Use app with bluetooth and location on for some time every day; see days active incremented every day
On 25 June 2020 see the Google API(10) error appearing for the first time; error does not appear again that days and days active are incremented when opening the app again
See Google API(10) error appearing and disappearing on other days after that (I don't have an exact log which days); days active are still incremented every day
On 30 June 2020 see Google API(20) error appearing when opening CWA for the first time. Appears again every time the app is opened / put into foreground until no more calls to Google API possible (Google API(39508) error).

Technical details
Device

App Version: 1.0.4
Android Version: 6.0.1 (stock Android of device, not rooted)
Device Model and Manufacturer: Samsung S5 (SM-G900F)
Latest OS Update: can't determine date, Android menu says all available updates installed

Kernel: 3.4.0-14131106 from 06 Aug 2018
Build number: MMB29M.G900FXXU1CRH1

Latest Update of CWA: update to 1.0.4
Installation Date of CWA: 16 June 2020
Date/Time of the error: 30 June 2020 about 9:00 local time Germany
Google Play Services version: 20.21.17<PHONE_NUMBER>02805)
Google Mobile Services (GMS) version:

com.google.android.gms [202117018] [20.21.17<PHONE_NUMBER>02805)] [Container]
com.google.android.gms.nearby_en [v202304013]

Additional context
This error happened for me after several days of seeing Fehler bei Kommunikation mit Google API(10) (Error when communicating with Google API(10)) when starting the app, as described in #771. Today, only the Google API(20) error appeared. The Google API(10) error so far seemed to "resolve itself" on my device, not reaching Google API(39508) error (too many calls to API); days active was incremented in those cases after the error was not displayed anymore. Google API(20) in contrast reappeared until no more calls to the API were possible. Days active was not incremented today.

Could you click the error away and try to reenable the API by manually switching it on / off. We want to make sure that the API is able to connect properly to CWA

@jakobmoellersap

We want to make sure that the API is able to connect properly to CWA

Thank you, much appreciated. I will write in English but my OS is in German so translations might not match English version exactly.
(A) CWA App

App shows start screen (all white with app logo in the middle) for about 20 seconds - extremely long waiting time I never had before
then the app switches to the main screen, is showing the grey plate with undetermined risk
then a timeout error appears, java.net.SocketTimeoutException: timeout [1]
clicking Okay reverts view to main app screen, with green low risk plate and that latest update was today 11:34, which is indeed when I opened the app, but still showing 13 out of 14 days active, so no increment since the day before yesterday :arrow_right: last successful increment was the day, before the day that the Google API(20) error appeared (yesterday)

(B) Switching API on and off

try to reenable the API by manually switching it on / off.

Here, I wasn't sure if you meant deactivating and activating the tracing in CWA or if you meant the Android Google setting for the Google Exposure Notification framework so I tried both, eventually ending up in the same CWA settings, see below:
(B1) Switching CWA tracing off and back on

switching off by slider in submenu for tracing status
switching slider on again

pop-up activate COVID-19 EN? :arrow_right: I click Activate :arrow_right: risk assessment is active, slider stays on

going back to main screen: still only 13/14 days active
putting app in background
bringing app back to foreground :arrow_right: no change: update time is still 11:34, still 13 of 14 days active

(B2) Google Exposure Notification framework

Android settings menu > Google > COVID-19 menu item :arrow_right: looks like in its usual active state [2]
clicking deactivate notifications about possible ... (Benachrichtigungen zu möglicher Begegnung mit Infizierten deaktivieren`)

:arrow_right: this field is now greyed out, at the top is a message that I should open the corresponding app to activate
clicking Öffnen to the right of Corona-Warn

back in CWA the main plate shows risk assessment stopped: Activate risk assessment to calculate your risk status for today (instead of the usual grey or green plates)
click on switch on risk assessment :arrow_right: app switches to the setting for activating risk assessment
switching slider on for risk assessment :arrow_right: pop-up activate COVID-19 EN? :arrow_right: I click Activate :arrow_right: risk assessment is active, slider stays on (as already done above in (B1), doing everything inside CWA)
closing risk assessment settings view :arrow_right: no change: update time is still 11:34, still 13 of 14 days active

Details
[1] timeout error

  error page 1
 error page 2
 error page 3

  error page 4
 error page 5
 error page 6

Really sorry for the quality - my partner and his smartphone are not here and I don't have a camera except for my own smartphone so I only have a webcam here to take pictures of my phone screen. Had to install an app for taking pics with the webcam. Webcam always focuses on the background and I had to crop all the pics by hand - took all in all 20 Minutes just to get the pics here without Android screenshots :fearful:
[2] What my Google COVID-19 EN framework settings look like in 'normal state'

  Google COVID-19 EN in 'normal state', ignore notes included for other github issue

Much better quality when I had my partner's phone to take pics of my phone screen.

Okay, so as far as I understand you have multiple error cases at once that match to different errors.
Regarding your original Issue 20: This seemed to be sporadically and does not seem to reappear, correct?
Regarding the timeout: Did you maybe lose internet connection in the meantime? This only happens when we have issues connecting to the internet in a stable way.
Regarding the issue of 13/14 days active: We have confirmed this issue and are working on it in #796

@jakobmoellersap The sequence of errors was

CWA installed, everything fine, CWA updated to 1.0.4, still runs fine for 1 or 2 days
on 25 June 2020 Google API(10) error appears for the first time https://github.com/corona-warn-app/cwa-app-android/issues/737#issuecomment-649702108, date of last update of risk assessment (Aktualisiert) and days active in main windows increments
on 26 June 2020 Google API(10) error appears again https://github.com/corona-warn-app/cwa-app-android/issues/737#issuecomment-650144069, date of last update of risk assessment and days active in main windows increments as before
cannot recollect if Goole API(10) error appeared after that -- but days active increased steadily every day
on  30 June 2020 Google API(20) appears :arrow_right: for the first time days active is not incremented and stays at 13 of 14 days active
on 31 July 2020 no Google API errors, but long waiting time just showing the app symbol on white background when starting CWA, then timeout error and still only 13 of 14 days active

I was at home with a stable internet connection. I could surf the internet with the same phone before and after. I think it is unlikely that it was a short gap in internet connection for just that half minute.
The days not incrementing started the day when the Google API(20) error happened to me. Yes, it might be that it coincided with #796 by chance and that it's two separate issues.
I'd like to keep this open until I didn't have any errors starting the app for a couple of days and to see if other start seeing the Google API (20) error these days.

Google API(20) error appeared again today. Brief summary:

bring app to foreground first time today: Google API(20 error)
then Google API(10) error is displayed #737
the two error pop-ups alternate until Google API(39508) timeout error appears

Today is the first day in CWA version 1.0.4 that the last update (Aktualisiert:) was not incremented.
This time I had a second phone to take pics:

As mentioned in the brief summary, the errors started with the Google API(20)error as a pop-up. After the smartphone screen was off and I switched it on again, it was already overlaid with the Google API(10) error pop-up. This is when the pictures below start.

  Google API(10) error over Google API(20) error
  Google API(10) error details 1
 Google API(10) error details 2

  Google API(20) error details 1
  Google API(20) error details 2
 Google API(10) error again over Google API(20) error

after clicking Okay to dismiss the errors, the main CWA screen is visible for some time, showing  13 of 14 days active (see also #796) and last update Yesterday, 11:34

then the Google API(10) error pops up again

still  13 of 14 days active and last update Yesterday, 11:34

putting app in background

opening app again: Google API(39508) error appears

still  13 of 14 days active and last update Yesterday, 11:34

ADB debug logfile excerpts - maybe that helps to sort out problems with Google GMS:

 Click here to expand
07-02 08:33:05.113  1673  1673 I Timeline: Timeline: Activity_launch_request id:de.rki.coronawarnapp time:88153752

[...]

07-02 08:33:05.573  3738  3847 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/files/reporting-log

[...]

07-02 08:33:05.853  3865  3865 D TimaKeyStoreProvider: TimaSignature is unavailable
07-02 08:33:05.853  3865  3865 D ActivityThread: Added TimaKeyStore provider
07-02 08:33:06.083  3865  3865 W DynamiteModule: Local module descriptor class for providerinstaller not found.
07-02 08:33:06.093  3865  3865 W ProviderHelper: Unknown dynamite feature providerinstaller
07-02 08:33:06.093  3865  3865 I DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
07-02 08:33:06.093  3865  3865 W ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
07-02 08:33:06.113  3865  3865 V NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 286 native methods...
07-02 08:33:06.123  3865  3865 W         : Unable to open '/system/framework/com.qti.location.sdk.jar': No such file or directory
07-02 08:33:06.123  3865  3865 W art     : Failed to open zip archive '/system/framework/com.qti.location.sdk.jar': I/O Error
07-02 08:33:06.173  3865  3865 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.org.conscrypt.Java7ExtendedSSLSession>
07-02 08:33:06.173  3865  3865 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.org.conscrypt.Java7ExtendedSSLSession>
07-02 08:33:06.173  3865  3865 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.org.conscrypt.Java8ExtendedSSLSession>
07-02 08:33:06.173  3865  3865 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.org.conscrypt.Java8ExtendedSSLSession>
07-02 08:33:06.203  3865  3865 I ProviderInstaller: Installed default security provider GmsCore_OpenSSL
07-02 08:33:06.203  3865  3865 I Safeboot: Checking safeboot...
07-02 08:33:06.233  3865  3865 I Safeboot Condition: No need to enter Safeboot.
07-02 08:33:06.233  3865  3865 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/files/CFN.now
07-02 08:33:06.293  3865  3865 I beit    : Primes not initialized, returning default (no-op) Primes instance which will ignore all calls. Please call Primes.initialize(...) before using any Primes API.
07-02 08:33:06.353  3865  3865 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/databases/playlog.db
07-02 08:33:06.353  3865  3865 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/databases/playlog.db-journal
07-02 08:33:06.353  3865  3865 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/databases/playlog.db-shm
07-02 08:33:06.353  3865  3865 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/databases/playlog.db-wal
07-02 08:33:06.433  3891  3891 E TZ_CCM_SERVER: Only 'CCM' are supported
07-02 08:33:06.433  3891  3891 I TZ_CCM_SERVER: ###Exit TZ CCM Server
07-02 08:33:06.453  3865  3875 I DynamiteModule: Considering local module com.google.android.gms.googlecertificates:4 and remote module com.google.android.gms.googlecertificates:4
07-02 08:33:06.453  3865  3875 I DynamiteModule: Selected local version of com.google.android.gms.googlecertificates
07-02 08:33:06.473   813   902 D LocationProviderProxy: applying state to connected service
07-02 08:33:06.613  3865  3890 I art     : Rejecting re-init on previously-failed class java.lang.Class<skk>
07-02 08:33:06.613  3865  3890 I art     : Rejecting re-init on previously-failed class java.lang.Class<skk>
07-02 08:33:06.613  3865  3890 I art     : Rejecting re-init on previously-failed class java.lang.Class<skk>
07-02 08:33:06.613  3865  3890 I art     : Rejecting re-init on previously-failed class java.lang.Class<skk>
07-02 08:33:06.663  3865  3890 I NetworkScheduler: Using standalone scheduling engine [CONTEXT service_id=218 ]
07-02 08:33:06.673   813   902 D LocationProviderProxy: applying state to connected service
07-02 08:33:06.803  3865  3865 D ConnectivityManager: requestNetwork; getAppId(CallingUid) : 10014, CallingPid : 3865

[...]

07-02 08:33:06.863  3865  3865 W System  : ClassLoader referenced unknown path: /data/data/com.google.android.gms/app_chimera/m/00000102/n/armeabi
07-02 08:33:06.923  3865  3908 W ProviderHelper: Unknown dynamite feature providerinstaller
07-02 08:33:06.923  3865  3908 I DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
07-02 08:33:06.923  3865  3908 I DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
07-02 08:33:06.923  3865  3908 I qtaguid : Tagging socket -1 with tag<PHONE_NUMBER>000000{536871943,0} uid -1, pid: 3865, getuid(): 10014
07-02 08:33:06.923  3865  3908 I qtaguid : Failed write_ctrl(t -1<PHONE_NUMBER>324976128 -1) res=-1 errno=9
07-02 08:33:06.923  3865  3908 I qtaguid : Tagging socket -1 with tag<PHONE_NUMBER>000000(536871943) for uid -1 failed errno=-9
07-02 08:33:06.923  3865  3908 I NetworkManagementSocketTagger: tagSocketFd(-1, 536871943, -1) failed with errno-9
07-02 08:33:06.923  3865  3908 I qtaguid : Tagging socket 136 with tag<PHONE_NUMBER>000000{536871943,0} uid -1, pid: 3865, getuid(): 10014
07-02 08:33:06.953   315   315 D libEGL  : eglInitialize EGLDisplay = 0xbea1a364
07-02 08:33:06.973  3865  3865 I ExposureNotification: ExposureNotificationInternalService.onCreate, com.google.android.gms.nearby.exposurenotification.service.ExposureNotificationInternalChimeraService@c8e7c
07-02 08:33:07.023  3865  3865 I ExposureNotification: ExposureServiceInternalService.onStartCommand, null [CONTEXT service_id=236 ]
07-02 08:33:07.123  3865  3865 D BluetoothAdapter: STATE_BLE_ON
07-02 08:33:07.123  3865  3865 I ExposureNotification: Utils#isSupported enabled=true, isDeviceSupported=true, isBluetoothSupported=true, BluetoothAdapter.isMultipleAdvertisementSupported=false [CONTEXT servi
07-02 08:33:07.123  3865  3865 I ExposureNotification: ExposureNotificationInternalService.onStartCommand received intent, action=null [CONTEXT service_id=236 ]
07-02 08:33:07.143  3865  3865 I ExposureNotification: Active client found, start tracing. [CONTEXT service_id=236 ]
07-02 08:33:07.143  3865  3865 I ExposureNotification: ExposureServiceInternalService.startTracing [CONTEXT service_id=236 ]
07-02 08:33:07.163  3865  3865 I ExposureNotification: AlarmManagerImpl.opportunisticSchedule called, delay=1800000ms [CONTEXT service_id=236 ]
07-02 08:33:07.183  3865  3865 I ExposureNotification: AlarmManagerImpl.opportunisticSchedule called, delay=1800000ms [CONTEXT service_id=236 ]

[... some errors repeat, e.g., 07-02 08:33:07.773  3865  3919 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/files/nlp_state]

07-02 08:33:08.563  3971  3971 E Zygote  : v2
07-02 08:33:08.573  3971  3971 I SELinux : Function: selinux_compare_spd_ram, index[1], SPD-policy is existed. and_ver=SEPF_SECMOBILE_6.0.1 ver=11
07-02 08:33:08.573  3971  3971 W SELinux : Function: selinux_compare_spd_ram, index[1], priority [2], priority version is VE=SEPF_SECMOBILE_6.0.1_0035
07-02 08:33:08.573  3971  3971 E Zygote  : accessInfo : 0
07-02 08:33:08.573  3971  3971 W SELinux : SELinux: seapp_context_lookup: seinfo=gmscore, level=s0:c512,c768, pkgname=com.google.android.gms.persistent
07-02 08:33:08.593  3971  3971 D TimaKeyStoreProvider: TimaSignature is unavailable
07-02 08:33:08.593  3971  3971 D ActivityThread: Added TimaKeyStore provider
07-02 08:33:08.613   813  1073 E Sensors : SigMotionSensor old sensor_state 8705, new sensor_state : 513 en : 0
07-02 08:33:08.853  3971  3971 W DynamiteModule: Local module descriptor class for providerinstaller not found.
07-02 08:33:08.863  3971  3971 W ProviderHelper: Unknown dynamite feature providerinstaller
07-02 08:33:08.873  3971  3971 I DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
07-02 08:33:08.873  3971  3971 W ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
07-02 08:33:08.883  3971  3971 V NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 286 native methods...
07-02 08:33:08.893  3971  3971 W         : Unable to open '/system/framework/com.qti.location.sdk.jar': No such file or directory
07-02 08:33:08.893  3971  3971 W art     : Failed to open zip archive '/system/framework/com.qti.location.sdk.jar': I/O Error
07-02 08:33:08.943  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.org.conscrypt.Java7ExtendedSSLSession>
07-02 08:33:08.943  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.org.conscrypt.Java7ExtendedSSLSession>
07-02 08:33:08.943  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.org.conscrypt.Java8ExtendedSSLSession>
07-02 08:33:08.943  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.org.conscrypt.Java8ExtendedSSLSession>
07-02 08:33:08.963  3971  3971 I ProviderInstaller: Installed default security provider GmsCore_OpenSSL
07-02 08:33:08.963  3971  3971 I Safeboot: Checking safeboot...
07-02 08:33:08.993  3971  3971 I Safeboot Condition: No need to enter Safeboot.
07-02 08:33:09.003  3971  3971 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/files/CFN.now
07-02 08:33:09.063  3971  3971 I beit    : Primes not initialized, returning default (no-op) Primes instance which will ignore all calls. Please call Primes.initialize(...) before using any Primes API.
07-02 08:33:09.133  3971  3971 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/databases/playlog.db
07-02 08:33:09.133  3971  3971 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/databases/playlog.db-journal
07-02 08:33:09.133  3971  3971 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/databases/playlog.db-shm
07-02 08:33:09.133  3971  3971 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/databases/playlog.db-wal
07-02 08:33:09.243  3971  3981 I DynamiteModule: Considering local module com.google.android.gms.googlecertificates:4 and remote module com.google.android.gms.googlecertificates:4
07-02 08:33:09.243  3971  3981 I DynamiteModule: Selected local version of com.google.android.gms.googlecertificates
07-02 08:33:09.263   813   902 D LocationProviderProxy: applying state to connected service
07-02 08:33:09.423   813   902 D LocationProviderProxy: applying state to connected service
07-02 08:33:09.473  1234  1234 D StatusBar.NetworkController: refreshViews connected={ wifi } level=4 combinedSignalIconId=0x7f020643/com.android.systemui:drawable/stat_sys_wifi_signal_2 mobileLabel=BLAU wifi
07-02 08:33:09.473  1234  1234 D StatusBar.NetworkController: refreshNwBoosterIndicator - setNWBoosterIndicators(false)
07-02 08:33:09.473  1234  1234 D StatusBar.NetworkController: refreshNwBoosterIndicator - setNWBoosterIndicators(false)
07-02 08:33:09.473  1234  1234 D StatusBar.NetworkController: refreshNwBoosterIndicator - setNWBoosterIndicators(false)
07-02 08:33:09.473  1234  1234 D StatusBar.NetworkController: refreshNwBoosterIndicator - setNWBoosterIndicators(false)
07-02 08:33:09.523  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<skk>
07-02 08:33:09.523  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<skk>
07-02 08:33:09.533  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<skk>
07-02 08:33:09.533  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<skk>
07-02 08:33:09.613  3971  3971 D ConnectivityManager: requestNetwork; getAppId(CallingUid) : 10014, CallingPid : 3971
07-02 08:33:09.643   330  1052 D EnterpriseController: netId is 0
07-02 08:33:09.643   330  1052 D Netd    : getNetworkForDns: using netid 514 for uid 10014
07-02 08:33:09.643  3971  4015 W ProviderHelper: Unknown dynamite feature providerinstaller
07-02 08:33:09.643  3971  4015 I DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
07-02 08:33:09.653  3971  4015 I DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
07-02 08:33:09.653  3971  4015 I qtaguid : Tagging socket -1 with tag<PHONE_NUMBER>000000{536871943,0} uid -1, pid: 3971, getuid(): 10014
07-02 08:33:09.653  3971  4015 I qtaguid : Failed write_ctrl(t -1<PHONE_NUMBER>324976128 -1) res=-1 errno=9
07-02 08:33:09.653  3971  4015 I qtaguid : Tagging socket -1 with tag<PHONE_NUMBER>000000(536871943) for uid -1 failed errno=-9
07-02 08:33:09.653  3971  4015 I NetworkManagementSocketTagger: tagSocketFd(-1, 536871943, -1) failed with errno-9
07-02 08:33:09.653  3971  4015 I qtaguid : Tagging socket 120 with tag<PHONE_NUMBER>000000{536871943,0} uid -1, pid: 3971, getuid(): 10014
07-02 08:33:09.673  3971  3971 W System  : ClassLoader referenced unknown path: /data/data/com.google.android.gms/app_chimera/m/00000102/n/armeabi
07-02 08:33:09.773  3971  3971 I ExposureNotification: ExposureNotificationInternalService.onCreate, com.google.android.gms.nearby.exposurenotification.service.ExposureNotificationInternalChimeraService@44921
07-02 08:33:09.823  3971  3971 I ExposureNotification: ExposureServiceInternalService.onStartCommand, null [CONTEXT service_id=236 ]
07-02 08:33:09.853  3971  4015 I NetworkScheduler: Using standalone scheduling engine [CONTEXT service_id=218 ]
07-02 08:33:09.913  3971  3971 D BluetoothAdapter: STATE_BLE_ON
07-02 08:33:09.913  3971  3971 I ExposureNotification: Utils#isSupported enabled=true, isDeviceSupported=true, isBluetoothSupported=true, BluetoothAdapter.isMultipleAdvertisementSupported=false [CONTEXT servi
07-02 08:33:09.913  3971  3971 I ExposureNotification: ExposureNotificationInternalService.onStartCommand received intent, action=null [CONTEXT service_id=236 ]
07-02 08:33:09.933  3971  3971 I ExposureNotification: Active client found, start tracing. [CONTEXT service_id=236 ]
07-02 08:33:09.933  3971  3971 I ExposureNotification: ExposureServiceInternalService.startTracing [CONTEXT service_id=236 ]
07-02 08:33:09.953  3971  3971 I ExposureNotification: AlarmManagerImpl.opportunisticSchedule called, delay=1800000ms [CONTEXT service_id=236 ]
07-02 08:33:09.963  3971  3971 I ExposureNotification: AlarmManagerImpl.opportunisticSchedule called, delay=1800000ms [CONTEXT service_id=236 ]
07-02 08:33:10.003  3971  3971 I ExposureNotification: scheduling daily task dispatcher [CONTEXT service_id=236 ]
07-02 08:33:10.063  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.063  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.063  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.073  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.073  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.073  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.083  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.083  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.083  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.083  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>
07-02 08:33:10.083  3971  3971 I art     : Rejecting re-init on previously-failed class java.lang.Class<bvsa>

[...]

07-02 08:33:10.503  3971  4030 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/files/nlp_state
07-02 08:33:10.503  3971  4030 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/cache/nlp_devices
07-02 08:33:10.503  3971  4030 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/files/nlp_ioh
07-02 08:33:10.503  3971  4030 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/cache/nlp_s
07-02 08:33:10.503  3971  4030 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.google.android.gms/cache/nlp_GlsPlatformKey
07-02 08:33:10.783  1394  1394 E TranscodeReceiver: onReceive : android.intent.action.CHECK_SIOP_LEVEL
07-02 08:33:10.783  1394  1394 D TranscodeReceiver:  SIOP_LEVEL: 1
07-02 08:33:10.823   813  1669 D LocationManagerService: request c3af7d0 passive Request[POWER_NONE passive fastest=0] from com.google.android.gms(10014)
07-02 08:33:10.823   813  1669 D LocationManagerService: provider request: passive ProviderRequest[ON interval=0]
07-02 08:33:10.863  3971  3971 I Backup  : [GmsBackupAccountManager] Backup account not found in gmscore.
07-02 08:33:10.883  3971  3982 W DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
07-02 08:33:10.893  3971  3982 I DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:4
07-02 08:33:10.893  3971  3982 I DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 4
07-02 08:33:10.893  3971  3982 W System  : ClassLoader referenced unknown path: /data/data/com.google.android.gms/app_chimera/m/00000109/n/armeabi-v7a
07-02 08:33:10.893  3971  3982 W System  : ClassLoader referenced unknown path: /data/data/com.google.android.gms/app_chimera/m/00000109/n/armeabi
07-02 08:33:10.963  3971  3971 I ExposureNotification: Settings updated bluetooth enabled: false location enabled false [CONTEXT service_id=236 ]
07-02 08:33:10.983  3971  3971 I ExposureNotification: User turn off scanning. [CONTEXT service_id=236 ]
07-02 08:33:10.983  3971  3971 I ExposureNotification: Not scanning! [CONTEXT service_id=236 ]
07-02 08:33:10.983  3971  3982 D BluetoothAdapter: STATE_BLE_ON
07-02 08:33:10.993  3971  3982 I ExposureNotification: Utils#isSupported enabled=true, isDeviceSupported=true, isBluetoothSupported=true, BluetoothAdapter.isMultipleAdvertisementSupported=false [CONTEXT servi
07-02 08:33:11.003  3971  3971 I ExposureNotification: ThreadSafeLevelDbWrapper: do open LevelDb contact-tracing-self-tracing-key-db [CONTEXT service_id=236 ]
07-02 08:33:11.003  3971  3971 I ExposureNotification: ThreadSafeLevelDbWrapper:contact-tracing-self-tracing-key-db instance btz@cf87b78 created [CONTEXT service_id=236 ]
07-02 08:33:11.033   813  2141 D ApplicationPolicy: isStatusBarNotificationAllowedAsUser: packageName = com.google.android.gms,userId = 0
07-02 08:33:11.033 18663  4081 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/de.rki.coronawarnapp/cache/http_cache/9fe44808aba26677253c42a986222fcd.0
07-02 08:33:11.033 18663  4081 W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/de.rki.coronawarnapp/cache/http_cache/9fe44808aba26677253c42a986222fcd.1

[...]

Additional info for https://github.com/corona-warn-app/cwa-app-android/issues/788#issuecomment-652871916: Internet connection was working on phone before during and after these errors occurred (WiFi at home).

Thanks for the detailed info. I will update once we investigated more closely and can give more input

Update to https://github.com/corona-warn-app/cwa-app-android/issues/788#issuecomment-652871916

Today is the first day in CWA version 1.0.4 that the last update (Aktualisiert:) was not incremented.

Today I 'only' had the Google API(10) error [1], mentioned in the Update of https://github.com/corona-warn-app/cwa-app-android/issues/737#issuecomment-652873704, but no Google API(20) error. Aktualisiert: changed from day before yesterday, 11:34 to Today, 8:48.
So it was presumably indeed the Google API(20) error causing the Aktualisiert: not to be updated.
[1] Have to take that back. While writing this comment another error came up that I have never seen before. Will report elsewhere.

I just want add that I am also encountering this error today. I haven't opened the app in 2-3 days and never changed anything after the initial setup 14 days ago.
I closed the app two times and on the third try the error message went away and the app updated again.

I observed the same error on my LG g7. "Cause 3 something went wrong" ...

Haven't encountered this error recently. It seems CWA version 1.1.1 either avoids the Google API errors or the notifications, so I close this issue.


Show subscribed topics in toast

Subscribed topics do not show in the green toast, I think we should show them too. They were separated in a different response item so that clients show them however they like.

Needless to say, if we ever decide to do this, we should show the display name of the masjids corresponding to topics.


R_hat

I think the x's and y's need to be swapped so that the nomenclature is consistent with the paper.


Outdated information

Hello,
I was looking for the latest December version & January - it seems that both docs are outdated.
Previous monthly updates https://docs.microsoft.com/en-us/power-bi/fundamentals/desktop-latest-update-archive?tabs=powerbi-desktop
Latest update - https://docs.microsoft.com/en-us/power-bi/fundamentals/desktop-latest-update?tabs=powerbi-desktop
Thank you. Martina

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

ID: 540c095a-44b8-bd64-6bb2-81fdefbcb591
Version Independent ID: 4a74c2a6-2b28-5c73-9243-1ad5e08d6dd2
Content: What's new in the latest Power BI update - Power BI
Content Source: powerbi-docs/fundamentals/desktop-latest-update.md
Service: powerbi
Sub-service: pbi-fundamentals
GitHub Login: @davidiseminger
Microsoft Alias: davidi

Thanks for your comment - we often do not have updates in December or January, due to holidays and vacations. The February update was just released, go check it out!


Refactor ModuleIdentifier out into its own class

Simplifies internal Google dependencies by allowing the ModuleIdentifier to be in a separate target from the DependencyOptions class.

Thanks. Submitted internally, will be MOE pushed soon.

Sorry I didn't finish this up for you. I ended up having to travel at the last minute and haven't had a minute to get back to this.

No problem. The new workflow that we're moving towards (submit internally first and then push back out) makes it easy to fix simple things like formatting or imports being out of order myself, instead of asking you to fix it, waiting until you have time to fix it and reupload to github, etc. Particularly because we have tools internally to auto-fix some such things.

Closed by https://github.com/google/closure-compiler/commit/819c6099c1dc27c0a8612695f372c0abc4fa82a6.


FnSplit for values that are generated from Intrinsic Functions fail as it's only expecting a strings.

cfn2dsl -t output/mx-database.json  ../mx-database-import.rb
/Users/camm/.rvm/gems/ruby-2.4.1/gems/awesome_print-1.7.0/lib/awesome_print/formatters/base_formatter.rb:31: warning: constant ::Fixnum is deprecated
/Users/camm/.rvm/gems/ruby-2.4.1/gems/cfn2dsl-0.3.1/lib/intrinsic_function.rb:120:in +': no implicit conversion of IntrinsicFunction into String (TypeError) 	from /Users/camm/.rvm/gems/ruby-2.4.1/gems/cfn2dsl-0.3.1/lib/intrinsic_function.rb:120:in fn_split'
from /Users/camm/.rvm/gems/ruby-2.4.1/gems/cfn2dsl-0.3.1/lib/intrinsic_function.rb:11:in to_s' 	from /Users/camm/.rvm/gems/ruby-2.4.1/gems/awesome_print-1.7.0/lib/awesome_print/formatter.rb:58:in awesome_self'
from /Users/camm/.rvm/gems/ruby-2.4.1/gems/awesome_print-1.7.0/lib/awesome_print/formatter.rb:36:in format' 	from /Users/camm/.rvm/gems/ruby-2.4.1/gems/awesome_print-1.7.0/lib/awesome_print/inspector.rb:148:in unnested'
from /Users/camm/.rvm/gems/ruby-2.4.1/gems/awesome_print-1.7.0/lib/awesome_print/inspector.rb:115:in awesome' 	from /Users/camm/.rvm/gems/ruby-2.4.1/gems/awesome_print-1.7.0/lib/awesome_print/core_ext/kernel.rb:10:in ai'
from (erubis):161:in block (3 levels) in evaluate' 	from (erubis):157:in each_pair'
from (erubis):157:in block (2 levels) in evaluate' 	from (erubis):82:in each'
from (erubis):82:in block in evaluate' 	from /Users/camm/.rvm/gems/ruby-2.4.1/gems/erubis-2.7.0/lib/erubis/evaluator.rb:74:in instance_eval'
from /Users/camm/.rvm/gems/ruby-2.4.1/gems/erubis-2.7.0/lib/erubis/evaluator.rb:74:in evaluate' 	from /Users/camm/.rvm/gems/ruby-2.4.1/gems/cfn2dsl-0.3.1/lib/render.rb:13:in cfn_to_cfndsl'
from /Users/camm/.rvm/gems/ruby-2.4.1/gems/cfn2dsl-0.3.1/bin/cfn2dsl:42:in <top (required)>' 	from /Users/camm/.rvm/gems/ruby-2.4.1/bin/cfn2dsl:23:in load'
from /Users/camm/.rvm/gems/ruby-2.4.1/bin/cfn2dsl:23:in <main>' 	from /Users/camm/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in eval'
from /Users/camm/.rvm/gems/ruby-2.4.1/bin/ruby_executable_hooks:15:in `'
Also, holy project necro!

I've patched this locally, will send a pull request soon:
in intrinsic_function.rb:
def fn_split
delimiter = '"' + @parameters[0].gsub('"'){'\"'} + '"'
# value     = '"' + @parameters[1] + '"'
if @parameters[1].instance_of? String
value     = '"' + @parameters[1] + '"'
else
true_value = @parameters[1].ai
end
return "FnSplit(#{delimiter}, #{value})"
end

Fix is in #19


test that docs are up to date in travis

This does not yet work because Python on ubuntu 14.04 is too old and Travis wont support 16.04. Anyone know how to fix this?
$ pip install mkdocs mkdocs-material tabulate
Collecting mkdocs
  Using cached mkdocs-0.17.2-py2.py3-none-any.whl
Collecting mkdocs-material
  Using cached mkdocs_material-2.6.6-py2.py3-none-any.whl
Collecting tabulate
  Using cached tabulate-0.8.2.tar.gz
Collecting tornado>=4.1 (from mkdocs)
  Using cached tornado-5.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-OefaMD/tornado/setup.py", line 146, in <module>
        raise ImportError("Tornado requires an up-to-date SSL module. This means "
    ImportError: Tornado requires an up-to-date SSL module. This means Python 2.7.9+ or 3.4+ (although some distributions have backported the necessary changes to older versions).

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-OefaMD/tornado/

One solution maybe to install older version of tornado manually if it doesn't conflict with any other module, as older python support was discontinued in tornado 4.4(https://allmychanges.com/p/python/tornado/)

@lyoshenka / @hackrush01 what's the status on this?

@IGassmann what's next here?

@tzarebczan I have some progress made, but it's on standby due to a more important issue.

I don't think that's intentional, or I'm misunderstanding.
The idea is that if mkdocs build causes changes (as reported by git), then it should have been run by the dev, and the updated docs should have been committed.
If you can get travis to build and commit the docs itself, that would probably be better.

@IGassmann what's the next step here? Is it possible to make travis to commit the docs? If not, how do we get around it failing?

I'm passing this on to @eukreign since he's working on Travis now, and there's an impending switch to py3.

I would like to prioritize this immediately after 0.30 release.

@eukreign 30 is out. reassigning to you


todomvc example package.json

Hi,
I am new to redux, when I tried to install packages for example todomvc, I found out that in package.json there isn't enough dependencies specified. In order to run it, I had to manually install modules 'merge-descriptors', 'debug', 'finalhandler', etc.
Just wondering if I did anything wrong? Or is the package.json not up to date?

I deleted node-modules folder and reinstalled everything, it worked.


Makejdk-any-platform.sh --docker runs configure on host, before making container

When running makejdk-any-platform.sh --docker, the build scripts will run configure and attempt to set JDK_BOOT_DIR on the host machine before building the docker containers. This can lead to situations like this:
https://ci.adoptopenjdk.net/job/DockerfileCheck/112/label=docker-aws-ubuntu1604-x64-1,variant=j9,version=jdk/console
where the machine doesn't have javac in the path, and https://github.com/AdoptOpenJDK/openjdk-build/blob/f9671c487711ab0ec8e8a8ce220572e30abb8d63/sbin/common/common.sh#L141 will fail.

@Willsparker - I think this might be a case where we we need to force the docker builds to set the boot-jdk parameter.  I noticed building today that my jdk8u docker build picked up jdk14 as the boot jdk because that's the Java it detected on my host.
Thoughts?

I agree - I would assume that configure build has to be run before the docker container is built to set some variables.
https://github.com/AdoptOpenJDK/openjdk-build/blob/c57ad18fb56e681892fbc662ee25aff117c0498b/makejdk-any-platform.sh#L53
From the looks, we could override the JDK_BOOT_DIR variable by adding it into the JDK specific Dockerfile configure script (i.e. https://github.com/AdoptOpenJDK/openjdk-build/blob/master/docker/jdk14/x86_64/ubuntu/dockerConfiguration.sh ) as the boot jdk will always be in a set place (i.e. /usr/lib/jvm/jdkXX).
However, that won't fix the issue I explained earlier, where a host machine may not have java or javac set- though that could probably be solved by adding an  elif BUILD_CONFIG[docker] == "docker" to https://github.com/AdoptOpenJDK/openjdk-build/blob/f9671c487711ab0ec8e8a8ce220572e30abb8d63/sbin/common/common.sh#L126


Fix: card reopen issue

Description
#30 on the board page  on clicking card , the page of the card appears (it's a popup). On closing popup, when want to reopen popup it was not getting closed, had to refresh. To resolve, made some changes  when popup closes .
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)

Checklist:

[x] My code follows the style and structure of this project
[x] My code follows the principles of clean code
[x] My changes generate no new warnings, bugs or errors

Tags
hactoberfest, bug-fixes

Hello @sanjaykumaryada,
This solution clearly solves the issue, but I believe introduces a new bug. For example, If I open a card and edit it, when I close the popup, the changes don't show up on the board until the page is refreshed. That's why the router.refresh() was there, but it caused the #30.


Update opentracing api to 0.33.0

Coverage increased (+0.2%) to 96.721% when pulling 878564fcda2b8201317212424f3fb2b1b3ed5949 on ot_0_33_3 into 2d3a89db0ac518f73321f57493ffbb3400a61692 on master.


updated url params aren't loaded properly into the QueryPicker

result of the re-factoring...

eg if a query is deleted, the indices are not updated in the queries store, and therefore cause collisions

actually, they are updated, but due to the way the reducer is constructed, the collection update on the query cannot see the 'parent' state, and hence does not infer the newly updated index...

the problem is related to the structure of the reducer
the queries folder has
queries,
collections, and
sources
queries is not an IndexedAsyncReducer but the sources and collections are...
because of this structure, it seems that the state upon return of these lookups is not reliable - on location change, the state is null (even though we just filled in queries from the URL!) then sometimes it has the queries array, sometimes only the query being updated. I need the index in order to update the correct query so I need the full array of queries...
So, the re-factoring pulled out some of my custom/hacky code, which is good, but I'm not sure what the best way to handling the case that this is not a 'fresh' load- we have all the data we need, and don't need to resetQueries, but we have some sort of sync problem

no - it's not... the results don't properly update (eg, if one query is deleted and then we hit search, the query correctly disappears, but the results in the widgets act as if the query is still there)

again, it has to do with what happens when we remove a query. The index of the remaining queries causes confusion. eg, we have two queries : clinton with index 0, obama with index 1.  we remove clinton, obama needs to be updated with a new index of 0. This is why I was resetting the queries- so the indices are refreshed...


RadarViewer icon should be selected whenever the SelectionTool is active

Right now, it seems like the icon is only selected until the run() function exits.
This is confusing for the user because they don't have the usual usual cue for what a mouse click on the map will do.

Fixed!
This was annoying because the run function creates a QgsMapTool, which stays active until another map tool is selected or the user clicks on the map.
I think my workaround is hacky, but it works.
I made the action checkable, then connected signals from the QgsMapTool to checking/unchecking the action.


docs/enroll.mobileconfig lacks SCEP Subject

macOS MDM client does not work properly. A client certificate is issued with empty subject and won't be used when connecting to MDM server.
iOS MDM client works without problem.
I end up with subject template like this:
<key>Subject</key>
<array>
	<array>
		<array>
			<string>CN</string>
			<string>MDM Client %HardwareUUID%</string>
		</array>
	</array>
	<array>
		<array>
			<string><IP_ADDRESS></string>
			<string>%SerialNumber%</string>
		</array>
	</array>
</array>

Do you have these reversed by chance? iOS does not support the %substiatuion% variables like macOS does. I.e. on macOS you can do /usr/libexec/mdmclient dumpSCEPVars to get the list.
In any case this isn't a MicroMDM problem per se, but an Apple SCEP profile payload issue. If you need the serial number I suggest looking into ACME (MDA) for attestation and/or getting the serial number from the Authenticate MDM check-in message for non-User Enrollment enrollments.

iOS does not support the %substiatuion% variables like macOS does

You're right. I didn't notice that.

In any case this isn't a MicroMDM problem per se, but an Apple SCEP profile payload issue.

I followed nanomdm quickstart guide and my macOS connect to nanomdm without using client certificate issued by SCEP server. This is a problem IMHO.


[Feature Request] "Spotify-exclusive" API for Developers via RPC

Is it possible to implement Spotify-exclusive features via RPC? Those includes:

Custom activity name like Playing/Listening to [X] instead of static Playing a game.
Activity type. I believe this is extremely needed feature for many developers.
Custom game name. Spotify uses this field to show what song is playing.
Links. Game name, details and state field of Spotify supports links.
Art Assets API. Spotify Album Thumbnail pictures aren't hosted on Discord.
Progress Bar.

None of these are possible for non Spotify users, hence the term exclusive. At all without breaking tos.
As for requesting the ability to add it for non Spotify, a lot of these feature would be awesome and some have already got requests open on this GitHub.

Hi enhsailhan,
With #290 , we're going to moving all feature requests to here:
https://support-dev.discordapp.com/hc/en-us/community/topics
Would you mind creating this request over there? I'm also happy to do it for you.

I'm also happy to do it for you.

I would really appreciate it!

I think as Lachee pointed out, a lot of these may be covered in other feature requests. So I'll go through existing ones and then copy whatever's left from here.

Moved to here


Beta 32 Doesn't recognize end-stops

It trying to chase other problems I found another.
Beta-32 Runs into the End-stops and Keeps going... Smashing the Microswitches and making some interesting awful sounds
Tried 6.20... Home Works fine
Tried Beta-32   BRRRRRRR left Micro-switch smushed until I released steppers
Tried 6.20... behaved as expected
Tried Beta-32   BRRRRR
All I was doing was hitting the HOME button when it was ALREADY in the home position....
Homing, watching, closing the app and opening the OTHER version.  Homing and watching... Swapping back, repeat
Enclosed is the BLANK MK file so you can see settings.
BLANK endstop.zip
My Reference was 6.20 which behaves as expected.

The endstops apply for home, the only maybe plausible thing is if you have a set home position which is negative. Then it homes to the upper left corner, then rams the wall. Typically home is just home, but with a set home position, you could have it do home them smash wall.

i could understand that if it didn't behave -very- differently in 6.20...
I switched between the beta and 6.20 and the HOME behavior was very
different.  I tried it several time, just to make sure, but didn't want to
hurt my belts or the limit switches by chasing the issue.   Home is set to
physical home (0,0)in both. Home SHOULD go to the limit switches and STOP,
that's why they are called limit switches.  The limit switches are supposed
to set 0,0....
Again... it worked fine in 6.20... but not in the beta...
On Thu, Jul 22, 2021 at 2:28 PM tatarize @.***> wrote:

The endstops apply for home, the only maybe plausible thing is if you have
a set home position which is negative. Then it homes to the upper left
corner, then rams the wall. Typically home is just home, but with a set
home position, you could have it do home them smash wall.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/meerk40t/meerk40t/issues/458#issuecomment-885139108,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFJ2GY4IGKWZYF7KNRB463LTZBPNNANCNFSM5AUCW6WA
.

--
Need a quick answer? Call our booking line at<PHONE_NUMBER>, or book your
inspection on our website 24/7.

Bob Sisson, ACI, BVI
Inspections by Bob, LLC
www.inspectionsbybob.com
@.***
MD Lic#29666; ASHI Member #212016

Had a chance to play...and explore....
There -WAS- a negative number in the Home location... once I did a physical home, and re-set HOME it behaves....
HOWEVER, I still think the Switches should override everything for safety and longevity of belts and such...


fix: include undefined in IniniteQueryResult data type

fixes #737
Let me know if it needs more work.

:tada: This PR is included in version 2.4.15 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


⚠ Samsung has degraded performance

In 8393b8a, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 1852 ms

Resolved: Samsung performance has improved in b84a5c8.


Support Multiple WaveTerm Windows (for Multiple Monitors)

We should support having multiple WaveTerm windows open at once (each independent of each other).  This is especially useful to support users with multiple monitors so they can have terminal windows open on each monitor showing different workspaces/tabs.

I really want to use Wave, but I have multiple virtual desktops and cannot use wave if I'm not able to have a window on more than one desktop / monitor

After looking through the docs, and then finding this ticket, I would like to confirm that:

There is currently no way to see more than one terminal session at a time using this tool.


Allow offset and unit_offset to be set higher than one loop

Fixes #24745
Although the branch name says PathFollow2D, this PR also fixes the spatial PathFollow.

Thanks!


Looser meta version constraints

Not sure meta is required to be greater than 1.16.0 for this package, but flutter stable(3.24) is using meta 1.15.0.
So if possible please change the minimal meta version.

Same problem

Hi, thanks for the report and the reminder.
I just submitted a PR with a fix: #26. Can you confirm this fixes your issue and report your findings in the comments of the PR? Thanks!


re-use the secureRandom between invocations of Aes.paramSupplier.

Type of change
Select the type of your PR

Enhancement / new feature
Refactoring

Description
Shared secure random between invocations to avoid repeated costly initialisations
Additional Context
Why are you making this pull request?
Checklist
Please go through this checklist and make sure all applicable tasks have been done

[ ] Write tests
[ ] Make sure all tests pass
[ ] Review performance test results. Ensure that any degradations to performance numbers are understood and justified.
[ ] Make sure all Sonarcloud warnings are addressed or are justifiably ignored.
[ ] Update documentation
[ ] Reference relevant issue(s) and close them after merging
[ ] For user facing changes, update CHANGELOG.md (remember to include changes affecting the API of the test artefacts too).

@strimzi-ci run perf

:arrow_forward: Build started - check Jenkins for more info. :arrow_forward:

:heavy_check_mark: Test Summary :heavy_check_mark:
BUILD NUMBER: 22
KAFKA VERSION: 3.7.0
NUMBER OF BROKERS: 1
NUMBER OF MESSAGES: 30000000
MESSAGE SIZE: 1024 bytes
PRODUCER PROPERTIES: acks=all
:small_blue_diamond: Producer
Test Case 01-no-proxy-baseline Results

Latency
Current Value
Previous Value

Rate rps
82629.375 rec/s
49167.51 rec/s

Rate mips
80.69 Mi/s
48.02 Mi/s

AVG Latency
371.06 ms
619.04 ms

95th Latency
407 ms
719 ms

99th Latency
426 ms
801 ms

Test Case 02-no-filters Results

Latency
Current Value
Previous Value

Rate rps
80821.14 rec/s
49771.88 rec/s

Rate mips
78.93 Mi/s
48.61 Mi/s

AVG Latency
379.41 ms
611.98 ms

95th Latency
422 ms
703 ms

99th Latency
448 ms
760 ms

Test Case 03-transform-filter Results

Latency
Current Value
Previous Value

Rate rps
84565.88 rec/s
32933.848 rec/s

Rate mips
82.58 Mi/s
32.16 Mi/s

AVG Latency
362.54 ms
930.72 ms

95th Latency
402 ms
1020 ms

99th Latency
423 ms
1106 ms

Test Case 04-envelope-encryption-filter Results

Latency
Current Value
Previous Value

Rate rps
77961.16 rec/s
17664.193 rec/s

Rate mips
76.13 Mi/s
17.25 Mi/s

AVG Latency
393.31 ms
1736.79 ms

95th Latency
437 ms
1998 ms

99th Latency
482 ms
2253 ms

Test Case 05-envelope-encryption-filter-no-encrypt Results

Latency
Current Value
Previous Value

Rate rps
81193.875 rec/s
37335.164 rec/s

Rate mips
79.29 Mi/s
36.46 Mi/s

AVG Latency
377.65 ms
820.26 ms

95th Latency
429 ms
943 ms

99th Latency
447 ms
1082 ms

:small_blue_diamond: Consumer
Test Case 01-no-proxy-baseline Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29296.973
29296.977

MB.sec
280.3645
278.2028

data.consumed.in.nMsg
30000100
30000103

nMsg.sec
287093.28
284879.62

rebalance.time.ms
280
547

fetch.time.ms
104216
104761

fetch.MB.sec
281.1178
279.6554

fetch.nMsg.sec
287864.62
286367.1

Test Case 02-no-filters Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29296.973
29296.973

MB.sec
279.5859
66.1455

data.consumed.in.nMsg
30000100
30000100

nMsg.sec
286296.0
67733.01

rebalance.time.ms
275
504

fetch.time.ms
104512
442413

fetch.MB.sec
280.3216
66.2209

fetch.nMsg.sec
287049.34
67810.17

Test Case 03-transform-filter Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29296.973
29296.973

MB.sec
245.1404
35.6583

data.consumed.in.nMsg
30000100
30000100

nMsg.sec
251023.75
36514.062

rebalance.time.ms
287
506

fetch.time.ms
119224
821098

fetch.MB.sec
245.7305
35.6802

fetch.nMsg.sec
251628.03
36536.566

Test Case 04-envelope-encryption-filter Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29297.11
29297.11

MB.sec
205.3128
31.842

data.consumed.in.nMsg
30000240
30000240

nMsg.sec
210240.3
32606.227

rebalance.time.ms
275
538

fetch.time.ms
142420
919539

fetch.MB.sec
205.7092
31.8606

fetch.nMsg.sec
210646.25
32625.305

Test Case 05-envelope-encryption-filter-no-encrypt Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29296.973
29296.973

MB.sec
279.7167
48.664

data.consumed.in.nMsg
30000100
30000100

nMsg.sec
286429.94
49831.902

rebalance.time.ms
279
527

fetch.time.ms
104459
601499

fetch.MB.sec
280.4638
48.7066

fetch.nMsg.sec
287194.97
49875.562

@strimzi-ci run perf

:arrow_forward: Build started - check Jenkins for more info. :arrow_forward:

:heavy_check_mark: Test Summary :heavy_check_mark:
BUILD NUMBER: 23
KAFKA VERSION: 3.7.0
NUMBER OF BROKERS: 1
NUMBER OF MESSAGES: 30000000
MESSAGE SIZE: 1024 bytes
PRODUCER PROPERTIES: acks=all
:small_blue_diamond: Producer
Test Case 01-no-proxy-baseline Results

Latency
Current Value
Previous Value

Rate rps
47935.496 rec/s
78156.95 rec/s

Rate mips
46.81 Mi/s
76.33 Mi/s

AVG Latency
621.88 ms
392.35 ms

95th Latency
746 ms
457 ms

99th Latency
874 ms
499 ms

Test Case 02-no-filters Results

Latency
Current Value
Previous Value

Rate rps
46944.832 rec/s
79842.234 rec/s

Rate mips
45.84 Mi/s
77.97 Mi/s

AVG Latency
651.63 ms
384.03 ms

95th Latency
760 ms
418 ms

99th Latency
863 ms
436 ms

Test Case 03-transform-filter Results

Latency
Current Value
Previous Value

Rate rps
46917.004 rec/s
83037.164 rec/s

Rate mips
45.82 Mi/s
81.09 Mi/s

AVG Latency
649.93 ms
369.25 ms

95th Latency
792 ms
407 ms

99th Latency
994 ms
428 ms

Test Case 04-envelope-encryption-filter Results

Latency
Current Value
Previous Value

Rate rps
21080.518 rec/s
67193.46 rec/s

Rate mips
20.59 Mi/s
65.62 Mi/s

AVG Latency
1454.87 ms
456.37 ms

95th Latency
2022 ms
507 ms

99th Latency
2477 ms
530 ms

Test Case 05-envelope-encryption-filter-no-encrypt Results

Latency
Current Value
Previous Value

Rate rps
41566.1 rec/s
74086.33 rec/s

Rate mips
40.59 Mi/s
72.35 Mi/s

AVG Latency
734.27 ms
413.88 ms

95th Latency
903 ms
470 ms

99th Latency
1256 ms
504 ms

:small_blue_diamond: Consumer
Test Case 01-no-proxy-baseline Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29296.977
29296.977

MB.sec
278.7321
280.7488

data.consumed.in.nMsg
30000103
30000103

nMsg.sec
285421.7
287486.72

rebalance.time.ms
557
284

fetch.time.ms
104551
104069

fetch.MB.sec
280.2171
281.5149

fetch.nMsg.sec
286942.28
288271.28

Test Case 02-no-filters Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29296.973
29296.973

MB.sec
189.3389
279.5086

data.consumed.in.nMsg
30000100
30000100

nMsg.sec
193883.02
286216.8

rebalance.time.ms
506
285

fetch.time.ms
154227
104531

fetch.MB.sec
189.9601
280.2707

fetch.nMsg.sec
194519.12
286997.16

Test Case 03-transform-filter Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29296.973
29296.973

MB.sec
77.8208
204.0506

data.consumed.in.nMsg
30000100
30000100

nMsg.sec
79688.52
208947.81

rebalance.time.ms
515
285

fetch.time.ms
375952
143292

fetch.MB.sec
77.9274
204.4564

fetch.nMsg.sec
79797.69
209363.39

Test Case 04-envelope-encryption-filter Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29297.11
29297.11

MB.sec
70.2491
183.952

data.consumed.in.nMsg
30000240
30000240

nMsg.sec
71935.086
188366.81

rebalance.time.ms
600
285

fetch.time.ms
416446
158980

fetch.MB.sec
70.3503
184.2817

fetch.nMsg.sec
72038.73
188704.48

Test Case 05-envelope-encryption-filter-no-encrypt Results

Latency
Current Value
Previous Value

data.consumed.in.MB
29296.973
29296.973

MB.sec
124.6871
266.5397

data.consumed.in.nMsg
30000100
30000100

nMsg.sec
127679.56
272936.6

rebalance.time.ms
531
320

fetch.time.ms
234433
109596

fetch.MB.sec
124.9695
267.3179

fetch.nMsg.sec
127968.76
273733.53

Those numbers make this look like a perf regression, no?

they look within the realms of normal variation we see between runs.


How to use wizard?

I have no idea how to use wizard on my scene.
Please add more examples.

Hey @meowlanguages! I've never used the Wizard and probably can't help it, but you can do whatever you want with Telegraf by injecting Telegraf instance directly with @InjectBot() decorator.
Also, @Morb0 may be you can help?

@meowlanguages problem solved?

Hey @bukhalo 👋
Thanks for helping the community!
I'm trying to use wizard scenes too and I'm facing a lot of difficulty due to the lack of documentation and practical examples.
It's not your fault of course, but to the extent of your time and availability, could you consider adding examples of this? Much appreciated.

You can inject TELEGRAF_STAGE provider, create a wizard scene as usual, and register it in Stage.
Example:
constructor(
    @Inject(TELEGRAF_STAGE) stage: Scenes.Stage<Context>,
  ) {
    const scene = new Scenes.WizardScene<Context>(
      'youSceneIdentifier',
      this.createStepHandler1(),
      this.createStepHandler2(),
      // other steps...
    );

    stage.register(scene);
  }

My big question is how to create a "Wizard Scene" in "nest way" in a way that is scalable and using the decorators that this module offers. I'm sorry but I couldn't understand how it's possible to do this at first.
https://github.com/telegraf/telegraf/issues/705#issuecomment-549056045
I was checking some links about this and I'm facing the same difficulty posed in this example.
I need to request user data like Phone Number, Email, and Home address using Wizard Scene. I imagine this is a common use case so I think it would be very interesting for the community to have an example of this using Telegraf + Wizard Scenes.

Yes, agree. Missing wizard support and docs in nest way.

@Morb0 use wizard scene does not work because "TypeScript types". Could you help me?
import { Inject } from '@nestjs/common';
import { Scene, TELEGRAF_STAGE } from 'nestjs-telegraf';
import { Scenes } from 'telegraf';

import { Context } from '@/tg/common/interfaces';

@Scene('userPersonalDataWizard')
export class UserPersonalDataWizard {
  constructor(@Inject(TELEGRAF_STAGE) stage: Scenes.Stage<Context>) {
    const scene = new Scenes.WizardScene<Scenes.WizardContext>(
      'userPersonalDataWizard',
      this.hello(),
      // this.createStepHandler2(),
      // other steps...
    );

    stage.register(scene);
  }

  hello() {
    return 'heyyyyyyyyy!';
  }
}

No overload matches this call.
  Overload 1 of 2, '(id: string, ...steps: Middleware<WizardContext<WizardSessionData>>[]): WizardScene<WizardContext<WizardSessionData>>', gave the following error.
    Argument of type 'string' is not assignable to parameter of type 'Middleware<WizardContext<WizardSessionData>>'.
  Overload 2 of 2, '(id: string, options: SceneOptions<WizardContext<WizardSessionData>>, ...steps: Middleware<WizardContext<WizardSessionData>>[]): WizardScene<...>', gave the following error.
    Argument of type 'string' is not assignable to parameter of type 'SceneOptions<WizardContext<WizardSessionData>>'.ts(2769)

What TypeScript types should I use?
Could you send a full example and not only a code snippet, please?

@felinto-dev As types says, you need return middleware function from hello method.
Somthing like this:
hello() {
  return (ctx) => {
    ctx.reply('Hello World');
    ctx.wizard.next();
  }
}

I would like to say thank you so much for your help!
Once this example is working I will post the full code here to help the community. Unfortunately, I'm not getting into the scene.
I get the following error:
"Cannot read property 'enter' of undefined"

I guess I need to use "stage middleware", however, this example does not works
https://github.com/bukhalo/nestjs-telegraf/issues/72#issuecomment-623085469
    const stage = new Stage([superWizard], { default: 'super-wizard' });
    this.bot.use(stage.middleware());

After hours of trying to find a solution, I saw what the error was, which is not obvious at first glance.
Also, why session middleware is deprecated.
https://github.com/telegraf/telegraf/issues/1372#issuecomment-782668499
It is necessary to activate the session middleware for the scene wizard to work.
https://github.com/telegraf/telegraf/issues/309#issuecomment-362870720

Hello
Thank you very much for integrating Scenes in Decorators. It works really awesome.
It will be also helpful to add Wizard functionality
Maybe in this way ?
@WizardScene()
class ProfileWizardScene {

    Step('1')
    ageStep() {

        @Enter
        ageStepEnter(ctx) {
            ctx.reply('Age Step Enter')
        }

        @On('message')
        ageMessageHandler(ctx) {
            ctx.reply('Age Saved')
            ctx.wizard.next();
        }

    }

    Step('2')
    nameStep() {

        @Enter
        nameStepEnter(ctx) {
            ctx.reply('Name Step Enter')
        }

        @On('message')
        nameMessageHandler(ctx) {
            ctx.reply('Name Saved')
            ctx.wizard.next();
        }
    }
}

Wizard support added in v2.4.0, see on @xTCry code for example.

Wizard support added in v2.4.0, see on @xTCry code for example.

Could you send the direct link for example please?

Maybe I found it?
Look the README.MD
https://github.com/xTCry/ts-telegraf-decorators

is there an example with callback_data in a button. im not able to get any data from the callback buttons when i move between steps

is there an example with callback_data in a button. im not able to get any data from the callback buttons when i move between steps

If I understood you correctly, here is an example:
import { Context, Wizard,  WizardStep } from 'nestjs-telegraf'
import { Scenes } from 'telegraf'

@Wizard('test')
export class TestWizard {
  @WizardStep(1)
  step1(@Context() ctx: Scenes.WizardContext) {
    const randomData = Math.random()
    ctx.reply('Press the button', {
        reply_markup: {
          inline_keyboard: [
            [{ text: 'Press me', callback_data: `action:${randomData}` }],
          ],
        },
        reply_to_message_id: ctx.message.message_id,
      })
  }

  @Action(/action:.+/)
  button(@Context() ctx: any) {
    const [, data] = ctx.callbackQuery.data.split(':')
    ctx.answerCbQuery()
    // save data for next step in ctx.wizard.state
    ctx.wizard.state.data = data
    ctx.wizard.next()
    ctx.wizard.steps[ctx.wizard.cursor](ctx)
  }

  @WizardStep(2)
  async step2(@Context() ctx: Scenes.WizardContext) {
    // ctx.wizard.state contains stored data
    console.log((ctx.wizard.state as any).data)
    ctx.scene.leave()
  }
}

Note that using ctx.wizard.steps[ctx.wizard.cursor](ctx) is a little hack to call step 2 immediately after pressing the button. Without this user would need to send another message to call step 2.


UI enhancements for Tidy settings - make Custom Checks field more intuitive

In the Clang Power Tools settings tab named Tidy, I have found myself editing the Custom Checks field, then proceeding with a Clang Tidy run -- only to find that the Custom Checks I specified were ignored and instead checks were obtained from my .clang-tidy file.
SUGGESTION No. 1
Enhance this tab so the Custom Checks field would be greyed out and read-only -- unless the Use check from field was set to CustomChecks.
On the same tab, under Custom Checks, I often type an explicit list of checks and forget that Clang Tidy enables its own default set of checks above-and-beyond what I specify explicitly.  Sometimes the checks I specify cannot perform their fixes because some default check can also fix the same line of code, and the two fixes are conflicting with each other.
SUGGESTION No. 2
Add a checkbox to the Tidy settings tab named [  ]  disable default checks that when checked would implicitly add -*; in front of any specified Custom Checks text.  This checkbox -- whether enabled or disabled -- would be remembered on subsequent runs.  As with the first suggestion, this new checkbox would be greyed out and read-only unless Use checks from was set to CustomChecks.

Hi @Mike4Online,
Thank you so much for your suggestion! I really appreciate it and will definitely give it some thought
What version of Clang Power Tools are you using?
Regards,
Marina

I am running Clang Power Tools 2022 version 2023.2.0
LLVM = 15.0.7
Visual Studio 2022 build 17.4.2

Interesting, because we thought that we don't have a problem with checks that cannot be performed because of conflicts.
Thank you for letting us know
Would you be able to provide me with a test project so I can replicate the issue? Any help would be greatly appreciated.
I need to discuss with my colleagues about your suggestions before moving forward, I will let you updated
Best regards,
Marina

I am still attempting to replicate the issue.  I am now able to run clang-tidy.exe from a Command Prompt, using commands based on the INVOKE commands shown in Clang Power Tools verbose mode.  There seems to be an issue with conflicts in the check named cppcoreguidelines-prefer-member-initializer that is independent of Clang Power Tools.  But I was able to get this check to apply fixes when run directly via clang-tidy.exe, despite these conflicts.  I intend to post another comment when I have more to report and a simplified example.
I am also attempting to write a procedure or guideline for myself in running Clang-Tidy checks to perform fixes.  Specifically, I am trying to understand:

Which Clang-Tidy checks may overlap each other in some ways, and which of these are best and in what order to run them.  For example, cppcoreguidelines-init-variables, cppcoreguidelines-pro-type-member-init, and modernize-use-default-member-init.
What order to run other fixes.  For example, running the member init fixes before running modernize-use-equals-default.
Which fixes may need to be run more than once, e.g.  misc-const-correctness along with readability-make-member-function-const
Which fixes have bugs which can corrupt my source files.  For example, readability-isolate-declaration can add newlines (LF) as end-of-line markers wherever it adds new lines, even if the source file uses CR+LF (Windows-style) line endings.

As Clang-Tidy experts, do you or your team have any Clang-Tidy notes or guidelines that you could post?

Hi @Mike4Online
Unfortunately, we don't have any Clang-Tidy notes or guidelines that we can share. However, we're happy to help answer any questions you might have as you work on your procedure or guideline.
Best regards,
Marina

Also thanks for the suggestion! My colleague and I have discussed it, and we agree that it would be a good idea to enhance the tab as you suggest. We plan on implementing your suggestion in the near future

Hi @Mike4Online =,
is issue is available in new v2023.2.1 of Clang Power Tools
Thank you for your help
Have a nice day,
Marina

I am glad that the Custom Checks field is now read-only unless Use check from is set to CustomChecks.  But even when this field is read-only, it is not shown disabled (i.e. with gray shading).  So it is not visually obvious that the the Custom Checks do not apply.   If you could gray the field when disabled, (and un-gray it when enabled), that would finish this feature request.
As for the Disable default checks checkbox to implicitly add -*; to whatever the user specifies in Custom Checks, I'd still like to see that. What do you think of this second suggestion?

You are right @Mike4Online, I forgot to disable the default checks (I think your suggestions are good)
I appreciate you bringing up this topic and offering assistance
Have a nice day,
Marina

Hi @Mike4Online,
Implementation for this issue is available in new v2023.3.0 of Clang Power Tools
Thank you for your help
Have a nice day,
Marina

The Custom Checks field is now read-only and visually greyed-out, unless Use check from is set to CustomChecks. I still do not see a new checkbox to disable default checks.  But I'm glad for the changes and will close this feature request as resolved.


feat: password reset flow

Able to take a look, @thorwebdev?
Todo:

[x] Documentation

Supersedes #105.

The code looks good to me, the only thing is, when I test it on my project, I don't receive the email, and I currently don't know why. Is it working for you?

Yeah, it worked the last time I tried. Let me try again.

I'll go ahead and merge this PR as it's working in the preview deployment. We can explore the testing of the password reset flow in #157.


Update 1ce.toml

Description
All previous genesis validators should name their PRs "Update {validator_alias}.toml for tesntet-15" and provide links to previous PRs merged.
https://github.com/anoma/namada-testnets/pull/703
https://github.com/anoma/namada-testnets/pull/1254
https://github.com/anoma/namada-testnets/pull/1709
If this is an UPDATE for a previous genesis validator
Checks are made against your net_address. If this has changed since the previous testnet, make sure you provide links of previous prs merged from your previous git username.
Thanks in advance!
Checklist before merging

[x] Only one toml is added in this PR
[x] The file being added is indeed a .toml file
[x] The toml being added is to the correct folder, and only to the correct folder
[x] The eth_hot_key and eth_cold_key are present
[x] The email, discord, elements telegram, and twitter fields are present and valid

@bengtlofgren hello, Could you check my pr, please?

Whitespace found in filename. Found filename namada-public-testnet-15/Update 1ce.toml


openapi to zod?

Is there a way to convert the openapi schema back to Zod?

you say take a .json file and turn it into a schema?

Are you asking how to transform existing schema to this plugins .openapi format? That would be tricky.

@navtoj we do not provide a way to generate a zod schema from an openapi definition. What @samchungy suggested seems interesting. I'd also throw in a library that we used prior to migrating to zod + zod-to-openapi for documentation and validation. We used express-openapi-validator - it uses existing openapi definitions and creates a middleware on your express server. However we did have issue, thus we implemented the whole thing here and stuck with zod for validation - mainly because of its Typescript features and great syntax.

I tried using the Json-Schema-to-Zod package mentioned above but it doesn't work in Deno. Seems i'll have to hand-roll a solution.


SSV Native staking

Contracts
Pull Requests to this branch

https://github.com/OriginProtocol/origin-dollar/pull/2060
https://github.com/OriginProtocol/origin-dollar/pull/2066
https://github.com/OriginProtocol/origin-dollar/pull/2072
https://github.com/OriginProtocol/origin-dollar/pull/2073
https://github.com/OriginProtocol/origin-dollar/pull/2074
https://github.com/OriginProtocol/origin-dollar/pull/2076
https://github.com/OriginProtocol/origin-dollar/pull/2081
https://github.com/OriginProtocol/origin-dollar/pull/2082
https://github.com/OriginProtocol/origin-dollar/pull/2083
https://github.com/OriginProtocol/origin-dollar/pull/2084
https://github.com/OriginProtocol/origin-dollar/pull/2085
https://github.com/OriginProtocol/origin-dollar/pull/2087
https://github.com/OriginProtocol/origin-dollar/pull/2088
https://github.com/OriginProtocol/origin-dollar/pull/2091
https://github.com/OriginProtocol/origin-dollar/pull/2092

Related pull requests

https://github.com/OriginProtocol/origin-dollar/pull/2080

Changes

Added new NativeStakingSSVStrategy that takes WETH from the Vault and stakes ETH into SSV validators.
Added FeeAccumulator to receive ETH execution rewards.
Changes BaseHarvester so it can collect WETH and send it straight to the Dripper

Diagrams
NativeStakingSSVStrategy

FeeAccumulator

Processes
Value Flows
The flow of native currency (ETH) and tokens between the wallets and contracts.

Validator Registration and Staking

Validator withdrawals

Validator rewards

Native Staking Admin

Testing
Unit Tests
Unit tests are in contracts/test/strategies/nativeSSVStaking.js
yarn run test

Holesky fork tests
Holesky fork tests are in contracts/test/strategies/nativeSsvStaking.holesky.fork-test.js
yarn run node:hol
yarn run test:hol-fork

Mainnet fork tests
Mainnet fork tests are in contracts/test/strategies/nativeSsvStaking.fork-test.js
yarn run node
yarn run test:fork

Holesky end-to-end testing using Hardhat tasks
export DEBUG=origin*

# uncomment DEFENDER_API_KEY and DEFENDER_API_SECRET in the .env file
npx hardhat depositWETH --amount 64 --network holesky
npx hardhat mint --asset WETH --amount 64 --network holesky

# Uncomment DEPLOYER_PK in .env file to private key of 0x1b94CA50D3Ad9f8368851F8526132272d1a5028C
npx hardhat depositToStrategy --assets WETH --amounts 64 --strategy NativeStakingSSVStrategyProxy --network holesky

# uncomment DEFENDER_API_KEY and DEFENDER_API_SECRET in the .env file
npx hardhat resetStakeETHTally --network holesky
npx hardhat registerValidators --days 2 --network holesky

# give it 10 minutes before running
npx hardhat stakeValidators --network holesky

# Claim SSV from faucet https://faucet.ssv.network/
# transfer claimed SSV to Native Staking Strategy proxy
# Uncomment DEPLOYER_PK in .env file to private key of 0x1b94CA50D3Ad9f8368851F8526132272d1a5028C
npx hardhat depositSSV --amount 2 --operatorids 563,564,565,566 --network holesky

# uncomment DEFENDER_API_KEY and DEFENDER_API_SECRET in the .env file
npx hardhat exitValidator --operatorids 563,564,565,566 --pubkey 0x95883A44A9629017441D318E51D80F89B5A13E98CAC6EC2481167319753C14F4C9C694462B057D98B7AD1CEACA9441E3 --network holesky

npx hardhat removeValidator --operatorids 563,564,565,566 --pubkey 0x95883A44A9629017441D318E51D80F89B5A13E98CAC6EC2481167319753C14F4C9C694462B057D98B7AD1CEACA9441E3 --network holesky

npx hardhat doAccounting --network holesky

# transfer some ETH to the FeeAccumulator 0x65a289f4BF934c964C942eFF6E6F83b6481BE550
npx hardhat harvest --strategy NativeStakingSSVStrategyProxy --network holesky

# Uncomment DEPLOYER_PK in .env file to private key of 0x1b94CA50D3Ad9f8368851F8526132272d1a5028C
npx hardhat pauseStaking --network holesky

npx hardhat fixAccounting --network holesky

Deployment
The deploy script for the Native Staking Strategy is contracts/deploy/mainnet/097_native_ssv_staking.js.
Operations
Hardhat tasks

Posting my mostly complete review
Code Review: Native Staking
Requirements
OETH should be able to deposit and withdraw ETH from SSV controlled native staking as a yield earning strategy. It is planned that this will be the primary yield for OETH and that OETH will become an LST.
This is a difficult strategy to build because validators operate cross chain, and the execution chain only has very poor information about the actual status of validators. What information can be gathered far to gas intensive to be effective.
Because Ethereum has horrible support for LSTs, there are essentially two approaches to building an LST. The first is YOLO trust of an address that updates the execution layer about what is going on the validator layer. The second is building a massive offchain oracle infrastructure and operating it.
We've chosen a third route:

If everything goes smoothly, the accounting operates off onchain data.
A limited-trust address interacts with P2P/SSV for validator provisioning. The amount of damage this address can do is limited to a maximum amount.
In the event of things getting out of sync enough to cause accounting errors, the strategist can make limited corrections at a certain rate over time.
In the event of things being very out of sync, governance can act to correct.

The overall concept is contract enforced damage mitigation.
We want to transition to fully onchain accounting once that is possible from future Ethereum updates.
Authentication

[x] Never use tx.origin
[x] Every external/public function is supposed to be externally accessible
[x] Every external/public function has the correct authentication

Ethereum
_Unlike almost all of contracts, we do send and receive ETH from this contract. However, we only send ETH to two trusted addresss.
🟠 There are three methods to prevent reentrancy: only calling trusted contracts, reentrancy guards, and writing functions in order such that reentrancy is not an issue. Usually we try to hit all three. This code only does the first.

[ ] Contract does not send or receive Ethereum.
[ ] Contract has no payable methods.
[x] Contract is not vulnerable to being sent self destruct ETH

Cryptographic code
The only crypto used is hashing the validator public keys in order to look them up in a mapping. I don't think that can be abused to get different public keys to map to the same hash.
Otherwise the contract passes through signature data, but does not use it itself.
Gas problems

[x] Contracts with for loops must have either:

[ ] A way to remove items
[ ] Can be upgraded to get unstuck
[x] Size can only controlled by admins

[x] Contracts with for loops must not allow end users to add unlimited items to a loop that is used by others or admins.

Black magic

[x] Does not contain selfdestruct
[x] Does not use delegatecall outside of proxying.
[x] Address.isContract should be treated as if could return anything at any time, because that's reality.

Overflow

[x] Code is solidity version >= 0.8.0
[x] All for loops use uint256

Proxy

[x] No storage variable initialized at definition when contract used as a proxy implementation.

Events
🟣 Deposit SSV does not emit directly, but that's okay. We could monitor the SSV contract for this if we wished.
Rounding

[x] Contract rounds in the protocols favor
[x] Contract does not have bugs from loosing rounding precision
[x] Code correctly multiplies before division
[ ] Contract does not have bugs from zero or near zero amounts

Dependencies

[x] Review any new contract dependencies thoroughly (e.g. OpenZeppelin imports) when new dependencies are added or version of dependencies changes.
[x] If OpenZeppelin ACL roles are use review & enumerate all of them.
[x] Check OpenZeppelin security vulnerabilities and see if any apply to current PR considering the version of OpenZeppelin contract used.

External calls

[x] Contract addresses passed in are validated

[x] 🔴 No validation in withdraw (made inline note, fixed).

[x] No unsafe external calls
[ ] Reentrancy guards on all state changing functions

[ ] Still doesn't protect against external contracts changing the state of the world if they are called.

[x] No malicious behaviors
[x] Low level call() must require success.
[x] No slippage attacks (we need to validate expected tokens received)
[x] Oracles, one of:

[x] It's complicated
[x] No oracles
[ ] Oracles can't be bent
[ ] If oracle can be bent, it won't hurt us.

[x] Do not call balanceOf for external contracts to determine what they will do when they use internal accounting

Tests
not checked yet

[ ] Each publicly callable method has a test
[ ] Each logical branch has a test
[ ] Each require() has a test
[ ] Edge conditions are tested
[ ] If tests interact with AMM make sure enough edge cases (pool tilts) are tested. Ideally with fuzzing.

Deploy

[x] Deployer permissions are removed after deploy

Strategy Specific
Strategy checks

[x] Check balance cannot be manipulated up AND down by an attacker
[x] No read only reentrancy on downstream protocols during checkBalance
[x] All reward tokens are collected
[x] The harvester can sell all reward tokens
[x] No funds are left in the contract that should not be as a result of depositing or withdrawing
[x] All funds can be recovered from the strategy by some combination of depositAll, withdraw, or withdrawAll()

[x] Way more complicated, but we can get funds out.

[x] WithdrawAll() can always withdraw an amount equal to or larger than checkBalances report, even in spite of attacker manipulation.
[x] WithdrawAll() cannot be MEV'd
[ ] Strategist cannot steal funds

[x] Limited amounts though

Accounting Invariants

[x] depWeth should go up whenever WETH is added via the vault
[x] depWeth should go down whenever WETH is staked
[x] depWeth should go down whenever WETH is manually withdrawn to the vault
[ ] depWETH should never be greater than the standing WETH balance (not checked yet)
[x] depWETH should never be less than the standing WETH balance unless someone donates
[x] ETH only arrives from off chain + mev rewards (outside donations)
[x] Sitting ETH is only ever sent to WETH
[x] All funds sent upwards to the vault and harvester are done in WETH
[x] ActVal * 32 should always be less than the sum of WETH sent to the contract

[x] not counting manual adjustments

[x] ETH balance at rest should always be greater than or equal to consensus rewards

[x] manual adjustments can set this below, but it will revert at the end of the manual set when it calls do accounting

[x] After a successful doAccounting, eth balance should equal consensus rewards

[x] unless accounting fails and the contract is paused

What happens if:

We exit all validators? - should be fairly sane. No more rewards than we would normally get.
Lots of validators get slashed? - accounting will undercount how many validators have withdrawn. We must pause() the strategy accounting when this happens on the beacon chain, before the slashed validators eventually get withdrawn.
All validators go down for a week - accounting thinks we have an extra validator, and would need manual adjustment.
We miss a rewards beat - we blow the fuse and stop updating.
gas prices spike for a week - no real effect
Validator max sizes go up, the number of global active validators goes down by 20x, resulting in a 20x withdraw cycle  speedup - okay if we call do accounting 20x more often. Otherwise we need to migrate to larger stakes and/or switch to using the better accounting which is probably gas possible now.

Logic
Are there bugs in the logic?
Still not specifically reviewed yet

[ ] Correct usage of global & local variables. -> they might differentiate only by an underscore that can be overlooked (e.g. address vs _address).

Deployment Considerations

[ ] SSV strategy proxy must be deployed by the relayer account
[ ] Before non testing amounts of funds are in, we must have monitoring for slashings and missed validations

Internal State
See above in "Accounting Invariants" section
Attack
This code is inherently dangerous. We focus on damage mitigation rather than the usual perfection.
First, there is no way for a smart contract to ensure that a staking deposit will end up with correct withdrawal address in the beacon chain. We are essentially shipping out gold bars via packing labels created on an EOA.
To mitigate this risk, we limit how many deposits can be made before requiring a 5 of 8 multisig to verify that the previous deposits were correctly made. This caps our max losses at about two million per strategy contract.
We could reduce the deposit risk by a magnitude and remove all humans from the loop by doing the following:

Deposit 1 ETH into a validator, increment, mark validator as pending
When this validator is active, post back to the contract with a proof that the validator withdraw address is recorded correctly. This deposit 31 ETH and marks the validator as registered.

By keeping a limited number of deposits in the pending state, we reduce our risk. 1 ETH instead of 32 ETH to test out a validator  deposit is also a fairly big win.
Secondly, it would take approximately 50% of all yield to be spent in gas to be mostly sure about what each validator is doin on the beacon chain. Instead we take a guess based on the amount of funds we see coming in. This can be wrong and need manual correction. We also throttle the amount of manual correction to avoid malicious actions.
Outside the scope of this contract, failures or vulnerabilities with SSV or P2P could result in mass slashings of our validators.
Withdrawing funds is also ultimately outside the contract's control. We can ask the SSV contract to emit an event which hopefully is picked up. There are other off-chain ways to kick off withdraws.
SSV rewards are also outside our contracts control, since they go only to the EOA that deployed the contracts.
ETH rewards are not distinguished from withdraws, both go to the same place, via the same mechanism. We use heuristics to discriminate between them.
Our strategy contracts have four jobs:

Deposit money
Withdraw money
Collect yield + rewards
Know the balance

Four out of four of these cannot be guaranteed by the code.
Monitoring is critical here.
Other code:
We might be in trouble if the SSV deposit made callbacks to somewhere that an attacker could hook into. A quick glance at the SSV code shows that not only is it dynamic, but extremely dynamic in its dynamicness.
🟠 Let's add nonReentrant to stakeETH, doAccounting and manuallyFixAccounting so something weird happening with SSV can't mess anything up on our side.
Flavor
The strategy is broken into three different files in an inheritance hierarchy. In general I'm not a fan of this, as it makes it more difficult to see the big picture, but the cutpoints here are very good, and each has clear ownership of difference concerns, and small interaction with other layers. Works here.
Otherwise, the flavor is now good.


Handling :tmi.twitch.tv NOTICE * :Login unsuccessful

So twitch is having another stroke and 90% of the connection attempts receive this IRC message.
But TwitchIO (latest master commit) fails to correctly handle it and the Client.run() method I'm using never returns or raises.
Instead we get this from asyncio:
ERROR:asyncio:Exception in callback WSConnection._task_callback(':tmi.twitch....h.tv/commands')(<Task cancell...ocket.py:341>>)
handle: <Handle WSConnection._task_callback(':tmi.twitch....h.tv/commands')(<Task cancell...ocket.py:341>>)>
Traceback (most recent call last):
  File ".../websocket.py", line 341, in _process_data
    async def _process_data(self, data: str):
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File ".../websocket.py", line 198, in _task_callback
    exc = task.exception()
asyncio.exceptions.CancelledError
ERROR:asyncio:Exception in callback WSConnection._task_callback(':tmi.twitch.... unsuccessful')(<Task cancell...ocket.py:341>>)
handle: <Handle WSConnection._task_callback(':tmi.twitch.... unsuccessful')(<Task cancell...ocket.py:341>>)>
Traceback (most recent call last):
  File ".../websocket.py", line 344, in _process_data
    return await self._close()
  File ".../websocket.py", line 606, in _close
    await self._websocket.close()
  File ".../lib/python3.10/site-packages/aiohttp/client_ws.py", line 172, in close
    await self._waiting
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File ".../websocket.py", line 198, in _task_callback
    exc = task.exception()
asyncio.exceptions.CancelledError

Notices are handled in master by dispatching to the event.
Check for this message and then perform whatever action you wish to do.
E.g. stop the bot booting up as you must have an invalid token.
Assuming this is start up since you mention Client.run() as well as not being a commands Bot.
If this during runtime after RECONNECT then you haven't refreshed your token.

token is valid since it passes the HTTP validate test each time and also connects correctly sometimes (~ 10% of the attempts).
Yes, this at startup, so I have to Ctrl+C the app and restart each time this happens.

This only happens when Twitch itself is having server issues, so you have to try over and over and eventually it'll work. 90% is just my guesstimate.
I can reproduce this issue with a desktop IRC client as well: After several reconnects it'll let me it.

Okay that makes more sense, thanks.
Finding a window to test a potential fix for this on would be difficult.

Wouldn't it be sufficient to just feed the app :tmi.twitch.tv NOTICE * :Login unsuccessful as the first data line to trigger that special handling?
I understand that we can't fix all connection issues, but maybe it's possible to fix this asyncio Error and raise something inside Client/Bot? This would correctly terminate .run(), enabling the users to handle this login failure in some way (either accept it or re-run .run()).

In this case it doesn't make sense to terminate the bot and restart. If the token has passed validation it makes more sense to allow a backoff to handle it until it can successfully resume.

I have the same issue!

I believe this could be related to the Summer Games Showcase event that started on June 8 and the Twitch services would have been overloaded causing connection issues.
This hasn't really ever been an issue, as far as I know, up until this event, otherwise we would have probably encountered this more regularly.
We'll look into potentially adding an exponential backoff reconnect.

still get this sometimes


vagrant up fails

Error message:
default: chown: invalid user: ‘vagrant’
Work around:
vagrant provision is successful, after manually creating a vagrant user in the VM.
Details:
$ git show | head -3
commit 99a3b9c91d903596394382e91a2544cf2a95d092
Author: Thijs Schreijer<EMAIL_ADDRESS>Date:   Wed Oct 3 11:25:40 2018 +0200
$ vagrant up
==> vagrant: A new version of Vagrant is available: 2.1.5 (installed version: 2.1.4)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html
/Users/xxxxx/GIT/kong-vagrant/Vagrantfile:4: warning: already initialized constant VAGRANTFILE_API_VERSION
/Users/xxxxx/GIT/kong-vagrant/Vagrantfile:4: warning: previous definition of VAGRANTFILE_API_VERSION was here
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/xenial64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/xenial64' is up to date...
==> default: A newer version of the box 'ubuntu/xenial64' for provider 'virtualbox' is
==> default: available! You currently have version '20171221.0.0'. The latest is version
==> default: '20181005.0.0'. Run vagrant box update to update.
==> default: Setting the name of the VM: vagrant_kong
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 8000 (guest) => 8000 (host) (adapter 1)
default: 8001 (guest) => 8001 (host) (adapter 1)
default: 8443 (guest) => 8443 (host) (adapter 1)
default: 8444 (guest) => 8444 (host) (adapter 1)
default: 5432 (guest) => 65432 (host) (adapter 1)
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: <IP_ADDRESS>:2222
default: SSH username: ubuntu
default: SSH auth method: password
default: Warning: Connection reset. Retrying...
default: Warning: Authentication failure. Retrying...
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 5.0.40
default: VirtualBox Version: 5.2
==> default: Mounting shared folders...
default: /vagrant => /Users/xxxxx/GIT/kong-vagrant
==> default: Running provisioner: shell...
default: Running: /var/folders/jr/zp6jz87n74vcm6k2ds4gl6lw0000gn/T/vagrant-shell20181010-21061-ga20sq.sh
default: *************************************************************************
root:x:0:0:root:/root:/bin/bash
default: Installing Kong version: 0.14.1
default: *************************************************************************
default: chown: invalid user: ‘vagrant’
The SSH command responded with a non-zero exit status. Vagrant
root:*:17521:0:99999:7:::
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

Never mind.  Looks like it was fixed the in vagrant image and upgrading the box fixed it.
So in short, please use a vagrant box that is newer than v20180112.0.0.
reference:
https://bugs.launchpad.net/cloud-images/+bug/1569237/comments/111


remove default location in tag value - cloud-run-v2 tags.tf

Fixes: #2754
The google_tags_location_tag_binding resource has a default to europe-west1 when it should use the same region/location as the cloud-run module is configured for
Changed to use the var.region instead of europe-west1

Checklist

I applicable, I acknowledge that I have:

[x] Read the contributing guide
[x] Ran terraform fmt on all modified files
[ ] Regenerated the relevant README.md files using tools/tfdoc.py
[ ] Made sure all relevant tests pass

Signed CLA, apologies 😄

Thanks for the fix! I'm still seeing the CLA as unsigned. Could you please double-check that it's been signed?

Just re-ran through the prompts, it now shows a date signed instead of blank, so I will assume its now properly signed.


[SPARK-48557][SQL] Support scalar subquery with group-by on column equal to constant

What changes were proposed in this pull request?
We can enable scalar subqueries that have group by a if there's a predicate a = 1, because these predicates guarantee the group-by produces at most one row. (This builds on top of https://github.com/apache/spark/pull/46839 and enables shapes there were unsupported prior to that PR as well.)
Why are the changes needed?
Support valid subquery shapes.
Does this PR introduce any user-facing change?
Yes, support subquery shapes.
How was this patch tested?
Unit tests
Was this patch authored or co-authored using generative AI tooling?
No

thanks, merging to master!


possibility to create htu with existing i2c object

Adds the possibility to create a htu object with an existing i2c object, so you can create it before and use it afterwards without knowing which devices created the i2c object.
I think this should be possible.
Many libraries just expect an i2c object, so now it is up to the user.
Also the temperature and humidity are functions now. Makes more sense to me especially as I was converting the library to be asynchronous (separate file).
What do you think?
Thanks for your work,

Btw. im sorry that i forgot to thank you for the very first PR ;P

Was using your library in my esp8266 smart home system and modified it for asyncio and wanted to share it back to you. Was my first pull request, so thanks for your detailed answers and especially for the library!


Tox file improvement

Users running tests with Python 2.6 could have problems related to twisted that ends into ImportError: Twisted requires Python 2.7 or later..
The PR is solving this issue limiting the twisted version to 15.5 in case of Python 2.6.

Coverage remained the same at 99.57% when pulling a4782f5c6270c3552981a727e3a97ac9814d8916 on macisamuele:twisted-version-limit-on-py2.6 into 9f2a80e8864a1cb24b60a1a742592e2f6f2755be on striglia:master.

🛳


Adds github actions for testing

@antw can you review these changes and merge the branch?

Reference

I asked Gavin for the Django part, thanks for the quick look