Skip to content

1.1.1

Choose a tag to compare

@Hyshmily Hyshmily released this 01 Jun 05:33
  • Fallback Version Negative SpacefallbackVersion() migrated to Long.MIN_VALUE + counter (negative space). This eliminates the bug where degraded versions suppressed normal broadcasts in sendDeduped numeric comparison. Normal versions (positive) always dominate degraded versions (negative).
  • Invalidate GuardhandleInvalidate now includes a shouldSkipForSync guard, preventing degraded INVALIDATE broadcasts from incorrectly clearing normal L1 entries.
  • Worker HOT Promotion on Redis Unavailable — When Redis returns null during handleHot, the method promotes an existing degraded L1 entry (if present) to HOT, preventing permanent loss of Worker HOT decisions.
  • SyncMessage Default FixSyncMessage.from() default isVersionDegraded changed from true to false, preventing silent data sync failures when the header is missing.
  • Multi-Module Splithotkey:1.1.0 refactored into hotkey-parent (pom) with common/ and worker/ modules. The common artifact published to Maven Central; worker is a standalone Spring Boot app (maven.deploy.skip=true). Worker-only classes moved out of the shared artifact, reducing App-only footprint.
  • Coexistence Mode Removal — Removed exclusive-mode and hotkey.worker.mode (COEXISTENCE/EMBEDDED/STANDALONE). Deployment simplified to two modes: App-only / Worker-only. Replaced condition annotation with @ConditionalOnProperty(prefix="hotkey.worker", name="enabled", havingValue="false", matchIfMissing=true).
  • Annotation Support — Added annotation/ package and @HotCache annotation (renamed to avoid conflict with HotKey facade). Supports SpEL key(), three operation types (READ/WRITE/INVALIDATE), and per-annotation TTL/soft-expire overrides. HotKeyAspect injects HotKey facade; requires spring-boot-starter-aop (<optional>true</optional>). HotKeyAnnotationAutoConfiguration registered as the 9th auto-configuration class.
  • Worker Configuration RestructureWorkerProperties.java reorganized into 9 nested inner classes (Routing, Messaging, SlidingWindow, Threshold, StateMachine, DynamicThreshold, TopKValidation, HeavyKeeper) plus a flat enabled field. Auto-configuration property access paths updated to nested getters; fixed @Scheduled SpEL; retained backward-compatible delegate methods.
  • Degraded Version Upgrade — Replaced System.nanoTime() fallback with (nodeId << 32) | counter. Uses InstanceIdGenerator (UUID file + hostname fallback) to derive node ID and a shared AtomicLong. Guarantees cross-JVM ordering without clock drift.
  • Full-Path Reportingget() / getWithSoftExpire() now call hotKeyReporter.record() on both L1 hit and L2 miss paths (previously only hot-key misses). Worker receives complete access patterns rather than only the hot-key subset.
  • Dependency Additions — Added spring-amqp and spring-boot-starter-aop as <optional>true</optional> to the common module. Bumped Guava version to 32.1.3-jre in <dependencyManagement>.
  • AutoConfiguration.imports Update — Removed WorkerAutoConfiguration from the shared imports file (now scanned by @SpringBootApplication in worker module). Added HotKeyAnnotationAutoConfiguration. Total 9 entries maintained.
  • Documentation & Readability — README deployment tables collapsed to two modes; Worker config reorganized with group header rows and nested YAML examples. Removed coexistence references from CLAUDE.md/AGENTS.md. application.yml partitioned with # ── Section ── markers. Retained Apache 2.0 license headers.