Example usage for com.google.common.util.concurrent UncheckedTimeoutException UncheckedTimeoutException

List of usage examples for com.google.common.util.concurrent UncheckedTimeoutException UncheckedTimeoutException

Introduction

In this page you can find the example usage for com.google.common.util.concurrent UncheckedTimeoutException UncheckedTimeoutException.

Prototype

public UncheckedTimeoutException(@Nullable Throwable cause) 

Source Link

Usage

From source file:org.jclouds.rest.internal.BlockOnFuture.java

private Object block(ListenableFuture<?> future, Optional<Long> timeoutNanos) {
    try {/*from w  w  w  . j av a 2 s  .  co  m*/
        if (timeoutNanos.isPresent()) {
            logger.debug(">> blocking on %s for %s", future, timeoutNanos);
            return getUninterruptibly(future, timeoutNanos.get(), NANOSECONDS);
        } else {
            logger.debug(">> blocking on %s", future);
            return getUninterruptibly(future);
        }
    } catch (ExecutionException e) {
        throw propagateCause(e);
    } catch (TimeoutException e) {
        future.cancel(true);
        throw new UncheckedTimeoutException(e);
    }
}

From source file:org.obiba.mica.search.JoinQueryExecutor.java

private JoinQueryResultDto query(QueryType type, JoinQuery joinQuery, CountStatsData.Builder countBuilder,
        QueryScope scope, QueryMode mode) {

    boolean havePermit = false;
    try {//w  ww .  j  a  v  a  2s .com
        havePermit = acquireSemaphorePermit();
        if (havePermit)
            return unsafeQuery(type, joinQuery, countBuilder, scope, mode);
        else
            throw new UncheckedTimeoutException("Too many queries in a short time. Please retry later.");
    } finally {
        if (havePermit)
            releaseSemaphorePermit();
    }
}

From source file:org.jclouds.docker.compute.extensions.DockerImageExtension.java

@Override
public ListenableFuture<Image> createImage(ImageTemplate template) {
    checkArgument(template instanceof CloneImageTemplate,
            " docker only currently supports creating images through cloning.");
    CloneImageTemplate cloneTemplate = (CloneImageTemplate) template;

    Container container = api.getRemoteApi().inspectContainer(cloneTemplate.getSourceNodeId());
    CommitOptions options = CommitOptions.Builder.containerId(container.getId()).tag(cloneTemplate.getName());
    org.jclouds.docker.domain.Image dockerImage = api.getRemoteApi().commit(options);

    dockerImage = org.jclouds.docker.domain.Image.builder().fromImage(dockerImage)
            .repoTags(ImmutableList.of(cloneTemplate.getName() + ":latest")).build();

    logger.info(">> Registered new image %s, waiting for it to become available.", dockerImage.getId());
    final AtomicReference<Image> image = Atomics.newReference(new ImageToImage().apply(dockerImage));
    return userExecutor.submit(new Callable<Image>() {
        @Override// ww  w .  j a v a2  s .c  o m
        public Image call() throws Exception {
            if (imageAvailablePredicate.apply(image))
                return image.get();
            throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get());
        }
    });
}

From source file:org.jclouds.virtualbox.functions.admin.StartVBoxIfNotAlreadyRunning.java

@PostConstruct
public void start() {
    URI provider = providerSupplier.get();
    NodeMetadata hostNodeMetadata = hardcodedHostToHostNodeMetadata.apply(host.get());

    if (!socketTester.apply(HostAndPort.fromParts(provider.getHost(), provider.getPort()))) {
        logger.debug("disabling password access");
        runScriptOnNodeFactory.create(hostNodeMetadata, exec("VBoxManage setproperty websrvauthlibrary null"),
                runAsRoot(false).wrapInInitScript(false)).init().call();

        logger.debug(">> starting vboxwebsrv");
        String vboxwebsrv = "vboxwebsrv -t0 -v -b -H " + providerSupplier.get().getHost();
        runScriptOnNodeFactory//from   w w w.j a v a2 s .co m
                .create(hostNodeMetadata, exec(vboxwebsrv),
                        runAsRoot(false).wrapInInitScript(false).blockOnComplete(false).nameTask("vboxwebsrv"))
                .init().call();

        if (!socketTester.apply(HostAndPort.fromParts(provider.getHost(), provider.getPort()))) {
            throw new UncheckedTimeoutException(
                    String.format("could not connect to virtualbox at %s", provider));
        }
    }

    manager = managerForNode.apply(host);
    manager.connect(provider.toASCIIString(), "", "");
    if (logger.isDebugEnabled())
        if (manager.getSessionObject().getState() != SessionState.Unlocked)
            logger.warn("manager is not in unlocked state " + manager.getSessionObject().getState());

}

From source file:org.jclouds.cloudservers.compute.extensions.CloudServersImageExtension.java

@Override
public ListenableFuture<Image> createImage(ImageTemplate template) {
    checkState(template instanceof CloneImageTemplate,
            " openstack-nova only supports creating images through cloning.");
    CloneImageTemplate cloneTemplate = (CloneImageTemplate) template;
    org.jclouds.cloudservers.domain.Image csImage = client.createImageFromServer(cloneTemplate.getName(),
            Integer.parseInt(cloneTemplate.getSourceNodeId()));

    final AtomicReference<Image> image = Atomics.newReference(new ImageBuilder().location(location.get())
            .ids(csImage.getId() + "").description(cloneTemplate.getName())
            .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build())
            .status(Image.Status.PENDING).build());

    return userExecutor.submit(new Callable<Image>() {
        @Override/* ww  w.j a va  2  s  .c o  m*/
        public Image call() throws Exception {
            if (imageAvailablePredicate.apply(image))
                return image.get();
            // TODO: get rid of the expectation that the image will be available, as it is very brittle
            throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get());
        }
    });
}

From source file:org.jclouds.digitalocean2.compute.extensions.DigitalOcean2ImageExtension.java

@Override
public ListenableFuture<Image> createImage(ImageTemplate template) {
    checkState(template instanceof CloneImageTemplate,
            "DigitalOcean only supports creating images through cloning.");
    final CloneImageTemplate cloneTemplate = (CloneImageTemplate) template;
    int dropletId = Integer.parseInt(cloneTemplate.getSourceNodeId());

    // Droplet needs to be active
    final Droplet droplet = api.dropletApi().get(dropletId);
    if (droplet.status() != Status.ACTIVE) {
        api.dropletApi().powerOn(dropletId);
        checkState(nodeRunningPredicate.apply(dropletId), "node was not powered on in the configured timeout");
    }/*from ww w.j  ava 2  s .c  om*/

    final Action snapshotEvent = api.dropletApi().snapshot(Integer.parseInt(cloneTemplate.getSourceNodeId()),
            cloneTemplate.getName());

    logger.info(">> registered new Image, waiting for it to become available");

    return userExecutor.submit(new Callable<Image>() {
        @Override
        public Image call() throws Exception {
            if (imageAvailablePredicate.apply(snapshotEvent.id())) {
                org.jclouds.digitalocean2.domain.Image snapshot = api.imageApi().list().concat()
                        .firstMatch(new Predicate<org.jclouds.digitalocean2.domain.Image>() {
                            @Override
                            public boolean apply(org.jclouds.digitalocean2.domain.Image input) {
                                return input.name().equals(cloneTemplate.getName());
                            }
                        }).get();

                return imageTransformer.apply(ImageInRegion.create(snapshot, droplet.region().slug()));
            }

            throw new UncheckedTimeoutException(
                    "Image was not created within the time limit: " + cloneTemplate.getName());
        }
    });
}

From source file:org.jclouds.ec2.compute.extensions.EC2ImageExtension.java

@Override
public ListenableFuture<Image> createImage(ImageTemplate template) {
    checkState(template instanceof CloneImageTemplate, " ec2 only supports creating images through cloning.");
    CloneImageTemplate cloneTemplate = (CloneImageTemplate) template;
    String[] parts = AWSUtils.parseHandle(cloneTemplate.getSourceNodeId());
    String region = parts[0];/* ww w . j  a va2 s.c om*/
    String instanceId = parts[1];

    String imageId = ec2Api.getAMIApi().get().createImageInRegion(region, cloneTemplate.getName(), instanceId,
            CreateImageOptions.NONE);

    final AtomicReference<Image> image = Atomics
            .newReference(new ImageBuilder().location(find(locations.get(), idEquals(region)))
                    .id(region + "/" + imageId).providerId(imageId).description(cloneTemplate.getName())
                    .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build())
                    .status(Image.Status.PENDING).build());

    return userExecutor.submit(new Callable<Image>() {
        @Override
        public Image call() throws Exception {
            if (imageAvailablePredicate.apply(image))
                return image.get();
            // TODO: get rid of the expectation that the image will be available, as it is very brittle
            throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get());
        }
    });
}

From source file:org.jclouds.openstack.nova.v2_0.compute.extensions.NovaImageExtension.java

@Override
public ListenableFuture<Image> createImage(ImageTemplate template) {
    checkState(template instanceof CloneImageTemplate,
            " openstack-nova only supports creating images through cloning.");
    CloneImageTemplate cloneTemplate = (CloneImageTemplate) template;
    ZoneAndId sourceImageZoneAndId = ZoneAndId.fromSlashEncoded(cloneTemplate.getSourceNodeId());

    String newImageId = novaApi.getServerApiForZone(sourceImageZoneAndId.getZone())
            .createImageFromServer(cloneTemplate.getName(), sourceImageZoneAndId.getId());

    final ZoneAndId targetImageZoneAndId = ZoneAndId.fromZoneAndId(sourceImageZoneAndId.getZone(), newImageId);

    logger.info(">> Registered new Image %s, waiting for it to become available.", newImageId);

    final AtomicReference<Image> image = Atomics.newReference(
            new ImageBuilder().location(find(locations.get(), idEquals(targetImageZoneAndId.getZone())))
                    .id(targetImageZoneAndId.slashEncode()).providerId(targetImageZoneAndId.getId())
                    .description(cloneTemplate.getName())
                    .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build())
                    .status(Image.Status.PENDING).build());

    return userExecutor.submit(new Callable<Image>() {
        @Override//from w w  w  .j a v  a2s . c om
        public Image call() throws Exception {
            if (imageAvailablePredicate.apply(image))
                return image.get();
            // TODO: get rid of the expectation that the image will be available, as it is very brittle
            throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get());
        }
    });
}

From source file:org.apache.jclouds.profitbricks.rest.compute.extensions.ProfitBricksImageExtension.java

@Override
public ListenableFuture<Image> createImage(ImageTemplate template) {
    final CloneImageTemplate cloneTemplate = (CloneImageTemplate) template;
    final DataCenterAndId datacenterAndId = DataCenterAndId.fromSlashEncoded(cloneTemplate.getSourceNodeId());

    final Server server = client.serverApi().getServer(datacenterAndId.getDataCenter(),
            datacenterAndId.getId());/*from ww  w  .  j  a  va2s  . c  om*/
    List<Volume> volumes = client.volumeApi().getList(server.dataCenterId());

    final Volume volume = Iterables.getOnlyElement(volumes);

    return userExecutor.submit(new Callable<Image>() {
        @Override
        public Image call() throws Exception {
            Snapshot snapshot = client.volumeApi()
                    .createSnapshot(Volume.Request.createSnapshotBuilder()
                            .dataCenterId(datacenterAndId.getDataCenter()).volumeId(volume.id())
                            .name(cloneTemplate.getName()).description(cloneTemplate.getName()).build());

            trackables.waitUntilRequestCompleted(snapshot);
            logger.info(">> Registered new snapshot %s, waiting for it to become available.", snapshot.id());

            final Image image = new ImageBuilder()
                    .location(find(locations.get(), idEquals(snapshot.properties().location().getId())))
                    .id(snapshot.id()).providerId(snapshot.id()).name(cloneTemplate.getName())
                    .description(cloneTemplate.getName())
                    .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build())
                    .status(Image.Status.PENDING).build();

            if (snapshotAvailablePredicate.apply(image.getId())) {
                return image;
            }
            throw new UncheckedTimeoutException("Image was not created within the time limit: " + image);
        }
    });
}

From source file:org.jclouds.cloudstack.compute.extensions.CloudStackImageExtension.java

@Override
public ListenableFuture<Image> createImage(ImageTemplate template) {
    checkState(template instanceof CloneImageTemplate,
            " cloudstack only currently supports creating images through cloning.");
    CloneImageTemplate cloneTemplate = (CloneImageTemplate) template;

    VirtualMachine vm = client.getVirtualMachineApi().getVirtualMachine(cloneTemplate.getSourceNodeId());
    String stopJob = client.getVirtualMachineApi().stopVirtualMachine(vm.getId());
    jobComplete.apply(stopJob);/*from  w  w  w.  jav a 2s  .com*/

    Set<Volume> volumes = client.getVolumeApi()
            .listVolumes(ListVolumesOptions.Builder.virtualMachineId(vm.getId()));
    Volume volume = Iterables.getOnlyElement(volumes);

    CreateTemplateOptions options = CreateTemplateOptions.Builder.volumeId(volume.getId());
    AsyncCreateResponse templateJob = client.getTemplateApi()
            .createTemplate(TemplateMetadata.builder().name(cloneTemplate.getName()).osTypeId(vm.getGuestOSId())
                    .displayText(cloneTemplate.getName()).build(), options);
    Template newTemplate = blockUntilJobCompletesAndReturnResult.<Template>apply(templateJob);

    logger.info(">> Registered new template %s, waiting for it to become available.", newTemplate.getId());

    final AtomicReference<Image> image = Atomics.newReference(
            new ImageBuilder().location(find(locations.get(), idEquals(vm.getZoneId()))).id(newTemplate.getId())
                    .providerId(newTemplate.getId()).description(cloneTemplate.getName())
                    .operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build())
                    .status(Image.Status.PENDING).build());

    return userExecutor.submit(new Callable<Image>() {
        @Override
        public Image call() throws Exception {
            if (imageAvailablePredicate.apply(image))
                return image.get();
            // TODO: get rid of the expectation that the image will be available, as it is very brittle
            throw new UncheckedTimeoutException("Image was not created within the time limit: " + image.get());
        }
    });
}