All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Expose NodeEvent to public API #643
- Node API to subscribe to peer connection events #625
- Support private network secured by pre-shared key #635
- Update
libp2p
to version0.53.2
and apply API changes #631 - Move relay registration into main network service event loop #632
- Adjust level of replication and materialization logs #639
- Handle connection ids greater than 9 in
Peer
impl ofHuman
trait #634 - Check if blob file exists before deleting it from fs #636
- Inconsistent blob storage warning was wrongly shown #638
- Safely handle missing document when retrieving document view from store #637
- Introduce
PeerAddress
struct to help resolveString
to internal address types #621 - Re-dial all configured known peers on schedule #622
- Increase
max_pending_connections_in
andmax_pending_connections_out
#628
- Re-materialize blobs which were only partially written to disc due to node crash #618
- Include all logs for target schemas during replication #620
- Re-apply unhandled operations during startup of materializer service #623
- Handle null values returned from empty child relation queries #614
- Accept domain name and ip addresses for peers in configuration file and cli #612
- Allow setting config file path via environment variables #611
- Export ConfigFile which can be de/serialized to and from a config file #607
- Fix bug where known schemas are not replicated between nodes #603.
- Introduce a
migrate
API on the Node to allow publishing data programmatically #598
- Update p2panda-rs to
v0.8.1
#599
- Serve static files from
blobs
directory #480 🥞 - Add method to store for pruning document views #491
- Introduce
BlobStore
#484 - Task for automatic garbage collection of unused documents and views #500 🥞
- Blobs directory configuration #549
- Integrate
Bytes
operation value #554 - Implement dependency replication for
blob_v1
andblob_piece_v1
documents #514 - Remove deleted/unused blobs from the file system #571
- HTTP routes to serve files with correct content type headers #544
- Build a byte buffer over paginated pieces when assembling blobs #547
- Stream blob data in chunks to files to not occupy too much memory #551
- Remove unused methods from
EntryStore
#560 - Updates for new hash serialization in p2panda-rs #569
- Use
libp2p
0.5.3
#570 - Optimize test data generation methods #572
- Use
SocketAddr
in network config instead ofMultiAddr
#576 - Update
p2panda-rs
to0.8.0
#585 - Update
libp2p
to0.52.4
#596
- Make sure temporary directory does not run out of scope #557
- Deduplicate generated schema field by key in proptests #558
- Do not panic when blob does not have all pieces yet #563
- Fix
blob
tasks being triggered too often #578 - Fix
schema
tasks being triggered too often #581 - Fix blobs getting corrupted when written to the file system #587
- Fix pagination bug when only one field is selected and sorted at the same time #593
- Fix SQLite in-memory database overwrite by giving them each a random name #595
- Dial peers discovered via mDNS #331
- Simplify network CLI options and configuration #322
- Introduce
autonat
andrelay
network protocols #314 - Introduce
identify
andrendezvous
network protocols / behaviours #304 - Introduce libp2p networking service and configuration #282
- Create and validate abstract queries #302
- Support paginated, ordered and filtered collection queries #308
- SQL query for collections #311
- Add custom validation to GraphQL scalar types #318
- Introduce property tests for GraphQL query API with
proptest
#338 - Introduce initial libp2p network behaviour for replication protocol #365
- Replication protocol session manager #363
- Replication message de- / serialization #375
- Naive protocol replication #380
- Integrate replication manager with networking stack #387 🥞
- Reverse lookup for pinned relations in dependency task #434
- Persist and maintain index of operation's position in document #438
- Introduce
dialer
behaviour with retry logic #444 - Introduce peer sampling to the replication service #463
- Only replicate and materialize configured "supported schema" #569
- Parse supported schema ids from
config.toml
#473 - Fix relayed connections, add DCUtR Holepunching and reduce CLI args #502
- Announce supported schema ids in network before replication #515
- Allow & block lists, direct dial known peers, connect to multiple relays #542
- Migrate CLI from
structopt
toclap
#289 - Rework test runner and test node population patterns and refactor test_utils #277
- Implement API changes to p2panda-rs storage traits, new and breaking db migration #268
- Move all test utils into one module #275
- Use new version of
async-graphql
for dynamic schema generation #287 - Restructure
graphql
module #307 - Removed replication service for now, preparing for new replication protocol #296
- Bring back e2e GraphQL API tests #342
- Move GraphQL
types
into separate modules #343 - Set default order for root queries to document id #352
- Remove property tests again because of concurrency bug #347
- Incrementally update documents in materializer #280
- Decouple p2panda's authentication data types from libp2p's #408
- Make
TaskInput
an enum and other minor clean ups in materialiser #429 - Use
libp2p
0.52.0
#425 - Check for duplicate entries arriving to
Ingest
before consuming #439 - Replicate entries in their topologically sorted document order #442
- Remove "quick commit" from materialization service #450
- Reduce WARN level logging in network and replication services #467
- mDNS and AutoNAT disabled by default #475
- By default, nodes support any schema #487
- Rework networking service #502
- Deduplicate peer connections when initiating replication sessions #525
- Improve consistency and documentation of configuration API #528
- Improve log level config and user interface #539
- Correct use of
sqlx
transactions #285 - Fix race-condition of mutably shared static schema store during testing #269
- Introduce flag to requeue tasks in worker queue, fixes race-condition in materialization logic #286
- Update breaking API calls for new
p2panda-rs
0.7.0 version #293 - Handle decoding and parsing empty pinned relation lists #336
- Make
value
onQueryRow
an option #339 - Fix race conditions in SQLite database test runner #345
- Remove duplicate
Cursor
implementation, query code clean up #346 - Fix SQL ordering to correctly assemble resulting rows to documents #347
- Fix parsing lists arguments twice in GraphQL #354
- Sort paginated query field rows by document view id #354
- Fix missing field when filtering owner #359
- Bind untrusted user filter arguments in SQL query #358
- Reintroduce property tests for GraphQL query api #362
- Fix cursor pagination over ordered queries #412
- Fix issue where filtered queries fail on updated fields #409
- Fix insertion of view before document is materialized #413
- Handle duplicate document view insertions in reduce task #410
- Fix race condition when check for existing view ids was too early #420
- Use fork of
asynchronous-codec
to temporarily fix CBOR decoding bug #440 - Fix composing of circuit relay address #451
- Correct selection of comparison field during pagination #471
- Don't check for
affected_rows
on task deletion #461 - Do not critically fail when view does not exist due to race condition #460
- Do nothing on log insertion conflict #468
- Don't update or announce an update in schema provider if a schema with this id exists already #472
- Do nothing on document_view insertion conflicts #474
- Only over-write
http_port
when cli arg is passed #489 - Move deserialization into PeerMessage to distinct variants correctly #538
- Import
publish
andnext_args
fromp2panda-rs
api
module #279rs
- GraphQL replication service gets and verifies new entries and inserts them into the db #137
- Dynamically generated GraphQL types and query fields for accessing materialised documents #141 🥞
validation
anddomain
modules used for publish and next args API #204 🥞- Schema task and schema provider that update when new schema views are materialised #166 🥞
- Service ready signal #218
- Validate operations against their claimed schema #245
- Refactor scalars and replication API, replace
graphql-client
withgql_client
#184 - Give error types of worker a string for better debugging #194
- Bump
p2panda-rs
which now supports log id's starting from0
#207 - Removed unused field
entry_hash
from operation data model #221 - Detach test helpers from test storage provider implementation #237
- Remove
Scalar
suffix from scalar types in GraphQL schema #231 - Implement new API for untagged operations #245
- Use
DocumentStore
trait fromp2panda_rs
#249 - Increase broadcast channel sizes #257
- Use transaction in
insert_document()
#259 - Use
Human
display strings in info logging #251 - Implement
p2panda-rs
API changes forPublicKey
andprevious()
#262
- Don't return errors from
SchemaStore
when a schema could not be constructed #192 - Filter out deleted documents in
get_documents_by_schema
SQL query #193 - Resolve implicit
__typename
field on dynamically generated GraphQL objects #236 - Allow
Content-Type
header #236 - Do not forget to register
DocumentIdScalar
#252 - Fix pagination during replication #199
- Load
DocumentId
to be able to resolve it in meta field query #258
- Write a lib-level doc string #263
Released on 2022-07-01: 📦 crate
- Introduce GraphQL endpoint #81
- Generic task queue with worker pool #82
- Service manager #90
- Service error handling, refactor runtime #92
- Refactor module structure, propagate errors in worker to service manager #97
- Restructure storage modules and remove JSON RPC #101
- Implement new methods required for replication defined by
EntryStore
trait #102 - Implement SQL
OperationStore
#103 - GraphQL client API with endpoint for retrieving next entry arguments #119
- GraphQL endpoint for publishing entries #123
- Implement SQL
DocumentStore
#118 - Implement SQL
SchemaStore
#130 - Reduce and dependency tasks #144
- GraphQL endpoints for replication #100
- Inform materialization service about new operations #161
- e2e publish entry tests #167
- Reschedule pending tasks on startup #168
- Debug logging in reduce task #175
- Move to
tokio
async runtime #75 - Implement SQL storage using
p2panda_rs
storage provider traits #80 - Improve
Signal
efficiency inServiceManager
#95 EntryStore
improvements #123- Improvements for log and entry table layout #124
- Update
StorageProvider
API afterp2panda-rs
changes #129 - Move
SqlStorage
into sharedContext
#135 - Refactor tests to use fixtures exported from
p2panda-rs
#147 - Use
DocumentViewId
for previous operations #147 - Use
VerifiedOperation
#158 - Refactor
test_db
helper method #176 - Update
publishEntry
params andnextEntryArgs
response fields #181 - Improve test runtime by reducing selected tests' iteration count #202
- Fix high CPU usage of idle workers #136
- Improve CI, track test coverage #139
- Fix compatibility with PostgreSQL, change sqlx runtime to
tokio
#170 - Use UPSERT for inserting or updating documents #173
- Don't critically fail reduce task when document missing #177
Please note: aquadoggo-rs
crate is not published yet, due to unpublished dependencies.
- Replace schema logs with document logs, changing the behavior the
nextEntryArgs
andpublishEntry
RPC methods, invalidating and deleting all previously published entries #44 - Rename
Message
toOperation
everywhere #48 - Make JSON RPC methods compatible with new document logs flow #47
- Nicer looking
README.md
for crate #42 - Support u64 integers #54
- Fixed bamboo log selection for authors with more than 10 documents #66