You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Jacob Wujciak-Jens (Jira)" <ji...@apache.org> on 2022/04/08 12:30:00 UTC

[jira] [Updated] (ARROW-15149) [R] [CI] Ensure that RSPM is responsive when using it

     [ https://issues.apache.org/jira/browse/ARROW-15149?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jacob Wujciak-Jens updated ARROW-15149:
---------------------------------------
    Component/s: Continuous Integration
                 R

> [R] [CI] Ensure that RSPM is responsive when using it
> -----------------------------------------------------
>
>                 Key: ARROW-15149
>                 URL: https://issues.apache.org/jira/browse/ARROW-15149
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: Continuous Integration, R
>            Reporter: Jonathan Keane
>            Priority: Major
>
> This might not be necessary in the long run, but we've had a few days of RSPM being intermittently accessible[1]. We could add a check [when we construct the RSPM url|https://github.com/apache/arrow/blob/master/ci/etc/rprofile] that checks the URL we're using for http response and then sets the url to NULL if it errors. Something like:
> {code}
>   # Check the url from RSPM first
>   .ensure_rspm_works <- function(url) {
>     if (is.null(url)) {
>       return(NULL)
>     }
>     # check for curl, if it doens't exist, return the URL anyway
>     if (system("command -v curl") == 0) {
>       # curl to get the http response
>       code <- tryCatch({
>       system(
>         paste0(
>           'curl -s -o /dev/null -w "%{http_code}" ',
>           paste0(url, "/cran/latest/src/contrib/PACKAGES")
>         ),
>         intern = TRUE
>       )
>       # if this errors, assume the URL works and the error was in curl
>       }, error = function(e) "200")
>       # if the response code is in the error range, then return null.
>       if (as.numeric(code) >= 400) {
>         return(NULL)
>       }
>     }
>     url
>   }
> {code}
> and then wrap {{.pick_cran()}} with this function at https://github.com/apache/arrow/blob/6e20c6b9d7131af41f2e979529d06e507c731373/ci/etc/rprofile#L46
> [1] Here's one PR where that happened for a few days: https://github.com/apache/arrow/pull/11965



--
This message was sent by Atlassian Jira
(v8.20.1#820001)