Browse Source

skip file content reading if unnecessary

Shelikhoo 4 years ago
parent
commit
a8c58c9ad4
1 changed files with 9 additions and 1 deletions
  1. 9 1
      common/protofilter/filter.go

+ 9 - 1
common/protofilter/filter.go

@@ -64,6 +64,15 @@ func filterMessage(ctx context.Context, message protoreflect.Message) error {
 	fsenvironment := envctx.EnvironmentFromContext(ctx)
 	fsifce := fsenvironment.(filesystemcap.FileSystemCapabilitySet)
 	for _, v := range fileReadingQueue {
+		field := message.Descriptor().Fields().ByTextName(v.field)
+		if v.filename == "" {
+			continue
+		}
+
+		if len(message.Get(field).Bytes()) > 0 {
+			continue
+		}
+
 		file, err := fsifce.OpenFileForRead()(v.filename)
 		if err != nil {
 			return newError("unable to open file").Base(err)
@@ -73,7 +82,6 @@ func filterMessage(ctx context.Context, message protoreflect.Message) error {
 			return newError("unable to read file").Base(err)
 		}
 		file.Close()
-		field := message.Descriptor().Fields().ByTextName(v.field)
 		message.Set(field, protoreflect.ValueOf(fileContent))
 	}
 	return nil