These 71 commits are when the Protocol Buffers files have changed:
| Commit: | 87351ee | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
replace the single-slot PendingDelivery in the Exclusive and Shared r… (#235) * replace the single-slot PendingDelivery in the Exclusive and Shared reliable dispatchers with a pipelined in-flight window * dispatch config section has been added for max_unacked_messages * dispatch config section has been added for max_unacked_messages * validate the dispatch config
The documentation is generated from this commit.
| Commit: | bc4e283 | |
|---|---|---|
| Author: | Dan Rusei | |
retrieve all security bindings for danube admin ui
| Commit: | c0a0f0e | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
refactor admin UI cluster page and create new page for rbac admin in UI (#225) * add topic subscription details * improve cluster page, add raft consensus and load balancing * add security services within UI
| Commit: | 0529eb3 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
danube-admin serve schema registry details (#224)
| Commit: | c45eb04 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Edge register implementation (#220) * add edge registry with heartbeat * add tests for edge registry * use topics defined on the config instead autogenerated
| Commit: | 68fd53b | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
create the danube-edge capability (#217) * create the danube-edge capability * adapted the auth model * danube-edge server side refactor * use danube-client in danube-edge for resilience * adding edge broker workflow and tests * token is not required for auth none * implement create and delete topic on edge mode * consumer on cloud created after the edge creates the topic on remote cluster * add coordination between edge broker to cluster while creating / deleting topics * start edge service only to cluster mode * resolve wal missing broadcast in append batch * remove the edged secured tests for now * use StreamMessage instead of trimed messsage * First batch resolves via StorageFactory, subsequent batches hit the local HashMap
| Commit: | fc0f5e7 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Impl key shared subs (#213) * key shared subscription implementation in progress * expose the public api for key shared
| Commit: | 2425ead | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
client auth cleanup and eager topic creation (#212) * implement with_token_supplier in order to dynamically rotate the token * create JwtValidationCache in order to cache 30 sec the authn * resolved the bug broker couldn't serve topics assigned to it during convergence window
| Commit: | d5d73f2 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
implement RBAC and authz (#211) * implemented authentication context propagation and authorization model and metadata-backed authorizer * create roles and bindings though the admin cli * jwt-first authentication implementation for Danube * consolidate the security files within 3 main files * implement cache for authz calls * ensure secure connect between brokers raft traffic * added super admin * add authz metrics * created the unit tests * create the secure end to end tests * resolve a bug of clusters running with seed nodes * add correct path to the certs * resolved the bug on how security data was retrieved from raft * creating the topic for tests
| Commit: | 9de24b5 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
implement Nack and dead letter queue (#210) * created the SubscriptionFailurePolicy with the defaults * wire nack * wire the pendingdelivery struct in reliable dispatchers * policy-based delay/backoff wiring * implemented retry exhaustion only * implemented subscription dlq * add reliable nack , redelivery metrics * adding dispatch failure handling * create replicatoor for dlq * replicator may need tls to connects to the peers * revert publish message async logic * engine holds failure policy * improve the structure of the dispatcher
| Commit: | a4abe78 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
use autodiscovery of existing cluster, for scalling up with helm (#202)
| Commit: | a266c8d | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
add raft cluster commands to admin cli and mcp (#201) * add mcp tools for raft cluster * remove etcd references from danube-persistent-storage
| Commit: | d015e18 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Migrate from etcd to openraft/redb for metadata storage (#199) * replaced ETCD with embeded raft consensus layer * improve the danube-raft tests * second phase of the implementation of the raft service * updating config files * initializing raft cluster within danube * using serde to serialize instead of bincode * increase the raft timers for grpc transport * small changes to ensure data consistency * document the danube-raft crate * remove etcd from docker-compose files * removed local cache, use instead the raft state machine * new node should use --join commands * resolve the admin https config * remove broker A gracefully from the cluster
| Commit: | 807317a | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Proxy connect (#195) * introduced connect_url + broker_url to work with proxy in case of k8s * ensure connect_url contain https scheme if secure * use the x-danube header also for heath-check * delete old files
| Commit: | 7affa8c | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Improve /simplify danube client (#190) * danube client builders returns Result instead of panicking * centralize retry/backoff logic * state machines for TopicConsumer/TopicProducer * schema registry ergonomics * removed the references for ErrorType or ErrorMessage
| Commit: | 680dc88 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
resolve rebalance issue, allow to be used from admin , even if autorebalance is off (#189)
| Commit: | b9bafbd | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
danube load manager auto rebalance (#182) resolve #51 * implemented danube automated rebalancing * add balance and rebalance admin cli commands * based on the user define assignment strategy, calculate rankings * include topic based metrics in the ranking calculation * rebalancing moved within its own module * create danube rebalance test workflow * wire up config to load manager * expeted imbalance on phase 1, but load manager redistrubute the topics balanced * updated the topic list command in the workflow * update all topics count operation * broker id to number parse bug * use polling instead of sleep * the code was using the ranking score instead of the topic count * extended automatic rebalancing polling * added load_report_interval_seconds field configurable * ensures each new topic assignment sees updated load state * use strategy fair in tests, as the topics have no traffic * adaptive threshold based on CV severity * ensure topics are not counted twice * ensures true round-robin for initial topic assignments * min load for small loads * resolve the rebalancing storm, allow only one move per cycle * validate inbalance after broker activate
| Commit: | 6d0ade1 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Schema registry improvements (#168) * improve schema registry, implement get_schema_by_id * update the danube clis with the latest changes to the schema * resolve multiple schema versions working for a topic * resolve one admin test issue * schema_id is gloabl unique now
| Commit: | 6c6571a | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Schema registry implementation (#165) * implement schema registry * adding the examples * add schema register compatibility check * add schema register compatibility check * doc the implementation * created the TopicSchemaContext and move it's implementation to topic_schema * create schema registry tests * remove the println from tests * implemented the schema registry for admin cli * create a test for broker-side schema registry integration for the Danube admin CLI * updated the tests with the new StreamMessage structure * adapt clis to use the newly implemented schema registry * minor bug on describe topic * add danube cli tests * run broker without tls for testing purpose * remove old comments
| Commit: | ea6340f | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
get topic lists from admin grpc instead scrapping from prom (#157) * get topics to broker mapping from brokers via grpc * added delivery strategy on listing topics * add logs for cluster/topic actions * resolve the topic listing errors
| Commit: | 280ae0a | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
added cluster/topic actions for danube-admin-gateway (#156) * added cluster/topic actions for danube-admin-gateway * small readme update
| Commit: | 9033c7b | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
refactored danube-admin-gateway, additional broker details added on registering (#153) * add admin and admin-clean targets in Makefile * on broker registration add additional fields * refactoring * identify the broker id for the broker hosting the topic
| Commit: | 368e0b1 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
deactivate / activate an broker for maintenance (#142)
| Commit: | 6f6463d | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Unload topic from the broker, moving to another available broker in the cluster (#141) * implementation plan * updated the implemetation plan * implemented unload topic
| Commit: | 97998d9 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
removed segment reference from StreamMessage (#123)
| Commit: | 9e0a2e6 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Reliable topic options removed from producer creation (#121) * topic reliable creationg refactor doc * removed topic realiable dispatch options from producer creation
| Commit: | 2ef40a1 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
removed unused proto file (#103) Co-authored-by: Dan Rusei <dan.rusei@booking.com>
| Commit: | 3d077c4 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
admin-cli: add E2E workflow; add JSON outputs and topic describe (#86) * admin-cli: add E2E workflow; add JSON outputs and topic describe; add base64 dep; add isolated CLI integration tests for namespaces/topics (partitioned + non-partitioned); stabilize tests by commenting describe; improve partition handling in tests * resolve the topics describe
| Commit: | 6a33ac0 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Resolve remote (#81) * connect when is needed to grpc storage backend * use streaming to send grpc data to backend storage * update Storagebackends only with closed segments
| Commit: | 9e00dba | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Permanent storage (#77) * create persistent storage crate * move disk storage code * use PersistentStorage instead of DiskStorage * configured managed storage * remove storage crates * resolve the disk storage with /namespace/topic
| Commit: | 540d7ac | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
implement TLS transport and JWT authentication (#73) * garbage * add tls and jwt support * create the AuthService * create the script to generate the certificates * adding rustls required for grpc with tls * add auth to danube-client * implement Auth for HealthCheck and Schema service * add auth service to lookup service and consumers / producers * copy the certificates * add certs to github secrets * add ca volume on each broker * make integration tests to use tls * change the certificate generation * make the tests to work with tls * update the tests * simplify the tests * simplify client configuration * add schema type * resolve a bug with overlapping segments for distinct topics * ensure the response form lookup is with https if secure * updated the certificates
| Commit: | 7bdef6f | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
use proto with no version (#71)
| Commit: | e6fc130 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
ensure message uniqueness, by adding offset to the Segment and adapting the MessageID (#70)
| Commit: | 1994e26 | |
|---|---|---|
| Author: | Dan Rusei | |
add proto files in danube-core crate
| Commit: | b22c52e | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Chg storage (#57) * move StorageConfig from client to server configuration * add storage config in topic creation * renameStorageBackend to MetadataStorage for clarity and instantiate message storage in Broker
| Commit: | 17daa75 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
use client defined Reliable Options (#35) * allow users to provide reliable dispatch details * use danube_client reliable_options and config_dispatch on all crates * implement on broker From<TopicDispatchStrategy> for ConfigDispatchStrategy * improve github workflows, ensure the unit tests are run for libs as well * set proper segment size as are provided in MB
| Commit: | 8eecc0f | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Impl storagebackend (#34) * create storage backends * implement InMemory storage * resolve reliable dispatch test errors * resolve the topic_storage tests * enable user to select backend storage type * implement disk and aws permanent storage
| Commit: | 9cf3093 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Create the reliable dispatch library (#30) * new reliable delivery crate in progress * move reliable_dispatch to the other crate * change reliable_delivery to reliable_dispatch * move consumer dispatcher logic to dispatchers * complete the move of reliable dispatch to new lib * change from TopicDeliveryStrategy to TopicDispatchStrategy
| Commit: | 42b5712 | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
simplify consumer dispatch code (#29) * create AckMessage struct and remove subscription_name from MsgID * refactor the consumer dispatch code to be cleaner
| Commit: | c231acd | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Segment size (#28) * moving from segment number of messsages to segment size * resolve consumer.receive contention * resolve the consumer ack bug
| Commit: | de44deb | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Impl msg ack (#27) * change within document from retention to delivery strategy * work in progress define the message * use StreamMessage for both receiving from producer as well as sending to consumer * enable consumer to send ack * implement server side message acknowledge * refactor the consumer dispatch to send messages in strict order * improving the consumer dispatch methods
| Commit: | b3ab1eb | |
|---|---|---|
| Author: | Dan Rusei | |
| Committer: | GitHub | |
Delivery strategy (#26) * create the topic storage struct with the main functions * creating new reliable dispatchers * create TopicStore lifecycle management policy * implement dispatcher reliable single consumer * add few comments * share the topic_storage across all subscription dispatchers * add segments index to have the ordered list of segments * creating the dispatcher reliable multiple consumers * change from reliable to persistent verb * allow client to define retention strategy * minor bug, on matching the str * rename from persitent to reliable delivery
| Commit: | fe095d2 | |
|---|---|---|
| Author: | Dan Rusei | |
implement the consumers for partitioned topics
| Commit: | 73495f5 | |
|---|---|---|
| Author: | Dan Rusei | |
update admin cmds
| Commit: | a1dc4d7 | |
|---|---|---|
| Author: | Dan Rusei | |
remove unsused admin cmds
| Commit: | 2a6a6b8 | |
|---|---|---|
| Author: | Dan Rusei | |
adding metadata message and custom attributes
| Commit: | 607f024 | |
|---|---|---|
| Author: | Dan Rusei | |
fix add / remove topics from danube-admin
| Commit: | d64d5c6 | |
|---|---|---|
| Author: | Dan Rusei | |
add broker_info
| Commit: | ff0fe27 | |
|---|---|---|
| Author: | Dan Rusei | |
introduce the danube admin cli crate
| Commit: | dba4ea0 | |
|---|---|---|
| Author: | Dan Rusei | |
implement health check service on the client side
| Commit: | 0736890 | |
|---|---|---|
| Author: | Dan Rusei | |
implemented client service healthcheck on the server side
| Commit: | 8dd1641 | |
|---|---|---|
| Author: | Dan Rusei | |
implement client lookup service
| Commit: | 0005795 | |
|---|---|---|
| Author: | Dan Rusei | |
get_topic return Result instead of tuple
| Commit: | 2f9a292 | |
|---|---|---|
| Author: | Dan Rusei | |
send actionable errros to client using grpc Status
| Commit: | 3c8d4d0 | |
|---|---|---|
| Author: | Dan Rusei | |
consumer struct moved to Arc Mutex as it has to be modified by several functions
| Commit: | 612940a | |
|---|---|---|
| Author: | Dan Rusei | |
proto file refactoring
| Commit: | 2912491 | |
|---|---|---|
| Author: | Dan Rusei | |
server side subscribe - add consumer to dispatchers
| Commit: | 2aa4af4 | |
|---|---|---|
| Author: | Dan Rusei | |
subscribe server side - work in progress
| Commit: | d2ee8e3 | |
|---|---|---|
| Author: | Dan Rusei | |
implemented subscribe on the client side
| Commit: | e9aee47 | |
|---|---|---|
| Author: | Dan Rusei | |
create the consumer client interface
| Commit: | 125bd03 | |
|---|---|---|
| Author: | Dan Rusei | |
work in progress for the send_message server side
| Commit: | a7b8319 | |
|---|---|---|
| Author: | Dan Rusei | |
change the namings in proto file to reduce confusion
| Commit: | dd722df | |
|---|---|---|
| Author: | Dan Rusei | |
working to send messages with producer
| Commit: | dfdaf68 | |
|---|---|---|
| Author: | Dan Rusei | |
defining the proto for producer send
| Commit: | 0c35240 | |
|---|---|---|
| Author: | Dan Rusei | |
create schema on the client side
| Commit: | 2f6f0db | |
|---|---|---|
| Author: | Dan Rusei | |
client create producer
| Commit: | 09b9564 | |
|---|---|---|
| Author: | Dan Rusei | |
using ErrorDetails to respond to grpc calls
| Commit: | 4fdbb39 | |
|---|---|---|
| Author: | Dan Rusei | |
minor changes to producer proto file
| Commit: | b79f39d | |
|---|---|---|
| Author: | Dan Rusei | |
client to broker connection via grpc
| Commit: | b9231e8 | |
|---|---|---|
| Author: | Dan Rusei | |
creating the initial proto file
| Commit: | afac568 | |
|---|---|---|
| Author: | Dan Rusei | |
setting up infrastructure