- Core: add TCP_NODELAY and keepAliveWithoutCalls by default
- Query: fix NPE for transaction id handling
- Core: added environment auth provider with runtime class loading
- Core: replaced synchronized blocks with ReentrantLocks in YdbDiscovery
- Topic: use NoFinalizer Zstd IO streams for topic encoder
- Topic: replaced synchronized blocks with ReentrantLocks
- Tests: enabled column tables in default YDB docker config
- Topic: fixed typo in CommitOffsetSettings
- Topic: added method describeConsumer
- Query: fixed transaction closing after stream canceling
- Query: fixed multistatement reading in QueryReader
- Tests: added support of YDB_FEATURE_FLAGS option
- Table: depractred getUuidHigh/getUuidLow methods for UUID type
- Table: fixed Inf/-Inf/NaN values in DecimalType
- Topic: fixed NoSuchElementException when using the DirectExecutorService as compressionExecutor
- Core: added support for using ip address in discovery response
- Query: added removing of query session if client cancelled query
- Core: increased default timeouts of shutdown
- Core: fixed work with grpc-netty instead of grpc-netty-shaded
- Core: fixed JWT token parser
- Query: updated TableClient implementation
- Table: Add unique index support
- Table: Updated table TTL implementation
- Core: fixed infinite wainting for grpc channel ready state after reconnect
- Query: added TableClient implementation
- Topics: fixed race condition on AsyncReaderImpl.shutdown()
- Core: discovery errors log level changed to WARN instead of ERROR
- Topics: added handling of the unexpected exceptions in the client callbacks
- Query: fixed NPE in QueryStream implementation
- OAuth2 provider: added support of mode with config file
- Table: added support of NullType & PgType
- Core: improved grpc calls logging
- Query: added support of warning issues
- Core: fixed work with ready operations
- Core: fixed operations canceling and forgeting
- Added modele with OAuth2 token exchange auth provider
- Core: added allocation-free helper for Result extraction
- Exports: add methods to find existing operations
- Core: added option to configure transport initialization mode
- Tests: added option to use isolate docker environment
- Topics: fix unordered reading in case of user errors
- Core: fixed non optional dependency of grpc-netty
- Updated implementation of CoordinationService
- Added module for QueryService
- Added module for ExportService
- Added common module with basic interfaces for transactions and retries
- Core: Added basic support of long operations
- Core: Added support for tracing requests with id
- Table: Added readRows operation in table service
- Topics: Added support of transaction between tables and topics
- Coordination: fixed timeout for coordination session
- Test common: Changed visibility of YdbDockerContainer
- Core: Added async helpers to build the future chains
- Transports: Add option withGrpcKeepAliveTime to enable grpc keep-alives
- Table: Fixed creation and altering of dataColumns indexes in createTable/alterTable
- Upgraded version of yc-auth to avoid jackson-databind vulnerability
- Topics: Added message metadata support
- Topics: Added support for reading without a consumer
- Topics: Fixed a bug where onReaderClosed was not called on async reader shutdown
- Topics: Small logging improvements
- Added batch limit support for readTable
- Topics: Fixed a bug where first commit was not getting commitResponse if a user had sent a custom StartPartitionSessionResponse
- Topics: Enhanced writer logging
- Topics: Added DeferredCommitter class to group several read commits into one or just defer each commit without holding data reference
- Topics: Added onCommitResponse callback for AsyncReader to subscribe to server event directly and control commits more efficiently
- Topics: Removed usage of ForkJoinPool.commonPool()
- Table: Fixed typo in SessionPoolStats
- Topics: Rethrow IO exceptions to user handlers while decoding messages
- Topics: Tie partition sessions to streams
- Topics: Fixed a bug where topic writer / reader init() future was not completed under certain conditions
- Topics: Memory usage is now managed in topic reader within each session separately
- GrpcTransport: Added async initialization
- GrpcTransport: Increased default timeout of the initialization waiting
- Topics: Added partitionId to StopPartitionSessionEvent
- Topics: Fixed a bug where Writer could end up receiving errors from server in a loop on restarts.
- Topics: Fixed a bug where not all errors were retried by Readers and Writers
- Topics: SyncReader refactored which also fixed possible memory leaks in it
- Topics: Fixed a bug where Writer.init future was not completed on shutdown
- Topics: Fixed a bug where Readers and Writers were not shutdown after closing transport they were using
- Topics: AsyncReader is now shutdown on any unhandled exception in user callback
- Fixed partition session graceful shutdown
- Increased default timeouts for GrcpTransport
- Fixed NPE on empty discovery result
- Enhanced message commit logging
- Added withDiscoveryTimeout to GrpcTransportBuilder
- Added query statistics to DataQueryResult
- Fixed topic reader hang-up on server restart
- Added commitOffset method to topic service
- Updated class Changefeed - added fields inititialScan, virtualTimestamps and retentionPeriod
- Added method executeReadTable with support of virtual timestamps
- Fixed session leaks if to cancel future from session pool
- Added addtional session pool metrics
- Added config for GRPC compression
- Added Coordination Service API support
- Added Topic API support
- Added support detect local dc
- Support creating asynchronous index in createTable and describeTable
- New api for streamable requests
- Fixed default timeout for readTable
- Fixed exponential backoff calculation
- Fixed null values for Result.success
- Fixed bug of channels closing
- Changed default load balancer policy from pick_first to round_robin
- Added config for channel connect timeout
- Fixed discard of UnexpectedResultException causes
- All periodic tasks have been moved to unite scheduled executor service
- Added support of integration tests for JUnit4 and JUnit5
- Added bom module to simplify the import of SDK and its dependencies
- SchemeClient has been moved to its own module
- API of authentication providers has been separated into a detached module with its own versioning
- Removed unnecessary parameter EndpointsDiscoveryPeriod from GrpcTransportBuilder
- Fixed serialization/deserialization of inner optional types
- Added copyTables() consistent multi-table copy operation to the Session
- Fixed broken sessions handling in the session pool
- Added SnapshotRO trasaction level
- Added static credentials support
- New lock-free session pool
- New grpc transport with client-side balancing
- Clean api of YDB types and values
- Removed inconcistent methods of Session and TableClient
- Fixed casting for Decimal with scale
- Added support of not null columns in TableDescription
- Added request's costInfo to all operations
- Remove use common FJ
- Added support of server-side session balancer
- Added support of session graceful shutdown
- Bind session to server node it was created at
- Added support of changefeeds to alterTable
- Added regular re-discovery for new YDB transport implementation
- Added node pessimization on receiving transport error in new YDB transport implementation
- Added reportCostInfo flag to RequestSettings
- Added costInfo to DataQueryResult
- Use cached version of IAM Auth Provider
- Fix some issues in session pool
- Added QueryStatsCollection.Mode parameter to ExecuteDataQuerySettings
- Use TableDescription.getPartitioningSettings() by default, mark CreateTableSettings.getPartitioningSettings() deprected
- Added data columns (for covered indexes) to TableDescription
- Upgrade to use java-grpc 1.43.2
- PreferNearestLoadBalancer and RandomChoiceLoadBalancer merged to YdbLoadBalancer
- Fixed problems with java-grpc > 1.26.x
- Fixed PreferNearestLoadBalancer
- Added YDB transport implementation (YDB_TRANSPORT_IMPL). Grpc transport implementation (GRPC_TRANSPORT_IMPL) is still used by default. New transport implementation doesnt have noticable advantages over grpc implementation yet. But it makes room for some further improvements.
- Removed internal proto files
- Added module protobuf-api with proto files
- Fix grpc-netty-shaded dependency
- Removed double byte copy for getString(Charset charset)
- Added termination waiting for GrpcTransport
- Fixed Netty TLS on JDK8 builds
- Additional timing logs for Session
- Added minPartitionsCount and maxPartitionsCount to PartitioningSettings
- Added PartitioningSettings and PartitionStats to describeTable result
- Fix unwrapped CompletionException for getOrCreateSession
- Fix retries counter in SessionRetryContext
- Extended logging for Session and SessionRetryContext
- Add URL Shortener demo application
- Reuse HashedWheelTimer in GrpcOperationTray
- Add JUnit tests with testcontainer support
- Add bulk upsert example
- Lowered logging level for some messages.
- Discovery host resolve check was softened. Now at least 1/2 resolved hosts of all that discovery returned is considered as a success resolve. This prevents from failing requests when some hosts can not be resolved.
- Added logging for locks in session pool.
- Added idempotent flag for SessionRetryContext which mark an operation as retryable.
- Added public method tryToConnect() for GrpcTransport allowing to add any logic in case of connection timeout or other errors.
- Added DiscoveryMode for GrpcTransport. SYNC mode is used by default, which means GRPCTransport will lock on constructor until grpc channel will be connected. This should improve session balancing on start with high load. It should also reduce latency of first requests.
- Fix String comparsion in CloudAuthHelper.
- Endpoint re-discovery now launches periodically as intended.
- All timers are now stopped on shutdown so the application should stop immediately.
- Added Random choice load balancer which is now used by default instead of round robin load balancer.
- Use a bit more modern GRPC name resolver factory API to facilitate GRPC implementation upgrades downstream.
- Added connection string support.
- Added CloudAuthProvider for cloud authentication with environment variables.
- Added AlterLogTable to ydb_logstore_v1.proto.
- Added fast backoff settings to SessionRetryContext. ABORTED and UNAVAILABLE status codes are retried with fast backoff now.
- Update junit from 4.12 to 4.13.1.
- Update protobuf from 3.6.1 to 4.15.6.
- Disabling client query cache does not disable server-side query cache anymore.
- Start initial changelog.