func()

in nimo-shake/full-sync/table-syncer.go [240:275]


func (ts *tableSyncer) parser(id int) {
	LOG.Info("%s start parser[%v]", ts.String(), id)

	for {
		startT := time.Now()
		data, ok := <-ts.fetcherChan
		if !ok {
			break
		}
		readFetcherChanDuration := time.Since(startT)

		LOG.Debug("%s parser[%v] read data[%v]", ts.String(), id, data)

		var parserDuration, writeParseChanDuration time.Duration = 0, 0

		list := data.Items
		for _, ele := range list {
			startT = time.Now()
			out, err := ts.converter.Run(ele)
			parserDuration = parserDuration + time.Since(startT)
			if err != nil {
				LOG.Crashf("%s parser[%v] parse ele[%v] failed[%v]", ts.String(), id, ele, err)
			}

			startT = time.Now()
			ts.parserChan <- out
			writeParseChanDuration = writeParseChanDuration + time.Since(startT)
		}

		LOG.Info("%s parser parser[%v] readFetcherChanTime[%v] parserTime[%v]"+
			" writeParseChantime[%v] parserChan.len[%v]",
			ts.String(), id, readFetcherChanDuration, parserDuration, writeParseChanDuration, len(ts.parserChan))

	}
	LOG.Info("%s close parser", ts.String())
}