public static ZKBarrier Barrier(ZooKeeperWrapper handler, String synchNodePath, String owner, int size) { ZKBarrier sZK = new ZKBarrier(handler, synchNodePath, owner, size); sZK.Enter(); return(sZK); }
// Prints the tree without changing the tree view state public static String PrintTree(ZooKeeperWrapper zk, String machinesPath, String sellersPath, String stamp) { StringBuilder sb = new StringBuilder(); List <String> machines = zk.GetChildren(machinesPath, true); sb.AppendLine("[" + stamp + "] Machines Tree: "); foreach (var machine in machines) { var machineRecord = zk.GetData <ZNodesDataStructures.MachineNode>(machinesPath + "/" + machine, true); sb.AppendLine("[" + stamp + "] \\-" + machine); sb.AppendLine("[" + stamp + "] \\-P: " + String.Join(" ", machineRecord.primaryOf)); sb.AppendLine("[" + stamp + "] \\-B: " + String.Join(" ", machineRecord.backsUp)); } sb.AppendLine("[" + stamp + "] Sellers Tree: "); List <String> sellers = zk.GetChildren(sellersPath, true); foreach (var seller in sellers) { sb.AppendLine("[" + stamp + "] \\-" + seller); var sellerMachines = zk.GetChildren(sellersPath + "/" + seller, true); foreach (var sellerMachine in sellerMachines) { var machineSellerRecord = zk.GetData <ZNodesDataStructures.SellerNode>(sellersPath + "/" + seller + "/" + sellerMachine, true); sb.AppendLine("[" + stamp + "] \\-" + machineSellerRecord.role + ": " + sellerMachine + " " + machineSellerRecord.uri); } } return(sb.ToString()); }
public void initialize(String address, String clusterName, String originalSeller, Uri localService, MachineJoined mj, MachineDropped md) { this.mJoined = mj; this.mDropped = md; this.clusterName = clusterName; this.zookeeperAddress = address; this.originalSeller = originalSeller; if (null == zk) { zk = new ZooKeeperWrapper(address, SECONDS_TIMEOUT, ZK_RETRIES, new ZooKeeperTreeEvent(this)); } intraClusterService = localService; constructClusterSubTree(); // Constructs the cluster's subtree if needed // tree = new TreeView(zk, MachinesPath, SellersPath); //tree.refresh(); // Build tree // Set watches setMachinesChildrenWatcher(); setSellersChildrenWatcher(); registerSellersNode(); // Add the seller which this machine represents to the sellers subtree registerMachinesNode(); // Add this machine to the Machines subtree //zk.GetData<ZNodesDataStructures.MachineNode>(id, new MachineNodeWatch(this)); //machinesNodeChanged(); //machinesNodeEvent(WatchedEvent @event); }
public ZKBarrier(ZooKeeperWrapper handler, String barrierPath, String owner, int size) { ZooKeeper zk = new ZooKeeper(handler.Address, new TimeSpan(0, 0, 0, handler.Timeout, 0), this); connected.WaitOne(); if (null == zk.Exists(barrierPath, false)) { zk.Create(barrierPath, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent); } first = new ZKSynch(handler, barrierPath + "/first_barrier", owner, size); second = new ZKSynch(handler, barrierPath + "/second_barrier", owner, size); }
public ZKSynch(ZooKeeperWrapper handler, String synchNodePath, String owner, int size) { zk = new ZooKeeper(handler.Address, new TimeSpan(0, 0, 0, handler.Timeout, 0), this); connected.WaitOne(); synchPath = synchNodePath; this.size = size; this.owner = owner; //this.synchReady = synchPath + "/ready"; if (null == zk.Exists(synchPath, false)) { zk.Create(synchPath, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent); } }
public TreeView(ZooKeeperWrapper zk, String machinesPath, String sellersPath) { this.machinesPath = machinesPath; this.sellersPath = sellersPath; this.zk = zk; var newMachinesView = zk.GetChildren(machinesPath, false); var newSellersView = zk.GetChildren(sellersPath, false); // Build machines tree from ZK machinesData.Clear(); foreach (var machine in newMachinesView) { var machineData = zk.GetData <ZNodesDataStructures.MachineNode>(machinesPath + "/" + machine, false); machinesData.Add(machine, machineData); } // Build sellers tree from ZK sellersData.Clear(); foreach (var seller in newSellersView) { var sellerMachines = zk.GetChildren(sellersPath + "/" + seller, false); if (sellerMachines.Count > 2) { throw new Exception("Seller " + seller + " has too many machines: " + String.Join(" ", sellerMachines)); } Dictionary <ZNodesDataStructures.SellerNode.NodeRole, ZNodesDataStructures.SellerNode> nodeRoles = new Dictionary <ZNodesDataStructures.SellerNode.NodeRole, ZNodesDataStructures.SellerNode>(); foreach (var machine in sellerMachines) { var machineSellerNode = zk.GetData <ZNodesDataStructures.SellerNode>(sellersPath + "/" + seller + "/" + machine, false); nodeRoles[machineSellerNode.role] = machineSellerNode; } //if (nodeRoles.Count != 2) //{ // throw new Exception("Seller " + seller + "doesn't have needed roles " + String.Join(" ", nodeRoles.Keys.ToArray())); //} sellersData[seller] = new Dictionary <ZNodesDataStructures.SellerNode.NodeRole, ZNodesDataStructures.SellerNode>(nodeRoles); } }