Fix stale tag considerations
This commit is contained in:
+23
-12
@@ -1396,8 +1396,10 @@ func newFeatGeneratedContext(dataset nativeDataset, lockData map[string]int) (*f
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for key := range retiredFeatKeys {
|
||||
delete(lockCopy, key)
|
||||
for key, retiredID := range retiredFeatKeys {
|
||||
if lockedID, ok := lockCopy[key]; ok && lockedID == retiredID {
|
||||
delete(lockCopy, key)
|
||||
}
|
||||
delete(existingFeat, key)
|
||||
}
|
||||
return &featGeneratedContext{
|
||||
@@ -1466,7 +1468,7 @@ func (c *featGeneratedContext) featKeyExists(key string) bool {
|
||||
return ok
|
||||
}
|
||||
|
||||
func collectRetiredFeatKeys(featDir string) (map[string]struct{}, error) {
|
||||
func collectRetiredFeatKeys(featDir string) (map[string]int, error) {
|
||||
baseObj, err := loadJSONObject(filepath.Join(featDir, "base.json"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1501,7 +1503,7 @@ func collectRetiredFeatKeys(featDir string) (map[string]struct{}, error) {
|
||||
nextID = nextAvailableID(usedIDs)
|
||||
return rowID
|
||||
}
|
||||
retired := map[string]struct{}{}
|
||||
retired := map[string]int{}
|
||||
modulePaths, err := collectModulePaths(filepath.Join(featDir, "modules"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1567,7 +1569,7 @@ func collectRetiredFeatKeys(featDir string) (map[string]struct{}, error) {
|
||||
currentKey := rowIDToKey[rowID]
|
||||
if overrideRequestsNullRow(override) {
|
||||
if currentKey != "" {
|
||||
retired[currentKey] = struct{}{}
|
||||
retired[currentKey] = rowID
|
||||
delete(rowKeyToID, currentKey)
|
||||
delete(rowIDToKey, rowID)
|
||||
}
|
||||
@@ -1576,7 +1578,7 @@ func collectRetiredFeatKeys(featDir string) (map[string]struct{}, error) {
|
||||
if rawKey, present := override["key"]; present {
|
||||
if rawKey == nil {
|
||||
if currentKey != "" {
|
||||
retired[currentKey] = struct{}{}
|
||||
retired[currentKey] = rowID
|
||||
delete(rowKeyToID, currentKey)
|
||||
delete(rowIDToKey, rowID)
|
||||
}
|
||||
@@ -1585,14 +1587,14 @@ func collectRetiredFeatKeys(featDir string) (map[string]struct{}, error) {
|
||||
newKey, ok := rawKey.(string)
|
||||
if !ok || newKey == "" || strings.TrimSpace(newKey) == nullValue {
|
||||
if currentKey != "" {
|
||||
retired[currentKey] = struct{}{}
|
||||
retired[currentKey] = rowID
|
||||
delete(rowKeyToID, currentKey)
|
||||
delete(rowIDToKey, rowID)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if currentKey != "" && currentKey != newKey {
|
||||
retired[currentKey] = struct{}{}
|
||||
retired[currentKey] = rowID
|
||||
delete(rowKeyToID, currentKey)
|
||||
}
|
||||
if previousID, exists := rowKeyToID[newKey]; exists && previousID != rowID {
|
||||
@@ -4320,7 +4322,10 @@ func retireRowIdentity(row map[string]any, lockData map[string]int, retiredKeys
|
||||
if !ok || oldKey == "" {
|
||||
return
|
||||
}
|
||||
delete(lockData, oldKey)
|
||||
rowID, _ := row["id"].(int)
|
||||
if lockedID, ok := lockData[oldKey]; ok && lockedID == rowID {
|
||||
delete(lockData, oldKey)
|
||||
}
|
||||
if retiredKeys != nil {
|
||||
retiredKeys[oldKey] = struct{}{}
|
||||
}
|
||||
@@ -4348,7 +4353,9 @@ func updateOverrideRowKey(datasetName string, row map[string]any, expanded map[s
|
||||
delete(row, "key")
|
||||
if oldKey != "" {
|
||||
retiredKey = oldKey
|
||||
delete(lockData, oldKey)
|
||||
if lockedID, ok := lockData[oldKey]; ok && lockedID == rowID {
|
||||
delete(lockData, oldKey)
|
||||
}
|
||||
changed = true
|
||||
}
|
||||
return changed, retiredKey, nil
|
||||
@@ -4358,7 +4365,9 @@ func updateOverrideRowKey(datasetName string, row map[string]any, expanded map[s
|
||||
delete(row, "key")
|
||||
if oldKey != "" {
|
||||
retiredKey = oldKey
|
||||
delete(lockData, oldKey)
|
||||
if lockedID, ok := lockData[oldKey]; ok && lockedID == rowID {
|
||||
delete(lockData, oldKey)
|
||||
}
|
||||
changed = true
|
||||
}
|
||||
return changed, retiredKey, nil
|
||||
@@ -4386,7 +4395,9 @@ func updateOverrideRowKey(datasetName string, row map[string]any, expanded map[s
|
||||
rowByKey[newKey] = row
|
||||
if oldKey != "" && oldKey != newKey {
|
||||
retiredKey = oldKey
|
||||
delete(lockData, oldKey)
|
||||
if lockedID, ok := lockData[oldKey]; ok && lockedID == rowID {
|
||||
delete(lockData, oldKey)
|
||||
}
|
||||
changed = true
|
||||
}
|
||||
if existingID, ok := lockData[newKey]; ok {
|
||||
|
||||
Reference in New Issue
Block a user