Skip to content

Latest commit

 

History

History
352 lines (271 loc) · 23.9 KB

CHANGELOG.md

File metadata and controls

352 lines (271 loc) · 23.9 KB

Changelog

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.

Changed

  • Expose NodeEvent to public API #643

Added

  • Node API to subscribe to peer connection events #625
  • Support private network secured by pre-shared key #635

Changed

  • Update libp2p to version 0.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

Fixed

  • Handle connection ids greater than 9 in Peer impl of Human 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

Added

  • Introduce PeerAddress struct to help resolve String to internal address types #621
  • Re-dial all configured known peers on schedule #622

Changed

  • Increase max_pending_connections_in and max_pending_connections_out #628

Fixed

  • 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

Fixed

  • Handle null values returned from empty child relation queries #614

Changed

  • Accept domain name and ip addresses for peers in configuration file and cli #612
  • Allow setting config file path via environment variables #611

Added

  • Export ConfigFile which can be de/serialized to and from a config file #607

Fixed

  • Fix bug where known schemas are not replicated between nodes #603.

Added

  • Introduce a migrate API on the Node to allow publishing data programmatically #598

Changed

  • Update p2panda-rs to v0.8.1 #599

Added

  • 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 and blob_piece_v1 documents #514
  • Remove deleted/unused blobs from the file system #571

Changed

  • 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 of MultiAddr #576
  • Update p2panda-rs to 0.8.0 #585
  • Update libp2p to 0.52.4 #596

Fixed

  • 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

Added

  • Dial peers discovered via mDNS #331
  • Simplify network CLI options and configuration #322
  • Introduce autonat and relay network protocols #314
  • Introduce identify and rendezvous 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

Changed

  • Migrate CLI from structopt to clap #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

Fixed

  • 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 on QueryRow 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

Open Sauce

  • CI: Temporary workaround for Rust compiler bug #417
  • CI: Update actions #455

Added

  • Import publish and next_args from p2panda-rs api module #279 rs
  • 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 and domain 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

Changed

  • Refactor scalars and replication API, replace graphql-client with gql_client #184
  • Give error types of worker a string for better debugging #194
  • Bump p2panda-rs which now supports log id's starting from 0 #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 from p2panda_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 for PublicKey and previous() #262

Fixed

  • 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

Mushroom Time

  • Write a lib-level doc string #263

Released on 2022-07-01: 📦 crate

Added

  • 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

Changed

  • Move to tokio async runtime #75
  • Implement SQL storage using p2panda_rs storage provider traits #80
  • Improve Signal efficiency in ServiceManager #95
  • EntryStore improvements #123
  • Improvements for log and entry table layout #124
  • Update StorageProvider API after p2panda-rs changes #129
  • Move SqlStorage into shared Context #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 and nextEntryArgs response fields #181
  • Improve test runtime by reducing selected tests' iteration count #202

Fixed

  • 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.

Changed

  • Replace schema logs with document logs, changing the behavior the nextEntryArgs and publishEntry RPC methods, invalidating and deleting all previously published entries #44
  • Rename Message to Operation 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

  • Fixed bamboo log selection for authors with more than 10 documents #66

Released on 2021-10-25: 📦 crate and 2021-10-26: 🐳 docker

Added

  • panda_queryEntries RPC method #23
  • Docker support #22
  • panda_publishEntry RPC method #21
  • panda_getEntryArguments RPC method #11
  • SQL database persistence supporting PostgreSQL, MySQL and SQLite via sqlx #9
  • Server configuration via environment variables #7
  • JSON RPC HTTP and WebSocket API server via #5

Changed

  • Use p2panda-rs 0.2.1 with fixed linter setting #41
  • Use tide for HTTP server and jsonrpc-v2 for JSON RPC #29