Search in sources :

Example 16 with SuppressForbidden

use of org.elasticsearch.common.SuppressForbidden in project elasticsearch by elastic.

the class AbstractBenchmark method runBulkIndexBenchmark.

@SuppressForbidden(reason = "system out is ok for a command line tool")
private void runBulkIndexBenchmark(String[] args) throws Exception {
    if (args.length != 7) {
        System.err.println("usage: 'bulk' benchmarkTargetHostIp indexFilePath indexName typeName numberOfDocuments bulkSize");
        System.exit(1);
    }
    String benchmarkTargetHost = args[1];
    String indexFilePath = args[2];
    String indexName = args[3];
    String typeName = args[4];
    int totalDocs = Integer.valueOf(args[5]);
    int bulkSize = Integer.valueOf(args[6]);
    int totalIterationCount = (int) Math.floor(totalDocs / bulkSize);
    // consider 40% of all iterations as warmup iterations
    int warmupIterations = (int) (0.4d * totalIterationCount);
    int iterations = totalIterationCount - warmupIterations;
    T client = client(benchmarkTargetHost);
    BenchmarkRunner benchmark = new BenchmarkRunner(warmupIterations, iterations, new BulkBenchmarkTask(bulkRequestExecutor(client, indexName, typeName), indexFilePath, warmupIterations, iterations, bulkSize));
    try {
        runTrials(() -> {
            runGc();
            benchmark.run();
        });
    } finally {
        client.close();
    }
}
Also used : BulkBenchmarkTask(org.elasticsearch.client.benchmark.ops.bulk.BulkBenchmarkTask) SuppressForbidden(org.elasticsearch.common.SuppressForbidden)

Example 17 with SuppressForbidden

use of org.elasticsearch.common.SuppressForbidden in project elasticsearch by elastic.

the class AbstractBenchmark method runSearchBenchmark.

@SuppressForbidden(reason = "system out is ok for a command line tool")
private void runSearchBenchmark(String[] args) throws Exception {
    if (args.length != 5) {
        System.err.println("usage: 'search' benchmarkTargetHostIp indexName searchRequestBody throughputRates");
        System.exit(1);
    }
    String benchmarkTargetHost = args[1];
    String indexName = args[2];
    String searchBody = args[3];
    List<Integer> throughputRates = Arrays.asList(args[4].split(",")).stream().map(Integer::valueOf).collect(Collectors.toList());
    T client = client(benchmarkTargetHost);
    try {
        runTrials(() -> {
            for (int throughput : throughputRates) {
                //GC between trials to reduce the likelihood of a GC occurring in the middle of a trial.
                runGc();
                BenchmarkRunner benchmark = new BenchmarkRunner(SEARCH_BENCHMARK_ITERATIONS, SEARCH_BENCHMARK_ITERATIONS, new SearchBenchmarkTask(searchRequestExecutor(client, indexName), searchBody, SEARCH_BENCHMARK_ITERATIONS, SEARCH_BENCHMARK_ITERATIONS, throughput));
                System.out.printf("Target throughput = %d ops / s%n", throughput);
                benchmark.run();
            }
        });
    } finally {
        client.close();
    }
}
Also used : SearchBenchmarkTask(org.elasticsearch.client.benchmark.ops.search.SearchBenchmarkTask) SuppressForbidden(org.elasticsearch.common.SuppressForbidden)

Example 18 with SuppressForbidden

use of org.elasticsearch.common.SuppressForbidden in project elasticsearch by elastic.

the class Ec2NameResolver method resolve.

/**
     * @param type the ec2 hostname type to discover.
     * @return the appropriate host resolved from ec2 meta-data, or null if it cannot be obtained.
     * @see CustomNameResolver#resolveIfPossible(String)
     */
@SuppressForbidden(reason = "We call getInputStream in doPrivileged and provide SocketPermission")
public InetAddress[] resolve(Ec2HostnameType type) throws IOException {
    InputStream in = null;
    String metadataUrl = AwsEc2ServiceImpl.EC2_METADATA_URL + type.ec2Name;
    try {
        URL url = new URL(metadataUrl);
        logger.debug("obtaining ec2 hostname from ec2 meta-data url {}", url);
        URLConnection urlConnection = SocketAccess.doPrivilegedIOException(url::openConnection);
        urlConnection.setConnectTimeout(2000);
        in = SocketAccess.doPrivilegedIOException(urlConnection::getInputStream);
        BufferedReader urlReader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
        String metadataResult = urlReader.readLine();
        if (metadataResult == null || metadataResult.length() == 0) {
            throw new IOException("no gce metadata returned from [" + url + "] for [" + type.configName + "]");
        }
        // only one address: because we explicitly ask for only one via the Ec2HostnameType
        return new InetAddress[] { InetAddress.getByName(metadataResult) };
    } catch (IOException e) {
        throw new IOException("IOException caught when fetching InetAddress from [" + metadataUrl + "]", e);
    } finally {
        IOUtils.closeWhileHandlingException(in);
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) InputStream(java.io.InputStream) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) InetAddress(java.net.InetAddress) URL(java.net.URL) URLConnection(java.net.URLConnection) SuppressForbidden(org.elasticsearch.common.SuppressForbidden)

Example 19 with SuppressForbidden

use of org.elasticsearch.common.SuppressForbidden in project elasticsearch by elastic.

the class Ec2DiscoveryPlugin method getAvailabilityZoneNodeAttributes.

// pkg private for testing
@SuppressForbidden(reason = "We call getInputStream in doPrivileged and provide SocketPermission")
static Settings getAvailabilityZoneNodeAttributes(Settings settings, String azMetadataUrl) {
    if (AwsEc2Service.AUTO_ATTRIBUTE_SETTING.get(settings) == false) {
        return Settings.EMPTY;
    }
    Settings.Builder attrs = Settings.builder();
    final URL url;
    final URLConnection urlConnection;
    try {
        url = new URL(azMetadataUrl);
        logger.debug("obtaining ec2 [placement/availability-zone] from ec2 meta-data url {}", url);
        urlConnection = SocketAccess.doPrivilegedIOException(url::openConnection);
        urlConnection.setConnectTimeout(2000);
    } catch (IOException e) {
        // should not happen, we know the url is not malformed, and openConnection does not actually hit network
        throw new UncheckedIOException(e);
    }
    try (InputStream in = SocketAccess.doPrivilegedIOException(urlConnection::getInputStream);
        BufferedReader urlReader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8))) {
        String metadataResult = urlReader.readLine();
        if (metadataResult == null || metadataResult.length() == 0) {
            throw new IllegalStateException("no ec2 metadata returned from " + url);
        } else {
            attrs.put(Node.NODE_ATTRIBUTES.getKey() + "aws_availability_zone", metadataResult);
        }
    } catch (IOException e) {
        // this is lenient so the plugin does not fail when installed outside of ec2
        logger.error("failed to get metadata for [placement/availability-zone]", e);
    }
    return attrs.build();
}
Also used : InputStreamReader(java.io.InputStreamReader) InputStream(java.io.InputStream) BufferedReader(java.io.BufferedReader) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) Settings(org.elasticsearch.common.settings.Settings) URL(java.net.URL) URLConnection(java.net.URLConnection) SuppressForbidden(org.elasticsearch.common.SuppressForbidden)

Example 20 with SuppressForbidden

use of org.elasticsearch.common.SuppressForbidden in project elasticsearch by elastic.

the class ESClientYamlSuiteTestCase method getFileSystem.

/**
     * Returns a new FileSystem to read REST resources, or null if they
     * are available from classpath.
     */
@SuppressForbidden(reason = "proper use of URL, hack around a JDK bug")
protected static FileSystem getFileSystem() throws IOException {
    // REST suite handling is currently complicated, with lots of filtering and so on
    // For now, to work embedded in a jar, return a ZipFileSystem over the jar contents.
    URL codeLocation = FileUtils.class.getProtectionDomain().getCodeSource().getLocation();
    boolean loadPackaged = RandomizedTest.systemPropertyAsBoolean(REST_LOAD_PACKAGED_TESTS, true);
    if (codeLocation.getFile().endsWith(".jar") && loadPackaged) {
        try {
            // hack around a bug in the zipfilesystem implementation before java 9,
            // its checkWritable was incorrect and it won't work without write permissions.
            // if we add the permission, it will open jars r/w, which is too scary! so copy to a safe r-w location.
            Path tmp = Files.createTempFile(null, ".jar");
            try (InputStream in = FileSystemUtils.openFileURLStream(codeLocation)) {
                Files.copy(in, tmp, StandardCopyOption.REPLACE_EXISTING);
            }
            return FileSystems.newFileSystem(new URI("jar:" + tmp.toUri()), Collections.emptyMap());
        } catch (URISyntaxException e) {
            throw new IOException("couldn't open zipfilesystem: ", e);
        }
    } else {
        return null;
    }
}
Also used : Path(java.nio.file.Path) InputStream(java.io.InputStream) URISyntaxException(java.net.URISyntaxException) IOException(java.io.IOException) URI(java.net.URI) URL(java.net.URL) SuppressForbidden(org.elasticsearch.common.SuppressForbidden)

Aggregations

SuppressForbidden (org.elasticsearch.common.SuppressForbidden)23 URL (java.net.URL)12 IOException (java.io.IOException)9 Path (java.nio.file.Path)8 InputStream (java.io.InputStream)5 FilePermission (java.io.FilePermission)4 URISyntaxException (java.net.URISyntaxException)4 BufferedReader (java.io.BufferedReader)3 InputStreamReader (java.io.InputStreamReader)3 URLConnection (java.net.URLConnection)3 Policy (java.security.Policy)3 HashMap (java.util.HashMap)3 UncheckedIOException (java.io.UncheckedIOException)2 FileStore (java.nio.file.FileStore)2 FileSystemException (java.nio.file.FileSystemException)2 Principal (java.security.Principal)2 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 ZipInputStream (java.util.zip.ZipInputStream)2 Subject (javax.security.auth.Subject)2