ruODK error accessing data - request failed [404]

1. What is the problem? Be very detailed.
I use the ruODK package in R to download data from ODK central. I have done so for a while (locally and using a shiny dashboard in the cloud) without trouble but since last week, I get a 404 error when trying to access the data.

I can still find projects using the project_list() function and the forms using the form_list() function, but an attempt to access the data using odata_submission_get() yields the error.

Since i haven't made changes to the dashboard for a while, I assume that the error is related to the introduction of v1.2 of ODK Central on the server. The specific error message I get in R:

odata_submission_get(download = FALSE)
Request failed [404]. Retrying in 1.6 seconds...
Request failed [404]. Retrying in 2.9 seconds...
Error in response %>% httr::stop_for_status(task = glue::glue("get desired response from server {url} as user "{un}".\n\n", :
Not Found (HTTP 404). Failed to get desired response from server https://[...].getodk.cloud as user "[...]".

Troubleshooting tips:

  • Is the server online at https://[...].getodk.cloud? Is the internet flaky? Retry!
  • Check ruODK::ru_settings() - credentials and defaults correct?
  • Run ru_setup() with working credentials and defaults.
  • Read the vignette("setup", package = "ruODK") how to set up ruODK.
  • If an encrypted form returns HTTP 500: Wrong passphrase?.

2. What app or server are you using and on what device and operating system? Include version numbers.
ODK Central v.1.2 using ODK Cloud. R version 4.1.0 on Windows 10 64x

The ruODK settings are:

Default ODK Central Project ID: 3
Default ODK Central Form ID: sample no language with choice filters
Default ODK Central URL: https://[..].getodk.cloud
Default ODK Central Username: [...]
Default ODK Central Password: run ruODK::get_default_pw() to show
Default ODK Central Passphrase: run ruODK::get_default_pp() to show
Default Time Zone: Europe/Amsterdam
Default ODK Central Version: 1.2
Default HTTP GET retries: 3
Verbose messages: FALSE
Test ODK Central Project ID:
Test ODK Central Form ID:
Test ODK Central Form ID (ZIP tests):
Test ODK Central Form ID (Attachment tests):
Test ODK Central Form ID (Parsing tests):
Test ODK Central Form ID (WKT tests):
Test ODK Central URL:
Test ODK Central Username:
Test ODK Central Password: run ruODK::get_test_pw() to show
Test ODK Central Passphrase: run ruODK::get_test_pp() to show
Test ODK Central Version: 1.2

3. What you have you tried to fix the problem?
I changed the default ODK version to 1.2 in the ruODK settings and set my timezone to Amsterdam, but no dice.

Has anyone experienced a similar problem or know what I can do to fix it? Let me know if I need to share more information. Many thanks in advance.

Hi @CoenLouis, welcome to the ODK community!

ruODK author here, typing on mobile with a newborn in my arm, apologies for typos and brevity. Some thoughts:

odkc_version is just a flag ruODK uses to handle breaking changes in the ODK Central API. Basic OData submission get should work even with v 1.1 or lower.

I'd have to take a look at breaking changes to the OData submission get API endpoint to see what could have broken here.

I've recently added support for filter queries to odata_submission_get. On the odd chance that these could have changed, could you install latest ruODK and test a few filter queries as per function example docs?

I haven't yet got an ODK Central v1.2 test server running, so I can't reproduce the error. I intend to get one set up this month.

Lastly, do all forms 404 now, or just one? Are they published or drafts?

4 Likes

Hi @Florian_May, thanks for your reply and nice to meet you!

I reinstalled ruODK from ropensci/ruODK@main and have now version 0.10.1 running. I assume that is the latest?

I tried to load data from both published and draft forms and all of them yield the same error message. Please note that I get a 504 error now (not sure if i miscopied that yesterday) - the rest of the error message remains the same. I tried a few filters on the data as you suggested but all resulted in the same timeout error.

Would be much appreciated if you find some time to have a look at the issue. In the meantime, I hope you and your bambino are having a great time together. Let me know if I can provide additional information.

Kind regards,
Coen

1 Like

I believe this is a bug in ruODK. I've been able to reproduce it and file it at https://github.com/ropensci/ruODK/issues/126.

@Thalie and @chrissyhroberts have you experienced this issue? Any interest in contributing a fix and some tests?

2 Likes

Thanks Yaw, I have indeed noticed that odata_get_submission() is no longer working with the upgrade of ODK Central v1.2, but I am traveling at the moment and have not found the time at all to run any proper tests / to document the issue as you did on Github.

On a note, an alternative while this is being fixed could be to use the submission_export() function, as it relies on the RESTful API.

1 Like

Thanks @Thalie and Yaw!
I've got access to a v1.2 Central now and have created a few test records. I'll have a look now.

Thanks @Mtyszler for the patch, I was too under-caffeinated to check GH for it and pushed my own, sorry! Very elegant approach to drop all "empty string" query parameters, valid option.
My initial thought was to explicitly handle skip and top, as all other parameters are already handled.

I've pushed ruODK version 0.10.1, which looks like it fixes https://github.com/ropensci/ruODK/issues/126.
I've tested against ODKC v1.2 (thanks Yaw) and ODKC v1.1 (my own test server, for backwards compat).
Now waiting on GitHub Actions to see whether the unit tests are passing (against ODKC v1.1).

@CoenLouis and anyone else with time on their hands: Does latest ruODK@main (v0.10.2) fix the bug for you?

2 Likes

Tks @Florian_May for the quick turn around. Tks @yanokwa for pin-pointing the issue.
@CoenLouis let us know if it work after updating ruODK

@Florian_May : no worries about pushing your own. You took care of the updated docs and all. We just wanted to save you time by proposing a workable solution.

3 Likes

Appreciated as always, and thanks for the quick fix!
I've incorporated your patch now and @ bombed you in the code comment and release notes :wink:
So glad I had to get tyres changed today and got the waiting time as ruODK maintenance window. Aaand it's time for new nappies again...

2 Likes

@Florian_May I've just updated to the latest version of ruODK and ran some tests and it all seems to work perfectly. Thanks a lot for your quick help. Enjoy your time with the kids.

@Mtyszler @yanokwa thanks for helping out in this. Much appreciated!

2 Likes