The preview engine is not online

I just finished setting up Dremio on AWS (EC2). I am able to add data sources, but both of them - RDS PostgreSQL and S3 - give the error message “The preview engine is not online.” when I click on them. I see tons of error stack traces in the logs (see below). I selected a one-node custom installation instead of the recommended 2, not sure if this could cause this.

2020-06-26 10:24:54,993 [source-management2] ERROR c.d.e.store.jdbc.JdbcStoragePlugin -     Connection is not valid.
java.lang.NullPointerException: null
        at com.dremio.exec.store.jdbc.JdbcStoragePlugin.getState(JdbcStoragePlugin.java:360)
        at com.dremio.exec.catalog.ManagedStoragePlugin.lambda$refreshState$6(ManagedStoragePlugin.java:822)
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2020-06-26 10:25:54,992 [source-management2] ERROR c.d.e.store.jdbc.JdbcStoragePlugin - Connection is not valid.
java.lang.NullPointerException: null
        at com.dremio.exec.store.jdbc.JdbcStoragePlugin.getState(JdbcStoragePlugin.java:360)
        at com.dremio.exec.catalog.ManagedStoragePlugin.lambda$refreshState$6(ManagedStoragePlugin.java:822)
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2020-06-26 10:26:54,993 [source-management2] ERROR c.d.e.store.jdbc.JdbcStoragePlugin - Connection is not valid.
java.lang.NullPointerException: null
        at com.dremio.exec.store.jdbc.JdbcStoragePlugin.getState(JdbcStoragePlugin.java:360)
        at com.dremio.exec.catalog.ManagedStoragePlugin.lambda$refreshState$6(ManagedStoragePlugin.java:822)
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2020-06-26 10:27:54,993 [source-management2] ERROR c.d.e.store.jdbc.JdbcStoragePlugin - Connection is not valid.
java.lang.NullPointerException: null
        at com.dremio.exec.store.jdbc.JdbcStoragePlugin.getState(JdbcStoragePlugin.java:360)
        at com.dremio.exec.catalog.ManagedStoragePlugin.lambda$refreshState$6(ManagedStoragePlugin.java:822)
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2020-06-26 10:28:54,992 [source-management2] ERROR c.d.e.store.jdbc.JdbcStoragePlugin - Connection is not valid.
java.lang.NullPointerException: null
        at com.dremio.exec.store.jdbc.JdbcStoragePlugin.getState(JdbcStoragePlugin.java:360)
        at com.dremio.exec.catalog.ManagedStoragePlugin.lambda$refreshState$6(ManagedStoragePlugin.java:822)
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2020-06-26 10:29:03,811 [210a3211-3aa4-355d-b479-2965d5ef2d00: resourceallocator] WARN  c.d.r.wlm.scheduler.QueueMonitor - Failed to start engine preview.
java.util.concurrent.ExecutionException: com.dremio.provision.service.ProvisioningService$NoClusterException
        at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
        at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)
        at com.dremio.resource.wlm.scheduler.QueueMonitor.startClusterIfNecessary(QueueMonitor.java:184)
        at com.dremio.resource.wlm.scheduler.DremioWLMAllocator.startClusterIfNecessary(DremioWLMAllocator.java:333)
        at com.dremio.resource.wlm.scheduler.DremioWLMAllocator.lambda$allocate$0(DremioWLMAllocator.java:232)
        at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
        at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
        at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
        at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:322)
        at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
        at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:66)
        at com.dremio.resource.wlm.scheduler.DremioWLMAllocator.allocate(DremioWLMAllocator.java:210)
        at com.dremio.resource.wlm.redirector.WLMResourceAllocatorDecorator.allocate(WLMResourceAllocatorDecorator.java:167)
        at com.dremio.exec.maestro.ResourceTracker.allocate(ResourceTracker.java:80)
        at com.dremio.exec.maestro.ResourceTracker.<init>(ResourceTracker.java:59)
        at com.dremio.exec.maestro.QueryTrackerImpl.allocateResources(QueryTrackerImpl.java:104)
        at com.dremio.exec.maestro.MaestroServiceImpl.executeQuery(MaestroServiceImpl.java:137)
        at com.dremio.exec.work.foreman.AttemptManager.run(AttemptManager.java:320)
        at com.dremio.common.concurrent.ContextMigratingExecutorService.lambda$decorate$3(ContextMigratingExecutorService.java:192)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: com.dremio.provision.service.ProvisioningService$NoClusterException: null
        at com.dremio.provision.service.ProvisioningServiceImpl.findClusters(ProvisioningServiceImpl.java:604)
        at com.dremio.provision.service.ProvisioningServiceImpl.doAction(ProvisioningServiceImpl.java:612)
        at com.dremio.provision.service.ProvisioningServiceImpl.autostartCluster(ProvisioningServiceImpl.java:677)
        at com.dremio.resource.wlm.scheduler.QueueMonitor.getService(QueueMonitor.java:162)
        at com.dremio.resource.wlm.scheduler.QueueMonitor.startClusterIfNecessary(QueueMonitor.java:179)
        ... 19 common frames omitted
2020-06-26 10:29:03,836 [210a3211-3aa4-355d-b479-2965d5ef2d00:execution-planning] INFO  c.d.s.e.ExecutorSelectionUtils - User Error Occurred [ErrorId: ad9234ca-e41b-485f-9d99-5161405756b9]
com.dremio.common.exceptions.UserException: The preview engine is not online.
        at com.dremio.common.exceptions.UserException$Builder.build(UserException.java:802)
        at com.dremio.service.execselector.ExecutorSelectionUtils.throwEngineOffline(ExecutorSelectionUtils.java:32)
        at com.dremio.exec.planner.fragment.SimpleParallelizer.getFragmentsHelper(SimpleParallelizer.java:297)
        at com.dremio.exec.maestro.planner.ExecutionPlanCreator.getParallelizationInfo(ExecutionPlanCreator.java:74)
        at com.dremio.exec.maestro.QueryTrackerImpl.planExecution(QueryTrackerImpl.java:109)
        at com.dremio.exec.maestro.MaestroServiceImpl.lambda$executeQuery$2(MaestroServiceImpl.java:148)
        at com.dremio.service.commandpool.CommandWrapper.run(CommandWrapper.java:62)
        at com.dremio.common.concurrent.ContextMigratingExecutorService.lambda$decorate$3(ContextMigratingExecutorService.java:192)
        at com.dremio.common.concurrent.ContextMigratingExecutorService$ComparableRunnable.run(ContextMigratingExecutorService.java:174)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2020-06-26 10:29:03,848 [210a3211-3aa4-355d-b479-2965d5ef2d00:execution-planning] ERROR c.d.s.commandpool.CommandWrapper - command 210a3211-3aa4-355d-b479-2965d5ef2d00:execution-planning failed
com.dremio.common.exceptions.UserException: The preview engine is not online.
        at com.dremio.common.exceptions.UserException$Builder.build(UserException.java:802)
        at com.dremio.service.execselector.ExecutorSelectionUtils.throwEngineOffline(ExecutorSelectionUtils.java:32)
        at com.dremio.exec.planner.fragment.SimpleParallelizer.getFragmentsHelper(SimpleParallelizer.java:297)
        at com.dremio.exec.maestro.planner.ExecutionPlanCreator.getParallelizationInfo(ExecutionPlanCreator.java:74)
        at com.dremio.exec.maestro.QueryTrackerImpl.planExecution(QueryTrackerImpl.java:109)
        at com.dremio.exec.maestro.MaestroServiceImpl.lambda$executeQuery$2(MaestroServiceImpl.java:148)
        at com.dremio.service.commandpool.CommandWrapper.run(CommandWrapper.java:62)
        at com.dremio.common.concurrent.ContextMigratingExecutorService.lambda$decorate$3(ContextMigratingExecutorService.java:192)
        at com.dremio.common.concurrent.ContextMigratingExecutorService$ComparableRunnable.run(ContextMigratingExecutorService.java:174)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

This was fixed when I recreated the coordinator instance and assigned a public IP to it. The previous had only private IP.

Good to know the fix. I am unable to add a public IP to a VPC without an AWS admin. Any other fixes would help, including info on the preview engine instance if it’s separate and how to connect into it using a VPC security group approach.