Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19bc4c14b4
|
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.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
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
name: build
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
jobs:
|
|
||||||
maven:
|
|
||||||
uses: self:KofTwentyTwo/ci-workflows/.gitea/workflows/maven.yaml@v1
|
|
||||||
secrets: inherit
|
|
||||||
@@ -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
@@ -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,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.
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user