mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-12-18 12:47:50 +08:00
Java: FilerProto.Entry can read size via attributes
This commit is contained in:
parent
00c4e06caa
commit
2ead7adaff
@ -59,24 +59,43 @@ public class FilerClient extends FilerGrpcClient {
|
|||||||
|
|
||||||
public static FilerProto.Entry afterEntryDeserialization(FilerProto.Entry entry) {
|
public static FilerProto.Entry afterEntryDeserialization(FilerProto.Entry entry) {
|
||||||
if (entry.getChunksList().size() <= 0) {
|
if (entry.getChunksList().size() <= 0) {
|
||||||
return entry;
|
if (entry.getContent().isEmpty()) {
|
||||||
}
|
return entry;
|
||||||
String fileId = entry.getChunks(0).getFileId();
|
} else {
|
||||||
if (fileId != null && fileId.length() != 0) {
|
if (entry.getAttributes().getFileSize() <= 0) {
|
||||||
return entry;
|
FilerProto.Entry.Builder entryBuilder = entry.toBuilder();
|
||||||
}
|
FilerProto.FuseAttributes.Builder attrBuilder = entry.getAttributes().toBuilder();
|
||||||
FilerProto.Entry.Builder entryBuilder = entry.toBuilder();
|
attrBuilder.setFileSize(entry.getContent().size());
|
||||||
entryBuilder.clearChunks();
|
entryBuilder.setAttributes(attrBuilder);
|
||||||
for (FilerProto.FileChunk chunk : entry.getChunksList()) {
|
return entryBuilder.build();
|
||||||
FilerProto.FileChunk.Builder chunkBuilder = chunk.toBuilder();
|
}
|
||||||
chunkBuilder.setFileId(toFileId(chunk.getFid()));
|
|
||||||
String sourceFileId = toFileId(chunk.getSourceFid());
|
|
||||||
if (sourceFileId != null) {
|
|
||||||
chunkBuilder.setSourceFileId(sourceFileId);
|
|
||||||
}
|
}
|
||||||
entryBuilder.addChunks(chunkBuilder);
|
return entry;
|
||||||
|
} else {
|
||||||
|
String fileId = entry.getChunks(0).getFileId();
|
||||||
|
if (fileId != null && fileId.length() != 0) {
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
FilerProto.Entry.Builder entryBuilder = entry.toBuilder();
|
||||||
|
entryBuilder.clearChunks();
|
||||||
|
long fileSize = 0;
|
||||||
|
for (FilerProto.FileChunk chunk : entry.getChunksList()) {
|
||||||
|
fileSize = Math.max(fileSize, chunk.getOffset()+chunk.getSize());
|
||||||
|
FilerProto.FileChunk.Builder chunkBuilder = chunk.toBuilder();
|
||||||
|
chunkBuilder.setFileId(toFileId(chunk.getFid()));
|
||||||
|
String sourceFileId = toFileId(chunk.getSourceFid());
|
||||||
|
if (sourceFileId != null) {
|
||||||
|
chunkBuilder.setSourceFileId(sourceFileId);
|
||||||
|
}
|
||||||
|
entryBuilder.addChunks(chunkBuilder);
|
||||||
|
}
|
||||||
|
if (entry.getAttributes().getFileSize() <= 0) {
|
||||||
|
FilerProto.FuseAttributes.Builder attrBuilder = entry.getAttributes().toBuilder();
|
||||||
|
attrBuilder.setFileSize(fileSize);
|
||||||
|
entryBuilder.setAttributes(attrBuilder);
|
||||||
|
}
|
||||||
|
return entryBuilder.build();
|
||||||
}
|
}
|
||||||
return entryBuilder.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean mkdirs(String path, int mode) {
|
public boolean mkdirs(String path, int mode) {
|
||||||
|
Loading…
Reference in New Issue
Block a user