Releases: justincpresley/ndn-sync
Releases · justincpresley/ndn-sync
v0.0.0-alpha.16 - 2024-02-27
Added
RWMutex
is embedded intoStateVector
.Update()
forStateVector
that updates the time for an entry.LastUpdated()
pulls the time for a certain entry.
Changed
Scheduler
operates entirely withtime.Duration
instead ofint64
internally. This removes many type conversions and makes it more readable. (made possible withmath/rand/v2
)Scheduler
now hasRWMutex
instead ofMutex
. This will not affect it's usage in our case now but could in other use cases.- Changed logic of
OnTimer
function withinCore
to read better. - De-interfaced
StateVector
. Core
now usesStateVector
s additional functionality (mutexes and times). This unclutters theCore
.OrderedMap
is now namedNameMap
, modernized different aspects of it. The internallist
used is now fully hidden from external API.- Updated all dependencies.
Fixed
- Copying a
NameMap
(previouslyOrderedMap
) now correctly copies everything.
Removed
init.go
,math/rand/v2
provides a simple seed for us to use from the get-go.
v0.0.0-alpha.15 - 2024-02-23
Added
Scheduler
now hasApplyBounds()
which must be called beforeStart()
. This allows you to change the bounds afterStart()
and simplifiesScheduler
to operate on bounds instead of jitter.JitterToBounds()
to help operateScheduler
.
Changed
- After a
Core
exitsSuppression
state, more efficiently detect if a Sync Interest needs to be sent. - De-interface small simple structures:
MissingData
andStatusChange
. - When a
Core
entersSuppression
, set the record to the remoteStateVector
that causedSuppression
. This greatly reduces storage operations while inSuppression
. - Reorganized functions to match interface method order.
- Changed naming of a constant variable and
StateVector
function to be more logical. - Moved to go 1.22, updated all dependencies.
Fixed
Core
will enterSuppression
based on its own datasets given that the dataset was not recently updated.
v0.0.0-alpha.14 - 2024-02-12
Added
EfficientSuppression
option for SVSTwoStateCore
. Found by @seijiotsu, this option ignores out-of-date Sync Interests within the network RTT which dramatically reduces the number of suppressions. With extremely sparse SVS networks, this option might incorporate delay. More on this is documented here and will later be added to the Spec.
Changed
- Slight refactor of SVS
Core
. Removed many small inefficiencies in its logic. Operations were found unnecessary in bothSuppression
andSteady
states. - Internal naming of variables and functions have been changed for clarity.
- Reuse of a variable during
StateVector
encoding.
Fixed
- Slight refactor of SVS
Scheduler
, found that it was incorporating jitter wrong. - SVS
CoreConfig
giving the appropriateCore
type.
v0.0.0-alpha.13 - 2024-02-09
Added
OneStateCore
option for testing purposes.
Changed
- An SVS
StateVector
now resides within the application parameters' portion of a Sync Interest. While this is not follow the Spec currently, it will in due time as most libraries are incorporating this. - SVS
Core
now is entirely subscription-based and can support multiple channel listeners. - SVS
Core
is not tied to a particular dataset. You can now publish multiple datasets per node. - Changed SVS examples to follow NFD's new default Unix socket path.
- Internal naming of variables and functions have been changed for clarity.
- Updated dependencies.
v0.0.0-alpha.12 - 2023-08-31
Added
- SVS
Constants
now containenc.Component
s that are added in SVS's naming. This was not exposed previously. BareSourceOrientedNaming
which is a newNamingScheme
that uses no additionalenc.Component
s during SVS's naming.OrderedMap
s now take anOrdering
:Canonical
orLatestEntriesFirst
.OrderedMap
is now less generic and more tied to our use-case of NDN. AnElement
now stores the key in bothenc.Name
andstring
forms. This results in slightly more memory usage but increases performance by minimizing the amount of 'name to string' and 'string to name' conversions throughout SVS.
Changed
- SVS API is now
enc.Name
-based instead of beingstring
-based. OrderedMap
API to reflect listed changes.- Updated dependencies.
v0.0.0-alpha.11 - 2023-02-03
Added
- A new Optimized
StateVector
Encoding! Reduces 2+ bytes per entry. SetFormalEncoding
tofalse
to activate it.
Changed
- Misspelling within SVS
Constants
. - Updated dependencies.
Fixed
- Data race within
Scheduler
with the pairing ofstartTime
andcycleTime
. - Data race when resetting
heart
s within theTracker
ofHealthSync
.
Removed
- Scheduler's
Add()
due to no-use. However, it can still be achieved viaSet( someTime + TimeLeft() )
.
v0.0.0-alpha.10 - 2023-01-06
Added
- A new SVS Sync type
HealthSync
, an ephemeral sync for source health. It is still just a prototype however and STC. - A new SVS example to show off
HealthSync
.
Changed
Constants
now holdstime.Duration
variables. Massively simplifies many areas of the SVS code including but not limited toCore
andScheduler
.
v0.0.0-alpha.9 - 2023-01-01
Added
- A new SVS
HandlingOption
!EqualTrafficHandling
which spreads requests equally among the nodes. Please note that each handling option does have unique pros and cons.
Changed
- SVS
NewCore()
is now a generic function taking a generalCoreConfig
. Opens the door for future options. - Be able to alter the SVS
MissingData
structure to help track the data you still need when looping. - SVS
Core
now provides achan []MissingData
rather thanchan *[]MissingData
. - Go-ify all getters.
v0.0.0-alpha.8 - 2022-12-29
Changed
- SVS
Core
now provides a missing channel instead of taking a missing data callback. More low-level control and efficiency were primary factors for this change as well as the listed fix. - SVS
Sync
s now provide aHandlingOption
for how the missing channel will be handled. Opens the door for future options. - License switch to ISC. The restrictions were not very friendly.
- Renaming of variables, functions, and types.
- Other small changes.
Fixed
- An out-of-sync
Core
vulnerability caused by having a very slow missing data callback. The results could range from just receiving updates late to missing data entirely.
v0.0.0-alpha.7 - 2022-12-27
Changed
- Completely refactored SVS
Scheduler
. - SVS's built-in fetchers for both
NativeSync
+SharedSync
now use a channel of structs rather than a channel of funcs for readability and possible performance. - Utilize
strings.Builder
for the(stateVector).String()
method. - Updated all dependencies.
- Other small changes.
Removed
- Dependencies and code not related to the first sync, SVS.