@@ -90,7 +90,8 @@ sparkR.init <- function(
90
90
sparkExecutorEnv = list (),
91
91
sparkJars = " " ,
92
92
sparkRLibDir = " " ,
93
- sparkRBackendPort = 12345 ) {
93
+ sparkRBackendPort = 12345 ,
94
+ sparkRRetryCount = 6 ) {
94
95
95
96
if (exists(" .sparkRjsc" , envir = .sparkREnv )) {
96
97
cat(" Re-using existing Spark Context. Please stop SparkR with sparkR.stop() or restart R to create a new Spark Context\n " )
@@ -111,18 +112,28 @@ sparkR.init <- function(
111
112
args = as.character(sparkRBackendPort ),
112
113
javaOpts = paste(" -Xmx" , sparkMem , sep = " " ))
113
114
114
- cat(" Waiting JVM bring up ...\n " )
115
- while (TRUE ) {
115
+ .sparkREnv $ sparkRBackendPort <- sparkRBackendPort
116
+ cat(" Waiting for JVM to come up...\n " )
117
+ tries <- 0
118
+ while (tries < sparkRRetryCount ) {
116
119
if (! connExists(.sparkREnv )) {
117
- Sys.sleep(1 )
118
- cat(" ." )
119
- connectBackend(" localhost" , sparkRBackendPort ) # Connect to it
120
+ Sys.sleep(2 ^ tries )
121
+ tryCatch({
122
+ connectBackend(" localhost" , .sparkREnv $ sparkRBackendPort )
123
+ }, error = function (err ) {
124
+ cat(" Error in Connection, retrying...\n " )
125
+ }, warning = function (war ) {
126
+ cat(" No Connection Found, retrying...\n " )
127
+ })
128
+ tries <- tries + 1
120
129
} else {
121
- cat(" ok.\n " )
130
+ cat(" Connect ok.\n " )
122
131
break
123
132
}
124
133
}
125
- .sparkREnv $ sparkRBackendPort <- sparkRBackendPort
134
+ if (tries == sparkRRetryCount ) {
135
+ stop(sprintf(" Failed to connect JVM after %d tries.\n " , sparkRRetryCount ))
136
+ }
126
137
127
138
if (nchar(sparkHome ) != 0 ) {
128
139
sparkHome <- normalizePath(sparkHome )
0 commit comments