Visitar URL original
fix: Fixed race condition in _apply_object · feast-dev/feast@a13f48e · GitHub
Skip to content

Commit a13f48e

Browse files
committed
fix: Fixed race condition in _apply_object
Signed-off-by: ntkathole <nikhilkathole2683@gmail.com>
1 parent e19bdca commit a13f48e

3 files changed

Lines changed: 28 additions & 4 deletions

File tree

‎infra/feast-operator/internal/controller/featurestore_controller_test.go‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,12 @@ var _ = Describe("FeatureStore Controller", func() {
739739
}, deploy)
740740
Expect(err).NotTo(HaveOccurred())
741741
Expect(deploy.Spec.Template.Spec.ServiceAccountName).To(Equal(deploy.Name))
742+
Expect(deploy.Spec.Template.Spec.InitContainers).To(HaveLen(2))
743+
Expect(deploy.Spec.Template.Spec.InitContainers[1].Name).To(Equal("feast-apply"))
744+
Expect(deploy.Spec.Template.Spec.InitContainers[1].Env).To(ContainElements(
745+
corev1.EnvVar{Name: testEnvVarName, Value: testEnvVarValue},
746+
))
747+
Expect(deploy.Spec.Template.Spec.InitContainers[1].EnvFrom).NotTo(BeEmpty())
742748
Expect(deploy.Spec.Template.Spec.Containers).To(HaveLen(4))
743749
registryContainer := services.GetRegistryContainer(*deploy)
744750
Expect(registryContainer.Env).To(HaveLen(1))

‎infra/feast-operator/internal/controller/services/services.go‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,18 @@ func (feast *FeastServices) setInitContainer(podSpec *corev1.PodSpec, fsYamlB64
733733
Command: []string{"feast", "apply"},
734734
WorkingDir: featureRepoDir,
735735
}
736+
// feast apply needs DB/store connectivity, so inherit env/envFrom
737+
// from all server container configs (registry, online, offline).
738+
for _, feastType := range []FeastServiceType{RegistryFeastType, OnlineFeastType, OfflineFeastType} {
739+
if serverConfigs := feast.getServerConfigs(feastType); serverConfigs != nil {
740+
if serverConfigs.OptionalCtrConfigs.Env != nil {
741+
applyContainer.Env = envOverride(applyContainer.Env, *serverConfigs.OptionalCtrConfigs.Env)
742+
}
743+
if serverConfigs.OptionalCtrConfigs.EnvFrom != nil {
744+
applyContainer.EnvFrom = append(applyContainer.EnvFrom, *serverConfigs.OptionalCtrConfigs.EnvFrom...)
745+
}
746+
}
747+
}
736748
podSpec.InitContainers = append(podSpec.InitContainers, applyContainer)
737749
}
738750
}

‎sdk/python/feast/infra/registry/sql.py‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -997,10 +997,16 @@ def _apply_object(
997997
"last_updated_timestamp": update_time,
998998
"project_id": project,
999999
}
1000-
insert_stmt = insert(table).values(
1001-
values,
1002-
)
1003-
conn.execute(insert_stmt)
1000+
try:
1001+
with conn.begin_nested():
1002+
conn.execute(insert(table).values(values))
1003+
except IntegrityError:
1004+
logger.info(
1005+
"Object %s in project %s already created by another "
1006+
"process, skipping.",
1007+
name,
1008+
project,
1009+
)
10041010

10051011
if not isinstance(obj, Project):
10061012
self.apply_project(

0 commit comments

Comments
 (0)