use of org.apache.ignite.configuration.OdbcConfiguration in project ignite by apache.
the class SqlListenerProcessor method start.
/** {@inheritDoc} */
@Override
public void start(boolean activeOnStart) throws IgniteCheckedException {
IgniteConfiguration cfg = ctx.config();
OdbcConfiguration odbcCfg = cfg.getOdbcConfiguration();
if (odbcCfg != null) {
try {
HostAndPortRange hostPort;
if (F.isEmpty(odbcCfg.getEndpointAddress())) {
hostPort = new HostAndPortRange(OdbcConfiguration.DFLT_TCP_HOST, OdbcConfiguration.DFLT_TCP_PORT_FROM, OdbcConfiguration.DFLT_TCP_PORT_TO);
} else {
hostPort = HostAndPortRange.parse(odbcCfg.getEndpointAddress(), OdbcConfiguration.DFLT_TCP_PORT_FROM, OdbcConfiguration.DFLT_TCP_PORT_TO, "Failed to parse ODBC endpoint address");
}
assertParameter(odbcCfg.getThreadPoolSize() > 0, "threadPoolSize > 0");
odbcExecSvc = new IgniteThreadPoolExecutor("odbc", cfg.getIgniteInstanceName(), odbcCfg.getThreadPoolSize(), odbcCfg.getThreadPoolSize(), 0, new LinkedBlockingQueue<Runnable>());
InetAddress host;
try {
host = InetAddress.getByName(hostPort.host());
} catch (Exception e) {
throw new IgniteCheckedException("Failed to resolve ODBC host: " + hostPort.host(), e);
}
Exception lastErr = null;
for (int port = hostPort.portFrom(); port <= hostPort.portTo(); port++) {
try {
GridNioFilter[] filters = new GridNioFilter[] { new GridNioAsyncNotifyFilter(ctx.igniteInstanceName(), odbcExecSvc, log) {
@Override
public void onSessionOpened(GridNioSession ses) throws IgniteCheckedException {
proceedSessionOpened(ses);
}
}, new GridNioCodecFilter(new SqlListenerBufferedParser(), log, false) };
GridNioServer<byte[]> srv0 = GridNioServer.<byte[]>builder().address(host).port(port).listener(new SqlListenerNioListener(ctx, busyLock, odbcCfg.getMaxOpenCursors())).logger(log).selectorCount(DFLT_SELECTOR_CNT).igniteInstanceName(ctx.igniteInstanceName()).serverName("odbc").tcpNoDelay(DFLT_TCP_NODELAY).directBuffer(DFLT_TCP_DIRECT_BUF).byteOrder(ByteOrder.nativeOrder()).socketSendBufferSize(odbcCfg.getSocketSendBufferSize()).socketReceiveBufferSize(odbcCfg.getSocketReceiveBufferSize()).filters(filters).directMode(false).idleTimeout(Long.MAX_VALUE).build();
srv0.start();
srv = srv0;
ctx.ports().registerPort(port, IgnitePortProtocol.TCP, getClass());
log.info("ODBC processor has started on TCP port " + port);
lastErr = null;
break;
} catch (Exception e) {
lastErr = e;
}
}
assert (srv != null && lastErr == null) || (srv == null && lastErr != null);
if (lastErr != null)
throw new IgniteCheckedException("Failed to bind to any [host:port] from the range [" + "address=" + hostPort + ", lastErr=" + lastErr + ']');
} catch (Exception e) {
throw new IgniteCheckedException("Failed to start ODBC processor.", e);
}
}
}
use of org.apache.ignite.configuration.OdbcConfiguration in project ignite by apache.
the class ClientListenerProcessor method prepareConfiguration.
/**
* Prepare connector configuration.
*
* @param cfg Ignite configuration.
* @return Connector configuration.
* @throws IgniteCheckedException If failed.
*/
@SuppressWarnings("deprecation")
@Nullable
private ClientConnectorConfiguration prepareConfiguration(IgniteConfiguration cfg) throws IgniteCheckedException {
OdbcConfiguration odbcCfg = cfg.getOdbcConfiguration();
SqlConnectorConfiguration sqlConnCfg = cfg.getSqlConnectorConfiguration();
ClientConnectorConfiguration cliConnCfg = cfg.getClientConnectorConfiguration();
if (cliConnCfg == null && sqlConnCfg == null && odbcCfg == null)
return null;
if (isNotDefault(cliConnCfg)) {
// User set configuration explicitly. User it, but print a warning about ignored SQL/ODBC configs.
if (odbcCfg != null) {
U.warn(log, "Deprecated " + OdbcConfiguration.class.getSimpleName() + " will be ignored because " + ClientConnectorConfiguration.class.getSimpleName() + " is set.");
}
if (sqlConnCfg != null) {
U.warn(log, "Deprecated " + SqlConnectorConfiguration.class.getSimpleName() + " will be ignored " + "because " + ClientConnectorConfiguration.class.getSimpleName() + " is set.");
}
} else {
cliConnCfg = new ClientConnectorConfiguration();
if (sqlConnCfg != null) {
// Migrate from SQL configuration.
cliConnCfg.setHost(sqlConnCfg.getHost());
cliConnCfg.setMaxOpenCursorsPerConnection(sqlConnCfg.getMaxOpenCursorsPerConnection());
cliConnCfg.setPort(sqlConnCfg.getPort());
cliConnCfg.setPortRange(sqlConnCfg.getPortRange());
cliConnCfg.setSocketSendBufferSize(sqlConnCfg.getSocketSendBufferSize());
cliConnCfg.setSocketReceiveBufferSize(sqlConnCfg.getSocketReceiveBufferSize());
cliConnCfg.setTcpNoDelay(sqlConnCfg.isTcpNoDelay());
cliConnCfg.setThreadPoolSize(sqlConnCfg.getThreadPoolSize());
U.warn(log, "Automatically converted deprecated " + SqlConnectorConfiguration.class.getSimpleName() + " to " + ClientConnectorConfiguration.class.getSimpleName() + ".");
if (odbcCfg != null) {
U.warn(log, "Deprecated " + OdbcConfiguration.class.getSimpleName() + " will be ignored because " + SqlConnectorConfiguration.class.getSimpleName() + " is set.");
}
} else if (odbcCfg != null) {
// Migrate from ODBC configuration.
HostAndPortRange hostAndPort = parseOdbcEndpoint(odbcCfg);
cliConnCfg.setHost(hostAndPort.host());
cliConnCfg.setPort(hostAndPort.portFrom());
cliConnCfg.setPortRange(hostAndPort.portTo() - hostAndPort.portFrom());
cliConnCfg.setThreadPoolSize(odbcCfg.getThreadPoolSize());
cliConnCfg.setSocketSendBufferSize(odbcCfg.getSocketSendBufferSize());
cliConnCfg.setSocketReceiveBufferSize(odbcCfg.getSocketReceiveBufferSize());
cliConnCfg.setMaxOpenCursorsPerConnection(odbcCfg.getMaxOpenCursors());
U.warn(log, "Automatically converted deprecated " + OdbcConfiguration.class.getSimpleName() + " to " + ClientConnectorConfiguration.class.getSimpleName() + ".");
}
}
return cliConnCfg;
}
use of org.apache.ignite.configuration.OdbcConfiguration in project ignite by apache.
the class ClientConnectorConfigurationValidationSelfTest method testOdbcConnectorConversion.
/**
* Test ODBC connector conversion.
*
* @throws Exception If failed.
*/
@Test
public void testOdbcConnectorConversion() throws Exception {
int port = ClientConnectorConfiguration.DFLT_PORT - 1;
IgniteConfiguration cfg = baseConfiguration();
cfg.setOdbcConfiguration(new OdbcConfiguration().setEndpointAddress("127.0.0.1:" + port));
Ignition.start(cfg);
checkJdbc(null, port);
}
use of org.apache.ignite.configuration.OdbcConfiguration in project ignite by apache.
the class ClientConnectorConfigurationValidationSelfTest method testIgnoreOdbcWhenClientSet.
/**
* Test SQL connector conversion.
*
* @throws Exception If failed.
*/
@Test
public void testIgnoreOdbcWhenClientSet() throws Exception {
int cliPort = ClientConnectorConfiguration.DFLT_PORT - 1;
int odbcPort = ClientConnectorConfiguration.DFLT_PORT - 2;
IgniteConfiguration cfg = baseConfiguration();
cfg.setClientConnectorConfiguration(new ClientConnectorConfiguration().setPort(cliPort));
cfg.setOdbcConfiguration(new OdbcConfiguration().setEndpointAddress("127.0.0.1:" + odbcPort));
Ignition.start(cfg);
checkJdbc(null, cliPort);
}
Aggregations