public void run()

in src/main/java/com/amazonaws/services/neptune/ExportPropertyGraph.java [88:156]


    public void run() {

        try {
            Timer.timedActivity("exporting property graph", (CheckedActivity.Runnable) () -> {
                try (Cluster cluster = cloneStrategy.cloneCluster(
                        connection.clusterMetadata(),
                        connection.config(),
                        concurrency.config(),
                        featureToggles())) {

                    Directories directories = target.createDirectories();

                    JsonResource<GraphSchema, Boolean> configFileResource = directories.configFileResource();
                    JsonResource<EventId, Object> eventIdFileResource = directories.lastEventIdFileResource();
                    JsonResource<ExportStats, GraphSchema> statsFileResource = directories.statsFileResource();

                    GetLastEventIdStrategy getLastEventIdStrategy = streams.lastEventIdStrategy(cluster, eventIdFileResource);
                    getLastEventIdStrategy.saveLastEventId("gremlin");

                    GraphSchema graphSchema = graphSchemaProvider.graphSchema();
                    ExportStats stats = new ExportStats();

                    PropertyGraphTargetConfig targetConfig = target.config(directories, printerOptions.config());

                    Collection<ExportSpecification> exportSpecifications = scope.exportSpecifications(
                            graphSchema,
                            gremlinFilters.filters(),
                            stats,
                            featureToggles());

                    try (NeptuneGremlinClient client = NeptuneGremlinClient.create(cluster, serialization.config());
                         GraphTraversalSource g = client.newTraversalSource()) {

                        ExportPropertyGraphJob exportJob = new ExportPropertyGraphJob(
                                exportSpecifications,
                                graphSchema,
                                g,
                                range.config(),
                                gremlinFilters.filters(),
                                cluster.concurrencyConfig(),
                                targetConfig,
                                featureToggles(),
                                getMaxFileDescriptorCount()
                        );

                        graphSchema = Timer.timedActivity(
                                "export",
                                (CheckedActivity.Callable<GraphSchema>) exportJob::execute);

                        configFileResource.save(graphSchema, false);
                        statsFileResource.save(stats, graphSchema);
                    }

                    directories.writeRootDirectoryPathAsMessage(target.description(), target);
                    configFileResource.writeResourcePathAsMessage(target);
                    getLastEventIdStrategy.writeLastEventIdResourcePathAsMessage(target);

                    System.err.println();
                    System.err.println(stats.formatStats(graphSchema));

                    directories.writeRootDirectoryPathAsReturnValue(target);
                    onExportComplete(directories, stats, cluster, graphSchema);

                }
            });
        } catch (Exception e) {
            handleException(e);
        }
    }