use of com.facebook.airlift.discovery.client.ServiceAnnouncement in project presto by prestodb.
the class TestingPrestoServer method updateConnectorIdAnnouncement.
private static void updateConnectorIdAnnouncement(Announcer announcer, ConnectorId connectorId, InternalNodeManager nodeManager) {
//
// This code was copied from PrestoServer, and is a hack that should be removed when the connectorId property is removed
//
// get existing announcement
ServiceAnnouncement announcement = getPrestoAnnouncement(announcer.getServiceAnnouncements());
// update connectorIds property
Map<String, String> properties = new LinkedHashMap<>(announcement.getProperties());
String property = nullToEmpty(properties.get("connectorIds"));
Set<String> connectorIds = new LinkedHashSet<>(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(property));
connectorIds.add(connectorId.toString());
properties.put("connectorIds", Joiner.on(',').join(connectorIds));
// update announcement
announcer.removeServiceAnnouncement(announcement.getId());
announcer.addServiceAnnouncement(serviceAnnouncement(announcement.getType()).addProperties(properties).build());
announcer.forceAnnounce();
nodeManager.refreshNodes();
}
use of com.facebook.airlift.discovery.client.ServiceAnnouncement in project presto by prestodb.
the class TestingPrestoServer method updateThriftServerAddressAnnouncement.
// TODO: announcement does not work for coordinator
private static void updateThriftServerAddressAnnouncement(Announcer announcer, int thriftPort, InternalNodeManager nodeManager) {
// get existing announcement
ServiceAnnouncement announcement = getPrestoAnnouncement(announcer.getServiceAnnouncements());
// update announcement and thrift port property
Map<String, String> properties = new LinkedHashMap<>(announcement.getProperties());
properties.put("thriftServerPort", String.valueOf(thriftPort));
announcer.removeServiceAnnouncement(announcement.getId());
announcer.addServiceAnnouncement(serviceAnnouncement(announcement.getType()).addProperties(properties).build());
announcer.forceAnnounce();
nodeManager.refreshNodes();
}
use of com.facebook.airlift.discovery.client.ServiceAnnouncement in project presto by prestodb.
the class PrestoServer method updateThriftServerPort.
private static void updateThriftServerPort(Announcer announcer, DriftServer driftServer) {
// get existing announcement
ServiceAnnouncement announcement = getPrestoAnnouncement(announcer.getServiceAnnouncements());
// drift server::start can be called multiple times
driftServer.start();
// update announcement and thrift port property
int thriftPort = ((DriftNettyServerTransport) driftServer.getServerTransport()).getPort();
Map<String, String> properties = new LinkedHashMap<>(announcement.getProperties());
properties.put("thriftServerPort", String.valueOf(thriftPort));
announcer.removeServiceAnnouncement(announcement.getId());
announcer.addServiceAnnouncement(serviceAnnouncement(announcement.getType()).addProperties(properties).build());
announcer.forceAnnounce();
}
use of com.facebook.airlift.discovery.client.ServiceAnnouncement in project presto by prestodb.
the class PrestoServer method updateConnectorIds.
private static void updateConnectorIds(Announcer announcer, CatalogManager metadata, ServerConfig serverConfig, NodeSchedulerConfig schedulerConfig) {
// get existing announcement
ServiceAnnouncement announcement = getPrestoAnnouncement(announcer.getServiceAnnouncements());
// get existing connectorIds
String property = nullToEmpty(announcement.getProperties().get("connectorIds"));
List<String> values = Splitter.on(',').trimResults().omitEmptyStrings().splitToList(property);
Set<String> connectorIds = new LinkedHashSet<>(values);
// automatically build connectorIds if not configured
if (connectorIds.isEmpty()) {
List<Catalog> catalogs = metadata.getCatalogs();
// if this is a dedicated coordinator, only add jmx
if (serverConfig.isCoordinator() && !schedulerConfig.isIncludeCoordinator()) {
catalogs.stream().map(Catalog::getConnectorId).filter(connectorId -> connectorId.getCatalogName().equals("jmx")).map(Object::toString).forEach(connectorIds::add);
} else {
catalogs.stream().map(Catalog::getConnectorId).map(Object::toString).forEach(connectorIds::add);
}
}
// build announcement with updated sources
ServiceAnnouncementBuilder builder = serviceAnnouncement(announcement.getType());
for (Map.Entry<String, String> entry : announcement.getProperties().entrySet()) {
if (!entry.getKey().equals("connectorIds")) {
builder.addProperty(entry.getKey(), entry.getValue());
}
}
builder.addProperty("connectorIds", Joiner.on(',').join(connectorIds));
// update announcement
announcer.removeServiceAnnouncement(announcement.getId());
announcer.addServiceAnnouncement(builder.build());
}
Aggregations