1 21 22 package org.continuent.sequoia.controller.scheduler; 23 24 import java.util.HashMap ; 25 import java.util.Iterator ; 26 import java.util.List ; 27 import java.util.Set ; 28 29 import javax.management.NotCompliantMBeanException ; 30 31 import org.continuent.sequoia.common.i18n.Translate; 32 import org.continuent.sequoia.common.jmx.mbeans.AbstractSchedulerControlMBean; 33 import org.continuent.sequoia.controller.jmx.AbstractStandardMBean; 34 import org.continuent.sequoia.controller.requestmanager.TransactionMetaData; 35 import org.continuent.sequoia.controller.requests.AbstractRequest; 36 37 43 public class AbstractSchedulerControl extends AbstractStandardMBean 44 implements 45 AbstractSchedulerControlMBean 46 { 47 48 private AbstractScheduler managedScheduler; 49 50 56 public AbstractSchedulerControl(AbstractScheduler scheduler) 57 throws NotCompliantMBeanException 58 { 59 super(AbstractSchedulerControlMBean.class); 60 this.managedScheduler = scheduler; 61 } 62 63 66 public String getAssociatedString() 67 { 68 return "abstractscheduler"; } 70 71 74 public long[] listActiveTransactionIds() 75 { 76 List transactions = managedScheduler.getActiveTransactions(); 77 int sz = transactions.size(); 78 long[] res = new long[sz]; 79 for (int i = 0; i < sz; i++) 80 { 81 TransactionMetaData tmd = (TransactionMetaData) transactions.get(i); 82 res[i] = tmd.getTransactionId(); 83 } 84 return res; 85 } 86 87 private long[] listPendingRequestIds(HashMap requests) 88 { 89 Set reqIds = requests.keySet(); 90 long[] res = new long[reqIds.size()]; 91 int i = 0; 92 for (Iterator iter = reqIds.iterator(); iter.hasNext(); i++) 93 { 94 Long l = (Long ) iter.next(); 95 res[i] = l.longValue(); 96 } 97 return res; 98 } 99 100 103 public long[] listPendingWriteRequestIds() 104 { 105 return listPendingRequestIds(managedScheduler.getActiveWriteRequests()); 106 } 107 108 111 public long[] listPendingReadRequestIds() 112 { 113 return listPendingRequestIds(managedScheduler.getActiveReadRequests()); 114 } 115 116 119 public String dumpRequest(long requestId) 120 { 121 AbstractRequest request = null; 122 HashMap writeRequests = managedScheduler.getActiveWriteRequests(); 123 synchronized (writeRequests) 124 { 125 request = (AbstractRequest) writeRequests.get(new Long (requestId)); 126 } 127 if (request == null) 128 { 129 HashMap readRequests = managedScheduler.getActiveReadRequests(); 130 synchronized (readRequests) 131 { 132 request = (AbstractRequest) readRequests.get(new Long (requestId)); 133 } 134 } 135 if (request == null) 136 { 137 return Translate.get("scheduler.request.notActive", requestId); 138 } 139 return request.toDebugString(); 140 } 141 } 142 | Popular Tags |