use of edu.umass.cs.gnscommon.exceptions.server.FieldNotFoundException in project GNS by MobilityFirst.
the class AppAdminServer method run.
/**
* Start executing the thread.
*/
@Override
public void run() {
int numRequest = 0;
GNSConfig.getLogger().log(Level.INFO, "NS Node {0} starting Admin Request Server on port {1}", new Object[] { app.getNodeID(), serverSocket.getLocalPort() });
while (true) {
try {
//Read the packet from the input stream
try (Socket socket = serverSocket.accept()) {
//Read the packet from the input stream
JSONObject incomingJSON = Packet.getJSONObjectFrame(socket);
switch(Packet.getPacketType(incomingJSON)) {
case DUMP_REQUEST:
DumpRequestPacket<String> dumpRequestPacket = new DumpRequestPacket<>(incomingJSON, gnsNodeConfig);
dumpRequestPacket.setPrimaryNameServer(app.getNodeID());
JSONArray jsonArray = new JSONArray();
// if there is an argument it is a TAGNAME we return all the records that have that tag
if (dumpRequestPacket.getArgument() != null) {
String tag = dumpRequestPacket.getArgument();
AbstractRecordCursor cursor = NameRecord.getAllRowsIterator(app.getDB());
while (cursor.hasNext()) {
NameRecord nameRecord = null;
JSONObject json = cursor.nextJSONObject();
try {
nameRecord = new NameRecord(app.getDB(), json);
} catch (JSONException e) {
GNSConfig.getLogger().log(Level.SEVERE, "Problem parsing json into NameRecord: {0} JSON is {1}", new Object[] { e, json.toString() });
}
if (nameRecord != null) {
try {
if (nameRecord.containsUserKey(AccountAccess.GUID_INFO)) {
GuidInfo userInfo = new GuidInfo(nameRecord.getValuesMap().getJSONObject(AccountAccess.GUID_INFO));
//GuidInfo userInfo = new GuidInfo(nameRecord.getUserKeyAsArray(AccountAccess.GUID_INFO).toResultValueString());
if (userInfo.containsTag(tag)) {
jsonArray.put(nameRecord.toJSONObject());
}
}
} catch (FieldNotFoundException e) {
GNSConfig.getLogger().log(Level.SEVERE, "FieldNotFoundException. Field Name = {0}", e.getMessage());
//To change body of catch statement use File | Settings | File Templates.
e.printStackTrace();
}
}
}
// OTHERWISE WE RETURN ALL THE RECORD
} else {
//for (NameRecord nameRecord : NameServer.getAllNameRecords()) {
AbstractRecordCursor cursor = NameRecord.getAllRowsIterator(app.getDB());
while (cursor.hasNext()) {
NameRecord nameRecord = null;
JSONObject json = cursor.nextJSONObject();
try {
nameRecord = new NameRecord(app.getDB(), json);
} catch (JSONException e) {
GNSConfig.getLogger().log(Level.SEVERE, "Problem parsing record cursor into NameRecord: {0} JSON is {1}", new Object[] { e, json.toString() });
}
if (nameRecord != null) {
jsonArray.put(nameRecord.toJSONObject());
}
}
}
GNSConfig.getLogger().log(Level.FINER, "AppAdmin for {0} is {1}", new Object[] { app.getNodeID(), jsonArray.toString() });
dumpRequestPacket.setJsonArray(jsonArray);
Packet.sendTCPPacket(dumpRequestPacket.toJSONObject(), dumpRequestPacket.getReturnAddress());
GNSConfig.getLogger().log(Level.FINEST, "AppAdmin: Response to id:{0} --> {1}", new Object[] { dumpRequestPacket.getId(), dumpRequestPacket.toString() });
break;
case ADMIN_REQUEST:
AdminRequestPacket adminRequestPacket = new AdminRequestPacket(incomingJSON);
switch(adminRequestPacket.getOperation()) {
case CLEARCACHE:
GNSConfig.getLogger().log(Level.WARNING, "NSListenerAdmin ({0}) : Ignoring CLEARCACHE request", app.getNodeID());
break;
case DUMPCACHE:
GNSConfig.getLogger().log(Level.WARNING, "NSListenerAdmin ({0}) : Ignoring DUMPCACHE request", app.getNodeID());
break;
}
break;
}
}
} catch (IOException | JSONException | FailedDBOperationException | ParseException | IllegalArgumentException | SecurityException e) {
if (serverSocket.isClosed()) {
GNSConfig.getLogger().warning("NS Admin shutting down.");
// close this thread
return;
}
e.printStackTrace();
}
}
}
use of edu.umass.cs.gnscommon.exceptions.server.FieldNotFoundException in project GNS by MobilityFirst.
the class GNSApp method checkpoint.
/**
*
* @param name
* @return the record
*/
@Override
public String checkpoint(String name) {
try {
NameRecord nameRecord = NameRecord.getNameRecord(nameRecordDB, name);
GNSConfig.getLogger().log(Level.FINE, "{0} getting state for {1} : {2} ", new Object[] { this, name, nameRecord.getValuesMap().getSummary() });
return nameRecord.getValuesMap().toString();
} catch (RecordNotFoundException e) {
// the above RecordNotFoundException is a normal result
} catch (FieldNotFoundException e) {
GNSConfig.getLogger().log(Level.SEVERE, "Field not found exception: {0}", e.getMessage());
e.printStackTrace();
} catch (FailedDBOperationException e) {
GNSConfig.getLogger().log(Level.SEVERE, "State not read from DB: {0}", e.getMessage());
e.printStackTrace();
}
return null;
}
use of edu.umass.cs.gnscommon.exceptions.server.FieldNotFoundException in project GNS by MobilityFirst.
the class Admintercessor method formatDumpRecords.
@SuppressWarnings("unchecked")
private String formatDumpRecords(Map<String, TreeSet<NameRecord>> recordsMap, ClientRequestHandlerInterface handler) {
// now process all the records we received
StringBuilder result = new StringBuilder();
// are there any NSs that didn't respond?
Set<String> missingIDs = new HashSet<>(handler.getGnsNodeConfig().getActiveReplicas());
missingIDs.removeAll(recordsMap.keySet());
if (missingIDs.size() > 0) {
result.append("Missing NSs: ");
result.append(Util.setOfNodeIdToString(missingIDs));
result.append(LINE_SEPARATOR);
}
// process all the entries into a nice string
for (Map.Entry<String, TreeSet<NameRecord>> entry : recordsMap.entrySet()) {
ClientCommandProcessorConfig.getLogger().log(Level.FINE, "RECEIVED DUMP RECORD FROM NS: {0}", entry.getKey());
result.append("========================================================================");
result.append(LINE_SEPARATOR);
result.append("Nameserver: ");
result.append(entry.getKey());
result.append(" (").append(handler.getGnsNodeConfig().getNodeAddress(entry.getKey()).getHostName());
result.append(":");
result.append(handler.getGnsNodeConfig().getNodePort(entry.getKey()));
result.append(")");
result.append(LINE_SEPARATOR);
for (NameRecord record : entry.getValue()) {
try {
result.append(" NAME: ");
result.append(record.getName());
// result.append(" P: ");
// result.append(Util.setOfNodeIdToString(record.getPrimaryNameservers()));
result.append(LINE_SEPARATOR);
result.append(" VALUE: ");
try {
result.append(record.getValuesMap().toString(2));
} catch (JSONException e) {
result.append(record.getValuesMap());
}
result.append(LINE_SEPARATOR);
} catch (FieldNotFoundException e) {
ClientCommandProcessorConfig.getLogger().log(Level.SEVERE, "FieldNotFoundException. {0}", e.getMessage());
}
}
}
return result.toString();
}
Aggregations