You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by al...@apache.org on 2014/12/01 22:29:40 UTC
svn commit: r1642765 -
/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/NodeStoreTree.java
Author: alexparvulescu
Date: Mon Dec 1 21:29:40 2014
New Revision: 1642765
URL: http://svn.apache.org/r1642765
Log:
OAK-2313 Better handling for external binaries in the segment explorer
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/NodeStoreTree.java
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/NodeStoreTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/NodeStoreTree.java?rev=1642765&r1=1642764&r2=1642765&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/NodeStoreTree.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/explorer/NodeStoreTree.java Mon Dec 1 21:29:40 2014
@@ -308,9 +308,9 @@ public class NodeStoreTree extends JPane
Blob b = ps.getValue(Type.BINARY, index);
String info = "<";
info += b.getClass().getSimpleName() + ";";
- info += "ref:" + b.getReference() + ";";
+ info += "ref:" + safeGetReference(b) + ";";
info += "id:" + b.getContentIdentity() + ";";
- info += FileUtils.byteCountToDisplaySize(b.length()) + ">";
+ info += safeGetLength(b) + ">";
for (SegmentId sid : SegmentBlob.getBulkSegmentIds(b)) {
info += newline + " Bulk Segment Id " + sid;
String f = getFile(sid);
@@ -335,6 +335,24 @@ public class NodeStoreTree extends JPane
}
}
+ private String safeGetReference(Blob b) {
+ try {
+ return b.getReference();
+ } catch (IllegalStateException e) {
+ // missing BlobStore probably
+ }
+ return "[BlobStore not available]";
+ }
+
+ private String safeGetLength(Blob b) {
+ try {
+ return FileUtils.byteCountToDisplaySize(b.length());
+ } catch (IllegalStateException e) {
+ // missing BlobStore probably
+ }
+ return "[BlobStore not available]";
+ }
+
private String getFile(RecordId id) {
return getFile(id.getSegmentId());
}
@@ -426,6 +444,13 @@ public class NodeStoreTree extends JPane
StringBuilder sb = new StringBuilder();
sb.append("SegmentNodeState references to " + id);
sb.append(newline);
+ for (Entry<String, Set<UUID>> e : store.getTarReaderIndex().entrySet()) {
+ if (e.getValue().contains(id)) {
+ sb.append("Tar file: " + e.getKey());
+ sb.append(newline);
+ break;
+ }
+ }
List<String> paths = newArrayList();
filterNodeStates(newHashSet(id), paths, store.getHead(), "/");
@@ -729,7 +754,16 @@ public class NodeStoreTree extends JPane
}
for (PropertyState ps : ns.getProperties()) {
for (int j = 0; j < ps.count(); j++) {
- s[0] = s[0] + ps.size(j);
+ if (ps.getType().tag() == Type.BINARY.tag()) {
+ Blob b = ps.getValue(Type.BINARY, j);
+ boolean skip = b instanceof SegmentBlob
+ && ((SegmentBlob) b).isExternal();
+ if (!skip) {
+ s[0] = s[0] + b.length();
+ }
+ } else {
+ s[0] = s[0] + ps.size(j);
+ }
}
}
sizeCache.put(key, s);