diff --git a/dhfs-parent/crapfs/src/main/java/org/acme/files/service/DhfsFileService.java b/dhfs-parent/crapfs/src/main/java/org/acme/files/service/DhfsFileService.java
index 9b7744a1..977dd4f2 100644
--- a/dhfs-parent/crapfs/src/main/java/org/acme/files/service/DhfsFileService.java
+++ b/dhfs-parent/crapfs/src/main/java/org/acme/files/service/DhfsFileService.java
@@ -72,6 +72,7 @@ public class DhfsFileService {
return txm.run(() -> {
var file = alloc.create(File.class, new JObjectKey(path));
+ file.setChunks(new TreeMap<>());
curTx.putObject(file);
return Optional.of(path);
});
diff --git a/dhfs-parent/crapfs/src/main/resources/application.properties b/dhfs-parent/crapfs/src/main/resources/application.properties
index 493f31e3..4181868b 100644
--- a/dhfs-parent/crapfs/src/main/resources/application.properties
+++ b/dhfs-parent/crapfs/src/main/resources/application.properties
@@ -10,13 +10,12 @@ dhfs.files.write_merge_limit=1.2
# Don't take blocks of this size and above when merging
dhfs.files.write_merge_max_chunk_to_take=1
dhfs.files.write_last_chunk_limit=1.5
-quarkus.log.category."com.usatiuk.dhfs".min-level=TRACE
-quarkus.log.category."com.usatiuk.dhfs".level=TRACE
+quarkus.log.category."com.usatiuk.dhfs".min-level=INFO
+quarkus.log.category."com.usatiuk.dhfs".level=INFO
quarkus.http.insecure-requests=enabled
quarkus.http.ssl.client-auth=required
-
+dhfs.objects.persistence.files.root=${HOME}/dhfs_default/dhfsdb
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.datasource.jdbc.url=jdbc:h2:file:${HOME}/dhfs_default/dhfsdb
quarkus.datasource.db-kind=h2
-
quarkus.hibernate-orm.cache."org.acme.files.objects.ChunkData".memory.object-count=500
\ No newline at end of file
diff --git a/dhfs-parent/objects/pom.xml b/dhfs-parent/objects/pom.xml
index 96e660a5..e20ad13e 100644
--- a/dhfs-parent/objects/pom.xml
+++ b/dhfs-parent/objects/pom.xml
@@ -80,11 +80,11 @@
objects-common
1.0-SNAPSHOT
-
- com.usatiuk
- objects-common-deployment
- 1.0-SNAPSHOT
-
+
+
+
+
+
diff --git a/dhfs-parent/objects/src/main/java/com/usatiuk/dhfs/objects/JObjectManager.java b/dhfs-parent/objects/src/main/java/com/usatiuk/dhfs/objects/JObjectManager.java
index e7466e59..674454f5 100644
--- a/dhfs-parent/objects/src/main/java/com/usatiuk/dhfs/objects/JObjectManager.java
+++ b/dhfs-parent/objects/src/main/java/com/usatiuk/dhfs/objects/JObjectManager.java
@@ -13,6 +13,7 @@ import io.quarkus.logging.Log;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
+import java.io.Serializable;
import java.lang.ref.Cleaner;
import java.lang.ref.WeakReference;
import java.util.*;
@@ -85,7 +86,7 @@ public class JObjectManager {
//noinspection unused
try (var readLock = _storageReadLocker.lock(key)) {
var read = objectStorage.readObject(key).orElse(null);
- if (read == null) throw new IllegalArgumentException("Object not found: " + key);
+ if (read == null) return null;
var got = objectSerializer.deserialize(read);
@@ -168,6 +169,27 @@ public class JObjectManager {
return transactionFactory.createTransaction(counter, new TransactionObjectSourceImpl(counter));
}
+ // FIXME:
+ private static class SimpleTxManifest implements Serializable, TxManifest {
+ private final List _written;
+ private final List _deleted;
+
+ public SimpleTxManifest(List written, List deleted) {
+ _written = written;
+ _deleted = deleted;
+ }
+
+ @Override
+ public List getWritten() {
+ return _written;
+ }
+
+ @Override
+ public List getDeleted() {
+ return _deleted;
+ }
+ }
+
public void commit(TransactionPrivate tx) {
// This also holds the weak references
var toUnlock = new LinkedList();
@@ -290,18 +312,7 @@ public class JObjectManager {
Log.tracef("Committing transaction %d to storage", tx.getId());
- objectStorage.commitTx(new TxManifest() {
- @Override
- public List getWritten() {
- // FIXME:
- return written.stream().map(JData::getKey).toList();
- }
-
- @Override
- public List getDeleted() {
- return List.of();
- }
- });
+ objectStorage.commitTx(new SimpleTxManifest(written.stream().map(JData::getKey).toList(), Collections.emptyList()));
} catch (Throwable t) {
Log.error("Error when committing transaction", t);
throw t;
diff --git a/dhfs-parent/objects/src/main/java/com/usatiuk/dhfs/objects/TransactionManager.java b/dhfs-parent/objects/src/main/java/com/usatiuk/dhfs/objects/TransactionManager.java
index 39a3b9a2..8e9c061a 100644
--- a/dhfs-parent/objects/src/main/java/com/usatiuk/dhfs/objects/TransactionManager.java
+++ b/dhfs-parent/objects/src/main/java/com/usatiuk/dhfs/objects/TransactionManager.java
@@ -13,6 +13,10 @@ public interface TransactionManager {
void rollback();
default T run(Supplier supplier) {
+ if (current() != null) {
+ return supplier.get();
+ }
+
begin();
try {
var ret = supplier.get();
@@ -25,6 +29,11 @@ public interface TransactionManager {
}
default void run(VoidFn fn) {
+ if (current() != null) {
+ fn.apply();
+ return;
+ }
+
begin();
try {
fn.apply();
diff --git a/dhfs-parent/objects/src/main/resources/META-INF/beans.xml b/dhfs-parent/objects/src/main/resources/META-INF/beans.xml
new file mode 100644
index 00000000..e69de29b