Эх сурвалжийг харах

修改项目索引生成问题

5 жил өмнө
parent
commit
ce9bb9703d

+ 7 - 2
fullproject/src_v1/main.go

@@ -41,8 +41,13 @@ func DealSign() {
 			log.Println("receive:", sign)
 			if v, ok := sign.(syscall.Signal); ok && v == os.Interrupt {
 				log.Println("receice signal..,start close iter")
-				queryClose <- true
-				<-queryCloseOver
+				if P_QL.Brun {
+					queryClose <- true
+					select {
+					case <-queryCloseOver:
+					case <-time.After(30 * time.Second):
+					}
+				}
 				util.ReadConfig(&Sysconfig)
 				log.Println("signal deal over")
 			}

+ 14 - 9
fullproject/src_v1/task.go

@@ -58,6 +58,7 @@ type ProjectTask struct {
 	//	LockPoolLock sync.Mutex
 	//	m1, m23, m4  map[int]int
 	//	l1, l23, l4  map[int]*sync.Mutex
+	Brun bool
 }
 
 func NewPT() *ProjectTask {
@@ -83,6 +84,7 @@ func NewPT() *ProjectTask {
 }
 
 var P_QL *ProjectTask
+var sp = make(chan bool, 5)
 
 //初始化全量合并对象
 func init() {
@@ -95,7 +97,6 @@ func init() {
 func (p *ProjectTask) updateAllQueue() {
 	arru := make([][]map[string]interface{}, p.saveSize)
 	indexu := 0
-	sp := make(chan bool, 5)
 	for {
 		select {
 		case v := <-p.updatePool:
@@ -282,15 +283,15 @@ func (p *ProjectTask) taskZl(udpInfo map[string]interface{}) {
 		//生成查询语句执行
 		p.enter(db, coll, q)
 	}
-	for {
-		if len(P_QL.updatePool) > 0 {
-			log.Println("等待调用udp", len(P_QL.updatePool))
-			time.Sleep(1 * time.Second)
-		} else {
-			break
-		}
-	}
 	if udpInfo["stop"] == nil {
+		for i := 0; i < 5; i++ {
+			sp <- true
+		}
+		for i := 0; i < 5; i++ {
+			<-sp
+		}
+		log.Println("保存完成,生索引", p.pici)
+		time.Sleep(5 * time.Second)
 		nextNode(udpInfo, p.pici)
 	}
 }
@@ -318,6 +319,10 @@ func nextNode(mapInfo map[string]interface{}, pici int64) {
 
 func (p *ProjectTask) enter(db, coll string, q map[string]interface{}) {
 	defer util.Catch()
+	defer func() {
+		p.Brun = false
+	}()
+	p.Brun = true
 	count, taskcount := 0, 0
 
 	pool := make(chan bool, p.thread)

+ 13 - 11
udpcreateindex/src/biddingindex.go

@@ -325,20 +325,22 @@ func DealInfo(obj, update *map[string]interface{}) {
 	var m [][]string
 	select {
 	case <-func() <-chan bool {
-		select {
-		case keypool <- true:
-			defer func() {
-				<-keypool
-			}()
-			ret, _ := client.Call("", mu.UUID(8), 4010, mu.SENDTO_TYPE_RAND_RECIVER, title, 1)
-			json.Unmarshal(ret, &m)
-		case <-time.After(5 * time.Millisecond):
-		}
 		ch := make(chan bool, 1)
-		ch <- true
+		go func(chan bool) {
+			select {
+			case keypool <- true:
+				defer func() {
+					<-keypool
+				}()
+				ret, _ := client.Call("", mu.UUID(8), 4010, mu.SENDTO_TYPE_RAND_RECIVER, title, 1)
+				json.Unmarshal(ret, &m)
+			case <-time.After(10 * time.Millisecond):
+			}
+			ch <- true
+		}(ch)
 		return ch
 	}():
-	case <-time.After(20 * time.Millisecond):
+	case <-time.After(40 * time.Millisecond):
 	}
 	arr := []string{}
 	keyword := []string{}

+ 2 - 1
udpcreateindex/src/projectindex.go

@@ -37,13 +37,14 @@ func projectTask(data []byte, mapInfo map[string]interface{}) {
 	i := 0
 	for tmp := make(map[string]interface{}); query.Next(tmp); i = i + 1 {
 		delete(tmp, "package")
+		delete(tmp, "winnerorder")
 		if s_budget := fmt.Sprint(tmp["budget"]); s_budget == "" || s_budget == "<nil>" || s_budget == "null" {
 			tmp["budget"] = nil
 		}
 		if s_bidamount := fmt.Sprint(tmp["bidamount"]); s_bidamount == "" || s_bidamount == "<nil>" || s_bidamount == "null" {
 			tmp["bidamount"] = nil
 		}
-		go IS.Add("project")
+		//go IS.Add("project")
 		arr[i] = tmp
 		n++
 		if i == savesizei-1 {