Skip to content

Commit 37971a4

Browse files
authored
chore: Deprecate request feature views (remove it from tests & go) (#2477)
* remove request feature view from tests & go Signed-off-by: pyalex <moskalenko.alexey@gmail.com> * deprecation warnings Signed-off-by: pyalex <moskalenko.alexey@gmail.com>
1 parent 7c19cf7 commit 37971a4

File tree

9 files changed

+116
-274
lines changed

9 files changed

+116
-274
lines changed

go/internal/feast/featurestore.go

Lines changed: 22 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,12 @@ func (fs *FeatureStore) GetOnlineFeatures(
109109

110110
var fvs map[string]*FeatureView
111111
var requestedFeatureViews []*featureViewAndRefs
112-
var requestedRequestFeatureViews []*RequestFeatureView
113112
var requestedOnDemandFeatureViews []*OnDemandFeatureView
114113
if featureService != nil {
115-
fvs, requestedFeatureViews, requestedRequestFeatureViews, requestedOnDemandFeatureViews, err =
114+
fvs, requestedFeatureViews, requestedOnDemandFeatureViews, err =
116115
fs.getFeatureViewsToUseByService(featureService, false)
117116
} else {
118-
fvs, requestedFeatureViews, requestedRequestFeatureViews, requestedOnDemandFeatureViews, err =
117+
fvs, requestedFeatureViews, requestedOnDemandFeatureViews, err =
119118
fs.getFeatureViewsToUseByFeatureRefs(featureRefs, false)
120119
}
121120

@@ -124,7 +123,7 @@ func (fs *FeatureStore) GetOnlineFeatures(
124123
return nil, err
125124
}
126125

127-
if len(requestedRequestFeatureViews)+len(requestedOnDemandFeatureViews) > 0 {
126+
if len(requestedOnDemandFeatureViews) > 0 {
128127
return nil, status.Errorf(codes.InvalidArgument, "on demand feature views are currently not supported")
129128
}
130129

@@ -134,7 +133,7 @@ func (fs *FeatureStore) GetOnlineFeatures(
134133
}
135134
// TODO (Ly): This should return empty now
136135
// Expect no ODFV or Request FV passed in GetOnlineFearuresRequest
137-
neededRequestData, neededRequestODFVFeatures, err := fs.getNeededRequestData(requestedRequestFeatureViews, requestedOnDemandFeatureViews)
136+
neededRequestData, err := fs.getNeededRequestData(requestedOnDemandFeatureViews)
138137
if err != nil {
139138
return nil, err
140139
}
@@ -145,10 +144,7 @@ func (fs *FeatureStore) GetOnlineFeatures(
145144
// requestDataFeatures := make(map[string]*prototypes.RepeatedValue) // TODO (Ly): Should be empty now until ODFV and Request FV are supported
146145
mappedEntityProtos := make(map[string]*prototypes.RepeatedValue)
147146
for joinKeyOrFeature, vals := range entityProtos {
148-
if _, ok := neededRequestODFVFeatures[joinKeyOrFeature]; ok {
149-
mappedEntityProtos[joinKeyOrFeature] = vals
150-
// requestDataFeatures[joinKeyOrFeature] = vals
151-
} else if _, ok = neededRequestData[joinKeyOrFeature]; ok {
147+
if _, ok := neededRequestData[joinKeyOrFeature]; ok {
152148
// requestDataFeatures[joinKeyOrFeature] = vals
153149
} else {
154150
if _, ok := expectedJoinKeysSet[joinKeyOrFeature]; !ok {
@@ -263,44 +259,34 @@ func (fs *FeatureStore) GetFeatureService(name string, project string) (*Feature
263259

264260
/*
265261
Return a list of copies of FeatureViewProjection
266-
copied from FeatureView, OnDemandFeatureView, RequestFeatureView existed in the registry
262+
copied from FeatureView, OnDemandFeatureView existed in the registry
267263
268264
TODO (Ly): Since the implementation of registry has changed, a better approach here is just
269265
retrieving featureViews asked in the passed in list of feature references instead of
270266
retrieving all feature views. Similar argument to FeatureService applies.
271267
272268
*/
273-
func (fs *FeatureStore) getFeatureViewsToUseByService(featureService *FeatureService, hideDummyEntity bool) (map[string]*FeatureView, []*featureViewAndRefs, []*RequestFeatureView, []*OnDemandFeatureView, error) {
269+
func (fs *FeatureStore) getFeatureViewsToUseByService(featureService *FeatureService, hideDummyEntity bool) (map[string]*FeatureView, []*featureViewAndRefs, []*OnDemandFeatureView, error) {
274270
fvs := make(map[string]*FeatureView)
275-
requestFvs := make(map[string]*RequestFeatureView)
276271
odFvs := make(map[string]*OnDemandFeatureView)
277272

278273
featureViews, err := fs.listFeatureViews(hideDummyEntity)
279274
if err != nil {
280-
return nil, nil, nil, nil, err
275+
return nil, nil, nil, err
281276
}
282277
for _, featureView := range featureViews {
283278
fvs[featureView.base.name] = featureView
284279
}
285280

286-
requestFeatureViews, err := fs.registry.listRequestFeatureViews(fs.config.Project)
287-
if err != nil {
288-
return nil, nil, nil, nil, err
289-
}
290-
for _, requestFeatureView := range requestFeatureViews {
291-
requestFvs[requestFeatureView.base.name] = requestFeatureView
292-
}
293-
294281
onDemandFeatureViews, err := fs.registry.listOnDemandFeatureViews(fs.config.Project)
295282
if err != nil {
296-
return nil, nil, nil, nil, err
283+
return nil, nil, nil, err
297284
}
298285
for _, onDemandFeatureView := range onDemandFeatureViews {
299286
odFvs[onDemandFeatureView.base.name] = onDemandFeatureView
300287
}
301288

302289
fvsToUse := make([]*featureViewAndRefs, 0)
303-
requestFvsToUse := make([]*RequestFeatureView, 0)
304290
odFvsToUse := make([]*OnDemandFeatureView, 0)
305291

306292
for _, featureProjection := range featureService.projections {
@@ -310,7 +296,7 @@ func (fs *FeatureStore) getFeatureViewsToUseByService(featureService *FeatureSer
310296
if fv, ok := fvs[featureViewName]; ok {
311297
base, err := fv.base.withProjection(featureProjection)
312298
if err != nil {
313-
return nil, nil, nil, nil, err
299+
return nil, nil, nil, err
314300
}
315301
newFv := fv.NewFeatureViewFromBase(base)
316302
features := make([]string, len(newFv.base.features))
@@ -321,66 +307,50 @@ func (fs *FeatureStore) getFeatureViewsToUseByService(featureService *FeatureSer
321307
view: newFv,
322308
featureRefs: features,
323309
})
324-
} else if requestFv, ok := requestFvs[featureViewName]; ok {
325-
base, err := requestFv.base.withProjection(featureProjection)
326-
if err != nil {
327-
return nil, nil, nil, nil, err
328-
}
329-
requestFvsToUse = append(requestFvsToUse, requestFv.NewRequestFeatureViewFromBase(base))
330310
} else if odFv, ok := odFvs[featureViewName]; ok {
331311
base, err := odFv.base.withProjection(featureProjection)
332312
if err != nil {
333-
return nil, nil, nil, nil, err
313+
return nil, nil, nil, err
334314
}
335315
odFvsToUse = append(odFvsToUse, odFv.NewOnDemandFeatureViewFromBase(base))
336316
} else {
337-
return nil, nil, nil, nil, fmt.Errorf("the provided feature service %s contains a reference to a feature view"+
317+
return nil, nil, nil, fmt.Errorf("the provided feature service %s contains a reference to a feature view"+
338318
"%s which doesn't exist, please make sure that you have created the feature view"+
339319
"%s and that you have registered it by running \"apply\"", featureService.name, featureViewName, featureViewName)
340320
}
341321
}
342-
return fvs, fvsToUse, requestFvsToUse, odFvsToUse, nil
322+
return fvs, fvsToUse, odFvsToUse, nil
343323
}
344324

345325
/*
346-
Return all FeatureView, OnDemandFeatureView, RequestFeatureView from the registry
326+
Return all FeatureView, OnDemandFeatureView from the registry
347327
*/
348-
func (fs *FeatureStore) getFeatureViewsToUseByFeatureRefs(features []string, hideDummyEntity bool) (map[string]*FeatureView, []*featureViewAndRefs, []*RequestFeatureView, []*OnDemandFeatureView, error) {
328+
func (fs *FeatureStore) getFeatureViewsToUseByFeatureRefs(features []string, hideDummyEntity bool) (map[string]*FeatureView, []*featureViewAndRefs, []*OnDemandFeatureView, error) {
349329
fvs := make(map[string]*FeatureView)
350-
requestFvs := make(map[string]*RequestFeatureView)
351330
odFvs := make(map[string]*OnDemandFeatureView)
352331
featureViews, err := fs.listFeatureViews(hideDummyEntity)
353332
if err != nil {
354-
return nil, nil, nil, nil, err
333+
return nil, nil, nil, err
355334
}
356335
for _, featureView := range featureViews {
357336
fvs[featureView.base.name] = featureView
358337
}
359338

360-
requestFeatureViews, err := fs.registry.listRequestFeatureViews(fs.config.Project)
361-
if err != nil {
362-
return nil, nil, nil, nil, err
363-
}
364-
for _, requestFeatureView := range requestFeatureViews {
365-
requestFvs[requestFeatureView.base.name] = requestFeatureView
366-
}
367-
368339
onDemandFeatureViews, err := fs.registry.listOnDemandFeatureViews(fs.config.Project)
369340
if err != nil {
370-
return nil, nil, nil, nil, err
341+
return nil, nil, nil, err
371342
}
372343
for _, onDemandFeatureView := range onDemandFeatureViews {
373344
odFvs[onDemandFeatureView.base.name] = onDemandFeatureView
374345
}
375346

376347
fvsToUse := make([]*featureViewAndRefs, 0)
377-
requestFvsToUse := make([]*RequestFeatureView, 0)
378348
odFvsToUse := make([]*OnDemandFeatureView, 0)
379349

380350
for _, featureRef := range features {
381351
featureViewName, featureName, err := parseFeatureReference(featureRef)
382352
if err != nil {
383-
return nil, nil, nil, nil, err
353+
return nil, nil, nil, err
384354
}
385355
if fv, ok := fvs[featureViewName]; ok {
386356
found := false
@@ -396,16 +366,14 @@ func (fs *FeatureStore) getFeatureViewsToUseByFeatureRefs(features []string, hid
396366
featureRefs: []string{featureName},
397367
})
398368
}
399-
} else if requestFv, ok := requestFvs[featureViewName]; ok {
400-
requestFvsToUse = append(requestFvsToUse, requestFv)
401369
} else if odFv, ok := odFvs[featureViewName]; ok {
402370
odFvsToUse = append(odFvsToUse, odFv)
403371
} else {
404-
return nil, nil, nil, nil, fmt.Errorf("feature view %s doesn't exist, please make sure that you have created the"+
372+
return nil, nil, nil, fmt.Errorf("feature view %s doesn't exist, please make sure that you have created the"+
405373
" feature view %s and that you have registered it by running \"apply\"", featureViewName, featureViewName)
406374
}
407375
}
408-
return fvs, fvsToUse, requestFvsToUse, odFvsToUse, nil
376+
return fvs, fvsToUse, odFvsToUse, nil
409377
}
410378

411379
func (fs *FeatureStore) getEntityMaps(requestedFeatureViews []*featureViewAndRefs) (map[string]string, map[string]interface{}, error) {
@@ -507,10 +475,8 @@ func validateFeatureRefs(requestedFeatures []*featureViewAndRefs, fullFeatureNam
507475
return nil
508476
}
509477

510-
func (fs *FeatureStore) getNeededRequestData(requestedRequestFeatureViews []*RequestFeatureView,
511-
requestedOnDemandFeatureViews []*OnDemandFeatureView) (map[string]struct{}, map[string]struct{}, error) {
478+
func (fs *FeatureStore) getNeededRequestData(requestedOnDemandFeatureViews []*OnDemandFeatureView) (map[string]struct{}, error) {
512479
neededRequestData := make(map[string]struct{})
513-
neededRequestFvFeatures := make(map[string]struct{})
514480

515481
for _, onDemandFeatureView := range requestedOnDemandFeatureViews {
516482
requestSchema := onDemandFeatureView.getRequestDataSchema()
@@ -519,13 +485,7 @@ func (fs *FeatureStore) getNeededRequestData(requestedRequestFeatureViews []*Req
519485
}
520486
}
521487

522-
for _, requestFeatureView := range requestedRequestFeatureViews {
523-
for _, feature := range requestFeatureView.base.features {
524-
neededRequestFvFeatures[feature.name] = struct{}{}
525-
}
526-
}
527-
528-
return neededRequestData, neededRequestFvFeatures, nil
488+
return neededRequestData, nil
529489
}
530490

531491
func (fs *FeatureStore) ensureRequestedDataExist(neededRequestData map[string]struct{},
@@ -670,10 +630,6 @@ func (fs *FeatureStore) listFeatureViews(hideDummyEntity bool) ([]*FeatureView,
670630
return featureViews, nil
671631
}
672632

673-
func (fs *FeatureStore) listRequestFeatureViews() ([]*RequestFeatureView, error) {
674-
return fs.registry.listRequestFeatureViews(fs.config.Project)
675-
}
676-
677633
func (fs *FeatureStore) listEntities(hideDummyEntity bool) ([]*Entity, error) {
678634

679635
allEntities, err := fs.registry.listEntities(fs.config.Project)

go/internal/feast/registry.go

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var REGISTRY_STORE_CLASS_FOR_SCHEME map[string]string = map[string]string{
1919
}
2020

2121
/*
22-
Store protos of FeatureView, FeatureService, Entity, OnDemandFeatureView, RequestFeatureView
22+
Store protos of FeatureView, FeatureService, Entity, OnDemandFeatureView
2323
but return to user copies of non-proto versions of these objects
2424
*/
2525

@@ -29,7 +29,6 @@ type Registry struct {
2929
cachedEntities map[string]map[string]*core.Entity
3030
cachedFeatureViews map[string]map[string]*core.FeatureView
3131
cachedOnDemandFeatureViews map[string]map[string]*core.OnDemandFeatureView
32-
cachedRequestFeatureViews map[string]map[string]*core.RequestFeatureView
3332
cachedRegistry *core.Registry
3433
cachedRegistryProtoLastUpdated time.Time
3534
cachedRegistryProtoTtl time.Duration
@@ -106,12 +105,10 @@ func (r *Registry) load(registry *core.Registry) {
106105
r.cachedEntities = make(map[string]map[string]*core.Entity)
107106
r.cachedFeatureViews = make(map[string]map[string]*core.FeatureView)
108107
r.cachedOnDemandFeatureViews = make(map[string]map[string]*core.OnDemandFeatureView)
109-
r.cachedRequestFeatureViews = make(map[string]map[string]*core.RequestFeatureView)
110108
r.loadEntities(registry)
111109
r.loadFeatureServices(registry)
112110
r.loadFeatureViews(registry)
113111
r.loadOnDemandFeatureViews(registry)
114-
r.loadRequestFeatureViews(registry)
115112
r.cachedRegistryProtoLastUpdated = time.Now()
116113
}
117114

@@ -155,16 +152,6 @@ func (r *Registry) loadOnDemandFeatureViews(registry *core.Registry) {
155152
}
156153
}
157154

158-
func (r *Registry) loadRequestFeatureViews(registry *core.Registry) {
159-
requestFeatureViews := registry.RequestFeatureViews
160-
for _, requestFeatureView := range requestFeatureViews {
161-
if _, ok := r.cachedRequestFeatureViews[requestFeatureView.Spec.Project]; !ok {
162-
r.cachedRequestFeatureViews[requestFeatureView.Spec.Project] = make(map[string]*core.RequestFeatureView)
163-
}
164-
r.cachedRequestFeatureViews[requestFeatureView.Spec.Project][requestFeatureView.Spec.Name] = requestFeatureView
165-
}
166-
}
167-
168155
/*
169156
Look up Entities inside project
170157
Returns empty list if project not found
@@ -241,25 +228,6 @@ func (r *Registry) listOnDemandFeatureViews(project string) ([]*OnDemandFeatureV
241228
}
242229
}
243230

244-
/*
245-
Look up Request Feature Views inside project
246-
Returns empty list if project not found
247-
*/
248-
249-
func (r *Registry) listRequestFeatureViews(project string) ([]*RequestFeatureView, error) {
250-
if cachedRequestFeatureViews, ok := r.cachedRequestFeatureViews[project]; !ok {
251-
return []*RequestFeatureView{}, nil
252-
} else {
253-
requestFeatureViews := make([]*RequestFeatureView, len(cachedRequestFeatureViews))
254-
index := 0
255-
for _, requestFeatureViewProto := range cachedRequestFeatureViews {
256-
requestFeatureViews[index] = NewRequestFeatureViewFromProto(requestFeatureViewProto)
257-
index += 1
258-
}
259-
return requestFeatureViews, nil
260-
}
261-
}
262-
263231
func (r *Registry) getEntity(project, entityName string) (*Entity, error) {
264232
if cachedEntities, ok := r.cachedEntities[project]; !ok {
265233
return nil, fmt.Errorf("no cached entities found for project %s", project)
@@ -308,18 +276,6 @@ func (r *Registry) getOnDemandFeatureView(project, onDemandFeatureViewName strin
308276
}
309277
}
310278

311-
func (r *Registry) getRequestFeatureView(project, requestFeatureViewName string) (*RequestFeatureView, error) {
312-
if cachedRequestFeatureViews, ok := r.cachedRequestFeatureViews[project]; !ok {
313-
return nil, fmt.Errorf("no cached on request feature views found for project %s", project)
314-
} else {
315-
if requestFeatureViewProto, ok := cachedRequestFeatureViews[requestFeatureViewName]; !ok {
316-
return nil, fmt.Errorf("no cached request feature view %s found for project %s", requestFeatureViewName, project)
317-
} else {
318-
return NewRequestFeatureViewFromProto(requestFeatureViewProto), nil
319-
}
320-
}
321-
}
322-
323279
func getRegistryStoreFromScheme(registryPath string, registryConfig *RegistryConfig, repoPath string) (RegistryStore, error) {
324280
uri, err := url.Parse(registryPath)
325281
if err != nil {

go/internal/feast/requestfeatureview.go

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)