Retry if plasma client fails to connect to plasma store.

This commit is contained in:
Robert Nishihara
2016-08-16 17:52:18 -07:00
parent 1b66ac54ba
commit b6b17f3ac3
2 changed files with 13 additions and 4 deletions
+13 -2
View File
@@ -10,7 +10,7 @@
#include <sys/un.h>
#include <strings.h>
#include <netinet/in.h>
#include <netdb.h>
#include <netdb.h>
#include "plasma.h"
#include "fling.h"
@@ -81,7 +81,18 @@ int plasma_store_connect(const char* socket_name) {
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
strncpy(addr.sun_path, socket_name, sizeof(addr.sun_path)-1);
if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) {
// Try to connect to the Plasma store. If unsuccessful, retry several times.
int connected_successfully = 0;
for (int num_attempts = 0; num_attempts < 50; ++num_attempts) {
if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == 0) {
connected_successfully = 1;
break;
}
// Sleep for 100 milliseconds.
usleep(100000);
}
// If we could not connect to the Plasma store, exit.
if (!connected_successfully) {
LOG_ERR("could not connect to store %s", socket_name);
exit(-1);
}
-2
View File
@@ -1,7 +1,6 @@
import os
import subprocess
import sys
import time
import unittest
import plasma
@@ -12,7 +11,6 @@ class TestPlasmaAPI(unittest.TestCase):
# Start Plasma.
plasma_store_executable = os.path.join(os.path.abspath(os.path.dirname(__file__)), "../build/plasma_store")
self.p = subprocess.Popen([plasma_store_executable, "-s", "/tmp/store"])
time.sleep(0.1)
# Connect to Plasma.
self.plasma_client = plasma.PlasmaClient("/tmp/store")