code: func (b *BigtableIdx) Init() error {
  	log.Infof("bigtable-idx: Initializing. Project=%s, Instance=%s", b.cfg.GcpProject, b.cfg.BigtableInstance)
  	if err := b.MemoryIndex.Init(); err != nil {
  		return err
  	}
  
  	if err := b.InitBare(); err != nil {
  		return err
  	}
  
  	if b.cfg.UpdateBigtableIdx {
  		b.wg.Add(b.cfg.WriteConcurrency)
  		for i := 0; i < b.cfg.WriteConcurrency; i++ {
  			go b.processWriteQueue()
  		}
  		log.Infof("bigtable-idx: started %d writeQueue handlers", b.cfg.WriteConcurrency)
  	}
  
  	b.rebuildIndex()
  	if memory.IndexRules.Prunable() {
  		b.wg.Add(1)
  		go b.prune()
  	}
  	return nil
  }
docs: // Init makes sure the tables and columFamilies exist. It also opens the table for reads/writes. Then
  // rebuilds the in-memory index, sets up write queues, metrics and pruning routines