Package biopb.tensor
Interface TensorDescriptorOrBuilder
- All Superinterfaces:
com.google.protobuf.MessageLiteOrBuilder,com.google.protobuf.MessageOrBuilder
- All Known Implementing Classes:
TensorDescriptor,TensorDescriptor.Builder
public interface TensorDescriptorOrBuilder
extends com.google.protobuf.MessageOrBuilder
-
Method Summary
Modifier and TypeMethodDescriptionGlobally-unique tensor identifier and primary key (see the tensor identity policy above).com.google.protobuf.ByteStringGlobally-unique tensor identifier and primary key (see the tensor identity policy above).longgetChunkShape(int index) Nominal transfer chunk size per dimension (actual may vary for edge chunks).intNominal transfer chunk size per dimension (actual may vary for edge chunks).Nominal transfer chunk size per dimension (actual may vary for edge chunks).com.google.protobuf.ByteStringOpaque per-source generation token, sampled once at (re-)registration (biopb/biopb#178): the stat signature `mtime_ns:size` for a file/dir source, `iat:<ts>` for a caching proxy's mirror.getDimLabels(int index) Maps dimension index to semantic label (e.g., ["z", "y", "x"])com.google.protobuf.ByteStringgetDimLabelsBytes(int index) Maps dimension index to semantic label (e.g., ["z", "y", "x"])intMaps dimension index to semantic label (e.g., ["z", "y", "x"])Maps dimension index to semantic label (e.g., ["z", "y", "x"])getDtype()Element dtype (numpy-style, e.g., "uint8", "float32", "float64")com.google.protobuf.ByteStringElement dtype (numpy-style, e.g., "uint8", "float32", "float64")booleanWhether this source's bytes are local and cheap to read *right now*.Opaque JSON metadata compatible with OME-NGFF (.zattrs schema).com.google.protobuf.ByteStringOpaque JSON metadata compatible with OME-NGFF (.zattrs schema).doublegetPhysicalScale(int index) Per-dimension physical pixel size, aligned 1:1 with dim_labels/shape (same length and order).intPer-dimension physical pixel size, aligned 1:1 with dim_labels/shape (same length and order).Per-dimension physical pixel size, aligned 1:1 with dim_labels/shape (same length and order).getPhysicalUnit(int index) Per-dimension unit string for physical_scale (e.g.com.google.protobuf.ByteStringgetPhysicalUnitBytes(int index) Per-dimension unit string for physical_scale (e.g.intPer-dimension unit string for physical_scale (e.g.Per-dimension unit string for physical_scale (e.g.getPyramid(int index) Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales.intServer-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales.Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales.getPyramidOrBuilder(int index) Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales.List<? extends PyramidLevelOrBuilder>Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales.Dynamic reduction/downsampling method for scaled reads: "nearest", "area", or "precompute" (serve a native on-disk pyramid level).com.google.protobuf.ByteStringDynamic reduction/downsampling method for scaled reads: "nearest", "area", or "precompute" (serve a native on-disk pyramid level).longgetScaleHint(int index) Per-dimension integer downsampling factors for virtual/scaled reads.intPer-dimension integer downsampling factors for virtual/scaled reads.Per-dimension integer downsampling factors for virtual/scaled reads.longgetShape(int index) Full array shape (per dimension)intFull array shape (per dimension)Full array shape (per dimension)Optional slice hint - if provided, GetFlightInfo returns only chunks covering this range.Optional slice hint - if provided, GetFlightInfo returns only chunks covering this range.intHow long the server keeps this tensor, in seconds from `add_tensor`.How far the upload backing this tensor has got, when one does; unset for every ordinary (file-backed) source.How far the upload backing this tensor has got, when one does; unset for every ordinary (file-backed) source.booleanOpaque per-source generation token, sampled once at (re-)registration (biopb/biopb#178): the stat signature `mtime_ns:size` for a file/dir source, `iat:<ts>` for a caching proxy's mirror.booleanWhether this source's bytes are local and cheap to read *right now*.booleanOptional slice hint - if provided, GetFlightInfo returns only chunks covering this range.booleanHow long the server keeps this tensor, in seconds from `add_tensor`.booleanHow far the upload backing this tensor has got, when one does; unset for every ordinary (file-backed) source.Methods inherited from interface com.google.protobuf.MessageLiteOrBuilder
isInitializedMethods inherited from interface com.google.protobuf.MessageOrBuilder
findInitializationErrors, getAllFields, getDefaultInstanceForType, getDescriptorForType, getField, getInitializationErrorString, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof
-
Method Details
-
getArrayId
String getArrayId()Globally-unique tensor identifier and primary key (see the tensor identity policy above). Constructed as source_id (single-tensor) or source_id/field (multi-tensor). Same value as TensorReadOption.array_id.
string array_id = 1;- Returns:
- The arrayId.
-
getArrayIdBytes
com.google.protobuf.ByteString getArrayIdBytes()Globally-unique tensor identifier and primary key (see the tensor identity policy above). Constructed as source_id (single-tensor) or source_id/field (multi-tensor). Same value as TensorReadOption.array_id.
string array_id = 1;- Returns:
- The bytes for arrayId.
-
getDimLabelsList
Maps dimension index to semantic label (e.g., ["z", "y", "x"])
repeated string dim_labels = 2;- Returns:
- A list containing the dimLabels.
-
getDimLabelsCount
int getDimLabelsCount()Maps dimension index to semantic label (e.g., ["z", "y", "x"])
repeated string dim_labels = 2;- Returns:
- The count of dimLabels.
-
getDimLabels
Maps dimension index to semantic label (e.g., ["z", "y", "x"])
repeated string dim_labels = 2;- Parameters:
index- The index of the element to return.- Returns:
- The dimLabels at the given index.
-
getDimLabelsBytes
com.google.protobuf.ByteString getDimLabelsBytes(int index) Maps dimension index to semantic label (e.g., ["z", "y", "x"])
repeated string dim_labels = 2;- Parameters:
index- The index of the value to return.- Returns:
- The bytes of the dimLabels at the given index.
-
getShapeList
Full array shape (per dimension)
repeated int64 shape = 3;- Returns:
- A list containing the shape.
-
getShapeCount
int getShapeCount()Full array shape (per dimension)
repeated int64 shape = 3;- Returns:
- The count of shape.
-
getShape
long getShape(int index) Full array shape (per dimension)
repeated int64 shape = 3;- Parameters:
index- The index of the element to return.- Returns:
- The shape at the given index.
-
getChunkShapeList
Nominal transfer chunk size per dimension (actual may vary for edge chunks). This is the grid the tensor's chunks are delivered on, chosen by the server-side adapter that knows how the bytes sit on disk; it is not the store's own block size, and no read is issued at any other granularity. On a *response* it is the grid you will read on -- the tensor's own grid in a describe, and for a scaled read the grid of that response's (already reduced) chunks. It is answered ONLY by GetFlightInfo, which resolves the tensor adapter first: the grid depends on facts that exist only once a specific tensor/scene is bound (its backing chunk layout, its dimension labels, format layout rules, the native pyramid level, the request scale), so a source-level listing cannot own it. The catalog and DataSourceDescriptor.tensors therefore carry it EMPTY -- like pyramid and physical_scale -- and an empty grid is not a usable fallback: a client that needs one for Dask construction, tiling or prefetching must describe the tensor. (Empty also means "old server"; the field has always been optional.) On an upload *request* it is the grid you will write on -- it sets the created store's blocking and the bounds every chunk must land on.
repeated int64 chunk_shape = 4;- Returns:
- A list containing the chunkShape.
-
getChunkShapeCount
int getChunkShapeCount()Nominal transfer chunk size per dimension (actual may vary for edge chunks). This is the grid the tensor's chunks are delivered on, chosen by the server-side adapter that knows how the bytes sit on disk; it is not the store's own block size, and no read is issued at any other granularity. On a *response* it is the grid you will read on -- the tensor's own grid in a describe, and for a scaled read the grid of that response's (already reduced) chunks. It is answered ONLY by GetFlightInfo, which resolves the tensor adapter first: the grid depends on facts that exist only once a specific tensor/scene is bound (its backing chunk layout, its dimension labels, format layout rules, the native pyramid level, the request scale), so a source-level listing cannot own it. The catalog and DataSourceDescriptor.tensors therefore carry it EMPTY -- like pyramid and physical_scale -- and an empty grid is not a usable fallback: a client that needs one for Dask construction, tiling or prefetching must describe the tensor. (Empty also means "old server"; the field has always been optional.) On an upload *request* it is the grid you will write on -- it sets the created store's blocking and the bounds every chunk must land on.
repeated int64 chunk_shape = 4;- Returns:
- The count of chunkShape.
-
getChunkShape
long getChunkShape(int index) Nominal transfer chunk size per dimension (actual may vary for edge chunks). This is the grid the tensor's chunks are delivered on, chosen by the server-side adapter that knows how the bytes sit on disk; it is not the store's own block size, and no read is issued at any other granularity. On a *response* it is the grid you will read on -- the tensor's own grid in a describe, and for a scaled read the grid of that response's (already reduced) chunks. It is answered ONLY by GetFlightInfo, which resolves the tensor adapter first: the grid depends on facts that exist only once a specific tensor/scene is bound (its backing chunk layout, its dimension labels, format layout rules, the native pyramid level, the request scale), so a source-level listing cannot own it. The catalog and DataSourceDescriptor.tensors therefore carry it EMPTY -- like pyramid and physical_scale -- and an empty grid is not a usable fallback: a client that needs one for Dask construction, tiling or prefetching must describe the tensor. (Empty also means "old server"; the field has always been optional.) On an upload *request* it is the grid you will write on -- it sets the created store's blocking and the bounds every chunk must land on.
repeated int64 chunk_shape = 4;- Parameters:
index- The index of the element to return.- Returns:
- The chunkShape at the given index.
-
getDtype
String getDtype()Element dtype (numpy-style, e.g., "uint8", "float32", "float64")
string dtype = 5;- Returns:
- The dtype.
-
getDtypeBytes
com.google.protobuf.ByteString getDtypeBytes()Element dtype (numpy-style, e.g., "uint8", "float32", "float64")
string dtype = 5;- Returns:
- The bytes for dtype.
-
hasSliceHint
boolean hasSliceHint()Optional slice hint - if provided, GetFlightInfo returns only chunks covering this range. Leave unset/null to return all chunks.
.biopb.tensor.SliceHint slice_hint = 6;- Returns:
- Whether the sliceHint field is set.
-
getSliceHint
SliceHint getSliceHint()Optional slice hint - if provided, GetFlightInfo returns only chunks covering this range. Leave unset/null to return all chunks.
.biopb.tensor.SliceHint slice_hint = 6;- Returns:
- The sliceHint.
-
getSliceHintOrBuilder
SliceHintOrBuilder getSliceHintOrBuilder()Optional slice hint - if provided, GetFlightInfo returns only chunks covering this range. Leave unset/null to return all chunks.
.biopb.tensor.SliceHint slice_hint = 6; -
getScaleHintList
Per-dimension integer downsampling factors for virtual/scaled reads. Example: [1, 8, 8] means full resolution on first axis, 8x reduced on remaining. These do not change tensor identity, only how a specific read request is planned.
repeated int64 scale_hint = 7;- Returns:
- A list containing the scaleHint.
-
getScaleHintCount
int getScaleHintCount()Per-dimension integer downsampling factors for virtual/scaled reads. Example: [1, 8, 8] means full resolution on first axis, 8x reduced on remaining. These do not change tensor identity, only how a specific read request is planned.
repeated int64 scale_hint = 7;- Returns:
- The count of scaleHint.
-
getScaleHint
long getScaleHint(int index) Per-dimension integer downsampling factors for virtual/scaled reads. Example: [1, 8, 8] means full resolution on first axis, 8x reduced on remaining. These do not change tensor identity, only how a specific read request is planned.
repeated int64 scale_hint = 7;- Parameters:
index- The index of the element to return.- Returns:
- The scaleHint at the given index.
-
getReductionMethod
String getReductionMethod()Dynamic reduction/downsampling method for scaled reads: "nearest", "area", or "precompute" (serve a native on-disk pyramid level). Compatibility aliases accepted: "stride" -> "nearest", "mean" -> "area", "precomputed" -> "precompute", "linear" (deprecated) -> "area". An empty or omitted value is resolved to "nearest" by the server. Clients that want averaging must set this field explicitly to "area". Note: already-cached chunk IDs that carry no method byte (issued before this default was established) are decoded as "area" for compatibility; only newly minted IDs default to "nearest".
string reduction_method = 8;- Returns:
- The reductionMethod.
-
getReductionMethodBytes
com.google.protobuf.ByteString getReductionMethodBytes()Dynamic reduction/downsampling method for scaled reads: "nearest", "area", or "precompute" (serve a native on-disk pyramid level). Compatibility aliases accepted: "stride" -> "nearest", "mean" -> "area", "precomputed" -> "precompute", "linear" (deprecated) -> "area". An empty or omitted value is resolved to "nearest" by the server. Clients that want averaging must set this field explicitly to "area". Note: already-cached chunk IDs that carry no method byte (issued before this default was established) are decoded as "area" for compatibility; only newly minted IDs default to "nearest".
string reduction_method = 8;- Returns:
- The bytes for reductionMethod.
-
getMetadataJson
String getMetadataJson()Opaque JSON metadata compatible with OME-NGFF (.zattrs schema). Contains: multiscales, axes, coordinateTransformations, channels, etc. For precomputed pyramids: multiscales[].datasets[].path and scale info. Empty string if no metadata available.
string metadata_json = 9;- Returns:
- The metadataJson.
-
getMetadataJsonBytes
com.google.protobuf.ByteString getMetadataJsonBytes()Opaque JSON metadata compatible with OME-NGFF (.zattrs schema). Contains: multiscales, axes, coordinateTransformations, channels, etc. For precomputed pyramids: multiscales[].datasets[].path and scale info. Empty string if no metadata available.
string metadata_json = 9;- Returns:
- The bytes for metadataJson.
-
getPyramidList
List<PyramidLevel> getPyramidList()Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales. Level 0 is full resolution (scale_hint all 1s). A client reads each level via the normal scale_hint read path. Populated only by GetFlightInfo (left empty in the catalog, like metadata_json); empty also means "old server / decide client-side".
repeated .biopb.tensor.PyramidLevel pyramid = 10; -
getPyramid
Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales. Level 0 is full resolution (scale_hint all 1s). A client reads each level via the normal scale_hint read path. Populated only by GetFlightInfo (left empty in the catalog, like metadata_json); empty also means "old server / decide client-side".
repeated .biopb.tensor.PyramidLevel pyramid = 10; -
getPyramidCount
int getPyramidCount()Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales. Level 0 is full resolution (scale_hint all 1s). A client reads each level via the normal scale_hint read path. Populated only by GetFlightInfo (left empty in the catalog, like metadata_json); empty also means "old server / decide client-side".
repeated .biopb.tensor.PyramidLevel pyramid = 10; -
getPyramidOrBuilderList
List<? extends PyramidLevelOrBuilder> getPyramidOrBuilderList()Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales. Level 0 is full resolution (scale_hint all 1s). A client reads each level via the normal scale_hint read path. Populated only by GetFlightInfo (left empty in the catalog, like metadata_json); empty also means "old server / decide client-side".
repeated .biopb.tensor.PyramidLevel pyramid = 10; -
getPyramidOrBuilder
Server-advertised resolution pyramid: the ordered levels the server recommends reading this tensor at, coarsest decision made server-side so native (precomputed) pyramids are honored and the precache worker and client request the same scales. Level 0 is full resolution (scale_hint all 1s). A client reads each level via the normal scale_hint read path. Populated only by GetFlightInfo (left empty in the catalog, like metadata_json); empty also means "old server / decide client-side".
repeated .biopb.tensor.PyramidLevel pyramid = 10; -
getPhysicalScaleList
Per-dimension physical pixel size, aligned 1:1 with dim_labels/shape (same length and order). Element i is the physical extent of one sample along dimension i, in the unit given by physical_unit[i]. 0.0 means "unknown" for that dimension. This is the ~200-byte summary consumers need for display scale, so the common case avoids fetching the full OME tree. Populated by GetFlightInfo (left empty in the catalog, like pyramid / metadata_json); empty also means "old server / no physical scale -> the full OME (metadata_json) remains the authoritative source".
repeated double physical_scale = 11;- Returns:
- A list containing the physicalScale.
-
getPhysicalScaleCount
int getPhysicalScaleCount()Per-dimension physical pixel size, aligned 1:1 with dim_labels/shape (same length and order). Element i is the physical extent of one sample along dimension i, in the unit given by physical_unit[i]. 0.0 means "unknown" for that dimension. This is the ~200-byte summary consumers need for display scale, so the common case avoids fetching the full OME tree. Populated by GetFlightInfo (left empty in the catalog, like pyramid / metadata_json); empty also means "old server / no physical scale -> the full OME (metadata_json) remains the authoritative source".
repeated double physical_scale = 11;- Returns:
- The count of physicalScale.
-
getPhysicalScale
double getPhysicalScale(int index) Per-dimension physical pixel size, aligned 1:1 with dim_labels/shape (same length and order). Element i is the physical extent of one sample along dimension i, in the unit given by physical_unit[i]. 0.0 means "unknown" for that dimension. This is the ~200-byte summary consumers need for display scale, so the common case avoids fetching the full OME tree. Populated by GetFlightInfo (left empty in the catalog, like pyramid / metadata_json); empty also means "old server / no physical scale -> the full OME (metadata_json) remains the authoritative source".
repeated double physical_scale = 11;- Parameters:
index- The index of the element to return.- Returns:
- The physicalScale at the given index.
-
getPhysicalUnitList
Per-dimension unit string for physical_scale (e.g. "micrometer", "µm"), aligned 1:1 with physical_scale. "" means unknown.
repeated string physical_unit = 12;- Returns:
- A list containing the physicalUnit.
-
getPhysicalUnitCount
int getPhysicalUnitCount()Per-dimension unit string for physical_scale (e.g. "micrometer", "µm"), aligned 1:1 with physical_scale. "" means unknown.
repeated string physical_unit = 12;- Returns:
- The count of physicalUnit.
-
getPhysicalUnit
Per-dimension unit string for physical_scale (e.g. "micrometer", "µm"), aligned 1:1 with physical_scale. "" means unknown.
repeated string physical_unit = 12;- Parameters:
index- The index of the element to return.- Returns:
- The physicalUnit at the given index.
-
getPhysicalUnitBytes
com.google.protobuf.ByteString getPhysicalUnitBytes(int index) Per-dimension unit string for physical_scale (e.g. "micrometer", "µm"), aligned 1:1 with physical_scale. "" means unknown.
repeated string physical_unit = 12;- Parameters:
index- The index of the value to return.- Returns:
- The bytes of the physicalUnit at the given index.
-
hasUploadStatus
boolean hasUploadStatus()How far the upload backing this tensor has got, when one does; unset for every ordinary (file-backed) source. Populated only by GetFlightInfo, like `pyramid` and `physical_scale`, and left empty in the catalog. A live read, computed per request and stored nowhere -- which is what biopb/biopb#1035 actually requires. It rides the *per-source* surface because the caller who needs it holds a per-source credential and asks about one object: that is the fast-return poller. A catalog-shaped question would belong on a catalog-shaped surface.
.biopb.tensor.UploadStatus upload_status = 15;- Returns:
- Whether the uploadStatus field is set.
-
getUploadStatus
UploadStatus getUploadStatus()How far the upload backing this tensor has got, when one does; unset for every ordinary (file-backed) source. Populated only by GetFlightInfo, like `pyramid` and `physical_scale`, and left empty in the catalog. A live read, computed per request and stored nowhere -- which is what biopb/biopb#1035 actually requires. It rides the *per-source* surface because the caller who needs it holds a per-source credential and asks about one object: that is the fast-return poller. A catalog-shaped question would belong on a catalog-shaped surface.
.biopb.tensor.UploadStatus upload_status = 15;- Returns:
- The uploadStatus.
-
getUploadStatusOrBuilder
UploadStatusOrBuilder getUploadStatusOrBuilder()How far the upload backing this tensor has got, when one does; unset for every ordinary (file-backed) source. Populated only by GetFlightInfo, like `pyramid` and `physical_scale`, and left empty in the catalog. A live read, computed per request and stored nowhere -- which is what biopb/biopb#1035 actually requires. It rides the *per-source* surface because the caller who needs it holds a per-source credential and asks about one object: that is the fast-return poller. A catalog-shaped question would belong on a catalog-shaped surface.
.biopb.tensor.UploadStatus upload_status = 15; -
hasIsResident
boolean hasIsResident()Whether this source's bytes are local and cheap to read *right now*. Filled only when the read mask asks for "is_resident", because the answer is a bounded stat walk of the source -- never free, so never default. Unset means nobody asked, which a UI draws as no indicator rather than as "remote". Volatile: a synced folder re-dehydrates under storage pressure with nothing to notify anyone, so there is no moment at which a stored answer stays true. Computed per request, stored nowhere, and not to be cached by a client (biopb/biopb#1035). It was briefly a catalog-wide action; that made a live filesystem walk the cost of listing, which is why it is here and per-source now.
optional bool is_resident = 16;- Returns:
- Whether the isResident field is set.
-
getIsResident
boolean getIsResident()Whether this source's bytes are local and cheap to read *right now*. Filled only when the read mask asks for "is_resident", because the answer is a bounded stat walk of the source -- never free, so never default. Unset means nobody asked, which a UI draws as no indicator rather than as "remote". Volatile: a synced folder re-dehydrates under storage pressure with nothing to notify anyone, so there is no moment at which a stored answer stays true. Computed per request, stored nowhere, and not to be cached by a client (biopb/biopb#1035). It was briefly a catalog-wide action; that made a live filesystem walk the cost of listing, which is why it is here and per-source now.
optional bool is_resident = 16;- Returns:
- The isResident.
-
hasTtlSeconds
boolean hasTtlSeconds()How long the server keeps this tensor, in seconds from `add_tensor`. **A request on the way in, a statement on the way out.** The server applies its own policy over what was asked for and answers with the lifetime it granted, which may be shorter: a source that caps lifetimes clamps an unset request to the cap too. Unset on the way in asks for the source's default; unset on the way out means the tensor is kept until someone discards it. Zero is not a lifetime and is refused rather than read as "expire immediately". The deadline is absolute and recorded with the store, so it survives a restart, and it runs from `add_tensor` rather than from READY -- a producer that never publishes cannot keep bytes alive by not finishing. Past it the reclaim sweep discards the tensor as if its producer had.
optional uint32 ttl_seconds = 17;- Returns:
- Whether the ttlSeconds field is set.
-
getTtlSeconds
int getTtlSeconds()How long the server keeps this tensor, in seconds from `add_tensor`. **A request on the way in, a statement on the way out.** The server applies its own policy over what was asked for and answers with the lifetime it granted, which may be shorter: a source that caps lifetimes clamps an unset request to the cap too. Unset on the way in asks for the source's default; unset on the way out means the tensor is kept until someone discards it. Zero is not a lifetime and is refused rather than read as "expire immediately". The deadline is absolute and recorded with the store, so it survives a restart, and it runs from `add_tensor` rather than from READY -- a producer that never publishes cannot keep bytes alive by not finishing. Past it the reclaim sweep discards the tensor as if its producer had.
optional uint32 ttl_seconds = 17;- Returns:
- The ttlSeconds.
-
hasContentVersion
boolean hasContentVersion()Opaque per-source generation token, sampled once at (re-)registration (biopb/biopb#178): the stat signature `mtime_ns:size` for a file/dir source, `iat:<ts>` for a caching proxy's mirror. Two descriptors carrying DIFFERENT tokens for one source describe different content; two carrying the SAME token describe the same content. It is not ordered -- newer is not "greater" -- and it is not a hash of the bytes, so an in-place edit that preserves mtime and size is invisible to it. A SERVING field, like chunk_shape and pyramid: filled by GetFlightInfo from the bound TENSOR adapter, left empty on the structural DataSourceDescriptor.tensors entries. Consumers need it on the freshest thing in the request, and GetFlightInfo is fetch-per-call by contract while a catalog listing is a natural thing to cache (biopb/biopb#834). Usually a source-level property repeated on the tensor, but not always: a tensor whose bytes are not the source's carries its own (an uploaded label set). Absent means "no claim", not "unchanged": a source whose URL cannot be stat'd (cloud, unresolved) leaves it unset, and consumers must degrade to whatever freshness policy they used before rather than treating absence as a stable version. Servers predating this field also leave it unset. Read it as a version suffix on the tensor's identity: an identifier built from it changes when the data changes. The HTTP sidecar does exactly that, splicing the token into the array_id it publishes so a browser cache keyed on a tile URL cannot outlive the content (biopb/biopb#780). A chunk cache needs nothing from this field -- the server folds the same value into chunk_id, where it invalidates for free. A claim about the DATA: it moves only when the data does. How the server forms an opaque chunk key, which must also change when chunking or normalization changes, is internal to the server and not visible here.
optional bytes content_version = 14;- Returns:
- Whether the contentVersion field is set.
-
getContentVersion
com.google.protobuf.ByteString getContentVersion()Opaque per-source generation token, sampled once at (re-)registration (biopb/biopb#178): the stat signature `mtime_ns:size` for a file/dir source, `iat:<ts>` for a caching proxy's mirror. Two descriptors carrying DIFFERENT tokens for one source describe different content; two carrying the SAME token describe the same content. It is not ordered -- newer is not "greater" -- and it is not a hash of the bytes, so an in-place edit that preserves mtime and size is invisible to it. A SERVING field, like chunk_shape and pyramid: filled by GetFlightInfo from the bound TENSOR adapter, left empty on the structural DataSourceDescriptor.tensors entries. Consumers need it on the freshest thing in the request, and GetFlightInfo is fetch-per-call by contract while a catalog listing is a natural thing to cache (biopb/biopb#834). Usually a source-level property repeated on the tensor, but not always: a tensor whose bytes are not the source's carries its own (an uploaded label set). Absent means "no claim", not "unchanged": a source whose URL cannot be stat'd (cloud, unresolved) leaves it unset, and consumers must degrade to whatever freshness policy they used before rather than treating absence as a stable version. Servers predating this field also leave it unset. Read it as a version suffix on the tensor's identity: an identifier built from it changes when the data changes. The HTTP sidecar does exactly that, splicing the token into the array_id it publishes so a browser cache keyed on a tile URL cannot outlive the content (biopb/biopb#780). A chunk cache needs nothing from this field -- the server folds the same value into chunk_id, where it invalidates for free. A claim about the DATA: it moves only when the data does. How the server forms an opaque chunk key, which must also change when chunking or normalization changes, is internal to the server and not visible here.
optional bytes content_version = 14;- Returns:
- The contentVersion.
-