func (d *ddl) verifySchemaMetaVersion(txn kv.Transaction, schemaMetaVersion int64) error { curVer, err := txn.GetInt64(meta.SchemaMetaVersionKey) if err != nil { return errors.Trace(err) } if curVer != schemaMetaVersion { return errors.Errorf("Schema changed, our version %d, but got %d", schemaMetaVersion, curVer) } // Increment version. _, err = txn.Inc(meta.SchemaMetaVersionKey, 1) if err != nil { return errors.Trace(err) } if err := txn.LockKeys(meta.SchemaMetaVersionKey); err != nil { return errors.Trace(err) } return errors.Trace(err) }
func (do *Domain) loadInfoSchema(txn kv.Transaction) (err error) { var schemas []*model.DBInfo err = util.ScanMetaWithPrefix(txn, meta.SchemaMetaPrefix, func(key []byte, value []byte) bool { di := &model.DBInfo{} err := json.Unmarshal(value, di) if err != nil { log.Fatal(err) } schemas = append(schemas, di) return true }) if err != nil { return errors.Trace(err) } schemaMetaVersion, err := txn.GetInt64(meta.SchemaMetaVersionKey) if err != nil { return } log.Info("loadInfoSchema %d", schemaMetaVersion) do.infoHandle.Set(schemas, schemaMetaVersion) return }