Search in sources :

Example 66 with NamingException

use of javax.naming.NamingException in project eureka by Netflix.

the class DnsResolver method resolve.

/**
     * Resolve host name to the bottom A-Record or the latest available CNAME
     *
     * @return resolved host name
     */
public static String resolve(String originalHost) {
    String currentHost = originalHost;
    if (isLocalOrIp(currentHost)) {
        return originalHost;
    }
    try {
        String targetHost = null;
        do {
            Attributes attrs = dirContext.getAttributes(currentHost, new String[] { A_RECORD_TYPE, CNAME_RECORD_TYPE });
            Attribute attr = attrs.get(A_RECORD_TYPE);
            if (attr != null) {
                targetHost = attr.get().toString();
            }
            attr = attrs.get(CNAME_RECORD_TYPE);
            if (attr != null) {
                currentHost = attr.get().toString();
            } else {
                targetHost = currentHost;
            }
        } while (targetHost == null);
        return targetHost;
    } catch (NamingException e) {
        logger.warn("Cannot resolve eureka server address " + currentHost + "; returning original value " + originalHost, e);
        return originalHost;
    }
}
Also used : Attribute(javax.naming.directory.Attribute) Attributes(javax.naming.directory.Attributes) NamingException(javax.naming.NamingException)

Example 67 with NamingException

use of javax.naming.NamingException in project eureka by Netflix.

the class DnsTxtRecordClusterResolver method resolve.

private static List<AwsEndpoint> resolve(String region, String rootClusterDNS, boolean extractZone, int port, boolean isSecure, String relativeUri) {
    try {
        Set<String> zoneDomainNames = resolve(rootClusterDNS);
        if (zoneDomainNames.isEmpty()) {
            throw new ClusterResolverException("Cannot resolve Eureka cluster addresses; there are no data in TXT record for DN " + rootClusterDNS);
        }
        List<AwsEndpoint> endpoints = new ArrayList<>();
        for (String zoneDomain : zoneDomainNames) {
            String zone = extractZone ? ResolverUtils.extractZoneFromHostName(zoneDomain) : null;
            Set<String> zoneAddresses = resolve(zoneDomain);
            for (String address : zoneAddresses) {
                endpoints.add(new AwsEndpoint(address, port, isSecure, relativeUri, region, zone));
            }
        }
        return endpoints;
    } catch (NamingException e) {
        throw new ClusterResolverException("Cannot resolve Eureka cluster addresses for root: " + rootClusterDNS, e);
    }
}
Also used : ClusterResolverException(com.netflix.discovery.shared.resolver.ClusterResolverException) ArrayList(java.util.ArrayList) NamingException(javax.naming.NamingException)

Example 68 with NamingException

use of javax.naming.NamingException in project SpyGlass by ParallelAI.

the class HBaseInputFormatGranular method getSplits.

@SuppressWarnings("deprecation")
@Override
public HBaseTableSplitGranular[] getSplits(JobConf job, int numSplits) throws IOException {
    if (this.table == null) {
        throw new IOException("No table was provided");
    }
    if (this.inputColumns == null || this.inputColumns.length == 0) {
        throw new IOException("Expecting at least one column");
    }
    Pair<byte[][], byte[][]> keys = table.getStartEndKeys();
    if (keys == null || keys.getFirst() == null || keys.getFirst().length == 0) {
        HRegionLocation regLoc = table.getRegionLocation(HConstants.EMPTY_BYTE_ARRAY, false);
        if (null == regLoc) {
            throw new IOException("Expecting at least one region.");
        }
        List<HBaseTableSplitGranular> splits = new ArrayList<HBaseTableSplitGranular>(1);
        HBaseTableSplitGranular split = new HBaseTableSplitGranular(table.getTableName(), HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY, regLoc.getHostnamePort().split(Addressing.HOSTNAME_PORT_SEPARATOR)[0], regLoc.getRegionInfo().getRegionNameAsString(), SourceMode.EMPTY, false);
        splits.add(split);
        return splits.toArray(new HBaseTableSplitGranular[splits.size()]);
    }
    if (keys.getSecond() == null || keys.getSecond().length == 0) {
        throw new IOException("Expecting at least one region.");
    }
    if (keys.getFirst().length != keys.getSecond().length) {
        throw new IOException("Regions for start and end key do not match");
    }
    byte[] minKey = keys.getFirst()[keys.getFirst().length - 1];
    byte[] maxKey = keys.getSecond()[0];
    LOG.debug(String.format("SETTING min key (%s) and max key (%s)", Bytes.toString(minKey), Bytes.toString(maxKey)));
    byte[][] regStartKeys = keys.getFirst();
    byte[][] regStopKeys = keys.getSecond();
    String[] regions = new String[regStartKeys.length];
    String[] regionNames = new String[regStartKeys.length];
    for (int i = 0; i < regStartKeys.length; i++) {
        minKey = (regStartKeys[i] != null && regStartKeys[i].length != 0) && (Bytes.compareTo(regStartKeys[i], minKey) < 0) ? regStartKeys[i] : minKey;
        maxKey = (regStopKeys[i] != null && regStopKeys[i].length != 0) && (Bytes.compareTo(regStopKeys[i], maxKey) > 0) ? regStopKeys[i] : maxKey;
        HRegionLocation regionLoc = table.getRegionLocation(keys.getFirst()[i]);
        String regionServerHostnamePort = regionLoc.getHostnamePort();
        InetAddress regionAddress = toInetAddress(regionServerHostnamePort);
        String regionLocation;
        try {
            regionLocation = reverseDNS(regionAddress);
        } catch (NamingException e) {
            LOG.error("Cannot resolve the host name for " + regionAddress + " because of " + e);
            regionLocation = toHostname(regionServerHostnamePort);
        }
        regionNames[i] = regionLoc.getRegionInfo().getRegionNameAsString();
        LOG.debug("***** " + regionLocation);
        if (regionLocation == null || regionLocation.length() == 0)
            throw new IOException("The region info for regiosn " + i + " is null or empty");
        regions[i] = regionLocation;
        LOG.debug(String.format("Region (%s) has start key (%s) and stop key (%s)", regions[i], Bytes.toString(regStartKeys[i]), Bytes.toString(regStopKeys[i])));
    }
    byte[] startRow = HConstants.EMPTY_START_ROW;
    byte[] stopRow = HConstants.EMPTY_END_ROW;
    LOG.debug(String.format("Found min key (%s) and max key (%s)", Bytes.toString(minKey), Bytes.toString(maxKey)));
    LOG.debug("SOURCE MODE is : " + sourceMode);
    switch(sourceMode) {
        case SCAN_ALL:
            startRow = HConstants.EMPTY_START_ROW;
            stopRow = HConstants.EMPTY_END_ROW;
            LOG.debug(String.format("SCAN ALL: Found start key (%s) and stop key (%s)", Bytes.toString(startRow), Bytes.toString(stopRow)));
            break;
        case SCAN_RANGE:
            startRow = (startKey != null && startKey.length() != 0) ? Bytes.toBytes(startKey) : HConstants.EMPTY_START_ROW;
            stopRow = (stopKey != null && stopKey.length() != 0) ? Bytes.toBytes(stopKey) : HConstants.EMPTY_END_ROW;
            LOG.debug(String.format("SCAN RANGE: Found start key (%s) and stop key (%s)", Bytes.toString(startRow), Bytes.toString(stopRow)));
            break;
    }
    switch(sourceMode) {
        case EMPTY:
        case SCAN_ALL:
        case SCAN_RANGE:
            {
                // startRow = (Bytes.compareTo(startRow, minKey) < 0) ? minKey :
                // startRow;
                // stopRow = (Bytes.compareTo(stopRow, maxKey) > 0) ? maxKey :
                // stopRow;
                List<HBaseTableSplitGranular> splits = new ArrayList<HBaseTableSplitGranular>();
                if (!useSalt) {
                    List<HRegionLocation> validRegions = table.getRegionsInRange(startRow, stopRow);
                    int maxRegions = validRegions.size();
                    int currentRegion = 1;
                    for (HRegionLocation cRegion : validRegions) {
                        byte[] rStart = cRegion.getRegionInfo().getStartKey();
                        byte[] rStop = cRegion.getRegionInfo().getEndKey();
                        String regionServerHostnamePort = cRegion.getHostnamePort();
                        InetAddress regionAddress = toInetAddress(regionServerHostnamePort);
                        String regionLocation;
                        try {
                            regionLocation = reverseDNS(regionAddress);
                        } catch (NamingException e) {
                            LOG.error("Cannot resolve the host name for " + regionAddress + " because of " + e);
                            regionLocation = toHostname(regionServerHostnamePort);
                        }
                        String regionName = cRegion.getRegionInfo().getRegionNameAsString();
                        byte[] sStart = (startRow == HConstants.EMPTY_START_ROW || (Bytes.compareTo(startRow, rStart) <= 0) ? rStart : startRow);
                        byte[] sStop = (stopRow == HConstants.EMPTY_END_ROW || (Bytes.compareTo(stopRow, rStop) >= 0 && rStop.length != 0) ? rStop : stopRow);
                        LOG.debug(String.format("BOOL start (%s) stop (%s) length (%d)", (startRow == HConstants.EMPTY_START_ROW || (Bytes.compareTo(startRow, rStart) <= 0)), (stopRow == HConstants.EMPTY_END_ROW || (Bytes.compareTo(stopRow, rStop) >= 0)), rStop.length));
                        HBaseTableSplitGranular split = new HBaseTableSplitGranular(table.getTableName(), sStart, sStop, regionLocation, regionName, SourceMode.SCAN_RANGE, useSalt);
                        split.setEndRowInclusive(currentRegion == maxRegions);
                        currentRegion++;
                        LOG.debug(String.format("START KEY (%s) STOP KEY (%s) rSTART (%s) rSTOP (%s) sSTART (%s) sSTOP (%s) REGION [%s] SPLIT [%s]", Bytes.toString(startRow), Bytes.toString(stopRow), Bytes.toString(rStart), Bytes.toString(rStop), Bytes.toString(sStart), Bytes.toString(sStop), cRegion.getHostnamePort(), split));
                        splits.add(split);
                    }
                } else {
                    LOG.debug("Using SALT : " + useSalt);
                    // prefixes.
                    for (int i = 0; i < regions.length; i++) {
                        Pair<byte[], byte[]>[] intervals = HBaseSalter.getDistributedIntervals(startRow, stopRow, regStartKeys[i], regStopKeys[i], prefixList);
                        for (Pair<byte[], byte[]> pair : intervals) {
                            LOG.debug("".format("Using SALT, Region (%s) Start (%s) Stop (%s)", regions[i], Bytes.toString(pair.getFirst()), Bytes.toString(pair.getSecond())));
                            HBaseTableSplitGranular split = new HBaseTableSplitGranular(table.getTableName(), pair.getFirst(), pair.getSecond(), regions[i], regionNames[i], SourceMode.SCAN_RANGE, useSalt);
                            split.setEndRowInclusive(true);
                            splits.add(split);
                        }
                    }
                }
                LOG.debug("RETURNED NO OF SPLITS: split -> " + splits.size());
                for (HBaseTableSplitGranular s : splits) {
                    LOG.debug("RETURNED SPLITS: split -> " + s);
                }
                return splits.toArray(new HBaseTableSplitGranular[splits.size()]);
            }
        case GET_LIST:
            {
                // if( keyList == null || keyList.size() == 0 ) {
                if (keyList == null) {
                    throw new IOException("Source Mode is GET_LIST but key list is EMPTY");
                }
                if (useSalt) {
                    TreeSet<String> tempKeyList = new TreeSet<String>();
                    for (String key : keyList) {
                        tempKeyList.add(HBaseSalter.addSaltPrefix(key));
                    }
                    keyList = tempKeyList;
                }
                LOG.debug("".format("Splitting Key List (%s)", keyList));
                List<HBaseTableSplitGranular> splits = new ArrayList<HBaseTableSplitGranular>();
                for (int i = 0; i < keys.getFirst().length; i++) {
                    if (!includeRegionInSplit(keys.getFirst()[i], keys.getSecond()[i])) {
                        continue;
                    }
                    LOG.debug(String.format("Getting region (%s) subset (%s) to (%s)", regions[i], Bytes.toString(regStartKeys[i]), Bytes.toString(regStopKeys[i])));
                    Set<String> regionsSubSet = null;
                    if ((regStartKeys[i] == null || regStartKeys[i].length == 0) && (regStopKeys[i] == null || regStopKeys[i].length == 0)) {
                        LOG.debug("REGION start is empty");
                        LOG.debug("REGION stop is empty");
                        regionsSubSet = keyList;
                    } else if (regStartKeys[i] == null || regStartKeys[i].length == 0) {
                        LOG.debug("REGION start is empty");
                        regionsSubSet = keyList.headSet(Bytes.toString(regStopKeys[i]), true);
                    } else if (regStopKeys[i] == null || regStopKeys[i].length == 0) {
                        LOG.debug("REGION stop is empty");
                        regionsSubSet = keyList.tailSet(Bytes.toString(regStartKeys[i]), true);
                    } else if (Bytes.compareTo(regStartKeys[i], regStopKeys[i]) <= 0) {
                        regionsSubSet = keyList.subSet(Bytes.toString(regStartKeys[i]), true, Bytes.toString(regStopKeys[i]), true);
                    } else {
                        throw new IOException(String.format("For REGION (%s) Start Key (%s) > Stop Key(%s)", regions[i], Bytes.toString(regStartKeys[i]), Bytes.toString(regStopKeys[i])));
                    }
                    if (regionsSubSet == null || regionsSubSet.size() == 0) {
                        LOG.debug("EMPTY: Key is for region " + regions[i] + " is null");
                        continue;
                    }
                    TreeSet<String> regionKeyList = new TreeSet<String>(regionsSubSet);
                    LOG.debug(String.format("Regions [%s] has key list <%s>", regions[i], regionKeyList));
                    HBaseTableSplitGranular split = new HBaseTableSplitGranular(table.getTableName(), regionKeyList, versions, regions[i], regionNames[i], SourceMode.GET_LIST, useSalt);
                    splits.add(split);
                }
                LOG.debug("RETURNED SPLITS: split -> " + splits);
                return splits.toArray(new HBaseTableSplitGranular[splits.size()]);
            }
        default:
            throw new IOException("Unknown source Mode : " + sourceMode);
    }
}
Also used : TreeSet(java.util.TreeSet) Set(java.util.Set) ArrayList(java.util.ArrayList) IOException(java.io.IOException) HRegionLocation(org.apache.hadoop.hbase.HRegionLocation) TreeSet(java.util.TreeSet) NamingException(javax.naming.NamingException) ArrayList(java.util.ArrayList) List(java.util.List) InetAddress(java.net.InetAddress) Pair(org.apache.hadoop.hbase.util.Pair)

Example 69 with NamingException

use of javax.naming.NamingException in project neo4j by neo4j.

the class LdapGroupHasUsersAuthPlugin method authenticateAndAuthorize.

@Override
public AuthInfo authenticateAndAuthorize(AuthToken authToken) throws AuthenticationException {
    try {
        String username = authToken.principal();
        char[] password = authToken.credentials();
        LdapContext ctx = authenticate(username, password);
        Set<String> roles = authorize(ctx, username);
        return AuthInfo.of(username, roles);
    } catch (NamingException e) {
        throw new AuthenticationException(e.getMessage());
    }
}
Also used : AuthenticationException(org.neo4j.server.security.enterprise.auth.plugin.api.AuthenticationException) NamingException(javax.naming.NamingException) InitialLdapContext(javax.naming.ldap.InitialLdapContext) LdapContext(javax.naming.ldap.LdapContext)

Example 70 with NamingException

use of javax.naming.NamingException in project mybatis-3 by mybatis.

the class JndiDataSourceFactory method setProperties.

@Override
public void setProperties(Properties properties) {
    try {
        InitialContext initCtx;
        Properties env = getEnvProperties(properties);
        if (env == null) {
            initCtx = new InitialContext();
        } else {
            initCtx = new InitialContext(env);
        }
        if (properties.containsKey(INITIAL_CONTEXT) && properties.containsKey(DATA_SOURCE)) {
            Context ctx = (Context) initCtx.lookup(properties.getProperty(INITIAL_CONTEXT));
            dataSource = (DataSource) ctx.lookup(properties.getProperty(DATA_SOURCE));
        } else if (properties.containsKey(DATA_SOURCE)) {
            dataSource = (DataSource) initCtx.lookup(properties.getProperty(DATA_SOURCE));
        }
    } catch (NamingException e) {
        throw new DataSourceException("There was an error configuring JndiDataSourceTransactionPool. Cause: " + e, e);
    }
}
Also used : InitialContext(javax.naming.InitialContext) Context(javax.naming.Context) DataSourceException(org.apache.ibatis.datasource.DataSourceException) NamingException(javax.naming.NamingException) Properties(java.util.Properties) InitialContext(javax.naming.InitialContext) DataSource(javax.sql.DataSource)

Aggregations

NamingException (javax.naming.NamingException)698 InitialContext (javax.naming.InitialContext)234 Context (javax.naming.Context)169 IOException (java.io.IOException)82 NameNotFoundException (javax.naming.NameNotFoundException)67 SQLException (java.sql.SQLException)58 Reference (javax.naming.Reference)53 DataSource (javax.sql.DataSource)52 Test (org.junit.Test)51 Attribute (javax.naming.directory.Attribute)49 DirContext (javax.naming.directory.DirContext)48 Properties (java.util.Properties)45 ArrayList (java.util.ArrayList)41 Name (javax.naming.Name)36 SearchResult (javax.naming.directory.SearchResult)35 Hashtable (java.util.Hashtable)34 InitialDirContext (javax.naming.directory.InitialDirContext)34 Connection (java.sql.Connection)33 NameAlreadyBoundException (javax.naming.NameAlreadyBoundException)32 Attributes (javax.naming.directory.Attributes)30