Repository navigation
Conversation
A label around each provider field also caught clicks on the client secret's show button; the fields are plain blocks with accessible names now, and the read-only callback address gets one too.
Sign-in and sign-up, the mail server and third-party sign-in are tabs on the left, each with how much of it is on; the chosen group fills the right with its own heading and the save button. The tab is kept in the address, and a save that fails a check opens the tab with the error.
The driver read values with Redisson's binary codec, so keys set by redis-cli or applications failed to decode. Values are plain strings now. SELECT takes quoted keys (`test:list`), reads an exact key, a pattern or, as before, the keys starting with the name, keeps only the selected columns, and returns its columns even when nothing matches. SELECT version() reports the server's redis_version.
SpotBugs failed the test module on unclosed result sets and instanceof assertions in the Redis compatibility tests.
RedisE2ETest writes keys with plain commands, reads them back with SQL and browses them as the source tree does. The connector page lists the verified versions and the SQL the driver understands.
…he source execute() always answered false, so MetaForge, which runs every statement through it, got an update count of 0 instead of rows. It now leaves the result set, and an empty result still has metadata. The database comes from the property or the URL path (admin otherwise), and getMetaData() lists databases, collections and the fields of their first documents through the SQL driver foundation.
The plugin passes the configured database in the URL, which it built and then dropped, lists metadata through the driver's JDBC metadata as the other MetaForge drivers do, and declares database:list, table:list and column:read, so the query page and the source workbench show a tree.
MongoE2ETest writes documents with another client, lists them as databases, collections and fields and reads them back with SQL. The new connector page lists the verified versions.
Sources with namespaces but no databases, such as Redis, showed no metadata on the query page. The tree now lists their databases and keys a page at a time with a load-more entry, and clicking a key copies a query for it.
PostgreSQLE2ETest creates a schema, table and rows with SQL, lists them as a database, table and columns and reads the rows back. The new connector page lists the verified versions.
A disabled button lets clicks through to the dropdown wrapper, so its menu still opened. MfDropdown does not open while its trigger button is disabled or when it is disabled itself.
…menu The side panel body is a scrolling column, so long lists shrank its search fields; its parts keep their height now. The apply-to-dataset menu stays closed while a dataset can not be created.
TimescaleE2ETest creates a hypertable with SQL, lists it as a table with its columns and reads its rows back on PostgreSQL 16 and 17 images. The connector pages list the verified versions.
ParadeDBE2ETest creates a table with a BM25 index, lists it with its columns and searches it on PostgreSQL 16 and 17 images. The connector pages list the verified versions.
Redis now lists databases, tables and columns like every other source, so the query page tree needs no separate key browsing. This reverts commit d47d84d.
getMetaData() lists the numbered databases (CONFIG GET databases, 16 when refused), the keys of each as tables and key, type and value as columns, through the SQL driver foundation. A connection opens other databases on demand, and SELECT reads a key qualified with its database (`2`.`user:1`), as the workbench writes it, and honours LIMIT.
…pace The plugin lists databases, tables and columns from the driver's JDBC metadata and declares the capabilities ZooKeeper does, so the workbench shows the database picker and table tree; the separate key browser and its Lua scripts are gone. RedisE2ETest checks the listing and the workbench's qualified SELECT on Redis 6.2 and 7.4.
Neo4j reported only query:execute, so it had no tree. The plugin lists the database it connects to, node labels as tables and their properties as columns from the JDBC driver's metadata, and answers the version with Cypher. Neo4jE2ETest verifies it on Neo4j 4.4 and 5.
Constraints and indexes need index:read, foreign keys and usage need foreign-key:read, so a source like Redis shows only the basic tab, and the primary and unique rows leave the basic panel when indexes are not declared.
The JDBC metadata fallback read IS_AUTOINCREMENT from getColumns(), a JDBC 4.1 column that drivers such as MonetDB's do not return, so listing a table's columns failed. Treat a missing column as not auto-increment.
MonetDB has no version() function, so the default validator failed and the source could not be checked. Read monet_version instead.
MonetDBE2ETest creates a schema, table and rows with SQL, lists them as a database, table and columns and reads the rows back. The new connector page lists the verified versions.
Each query opens and closes its own connection, and H2 drops an in-memory database when its last connection closes, so tables created by one query were gone in the next. Connect with DB_CLOSE_DELAY=-1 to jdbc:h2:mem:<database>.
H2 upper-cases unquoted aliases, so the information_schema queries returned rows keyed OBJECT_NAME and the tree showed nothing. Read them from JDBC metadata, which keys rows as the web reads them.
H2E2ETest runs the in-memory engine in process: a schema, table and rows created with SQL are listed and read back by later queries. H2 runs inside the server, so the connector page lists the bundled version and says why no container is needed.
H2 upper-cases unquoted aliases, so the information_schema queries returned rows keyed OBJECT_NAME and the tree showed nothing. Read them from JDBC metadata, which keys rows as the web reads them.
H2TCPE2ETest starts an H2 TCP server in process, creates a schema, table and rows with SQL, lists them and reads the rows back. The new connector page lists the verified version.
The host field holds a directory, but the URL was built as host:port and the JDBC URL guard rejects a path as a host, so no DuckDB source could connect. Build jdbc:duckdb:<directory>/<database> instead, checking the directory for URL option characters and the file name with the guard.
DuckDB reports tables as BASE TABLE, which JDBC metadata lookups for TABLE miss, so the tree showed no tables. Read them from information_schema.tables.
DuckDBE2ETest opens a database file in a temporary directory, creates a schema, table and rows with SQL, lists them and reads the rows back. DuckDB runs inside the server, so the connector page lists the bundled version and says why no container is needed.
…nd cut the fault proxy halfway Two e2e failures surfaced once the suite ran long enough to reach the executor test module: the seatunnel plugin test resolved its plugins directory through PluginPathUtils.findProjectRoot, which inside a surefire fork stops at the first directory with a pom — the test module itself or the installed artifact in the local repository — and neither contains the executor, so the plugin never loaded; the test now walks up from the working directory and skips when the module is not built. The fault e2e dropped the proxy five thousand rows in, which a fast runner finishes before — the pipeline read-ahead is bounded, so cutting at half the rows always lands inside the run and the failure path is exercised for real.
The fault e2e kept finishing successfully on the ci runner: the executor materializes the whole source read before the throttled write, so every threshold keyed on the written rows fired after the source connection was already gone, and the default writeRetries rewrote the failed batch on a fresh connection. The proxy now exposes its open connection count, the test cuts it the moment the source connection is being forwarded, and the request pins writeRetries to zero so a lost connection surfaces as the retryable failure the test asserts.
The server and the store catalogue read from cdn.north.devlive.org, the Tencent COS bucket, but releases uploaded to Aliyun OSS, so a new version stayed invisible until it was synced by hand. Plugin packages, the server distribution (the build job's, which embeds the web UI) and metadata.json now go to COS through a pinned COSCLI, as in ToolForge, and the server distribution is attached to the GitHub release.
The packaged application.properties still used the legacy stats.devlive.org alias.
The fault e2e cut the proxy once and kept losing the race against the sync: the source read is materialized before the throttled write on two of the engine pairs, and the writeRetries rewrote the failed batch on a fresh connection, so the runs kept finishing successfully. The test now cuts for good (down=true rejects every reconnect while dropAll severs the live connections), pins writeRetries to zero so the loss surfaces as the retryable failure the test asserts, and accepts that an immediate cut leaves no checkpoint because nothing was written yet. ChaosProxy gains the open connection count and a per-buffer throttle the test uses to stretch the source reads.
- findProjectRoot parsed the file: classpath URL as a relative File, which anchored the search at the working directory and made every module resolve as the project root - LocalSchedulerModuleTest then looked for the scheduler plugin under the test module directory and failed on an empty Optional - trust only multi-module root markers (mvnw, .git) for the root check, cover kotlin module layouts when skipping module dirs, and give the scheduler test an explicit scan depth
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changelog category (leave one)
Changelog entry (Details of this change)
Affected version
latest version