Compare commits
16
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79d241e1f6
|
||
|
|
c47d5a1c18 | ||
|
|
677aa54801
|
||
|
|
44a463e4d9
|
||
|
|
32f91b75c2
|
||
|
|
32239cd57d
|
||
|
|
950a8018c7
|
||
|
|
43bfe48feb
|
||
|
|
ead0c904ce
|
||
|
|
579946d62c
|
||
|
|
4f53c29318
|
||
|
|
cd3c0393a2
|
||
|
|
d9f74cb576
|
||
|
|
d12a7777af | ||
|
|
5f6a5022ce | ||
|
|
3c9a4d229b |
No files matched your search
@@ -1,12 +1,12 @@
|
|||||||
version: 2.1
|
version: 2.1
|
||||||
setup: true
|
setup: true
|
||||||
orbs:
|
orbs:
|
||||||
qqq-orb: kingsrook/qqq-orb@0.7.12
|
qqq-orb: kingsrook/qqq-orb@0.8
|
||||||
workflows:
|
workflows:
|
||||||
setup:
|
setup:
|
||||||
jobs:
|
jobs:
|
||||||
- qqq-orb/generate_pipeline:
|
- qqq-orb/generate_pipeline:
|
||||||
orb_version: 0.7.12
|
orb_version: '0.8'
|
||||||
filters:
|
filters:
|
||||||
branches:
|
branches:
|
||||||
ignore: automation/qbit-rc-pending
|
ignore: automation/qbit-rc-pending
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
name: build
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
jobs:
|
||||||
|
maven:
|
||||||
|
uses: self:KofTwentyTwo/ci-workflows/.gitea/workflows/maven.yaml@v1
|
||||||
|
secrets: inherit
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
name: CodeQL
|
||||||
|
'on':
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- develop
|
||||||
|
- release/**
|
||||||
|
- hotfix/**
|
||||||
|
pull_request: {}
|
||||||
|
schedule:
|
||||||
|
- cron: 41 16 * * 0
|
||||||
|
workflow_dispatch: {}
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
actions: read
|
||||||
|
security-events: write
|
||||||
|
packages: read
|
||||||
|
concurrency:
|
||||||
|
group: codeql-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
uses: QRun-IO/qqq-orb/.github/workflows/qbit-codeql.yml@c288a8864fe9054f68410e1d78f5863aea4c4d22
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
profile: qbit
|
profile: qbit
|
||||||
orb_version: 0.7.12
|
orb_version: '0.8'
|
||||||
default_branch: develop
|
default_branch: develop
|
||||||
java_version: '21'
|
java_version: '21'
|
||||||
browsers: true
|
browsers: true
|
||||||
|
|||||||
@@ -6,6 +6,12 @@ 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.
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<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>
|
||||||
@@ -33,7 +34,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.kingsrook</groupId>
|
<groupId>com.kingsrook</groupId>
|
||||||
<artifactId>qbit-build-parent</artifactId>
|
<artifactId>qbit-build-parent</artifactId>
|
||||||
<version>2.0.0</version>
|
<version>2.2.1</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<groupId>com.kingsrook.qbits</groupId>
|
<groupId>com.kingsrook.qbits</groupId>
|
||||||
@@ -81,7 +82,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.2</version>
|
<version>0.1.0-RC.10</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- MINA's Ed25519 key decoder and signer. -->
|
<!-- MINA's Ed25519 key decoder and signer. -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -117,7 +118,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.14</version>
|
<version>1.0.0-RC.38</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -239,7 +240,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.7</qqq.snapshot.version>
|
<qqq.snapshot.version>4.1.0-RC.26</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").withRecordVersionField("status")
|
QTableMetaData table = base(config, UPLOAD_JOB, "Upload Jobs")
|
||||||
.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.Map;
|
import java.util.Objects;
|
||||||
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,18 +244,23 @@ public class AuditWriter
|
|||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Optimistic status transition, called under withAccountLock because core checks
|
** Guarded status transition. Callers hold withAccountLock, so the status re-read in
|
||||||
** expected versions before SQL execution rather than in the SQL WHERE clause.
|
** that transaction is serialized across pods; status is compared here rather than
|
||||||
|
** 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
|
||||||
{
|
{
|
||||||
QRecord result = system(() -> new UpdateAction().execute(new UpdateInput(FileGatewayTables.UPLOAD_JOB)
|
if(transaction.get() == null)
|
||||||
.withRecords(List.of(changes)).withTransaction(transaction.get())
|
{
|
||||||
.withExpectedVersions(Map.of(changes.getValue("id"), expectedStatus))).getRecords().getFirst());
|
throw (new QException("Upload transitions require the account lock transaction"));
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user