Verify admission failure diagnostics and updated Windows release archive
This commit is contained in:
1 parent
d85746db5b
commit
99748bd99f
2 files changed
+89
No files matched your search
@@ -301,6 +301,70 @@ impl EmbeddingProvider for BudgetedProvider {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
#[test]
|
#[test]
|
||||||
|
fn failed_admission_clears_prior_worker_diagnostics_without_calling_worker() {
|
||||||
|
use searchi_core::metrics::MetricsMode;
|
||||||
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||||
|
struct ObservedInvocation(Arc<AtomicUsize>);
|
||||||
|
impl EmbeddingProvider for ObservedInvocation {
|
||||||
|
fn fingerprint(&self) -> &str {
|
||||||
|
"scheduler-test-only"
|
||||||
|
}
|
||||||
|
fn dimensions(&self) -> usize {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
fn split_windows(&mut self, _: &str, _: &str) -> Result<Vec<TextWindow>> {
|
||||||
|
unreachable!()
|
||||||
|
}
|
||||||
|
fn embed_documents(&mut self, _: &[&str], _: &str) -> Result<Vec<Vec<f32>>> {
|
||||||
|
unreachable!()
|
||||||
|
}
|
||||||
|
fn embed_query(&mut self, _: &str) -> Result<Vec<f32>> {
|
||||||
|
self.0.fetch_add(1, Ordering::SeqCst);
|
||||||
|
Ok(Vec::new())
|
||||||
|
}
|
||||||
|
fn embed_code_query(&mut self, query: &str) -> Result<Vec<f32>> {
|
||||||
|
self.embed_query(query)
|
||||||
|
}
|
||||||
|
fn query_diagnostics(&self) -> BTreeMap<String, u64> {
|
||||||
|
BTreeMap::from([("prior_worker_call".into(), 1)])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let budget = InferenceBudget::new(1);
|
||||||
|
// Test worker weight two without requiring particular test host hardware.
|
||||||
|
budget.0.state.lock().unwrap().limit = 2;
|
||||||
|
let calls = Arc::new(AtomicUsize::new(0));
|
||||||
|
let mut provider = BudgetedProvider::new(
|
||||||
|
Box::new(ObservedInvocation(calls.clone())),
|
||||||
|
&budget,
|
||||||
|
InferenceRole::Foreground,
|
||||||
|
2,
|
||||||
|
);
|
||||||
|
provider
|
||||||
|
.embed_query_debug("first admitted invocation")
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(calls.load(Ordering::SeqCst), 1);
|
||||||
|
assert_eq!(provider.query_diagnostics()["prior_worker_call"], 1);
|
||||||
|
assert_eq!(budget.configure(1), 1);
|
||||||
|
let mut trace = TraceCollector::new(MetricsMode::Debug);
|
||||||
|
assert!(provider
|
||||||
|
.embed_query_traced("rejected invocation", true, &mut trace, None)
|
||||||
|
.is_err());
|
||||||
|
assert_eq!(calls.load(Ordering::SeqCst), 1);
|
||||||
|
assert!(provider.query_diagnostics().is_empty());
|
||||||
|
let metrics = trace.finish(0);
|
||||||
|
let stages = metrics.trace.unwrap();
|
||||||
|
assert_eq!(stages.len(), 1);
|
||||||
|
assert_eq!(stages[0].name, "semantic.inference.admission_wait");
|
||||||
|
assert_eq!(stages[0].counters["failed"], 1);
|
||||||
|
assert_eq!(stages[0].counters["worker_threads"], 2);
|
||||||
|
assert!(stages[0].duration_ms >= 0.0);
|
||||||
|
assert!(provider.embed_code_query_debug("also rejected").is_err());
|
||||||
|
assert!(provider.query_diagnostics().is_empty());
|
||||||
|
assert_eq!(calls.load(Ordering::SeqCst), 1);
|
||||||
|
assert_eq!(budget.0.state.lock().unwrap().foreground, 0);
|
||||||
|
assert_eq!(budget.0.state.lock().unwrap().used, 0);
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
fn reserved_query_capacity_admits_foreground_during_background() {
|
fn reserved_query_capacity_admits_foreground_during_background() {
|
||||||
let budget = InferenceBudget::new(1);
|
let budget = InferenceBudget::new(1);
|
||||||
// Deliberately exercise a two-thread scheduler independent of CI hardware.
|
// Deliberately exercise a two-thread scheduler independent of CI hardware.
|
||||||
|
|||||||
@@ -87,6 +87,31 @@ installers/upgrades/signatures and macOS packaging remain open.
|
|||||||
|
|
||||||
## Executed checks
|
## Executed checks
|
||||||
|
|
||||||
|
The scheduling change at `d85746d` passed 110 Windows workspace tests (19
|
||||||
|
explicitly ignored), 20 desktop unit tests and 39 frontend tests. Workspace and
|
||||||
|
desktop strict Clippy, Rust formatting, frontend production build and Prettier
|
||||||
|
checks passed. The real Google concurrent-inference regression passed again
|
||||||
|
after scoped-thread cleanup; its measured scope is documented in
|
||||||
|
[PERFORMANCE.md](PERFORMANCE.md#shared-inference-admission).
|
||||||
|
|
||||||
|
The updated Windows embedded-frontend Release executable is 23,523,328 bytes,
|
||||||
|
SHA-256 `6efc81b653c7bd37ecbe63bbe538b126440daa5b62419dd1994c4a3696799d52`.
|
||||||
|
Its unsigned development ZIP is 145,262,551 bytes, SHA-256
|
||||||
|
`c1859d6ead7628f02965568e1c509cd52484e22ec397a86f62bcea108487de16`.
|
||||||
|
The extracted archive passed integrity checks for 39 files, genuine 768-dimensional
|
||||||
|
normalized Google code-query inference and decoder startup. It requested automatic
|
||||||
|
device selection with Vulkan disabled only in the smoke-test child, used the
|
||||||
|
optimized CPU module and loaded no Vulkan provider. This does not verify the
|
||||||
|
updated desktop UI, clean-machine installation or actual GPU behavior.
|
||||||
|
|
||||||
|
Five targeted scheduler tests also passed, including lowering admission below
|
||||||
|
a session's worker weight: rejection invokes no worker, clears prior diagnostics,
|
||||||
|
closes the failure trace and releases priority reservations. This is scheduler
|
||||||
|
failure testing; semantic quality is covered by the separate real Google fixture.
|
||||||
|
|
||||||
|
The following checks describe the earlier prepared-reader/recovery milestone,
|
||||||
|
not the updated Linux desktop or updated Windows release artifacts:
|
||||||
|
|
||||||
- Windows and native Linux workspace tests: 106 passed each, 18 ignored.
|
- Windows and native Linux workspace tests: 106 passed each, 18 ignored.
|
||||||
- Windows native desktop unit suite: 17 passed.
|
- Windows native desktop unit suite: 17 passed.
|
||||||
- Strict Windows/Linux workspace and Windows desktop Clippy plus both formatting checks passed.
|
- Strict Windows/Linux workspace and Windows desktop Clippy plus both formatting checks passed.
|
||||||
|
|||||||
Reference in new issue
Block a user