Skip to content

Commit

Permalink
Merge pull request eXist-db#5467 from evolvedbinary/5.x.x/hotfix/ci-j…
Browse files Browse the repository at this point in the history
…dk-8-macos

[5.x.x] Switch CI from Temurin to Liberica
  • Loading branch information
dizzzz authored Oct 10, 2024
2 parents e7e3cbf + 2a19c70 commit 8238c97
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 64 deletions.
2 changes: 1 addition & 1 deletion .github/actions/install-mvnd/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ runs:
- name: Cache mvnd
if: inputs.cache == 'true'
id: cache-mvnd
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
${{ inputs.install-path }}/${{ env.MVND_NAME }}.zip
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ci-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ jobs:
with:
fetch-depth: 1
- name: Set up JDK 8
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: temurin
distribution: liberica
java-version: '8'
- name: Make buildkit default
uses: docker/setup-buildx-action@v3
id: buildx
with:
install: true
- name: Cache Maven packages
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.m2
key: deploy-${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/ci-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
- uses: actions/setup-java@v4
with:
distribution: temurin
distribution: liberica
java-version: ${{ env.DEV_JDK }}
cache: 'maven'
- run: mvn -V -B license:check
Expand All @@ -23,9 +23,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
- uses: actions/setup-java@v4
with:
distribution: temurin
distribution: liberica
java-version: ${{ env.DEV_JDK }}
cache: 'maven'
- run: mvn -V -B install dependency-check:check -DskipTests
Expand All @@ -40,17 +40,17 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: temurin
distribution: liberica
java-version: ${{ env.DEV_JDK }}
cache: 'maven'
- name: Install Maven Daemon
id: install-mvnd
uses: ./.github/actions/install-mvnd
with:
version: '1.0-m7'
file-version-suffix: '-m39'
version: '1.0.2'
file-version-suffix: ''
cache: 'true'
- name: Maven Build
timeout-minutes: 10
Expand All @@ -72,7 +72,7 @@ jobs:
run: ${{ steps.install-mvnd.outputs.mvnd-dir }}/mvnd -V -B jacoco:report coveralls:report
- name: Archive build logs
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ runner.os }}-build-logs
retention-days: 5
Expand Down
38 changes: 0 additions & 38 deletions .github/workflows/sonarcloud.yml

This file was deleted.

2 changes: 1 addition & 1 deletion exist-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1058,7 +1058,7 @@ The BaseX Team. The original license statement is also included below.]]></pream
</dependency>
</dependencies>
<configuration>
<argLine>@{jacocoArgLine} -Dfile.encoding=${project.build.sourceEncoding}</argLine>
<argLine>@{jacocoArgLine} -Dfile.encoding=${project.build.sourceEncoding} -Dexist.recovery.progressbar.hide=true</argLine>
<systemPropertyVariables>
<jetty.home>${project.basedir}/../exist-jetty-config/target/classes/org/exist/jetty</jetty.home>
<exist.configurationFile>${project.build.testOutputDirectory}/conf.xml</exist.configurationFile>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ public void addPlugin(final String className) {
// NOTE: must set interrupted flag
Thread.currentThread().interrupt();
}
LOG.error(e);
LOG.warn(e);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
import com.evolvedbinary.j8fu.function.SupplierE;
import org.exist.util.sanity.SanityCheck;

import javax.annotation.Nullable;

/**
* Database recovery. This class is used once during startup to check
* if the database is in a consistent state. If not, the class attempts to recover
Expand All @@ -59,11 +61,13 @@ public class RecoveryManager {
private final DBBroker broker;
private final JournalRecoveryAccessor journalRecovery;
private final boolean restartOnError;
private final boolean hideProgressBar;

public RecoveryManager(final DBBroker broker, final JournalManager journalManager, final boolean restartOnError) {
this.broker = broker;
this.journalRecovery = journalManager.getRecoveryAccessor(this);
this.restartOnError = restartOnError;
this.hideProgressBar = Boolean.getBoolean("exist.recovery.progressbar.hide");
}

/**
Expand Down Expand Up @@ -120,10 +124,10 @@ public boolean recover() throws LogException {
Lsn lastLsn = Lsn.LSN_INVALID;
Loggable next;
try {
final ProgressBar progress = new ProgressBar("Scanning journal ", FileUtils.sizeQuietly(last));
final long lastSize = FileUtils.sizeQuietly(last);
@Nullable final ProgressBar scanProgressBar = hideProgressBar ? null : new ProgressBar("Scanning journal ", lastSize);
while ((next = reader.nextEntry()) != null) {
// LOG.debug(next.dump());
progress.set(next.getLsn().getOffset());
if (next.getLogType() == LogEntryTypes.TXN_START) {
// new transaction starts: add it to the transactions table
txnsStarted.put(next.getTransactionId(), next);
Expand All @@ -135,6 +139,14 @@ public boolean recover() throws LogException {
lastCheckpoint = (Checkpoint) next;
}
lastLsn = next.getLsn();

if (scanProgressBar != null) {
scanProgressBar.set(next.getLsn().getOffset());
}
}

if (scanProgressBar != null) {
scanProgressBar.set(lastSize); // 100%
}
} catch (final LogException e) {
if (LOG.isDebugEnabled()) {
Expand All @@ -146,7 +158,7 @@ public boolean recover() throws LogException {
// if the last checkpoint record is not the last record in the file
// we need a recovery.
if ((lastCheckpoint == null || !lastCheckpoint.getLsn().equals(lastLsn)) &&
txnsStarted.size() > 0) {
!txnsStarted.isEmpty()) {
LOG.info("Dirty transactions: {}", txnsStarted.size());
// starting recovery: reposition the log reader to the last checkpoint
if (lastCheckpoint == null) {
Expand Down Expand Up @@ -250,10 +262,11 @@ private void doRecovery(final int txnCount, final Path last, final JournalReader
if (LOG.isInfoEnabled())
{
LOG.info("First pass: redoing {} transactions...", txnCount);}
final ProgressBar progress = new ProgressBar("Redo ", FileUtils.sizeQuietly(last));
Loggable next = null;
int redoCnt = 0;
try {
final long lastSize = FileUtils.sizeQuietly(last);
@Nullable final ProgressBar redoProgressBar = hideProgressBar ? null : new ProgressBar("Redo ", lastSize);
while ((next = reader.nextEntry()) != null) {
SanityCheck.ASSERT(next.getLogType() != LogEntryTypes.CHECKPOINT,
"Found a checkpoint during recovery run! This should not ever happen.");
Expand All @@ -271,9 +284,19 @@ private void doRecovery(final int txnCount, final Path last, final JournalReader
// LOG.debug("Redo: " + next.dump());
// redo the log entry
next.redo();
progress.set(next.getLsn().getOffset());
if (next.getLsn().equals(lastLsn))
{break;} // last readable entry reached. Stop here.

if (redoProgressBar != null) {
redoProgressBar.set(next.getLsn().getOffset());
}

if (next.getLsn().equals(lastLsn)) {
// last readable entry reached. Stop here.
break;
}
}

if (redoProgressBar != null) {
redoProgressBar.set(lastSize); // 100% done
}
} catch (final Exception e) {
LOG.error("Exception caught while redoing transactions. Aborting recovery to avoid possible damage. " +
Expand All @@ -291,16 +314,19 @@ private void doRecovery(final int txnCount, final Path last, final JournalReader
{
LOG.info("Second pass: undoing dirty transactions. Uncommitted transactions: {}", runningTxns.size());}
// see if there are uncommitted transactions pending
if (runningTxns.size() > 0) {
if (!runningTxns.isEmpty()) {
// do a reverse scan of the log, undoing all uncommitted transactions
try {
while((next = reader.previousEntry()) != null) {
final long lastSize = FileUtils.sizeQuietly(last);
final ProgressBar undoProgressBar = hideProgressBar ? null : new ProgressBar("Undo ", lastSize);
while ((next = reader.previousEntry()) != null) {
if (next.getLogType() == LogEntryTypes.TXN_START) {
if (runningTxns.get(next.getTransactionId()) != null) {
runningTxns.remove(next.getTransactionId());
if (runningTxns.size() == 0)
if (runningTxns.isEmpty()) {
// all dirty transactions undone
{break;}
break;
}
}
} else if (next.getLogType() == LogEntryTypes.TXN_COMMIT) {
// ignore already committed transaction
Expand All @@ -314,6 +340,14 @@ private void doRecovery(final int txnCount, final Path last, final JournalReader
// LOG.debug("Undo: " + next.dump());
next.undo();
}

if (undoProgressBar != null) {
undoProgressBar.set(lastSize - next.getLsn().getOffset());
}
}

if (undoProgressBar != null) {
undoProgressBar.set(lastSize); // 100% done
}
} catch (final Exception e) {
LOG.warn("Exception caught while undoing dirty transactions. Remaining transactions to be undone: {}. Aborting recovery to avoid possible damage. Before starting again, make sure to run a check via the emergency export tool.", runningTxns.size(), e);
Expand Down
5 changes: 5 additions & 0 deletions exist-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -863,6 +863,11 @@
<repoToken>${env.COVERALLS_TOKEN}</repoToken>
</configuration>
</plugin>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>4.0.0.4121</version>
</plugin>
</plugins>
</pluginManagement>

Expand Down

0 comments on commit 8238c97

Please sign in to comment.