Closed MikeMcC399 closed 2 years ago
@MikeMcC399 Thanks for report: Internal Tracking ID: EXPOSUREAPP-9077 Best, DS
According to https://www.coronawarn.app/en/faq/results/#limit_reached the "Limit already reached" message should clear after waiting 24 hours. This is however not the case in the situation where the device's clock has been set to a future date, then corrected back to the current date, followed by being left alone to advance to new correct dates as time naturally elapses.
Notably, in the Android Settings > Google > COVID-19 Exposure Notifications > three-dot menu > Exposure checks, as the date advances into future dates and continues to display "Limit already reached" errors, there are no new exposure checks logged. So it seems that exposure checks are being attempted, failing and not being logged. This may need attention from Google support. The first step however would be to get attention from the CWA Android development team.
@MikeMcC399 Thanks for your comment, forwarded.
I have left the device running and the current date has now caught up with the incorrectly set future day. I expected that everything would work normally today, but that is not the case. First I got the "Limit already reached" message and then CWA looked like it was stuck at "Check is running", however after about 10 minutes, the message disappeared.
The risk tile is showing Updated: Today hh:mm, with the timestamp of the original check done 2 days ago, when the clock was set to the future. There are no new entries in the Google exposure checks log.
I will check again tomorrow to see if the device has been able to recover on its own.
I have had error reporting running since the beginning of this test and perhaps there will be some useful information which can be harvested from the log.
From examining the error log:
CWA starts producing the 39508 error (FAILED_RATE_LIMITED) after the device's date has been corrected to the current date. If the device is connected to WAN, this will be after approximately 5 hours following the date correction.
2022-05-18T09:07:08.275Z D/SubmissionQuota: No new quota available (now=2022-05-18T09:07:08.274Z, availableAt=2022-05-21T00:00:00.000Z)
2022-05-18T09:07:08.276Z D/SubmissionQuota: Not enough quota: want=1, have=0
2022-05-18T09:07:08.277Z E/DefaultDiagnosisKeyProvider: No key files submitted because not enough quota available.
2022-05-18T09:07:08.284Z D/DefaultDiagnosisKeyProvider: Performing key submission.
2022-05-18T09:07:08.284Z I/DefaultENFVersion: Comparing current ENF client version 18221514000 with 17000000
2022-05-18T09:07:08.284Z I/DefaultDiagnosisKeyProvider: Provide diagnosis keys with DiagnosisKeyFileProvider
2022-05-18T09:07:08.298Z W/DefaultDiagnosisKeyProvider$provideDiagnosisKeys: Key submission failed because 39508:
2022-05-18T09:07:08.301Z D/DownloadDiagnosisKeysTask: Initiate Rollback
2022-05-18T09:07:08.301Z E/DownloadDiagnosisKeysTask: de.rki.coronawarnapp.nearby.modules.diagnosiskeyprovider.QuotaExceededException: Quota limit exceeded.
CWA begins risk calculation again after the device clock has progressed until it has reached the day after the previously set future date in UTC terms i.e. 01:00 CET or 02:00 CEST of the following day.
2022-05-21T01:06:45.064Z D/SubmissionQuota: Consuming quota: old=6, new=5
2022-05-21T01:06:45.063Z I/SubmissionQuota: Quota reset: oldQuota=0, lastReset=2022-05-20T04:06:06.996Z -> newQuota=6, thisReset=2022-05-21T01:06:45.053Z
2022-05-21T01:06:45.074Z I/DefaultENFVersion: Comparing current ENF client version 18221514000 with 17000000
2022-05-21T01:06:45.075Z I/DefaultDiagnosisKeyProvider: Provide diagnosis keys with DiagnosisKeyFileProvider
2022-05-21T01:06:45.077Z D/DefaultDiagnosisKeyProvider: Performing key submission.
2022-05-21T01:06:46.118Z D/DownloadDiagnosisKeysTask: Diagnosis Keys provided (success=true)
2022-05-21T01:06:46.123Z I/DownloadDiagnosisKeysTask: Finished (isCanceled=false).
A suggestion to improve the error handling in the app would be to output a different message if the risk tile is showing that the last update is a date in the future. This can only happen if the device has undergone time travel which probably means that the Random IDs stored may contain corrupted time-stamps and should not be used any more.
The app should give better instructions in this situation and I currently think that the only clean recovery is to uninstall and re-install the app.
I have just checked the linked Jira issue.
Jira Ticket is flagged as:
Resolution: Wont Fix
Status: Obsolete
Developer comment:
issue cant be reproduced with R 2.12.
@MikeMcC399 Is the problem still happening with the latest version? Normally I would close this issue since the related Jira issue is already closed in November 2021.
I would need to create a fresh one with new information.
@svengabr
Developer comment:
issue cant be reproduced with R 2.12.
Is the problem still happening with the latest version? Normally I would close this >issue since the related Jira issue is already closed in November 2021.
I would need to create a fresh one with new information.
Release 2.12 was from October 2021 (see https://www.coronawarn.app/en/blog/2021-10-19-cwa-version-2-12).
I wrote the above repro steps based on Release 2.22.1 from April 2022 (https://www.coronawarn.app/en/blog/2022-04-19-cwa-2-21/) which is more recent compared to when the developers looked at the issue 8 months ago.
I don't think that there have been any changes made to the app between 2.22.1 and 2.23.2 in this area since I last tested, so I assume that the problem still exists.
Unfortunately checking this once again on the current version 2.23.2 would require significant effort due to the nature of the issue (see repro steps). I suggest to open a new Jira issue and for the developers to look at the available information. The extracts from the logs should be a good way to pin-point the root cause and find a fix.
If you have the developers engaged after looking at the existing information then I would be willing to repeat the tests.
@svengabr I have re-tested on the current CWA Android 2.23.2. As expected, the problem still occurs.
Yesterday the message "Limit already reached ... Please check your risk status again tomorrow" was output. Today the same message appears.
The assumption that waiting for a new day clears the error status is incorrect.
The app needs to trap the condition where the last update appears to be a date in the future. It should probably advise instead to check the date setting of the device. If the device is currently set to the correct date, then the app needs to be uninstalled and reinstalled in order to clear Random IDs which have been stored with corrupt date stamps.
@MikeMcC399 thank you a lot! I will open a new Jira Issue
@MikeMcC399 I have re-used the existing issue
@MikeMcC399 I'm trying to reproduce this issue ,but I'm experiencing different behaviour.
1- Set device time into the future. 2- Install CWA 3- I saw: | Time warning message | Exposure check has not been done |
---|---|---|
4- Correct device time , lets exposure check to run again
1- Install CWA on device with right time 2- Travel to the future 3- I see the time warning message and risk status failed
I tried this on two different devices one has the whitelisted gmail account 1_000_000 time quota per day and normal gmail account 6 times quota per day, In both devices when time was correct only one check that been done according to Google settings
are you still able to reproduce this issue ?
@mtwalli
This issue was reported for Samsung Galaxy A52 5G (SM-A526B/DS) with Android 12 and CWA Android 2.23.2.
Your screenshots show SM-G950F, which looks like Samsung Galaxy S8. Is that correct? Are you testing with a physical device? You didn't say which Android version or app version that you are testing with. Perhaps you were using Android 8?
I tried with Samsung Galaxy A5 (2017) SM-A520F with Android 8.0.0 and CWA Android 2.25.0 and I confirm that I see the same error message as you see "Exposure Check Not Possible" / "The time set on your device does not match the current time. As a result, your risk cannot be checked right now. Please set the correct time in your device settings."
The error message "Exposure Check Not Possible" / "The time set on your device does not match the current time. As a result, your risk cannot be checked right now. Please set the correct time in your device settings." does not appear on Android 11 or 12. Would you expect it to be shown on these Android versions?
Perhaps you could repeat your tests with Android 11 or 12?
@mtwalli
@MikeMcC399
Your screenshots show SM-G950F, which looks like Samsung Galaxy S8. Is that correct? Are you testing with a physical device? You didn't say which Android version or app version that you are testing with. Perhaps you were using Android 8?
Yes, it is a physical device Samsung S8 running Android 9, cwa v2.26.0.2 (not released yet )
Perhaps you could repeat your tests with Android 11 or 12?
Yes it should.
I'm currently looking into it on Android 13 , I did not see the dialog either
@MikeMcC399 I opened a PR linked above to potentially fix these issues, can you verify if it resolves them?
@mtwalli
I opened a PR linked above to potentially fix these issues, can you verify if it resolves them?
Thank you for your efforts to resolve this issue!
If I build and run the branch fix/9077-server-time-parsing using Android Studio I receive the error
Cause: 3 Something went wrong
Your Corona-Warn-App is correctly installed, but the "COVID-19 Exposure Notifications System" is not available on your smartphone's operating system
when I attempt to "Activate Exposure Logging", since the app is not signed and I do not have access to an allowlisted account.
If you could provide me with either:
then I would be happy to test.
@MikeMcC399 Thanks for the feedback, Unfortunately I can't share the whitelisted account publicly. Probably I can provide a signed testing APK with the first RC of 2.27.0
When I originally logged this issue, I saved the log file and I found:
2022-05-18T04:07:02.070Z E/AppConfigServer: Failed to get server time.
2022-05-18T04:07:02.070Z V/AppConfigServer: Time offset was 0ms
2022-05-18T04:07:02.070Z W/AppConfigServer: Server returned max-age=0: no-cache, no-store, max-age=0
E/AppConfigServer: Failed to get server time
.@mtwalli
Probably I can provide a signed testing APK with the first RC of 2.27.0
If you have this available I can test next week,
@mtwalli
Probably I can provide a signed testing APK with the first RC of 2.27.0
If you have this available I can test next week,
can you please send me your email address to mohamed.metwalli@sap.com? I will send you the APK to verify the fix.
@mtwalli
Thank you for sending the test APK of Corona-Warn-App-2.27.0-RC0-deviceForTesters-release.apk
! The test was successful! 👍🏻
On Android 12, with the date 2 days in the future, exposure logging is blocked. When the date is corrected to today's date, exposure logging is immediately successful.
The risk tile does say: "Installed -2 days ago" however this is logical and it is only a cosmetic issue which does not need to be addressed. The resolution would be to uninstall the app and reinstall it with the date set correctly.
Since I have been able to test successfully on an official build, even though it is not a final release build, I will close the issue now.
Avoid duplicates
Technical details
Note: The issue is not reproducible on Android 8.
Describe the bug
App does not stop exposure check taking place when date incorrectly set to future before installation. After correcting the date the app risk tile first shows the error message ""Exposure check failed.". This changes after an hour to a green risk tile. After a further 5 hours have elapsed the error "Limit already reached" error message appears. This error message continues to show, even into following days, until the device's clock has progressed to reach the original future date.
Steps to reproduce the issue
Open the app again the next day. The error message "Limit already reached" still appears.
Expected behavior
Additional information
provideDiagnosisKeys
quota - Six per day (counter resets at 00:00 UTC)Internal Tracking ID: EXPOSUREAPP-9077