Example #1
0
def ServeRequest(request,masters,keylocation):
	''' Process the request and return result '''


    	try:
		req = json.loads(request)
		requestid = req['id']
		masterNode = req['Master']
                userid = req['userid']
                action = req['request']
		data = req['data']
		
		#call apis here	
		logger.debug('Processing {0} request from master {1},userid= {2},data={3}'.format(requestid,masterNode,userid,data))
		api=MugenDBAPI()
		if action == "put":
		    val = api.put(data,keylocation,userid)
		elif action == "get":
		    val=api.get(data,keylocation,userid)
		elif action == "update":
		    val=api.update(data,keylocation,userid)
		elif action == "delete":
		    val=api.delete(data,keylocation,userid)
	
		logger.debug('Processing {0} request from master {1},userid= {2},data={3},return={4}'.format(requestid,masterNode,userid,data,val))
		sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
		host,port = masters[masterNode].partition(":")[::2]
		print host,port,val
		res = dict()
		res['id'] = requestid
		res['userid'] =  userid
		res['result'] =  val
		res['request'] = action
		sock.sendto(json.dumps(res), (host,int(port)))
		sock.close()
                global num_of_requests
                num_of_requests=num_of_requests-1
	except:
		print (traceback.format_exc())
def ServeRequest(request,masters,keylocation1,keylocation2):
	''' Process the request and return result '''


    	try:
		req = json.loads(request)
		requestid = req['id']
		masterNode = req['Master']
                userid = req['userid']
                action = req['request']
		data = req['data']
		
		#call apis here	
		logger.debug('Processing {0} request from master {1},userid= {2},data={3}'.format(requestid,masterNode,userid,data))
		global db_files
		api=MugenDBAPI(db_files[-2])
		#the request will be for get only
		val=api.get(data,keylocation1,userid)
		if val == -1:
			logger.debug('Searching for data in keymap2')
			api=MugenDBAPI(db_files[-1])
			val = api.get(data,keylocation2,userid)
		
		logger.debug('Processing {0} request from master {1},userid= {2},data={3},return={4}'.format(requestid,masterNode,userid,data,val))
		sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
		host,port = masters[masterNode].partition(":")[::2]
		print host,port,val
		res = dict()
		res['id'] = requestid
		res['userid'] =  userid
		res['result'] =  val
		res['request'] = action
		sock.sendto(json.dumps(res), (host,int(port)))
		sock.close()
                global num_of_requests
                num_of_requests=num_of_requests-1
	except:
		print (traceback.format_exc())
Example #3
0
	def split_keys(self,keylocation):
		keys_1= {}
		keys_2= {}
		api=MugenDBAPI('temp_dbfile','temp_keyfile')
		for_new = MugenDBAPI('MugenDBfile_{}.txt'.format(self.newnode[0]),'KeyMap_{}.txt'.format(self.newnode[0]))
		servers = [self.slavenum+":10000",self.newnode[1]+":10000"]
		ring = HashRing(servers)
		for key in keylocation:
			with open("MugenDBfile.txt",'r') as myfile:
				myfile.seek(keylocation[key][1],0)
				data = json.loads(myfile.readline())
			hxmd5=calculatemd5(key)
			server=ring.get_node(hxmd5)
			if server == servers[1]:
				for_new.put(key,data,keys_2,keylocation[key][0])
			else:
				api.put(key,data,keys_1,keylocation[key][0])

		os.system('mv temp_dbfile.txt MugenDBfile.txt ')
		os.system('mv temp_keyfile.txt KeyMap.txt ')