Skip to content
This repository was archived by the owner on Apr 2, 2019. It is now read-only.

Commit fb71647

Browse files
committed
Fixed bugs
1 parent dbdb594 commit fb71647

File tree

2 files changed

+27
-22
lines changed

2 files changed

+27
-22
lines changed

client.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import json
66
import time
77
import pprint
8+
import sys
89

910
BUFFER_SIZE = 1024
1011

@@ -51,6 +52,8 @@ def put(self, key, value):
5152
try:
5253
socket.connect(address)
5354
except:
55+
socket.close()
56+
socket = get_socket()
5457
secondary_address = self.__get_server(key, dtype='secondary')
5558
socket.connect(secondary_address)
5659

@@ -72,7 +75,10 @@ def get(self, key):
7275
try:
7376
socket.connect(address)
7477
except:
78+
socket.close()
79+
socket = get_socket()
7580
secondary_address = self.__get_server(key, dtype='secondary')
81+
print secondary_address
7682
socket.connect(secondary_address)
7783

7884
request = { 'op' : 'GET',
@@ -162,12 +168,13 @@ def get(self, key):
162168

163169
}
164170

171+
if sys.argv[1] in ['--put', '-p']:
172+
for k, v in states.items():
173+
print(client.put(k, v))
165174

166-
for k, v in states.items():
167-
print(client.put(k, v))
168-
169-
print(client.get('SD'))
170-
print(client.get('AR'))
171-
print(client.get('MD'))
175+
elif sys.argv[1] in ['--get', '-g']:
176+
#print(client.get('SD'))
177+
print(client.get('AR'))
178+
#print(client.get('MD'))
172179

173180

server.py

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def __init__(self, server_id, server_address=('', 0), buf_size=None):
7878
socket.gethostname()
7979
), \
8080
self.socket.getsockname()[1]
81-
self.name = self.IP + ":" + str(self.port)
81+
self.name = self.IP + ":" + str(self.port) + ' (' + str(os.getpid()) + ')'
8282

8383
self.zookeeper_handler.set_data('/cluster/servers/' + ':'.join(list(map(str, self.server_address))) )
8484

@@ -97,11 +97,11 @@ def __init__(self, server_id, server_address=('', 0), buf_size=None):
9797
}
9898
self.zookeeper_handler.set_node('/cluster/meta', data=data)
9999
self.is_master = True
100-
print("{server}: Setting status to INITIALIZING".format(server=self.name))
101100

102101
if self.is_master:
103102
print("{server}: Assigned role of MASTER".format(server=self.name))
104103
self.name = '[MASTER] ' + self.name
104+
print("{server}: Set status to INITIALIZING".format(server=self.name))
105105
self.slave_list = []
106106

107107
Server.__master_routine(self)
@@ -121,7 +121,11 @@ def __init__(self, server_id, server_address=('', 0), buf_size=None):
121121

122122
def __del__(self):
123123
print("{server}: Shutting down, thanks!".format(server=self.name))
124+
125+
self.keep_alive = False
124126
self.socket.close()
127+
self.service_task.join(1)
128+
125129

126130
# -------------------------------------------------------------------------------------
127131

@@ -151,7 +155,7 @@ def __master_routine(self):
151155
pass
152156
self.accept_reg = False
153157

154-
print("{server}: Setting status to READY".format(server=self.name))
158+
print("{server}: Set status to READY".format(server=self.name))
155159

156160
self.zookeeper_handler.set_data('/cluster/meta', data=self.zookeeper_handler.get('/cluster/meta')['data'].update({'status' : 'ready'}))
157161

@@ -325,24 +329,26 @@ def backup_data(entries, server_address, dtype):
325329

326330
elif op_code == "put":
327331
""" Format: { 'op' : ..., 'key' : ..., 'value' : ... } """
328-
print("{server}: PUT from {client}".format(server=self.name, client=client_address))
329332
try:
330333
# Assume one of the cluster servers sent this request
331334
if data.has_key('type'):
335+
print("{server}: bkupPUT from {client}".format(server=self.name, client=client_address))
336+
332337
if data['type'] == 'secondary': # data is meant to be backup
333338
self.data_dict['secondary'].update(data['data'])
334339
elif data['type'] == 'primary': # happens if this server was down earlier, the secondary server is now sending this data
335340
self.data_dict['primary'].update(data['data'])
336341

337342
else:
343+
print("{server}: PUT from {client}".format(server=self.name, client=client_address))
338344
entry = copy.copy(data['data'])
339345
hashed_key = get_hash_partition(data['data'].popitem()[0], self.cluster_size)
340346

341347
if hashed_key == self.primary_key:
342348
self.data_dict['primary'].update(entry) # update it in the primary key list
343349
self.backup_data_dict['secondary'].update(entry) # mark it for backup later
344350
elif hashed_key == self.secondary_key:
345-
print("{server}: Secondary server servicing PUT request".format(server=self.name, client=client_address))
351+
print("{server}: Secondary server for this key".format(server=self.name, client=client_address))
346352
self.data_dict['secondary'].update(entry)
347353
self.backup_data_dict['primary'].update(entry)
348354
else:
@@ -361,17 +367,18 @@ def backup_data(entries, server_address, dtype):
361367
client_socket.sendall(json.dumps(response).encode('utf-8'))
362368

363369
elif op_code == "get":
364-
print self.data_dict
365370
print("{server}: GET from {client}".format(server=self.name, client=client_address))
371+
pprint.pprint(self.data_dict)
366372
try:
367373
response = { 'status' : self.__SUCCESS,
368374
'data' : ''
369375
}
370-
print data['key']
376+
pprint.pprint(data)
371377
if self.data_dict['primary'].has_key(data['key']):
372378
response['data'] = self.data_dict['primary'][data['key']]
373379

374380
elif self.data_dict['secondary'].has_key(data['key']):
381+
print("{server}: Secondary server for this key".format(server=self.name, client=client_address))
375382
response['data'] = self.data_dict['secondary'][data['key']]
376383

377384
else:
@@ -391,13 +398,4 @@ def backup_data(entries, server_address, dtype):
391398

392399
backup_service_thread.join(0)
393400

394-
# -------------------------------------------------------------------------------------
395-
396-
def stop(self):
397-
if self.keep_alive:
398-
self.keep_alive = False
399-
400-
self.socket.close()
401-
self.service_task.join(1)
402-
403401
""" ------------------------------------------------------------------------------------------- """

0 commit comments

Comments
 (0)