浏览代码

FileFields map加锁

fengweiqiang 6 年之前
父节点
当前提交
c861475b06
共有 2 个文件被更改,包括 11 次插入9 次删除
  1. 5 5
      src/jy/extract/extract.go
  2. 6 4
      src/jy/extract/extractInit.go

+ 5 - 5
src/jy/extract/extract.go

@@ -413,7 +413,7 @@ func (e *ExtractTask) ExtractFile(j *ju.Job) {
 		doc := *j.Data
 		//全局前置规则,结果覆盖doc属性
 		for _, v := range e.RulePres {
-			if e.FileFields[v.Field] > 0 {
+			if value, ok := e.FileFields.Load(v.Field);ok && qu.IntAllDef(value,1) >0{
 				doc = ExtRegPre(doc, j, v, e.TaskInfo)
 			}
 		}
@@ -426,7 +426,7 @@ func (e *ExtractTask) ExtractFile(j *ju.Job) {
 			}
 			//抽取-前置规则
 			for _, v := range vc.RulePres {
-				if e.FileFields[vc.Field] > 0 {
+				if value, ok := e.FileFields.Load(v.Field);ok && qu.IntAllDef(value,1) >0{
 					tmp = ExtRegPre(tmp, j, v, e.TaskInfo)
 				}
 			}
@@ -434,7 +434,7 @@ func (e *ExtractTask) ExtractFile(j *ju.Job) {
 
 			//抽取-规则
 			for _, v := range vc.RuleCores {
-				if e.FileFields[vc.Field] > 0 {
+				if value, ok := e.FileFields.Load(v.Field);ok && qu.IntAllDef(value,1) >0{
 					ExtRegCore(vc.ExtFrom, tmp, j, v, e)
 				}
 			}
@@ -442,7 +442,7 @@ func (e *ExtractTask) ExtractFile(j *ju.Job) {
 
 			//抽取-后置规则
 			for _, v := range vc.RuleBacks {
-				if e.FileFields[vc.Field] > 0 {
+				if value, ok := e.FileFields.Load(v.Field);ok && qu.IntAllDef(value,1) >0{
 					ExtRegBack(j, v, e.TaskInfo)
 				}
 			}
@@ -451,7 +451,7 @@ func (e *ExtractTask) ExtractFile(j *ju.Job) {
 
 		//全局后置规则
 		for _, v := range e.RuleBacks {
-			if e.FileFields[v.Field] > 0 {
+			if value, ok := e.FileFields.Load(v.Field);ok && qu.IntAllDef(value,1) >0{
 				ExtRegBack(j, v, e.TaskInfo)
 			}
 		}

+ 6 - 4
src/jy/extract/extractInit.go

@@ -9,6 +9,7 @@ import (
 	"sort"
 	"strconv"
 	"strings"
+	"sync"
 	"time"
 
 	log "github.com/donnie4w/go-logger/logger"
@@ -68,7 +69,7 @@ type ExtractTask struct {
 	Fields        map[string]int      //抽取属性组
 
 	IsFileField bool           //是否开启附件抽取
-	FileFields  map[string]int //抽取附件属性组
+	FileFields  *sync.Map //抽取附件属性组
 
 	ResultChanel chan bool                  //抽取结果详情
 	ResultArr    [][]map[string]interface{} //抽取结果详情
@@ -922,13 +923,14 @@ func (e *ExtractTask) InitFile() {
 	if (*ve)["isfiles"] != nil && (*ve)["isfiles"].(bool) {
 		e.IsFileField = true
 	}
-	efiled := make(map[string]int, 0)
+	syscefiled := new(sync.Map)
+
 	if (*ve)["s_filefileds"] != nil {
 		for _, vff := range (*ve)["s_filefileds"].([]interface{}) {
-			efiled[vff.(string)] = 1
+			syscefiled.Store(vff.(string),1)
 		}
 	}
-	e.FileFields = efiled
+	e.FileFields = syscefiled
 }
 
 //加载清理任务信息