@java.lang.Override public feast.serving.ServingAPIProto.QueryFeatures.Request buildPartial() { feast.serving.ServingAPIProto.QueryFeatures.Request result = new feast.serving.ServingAPIProto.QueryFeatures.Request(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; result.entityName_ = entityName_; if (((bitField0_ & 0x00000002) == 0x00000002)) { entityId_ = entityId_.getUnmodifiableView(); bitField0_ = (bitField0_ & ~0x00000002); } result.entityId_ = entityId_; if (requestDetailsBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004)) { requestDetails_ = java.util.Collections.unmodifiableList(requestDetails_); bitField0_ = (bitField0_ & ~0x00000004); } result.requestDetails_ = requestDetails_; } else { result.requestDetails_ = requestDetailsBuilder_.build(); } if (timestampRangeBuilder_ == null) { result.timestampRange_ = timestampRange_; } else { result.timestampRange_ = timestampRangeBuilder_.build(); } result.bitField0_ = to_bitField0_; onBuilt(); return result; }
@java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (!getEntityNameBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, entityName_); } { int dataSize = 0; for (int i = 0; i < entityId_.size(); i++) { dataSize += computeStringSizeNoTag(entityId_.getRaw(i)); } size += dataSize; size += 1 * getEntityIdList().size(); } for (int i = 0; i < requestDetails_.size(); i++) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(3, requestDetails_.get(i)); } if (timestampRange_ != null) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, getTimestampRange()); } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; }
public Builder mergeFrom(feast.serving.ServingAPIProto.QueryFeatures.Request other) { if (other == feast.serving.ServingAPIProto.QueryFeatures.Request.getDefaultInstance()) return this; if (!other.getEntityName().isEmpty()) { entityName_ = other.entityName_; onChanged(); if (other.hasTimestampRange()) { mergeTimestampRange(other.getTimestampRange());
public Builder mergeFrom(feast.serving.ServingAPIProto.QueryFeatures.Request other) { if (other == feast.serving.ServingAPIProto.QueryFeatures.Request.getDefaultInstance()) return this; if (!other.getEntityName().isEmpty()) { entityName_ = other.entityName_; onChanged(); if (other.hasTimestampRange()) { mergeTimestampRange(other.getTimestampRange());
public Builder mergeFrom(feast.serving.ServingAPIProto.QueryFeatures.Request other) { if (other == feast.serving.ServingAPIProto.QueryFeatures.Request.getDefaultInstance()) return this; if (!other.getEntityName().isEmpty()) { entityName_ = other.entityName_; onChanged(); if (other.hasTimestampRange()) { mergeTimestampRange(other.getTimestampRange());
String[] tags = makeStatsdTags(request); statsDClient.increment("query_features_count", tags); statsDClient.gauge("query_features_entity_count", request.getEntityIdCount(), tags); statsDClient.gauge("query_features_feature_count", request.getRequestDetailsCount(), tags); try (Scope scope = tracer.scopeManager().activate(span, false)) { Span innerSpan = scope.span();
/** * Query feature from feast storage. * * @param request feature query request. * @return response of the query containing the feature values. */ public Response queryFeatures(Request request) { try (Scope scope = tracer.buildSpan("FeastServing-queryFeatures").startActive(true)) { List<RequestDetailWithSpec> requestDetails = joinRequestDetailsWithFeatureSpec(request); // create connection to feature storage if necessary checkAndConnectFeatureStorage( requestDetails .stream() .map(r -> r.getFeatureSpec().getDataStores().getServing().getId()) .collect(Collectors.toList())); scope.span().log("start retrieving all feature"); Map<String, Entity> result = featureRetrievalDispatcher.dispatchFeatureRetrieval( request.getEntityName(), request.getEntityIdList(), requestDetails, request.getTimestampRange()); scope.span().log("finished retrieving all feature"); // build response return Response.newBuilder() .setEntityName(request.getEntityName()) .putAllEntities(result) .build(); } }
@java.lang.Override public feast.serving.ServingAPIProto.QueryFeatures.Request buildPartial() { feast.serving.ServingAPIProto.QueryFeatures.Request result = new feast.serving.ServingAPIProto.QueryFeatures.Request(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; result.entityName_ = entityName_; if (((bitField0_ & 0x00000002) == 0x00000002)) { entityId_ = entityId_.getUnmodifiableView(); bitField0_ = (bitField0_ & ~0x00000002); } result.entityId_ = entityId_; if (requestDetailsBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004)) { requestDetails_ = java.util.Collections.unmodifiableList(requestDetails_); bitField0_ = (bitField0_ & ~0x00000004); } result.requestDetails_ = requestDetails_; } else { result.requestDetails_ = requestDetailsBuilder_.build(); } if (timestampRangeBuilder_ == null) { result.timestampRange_ = timestampRange_; } else { result.timestampRange_ = timestampRangeBuilder_.build(); } result.bitField0_ = to_bitField0_; onBuilt(); return result; }
@io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "QueryFeatures", requestType = feast.serving.ServingAPIProto.QueryFeatures.Request.class, responseType = feast.serving.ServingAPIProto.QueryFeatures.Response.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response> getQueryFeaturesMethod() { io.grpc.MethodDescriptor<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response> getQueryFeaturesMethod; if ((getQueryFeaturesMethod = ServingAPIGrpc.getQueryFeaturesMethod) == null) { synchronized (ServingAPIGrpc.class) { if ((getQueryFeaturesMethod = ServingAPIGrpc.getQueryFeaturesMethod) == null) { ServingAPIGrpc.getQueryFeaturesMethod = getQueryFeaturesMethod = io.grpc.MethodDescriptor.<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response>newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName( "feast.serving.ServingAPI", "QueryFeatures")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( feast.serving.ServingAPIProto.QueryFeatures.Request.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( feast.serving.ServingAPIProto.QueryFeatures.Response.getDefaultInstance())) .setSchemaDescriptor(new ServingAPIMethodDescriptorSupplier("QueryFeatures")) .build(); } } } return getQueryFeaturesMethod; }
@java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (!getEntityNameBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, entityName_); } { int dataSize = 0; for (int i = 0; i < entityId_.size(); i++) { dataSize += computeStringSizeNoTag(entityId_.getRaw(i)); } size += dataSize; size += 1 * getEntityIdList().size(); } for (int i = 0; i < requestDetails_.size(); i++) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(3, requestDetails_.get(i)); } if (timestampRange_ != null) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, getTimestampRange()); } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; }
@java.lang.Override public feast.serving.ServingAPIProto.QueryFeatures.Request buildPartial() { feast.serving.ServingAPIProto.QueryFeatures.Request result = new feast.serving.ServingAPIProto.QueryFeatures.Request(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; result.entityName_ = entityName_; if (((bitField0_ & 0x00000002) == 0x00000002)) { entityId_ = entityId_.getUnmodifiableView(); bitField0_ = (bitField0_ & ~0x00000002); } result.entityId_ = entityId_; if (requestDetailsBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004)) { requestDetails_ = java.util.Collections.unmodifiableList(requestDetails_); bitField0_ = (bitField0_ & ~0x00000004); } result.requestDetails_ = requestDetails_; } else { result.requestDetails_ = requestDetailsBuilder_.build(); } if (timestampRangeBuilder_ == null) { result.timestampRange_ = timestampRange_; } else { result.timestampRange_ = timestampRangeBuilder_.build(); } result.bitField0_ = to_bitField0_; onBuilt(); return result; }
@io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "QueryFeatures", requestType = feast.serving.ServingAPIProto.QueryFeatures.Request.class, responseType = feast.serving.ServingAPIProto.QueryFeatures.Response.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response> getQueryFeaturesMethod() { io.grpc.MethodDescriptor<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response> getQueryFeaturesMethod; if ((getQueryFeaturesMethod = ServingAPIGrpc.getQueryFeaturesMethod) == null) { synchronized (ServingAPIGrpc.class) { if ((getQueryFeaturesMethod = ServingAPIGrpc.getQueryFeaturesMethod) == null) { ServingAPIGrpc.getQueryFeaturesMethod = getQueryFeaturesMethod = io.grpc.MethodDescriptor.<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response>newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName( "feast.serving.ServingAPI", "QueryFeatures")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( feast.serving.ServingAPIProto.QueryFeatures.Request.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( feast.serving.ServingAPIProto.QueryFeatures.Response.getDefaultInstance())) .setSchemaDescriptor(new ServingAPIMethodDescriptorSupplier("QueryFeatures")) .build(); } } } return getQueryFeaturesMethod; }
@java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (!getEntityNameBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, entityName_); } { int dataSize = 0; for (int i = 0; i < entityId_.size(); i++) { dataSize += computeStringSizeNoTag(entityId_.getRaw(i)); } size += dataSize; size += 1 * getEntityIdList().size(); } for (int i = 0; i < requestDetails_.size(); i++) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(3, requestDetails_.get(i)); } if (timestampRange_ != null) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, getTimestampRange()); } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; }
public static io.grpc.MethodDescriptor<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response> getQueryFeaturesMethod() { io.grpc.MethodDescriptor<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response> getQueryFeaturesMethod; if ((getQueryFeaturesMethod = ServingAPIGrpc.getQueryFeaturesMethod) == null) { synchronized (ServingAPIGrpc.class) { if ((getQueryFeaturesMethod = ServingAPIGrpc.getQueryFeaturesMethod) == null) { ServingAPIGrpc.getQueryFeaturesMethod = getQueryFeaturesMethod = io.grpc.MethodDescriptor.<feast.serving.ServingAPIProto.QueryFeatures.Request, feast.serving.ServingAPIProto.QueryFeatures.Response>newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName( "feast.serving.ServingAPI", "QueryFeatures")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( feast.serving.ServingAPIProto.QueryFeatures.Request.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( feast.serving.ServingAPIProto.QueryFeatures.Response.getDefaultInstance())) .setSchemaDescriptor(new ServingAPIMethodDescriptorSupplier("QueryFeatures")) .build(); } } } return getQueryFeaturesMethod; }
@java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof feast.serving.ServingAPIProto.QueryFeatures.Request)) { return super.equals(obj); } feast.serving.ServingAPIProto.QueryFeatures.Request other = (feast.serving.ServingAPIProto.QueryFeatures.Request) obj; boolean result = true; result = result && getEntityName() .equals(other.getEntityName()); result = result && getEntityIdList() .equals(other.getEntityIdList()); result = result && getRequestDetailsList() .equals(other.getRequestDetailsList()); result = result && (hasTimestampRange() == other.hasTimestampRange()); if (hasTimestampRange()) { result = result && getTimestampRange() .equals(other.getTimestampRange()); } result = result && unknownFields.equals(other.unknownFields); return result; }
@java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof feast.serving.ServingAPIProto.QueryFeatures.Request)) { return super.equals(obj); } feast.serving.ServingAPIProto.QueryFeatures.Request other = (feast.serving.ServingAPIProto.QueryFeatures.Request) obj; boolean result = true; result = result && getEntityName() .equals(other.getEntityName()); result = result && getEntityIdList() .equals(other.getEntityIdList()); result = result && getRequestDetailsList() .equals(other.getRequestDetailsList()); result = result && (hasTimestampRange() == other.hasTimestampRange()); if (hasTimestampRange()) { result = result && getTimestampRange() .equals(other.getTimestampRange()); } result = result && unknownFields.equals(other.unknownFields); return result; }
@java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof feast.serving.ServingAPIProto.QueryFeatures.Request)) { return super.equals(obj); } feast.serving.ServingAPIProto.QueryFeatures.Request other = (feast.serving.ServingAPIProto.QueryFeatures.Request) obj; boolean result = true; result = result && getEntityName() .equals(other.getEntityName()); result = result && getEntityIdList() .equals(other.getEntityIdList()); result = result && getRequestDetailsList() .equals(other.getRequestDetailsList()); result = result && (hasTimestampRange() == other.hasTimestampRange()); if (hasTimestampRange()) { result = result && getTimestampRange() .equals(other.getTimestampRange()); } result = result && unknownFields.equals(other.unknownFields); return result; }
@java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + ENTITYNAME_FIELD_NUMBER; hash = (53 * hash) + getEntityName().hashCode(); if (getEntityIdCount() > 0) { hash = (37 * hash) + ENTITYID_FIELD_NUMBER; hash = (53 * hash) + getEntityIdList().hashCode(); } if (getRequestDetailsCount() > 0) { hash = (37 * hash) + REQUESTDETAILS_FIELD_NUMBER; hash = (53 * hash) + getRequestDetailsList().hashCode(); } if (hasTimestampRange()) { hash = (37 * hash) + TIMESTAMPRANGE_FIELD_NUMBER; hash = (53 * hash) + getTimestampRange().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; }
public static void validateRequest(Request request) { // entity name shall present if (Strings.isNullOrEmpty(request.getEntityName())) { throw new IllegalArgumentException("entity name must be set"); } // entity id list shall not be empty if (request.getEntityIdList().size() <= 0) { throw new IllegalArgumentException("entity ID must be provided"); } // request detail shall not be empty if (request.getRequestDetailsList().size() <= 0) { throw new IllegalArgumentException("request details must be provided"); } // feature id in each request detail shall have same entity name String entityName = request.getEntityName(); for (RequestDetail requestDetail : request.getRequestDetailsList()) { String featureId = requestDetail.getFeatureId(); if (!featureId.substring(0, featureId.indexOf(".")).equals(entityName)) { throw new IllegalArgumentException( "entity name of all feature ID in request details must be: " + entityName); } } }
@java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + ENTITYNAME_FIELD_NUMBER; hash = (53 * hash) + getEntityName().hashCode(); if (getEntityIdCount() > 0) { hash = (37 * hash) + ENTITYID_FIELD_NUMBER; hash = (53 * hash) + getEntityIdList().hashCode(); } if (getRequestDetailsCount() > 0) { hash = (37 * hash) + REQUESTDETAILS_FIELD_NUMBER; hash = (53 * hash) + getRequestDetailsList().hashCode(); } if (hasTimestampRange()) { hash = (37 * hash) + TIMESTAMPRANGE_FIELD_NUMBER; hash = (53 * hash) + getTimestampRange().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; }