code: func NewPdOracle(pdClient pd.Client, updateInterval time.Duration) (oracle.Oracle, error) {
  	o := &pdOracle{
  		c:    pdClient,
  		quit: make(chan struct{}),
  	}
  	ctx := context.TODO()
  	go o.updateTS(ctx, updateInterval)
  	// Initialize lastTS by Get.
  	_, err := o.GetTimestamp(ctx)
  	if err != nil {
  		o.Close()
  		return nil, errors.Trace(err)
  	}
  	return o, nil
  }
docs: // NewPdOracle create an Oracle that uses a pd client source.
  // Refer https://github.com/pingcap/pd/blob/master/client/client.go for more details.
  // PdOracle mantains `lastTS` to store the last timestamp got from PD server. If
  // `GetTimestamp()` is not called after `updateInterval`, it will be called by
  // itself to keep up with the timestamp on PD server.