Compare commits

..
Author SHA1 Message Date
james.maesandCodex 19bc4c14b4 ci: use the shared branch-aware CodeQL worker
Co-Authored-By: Codex <noreply@openai.com>
2026-10-21 09:34:32 -05:00
8 changed files with 16 additions and 35 deletions

No files matched your search

+2 -2
View File
@@ -1,12 +1,12 @@
version: 2.1 version: 2.1
setup: true setup: true
orbs: orbs:
qqq-orb: kingsrook/qqq-orb@0.8 qqq-orb: kingsrook/qqq-orb@0.7.12
workflows: workflows:
setup: setup:
jobs: jobs:
- qqq-orb/generate_pipeline: - qqq-orb/generate_pipeline:
orb_version: '0.8' orb_version: 0.7.12
filters: filters:
branches: branches:
ignore: automation/qbit-rc-pending ignore: automation/qbit-rc-pending
-7
View File
@@ -1,7 +0,0 @@
name: build
on:
push:
jobs:
maven:
uses: self:KofTwentyTwo/ci-workflows/.gitea/workflows/maven.yaml@v1
secrets: inherit
+1 -1
View File
@@ -20,4 +20,4 @@ concurrency:
cancel-in-progress: ${{ github.event_name == 'pull_request' }} cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs: jobs:
analyze: analyze:
uses: QRun-IO/qqq-orb/.github/workflows/qbit-codeql.yml@c288a8864fe9054f68410e1d78f5863aea4c4d22 uses: QRun-IO/qqq-orb/.github/workflows/qbit-codeql.yml@17c94592d94c7d56c440277be6fe3526692887a6
+1 -1
View File
@@ -1,5 +1,5 @@
profile: qbit profile: qbit
orb_version: '0.8' orb_version: 0.7.12
default_branch: develop default_branch: develop
java_version: '21' java_version: '21'
browsers: true browsers: true
-6
View File
@@ -6,12 +6,6 @@ All notable changes are documented here, following [Keep a Changelog](https://ke
### Fixed ### Fixed
- Upload-job status transitions no longer use `status` as the table's record-version field.
QQQ 4.1.0-RC.26 advances a configured version field on every update (a STRING version
becomes a random UUID), which overwrote upload status. The guarded transition now re-reads
status inside the existing cross-pod account-lock transaction. The upload-job table no longer
declares a record-version field; no schema or public API change.
- Endpoint pickers for saved views, saved reports and saved bulk-load profiles are dropped when - Endpoint pickers for saved views, saved reports and saved bulk-load profiles are dropped when
the host has not registered those possible-value sources, so hosts without them validate. the host has not registered those possible-value sources, so hosts without them validate.
+4 -5
View File
@@ -22,7 +22,6 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<properties> <properties>
<qqq.version>4.1.0-RC.26</qqq.version> <!-- feeds qbit-build-parent's qqq-bom-pom import -->
<revision>0.1.0-SNAPSHOT</revision> <revision>0.1.0-SNAPSHOT</revision>
<maven.compiler.source>21</maven.compiler.source> <maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target> <maven.compiler.target>21</maven.compiler.target>
@@ -34,7 +33,7 @@
<parent> <parent>
<groupId>com.kingsrook</groupId> <groupId>com.kingsrook</groupId>
<artifactId>qbit-build-parent</artifactId> <artifactId>qbit-build-parent</artifactId>
<version>2.2.1</version> <version>2.0.0</version>
</parent> </parent>
<groupId>com.kingsrook.qbits</groupId> <groupId>com.kingsrook.qbits</groupId>
@@ -82,7 +81,7 @@
<dependency> <dependency>
<groupId>com.kingsrook.qbits</groupId> <groupId>com.kingsrook.qbits</groupId>
<artifactId>qbit-object-storage</artifactId> <artifactId>qbit-object-storage</artifactId>
<version>0.1.0-RC.10</version> <version>0.1.0-RC.2</version>
</dependency> </dependency>
<!-- MINA's Ed25519 key decoder and signer. --> <!-- MINA's Ed25519 key decoder and signer. -->
<dependency> <dependency>
@@ -118,7 +117,7 @@
<dependency> <dependency>
<groupId>com.kingsrook.qqq</groupId> <groupId>com.kingsrook.qqq</groupId>
<artifactId>qqq-frontend-next</artifactId> <artifactId>qqq-frontend-next</artifactId>
<version>1.0.0-RC.38</version> <version>1.0.0-RC.14</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
@@ -240,7 +239,7 @@
</activation> </activation>
<properties> <properties>
<!-- QQQ 4.1.0-RC.7: the first released core with the UiApiInvoker in-process sessions, streams and multipart (QRun-IO/qqq#1170). Never a SNAPSHOT (guardrail G7). --> <!-- QQQ 4.1.0-RC.7: the first released core with the UiApiInvoker in-process sessions, streams and multipart (QRun-IO/qqq#1170). Never a SNAPSHOT (guardrail G7). -->
<qqq.snapshot.version>4.1.0-RC.26</qqq.snapshot.version> <qqq.snapshot.version>4.1.0-RC.7</qqq.snapshot.version>
</properties> </properties>
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
@@ -297,7 +297,7 @@ public final class FileGatewayTables
*******************************************************************************/ *******************************************************************************/
private static QTableMetaData upload_job(FileGatewayQBitConfig config) private static QTableMetaData upload_job(FileGatewayQBitConfig config)
{ {
QTableMetaData table = base(config, UPLOAD_JOB, "Upload Jobs") QTableMetaData table = base(config, UPLOAD_JOB, "Upload Jobs").withRecordVersionField("status")
.withRecordLabelFormatAndFields("%s", "id") .withRecordLabelFormatAndFields("%s", "id")
.withField(field("accountId", QFieldType.INTEGER).withPossibleValueSourceName(ACCOUNT)) .withField(field("accountId", QFieldType.INTEGER).withPossibleValueSourceName(ACCOUNT))
.withField(field("aliasId", QFieldType.INTEGER).withPossibleValueSourceName(ALIAS)) .withField(field("aliasId", QFieldType.INTEGER).withPossibleValueSourceName(ALIAS))
@@ -24,7 +24,7 @@ package com.kingsrook.qbits.filegateway.sftp;
import java.io.Serializable; import java.io.Serializable;
import java.time.Instant; import java.time.Instant;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Map;
import com.kingsrook.qbits.filegateway.metadata.FileGatewayTables; import com.kingsrook.qbits.filegateway.metadata.FileGatewayTables;
import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; import com.kingsrook.qqq.backend.core.actions.QBackendTransaction;
import com.kingsrook.qqq.backend.core.actions.permissions.CorePermissionEnforcer; import com.kingsrook.qqq.backend.core.actions.permissions.CorePermissionEnforcer;
@@ -244,23 +244,18 @@ public class AuditWriter
/******************************************************************************* /*******************************************************************************
** Guarded status transition. Callers hold withAccountLock, so the status re-read in ** Optimistic status transition, called under withAccountLock because core checks
** that transaction is serialized across pods; status is compared here rather than ** expected versions before SQL execution rather than in the SQL WHERE clause.
** through a core record-version field, because core advances version fields on
** every update (a STRING version becomes a random UUID).
*******************************************************************************/ *******************************************************************************/
public boolean transitionUpload(QRecord changes, String expectedStatus) throws QException public boolean transitionUpload(QRecord changes, String expectedStatus) throws QException
{ {
if(transaction.get() == null) QRecord result = system(() -> new UpdateAction().execute(new UpdateInput(FileGatewayTables.UPLOAD_JOB)
{ .withRecords(List.of(changes)).withTransaction(transaction.get())
throw (new QException("Upload transitions require the account lock transaction")); .withExpectedVersions(Map.of(changes.getValue("id"), expectedStatus))).getRecords().getFirst());
} if(result.getErrors() != null && !result.getErrors().isEmpty())
var rows = query(FileGatewayTables.UPLOAD_JOB, new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.EQUALS, changes.getValue("id"))));
if(rows.isEmpty() || !Objects.equals(expectedStatus, rows.getFirst().getValueString("status")))
{ {
return (false); return (false);
} }
update(FileGatewayTables.UPLOAD_JOB, changes);
return (true); return (true);
} }