Directory删除

  • 调用hbase客户端查出图片元数据vid,key。。。
  • 根据vid得到store机器验证机器是否可写
  • 从hbase中bucket_${bucket}bfsmeta删除file和needle
  • 返回store机器
// DelStores get delable stores for http del
func (d *Directory) DelStores(bucket, filename string) (n *meta.Needle, stores []string, err error) {
    var (
        ok        bool
        store     string
        svrs      []string
        storeMeta *meta.Store
    )
    if n, _, err = d.hBase.Get(bucket, filename); err != nil {
        log.Errorf("hBase.Get error(%v)", err)
        if err != errors.ErrNeedleNotExist {
            err = errors.ErrHBase
        }
        return
    }
    if n == nil {
        err = errors.ErrNeedleNotExist
        return
    }
    if svrs, ok = d.volumeStore[n.Vid]; !ok {
        err = errors.ErrZookeeperDataError
        return
    }
    stores = make([]string, 0, len(svrs))
    for _, store = range svrs {
        if storeMeta, ok = d.store[store]; !ok {
            err = errors.ErrZookeeperDataError
            return
        }
        if !storeMeta.CanWrite() {
            err = errors.ErrStoreNotAvailable
            return
        }
        stores = append(stores, storeMeta.Api)
    }
    if err = d.hBase.Del(bucket, filename); err != nil {
        log.Errorf("hBase.Del error(%v)", err)
        err = errors.ErrHBase
    }
    return
}

results matching ""

    No results matching ""