Skip to content

Commit 3fca7b1

Browse files
committed
fix: skip broken records in export
1 parent 1771c9b commit 3fca7b1

File tree

2 files changed

+50
-44
lines changed

2 files changed

+50
-44
lines changed

integration/src/main/java/com/arcadedb/integration/exporter/Exporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public Map<String, Object> exportDatabase() {
9595
final Map<String, Object> result = new LinkedHashMap<>();
9696
if (totalRecords > 0)
9797
result.put("totalRecords", totalRecords);
98-
result.put("elapsedInSecs", totalRecords);
98+
result.put("elapsedInSecs", elapsedInSecs);
9999
if (context.documents.get() > 0)
100100
result.put("documents", context.documents.get());
101101
if (context.vertices.get() > 0)

integration/src/main/java/com/arcadedb/integration/exporter/format/JsonlExporterFormat.java

Lines changed: 49 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -29,32 +29,26 @@
2929
import com.arcadedb.integration.exporter.ExporterContext;
3030
import com.arcadedb.integration.exporter.ExporterSettings;
3131
import com.arcadedb.integration.importer.ConsoleLogger;
32+
import com.arcadedb.log.LogManager;
3233
import com.arcadedb.schema.DocumentType;
3334
import com.arcadedb.schema.LocalEdgeType;
3435
import com.arcadedb.schema.LocalSchema;
3536
import com.arcadedb.schema.LocalVertexType;
3637
import com.arcadedb.serializer.JsonGraphSerializer;
3738
import com.arcadedb.serializer.json.JSONObject;
3839

39-
import java.io.File;
40-
import java.io.FileOutputStream;
41-
import java.io.IOException;
42-
import java.io.OutputStreamWriter;
43-
import java.util.ArrayList;
44-
import java.util.Iterator;
45-
import java.util.List;
46-
import java.util.zip.GZIPOutputStream;
40+
import java.io.*;
41+
import java.util.*;
42+
import java.util.logging.*;
43+
import java.util.zip.*;
4744

4845
public class JsonlExporterFormat extends AbstractExporterFormat {
4946
public static final String NAME = "jsonl";
5047
protected final JSONObject sharedJson = new JSONObject();
5148
private OutputStreamWriter writer;
5249
private final static int VERSION = 1;
5350

54-
public JsonlExporterFormat(
55-
final DatabaseInternal database,
56-
final ExporterSettings settings,
57-
final ExporterContext context,
51+
public JsonlExporterFormat(final DatabaseInternal database, final ExporterSettings settings, final ExporterContext context,
5852
final ConsoleLogger logger) {
5953
super(database, settings, context, logger);
6054
}
@@ -88,18 +82,12 @@ public void exportDatabase() throws Exception {
8882
DatabaseFactory.getDefaultCharset())) {
8983
writer = fileWriter;
9084

91-
writeJsonLine("info", new JSONObject()
92-
.put("description", "ArcadeDB Database Export")
93-
.put("exporterVersion", VERSION)//
94-
.put("dbVersion", Constants.getRawVersion())
95-
.put("dbBranch", Constants.getBranch())
96-
.put("dbBuild", Constants.getBuildNumber())
97-
.put("dbTimestamp", Constants.getTimestamp()));
85+
writeJsonLine("info", new JSONObject().put("description", "ArcadeDB Database Export").put("exporterVersion", VERSION)//
86+
.put("dbVersion", Constants.getRawVersion()).put("dbBranch", Constants.getBranch())
87+
.put("dbBuild", Constants.getBuildNumber()).put("dbTimestamp", Constants.getTimestamp()));
9888

9989
final long now = System.currentTimeMillis();
100-
writeJsonLine("db", new JSONObject()
101-
.put("name", database.getName())
102-
.put("executedOn", dateFormat.format(now))
90+
writeJsonLine("db", new JSONObject().put("name", database.getName()).put("executedOn", dateFormat.format(now))
10391
.put("executedOnTimestamp", now));
10492

10593
writeJsonLine("schema", ((LocalSchema) database.getSchema()).toJSON());
@@ -142,41 +130,59 @@ public String getName() {
142130
private void exportVertices(final List<String> vertexTypes, final JsonGraphSerializer graphSerializer) throws IOException {
143131
for (final String type : vertexTypes) {
144132
for (final Iterator<Record> cursor = database.iterateType(type, false); cursor.hasNext(); ) {
145-
final Vertex record = cursor.next().asVertex(true);
146-
147-
if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString()))
148-
continue;
149-
150-
writeJsonLine("v", graphSerializer.serializeGraphElement(record));
151-
context.vertices.incrementAndGet();
133+
Vertex record = null;
134+
try {
135+
record = cursor.next().asVertex(true);
136+
137+
if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString()))
138+
continue;
139+
140+
writeJsonLine("v", graphSerializer.serializeGraphElement(record));
141+
context.vertices.incrementAndGet();
142+
} catch (Exception e) {
143+
LogManager.instance()
144+
.log(this, Level.SEVERE, "Error on exporting vertex %s", e, record != null ? record.getIdentity() : null);
145+
}
152146
}
153147
}
154148
}
155149

156150
private void exportEdges(final List<String> edgeTypes, final JsonGraphSerializer graphSerializer) throws IOException {
157151
for (final String type : edgeTypes) {
158152
for (final Iterator<Record> cursor = database.iterateType(type, false); cursor.hasNext(); ) {
159-
final Edge record = cursor.next().asEdge(true);
160-
161-
if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString()))
162-
continue;
163-
164-
writeJsonLine("e", graphSerializer.serializeGraphElement(record));
165-
context.edges.incrementAndGet();
153+
Edge record = null;
154+
try {
155+
record = cursor.next().asEdge(true);
156+
157+
if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString()))
158+
continue;
159+
160+
writeJsonLine("e", graphSerializer.serializeGraphElement(record));
161+
context.edges.incrementAndGet();
162+
} catch (Exception e) {
163+
LogManager.instance()
164+
.log(this, Level.SEVERE, "Error on exporting vertex %s", e, record != null ? record.getIdentity() : null);
165+
}
166166
}
167167
}
168168
}
169169

170170
private void exportDocuments(final List<String> documentTypes, final JsonGraphSerializer graphSerializer) throws IOException {
171171
for (final String type : documentTypes) {
172172
for (final Iterator<Record> cursor = database.iterateType(type, false); cursor.hasNext(); ) {
173-
final Document record = cursor.next().asDocument(true);
174-
175-
if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString()))
176-
continue;
177-
178-
writeJsonLine("d", graphSerializer.serializeGraphElement(record));
179-
context.documents.incrementAndGet();
173+
Document record = null;
174+
try {
175+
record = cursor.next().asDocument(true);
176+
177+
if (settings.includeRecords != null && !settings.includeRecords.contains(record.getIdentity().toString()))
178+
continue;
179+
180+
writeJsonLine("d", graphSerializer.serializeGraphElement(record));
181+
context.documents.incrementAndGet();
182+
} catch (Exception e) {
183+
LogManager.instance()
184+
.log(this, Level.SEVERE, "Error on exporting vertex %s", e, record != null ? record.getIdentity() : null);
185+
}
180186
}
181187
}
182188
}

0 commit comments

Comments
 (0)