Ticket #6 (closed defect: worksforme)

Opened 4 years ago

Last modified 2 years ago

NullPointerException when creating 2 new containers in the same transaction

Reported by: goiss Owned by: michael
Priority: major Milestone:
Component: MozartSpaces Version:
Keywords: Cc:

Description

Aus dem Tuwis Forum:

Beim Versuch mehrere Container in einer Transaktion zu erstellen, gibt es eine NullPointerException. Zusätzlich beendet sich die Applikation nicht mehr ohne Verwendung von System.exit. Beispielcode:

public static void main(String[] args) {

ICapi capi = null; try {

capi = new Capi(); Transaction tx = capi.createTransaction(null, ICapi.INFINITE_TIMEOUT); ContainerRef ref1 = capi.createContainer(

tx, null, "ref1", IContainer.INFINITE_SIZE);

ContainerRef ref2 = capi.createContainer(

tx, null, "ref2", IContainer.INFINITE_SIZE);

capi.commitTransaction(tx);

} catch (XCoreException ex) {

ex.printStackTrace();

} finally {

if (capi != null) {

try {

capi.shutdown(null, true);

} catch (XCoreException ex) {

ex.printStackTrace();

}

}

}

}

Wenn man das 2. createContainer löscht gibt es keine Exception. Der ausgegebene StackTrace in Eclipse ist:

Exception in thread "main" org.xvsm.internal.exceptions.FatalException: org.xvsm.internal.exceptions.FatalException: java.lang.NullPointerException

at org.xvsm.core.Capi.commitTransaction(Capi.java:117) at org.xvsm.example.EndlosExceptionTest.main(EndlosExceptionTest.java:28)

Caused by: org.xvsm.internal.exceptions.FatalException: java.lang.NullPointerException

at org.xvsm.core.Capi.throwException(Capi.java:456) at org.xvsm.core.Capi.commitTransaction(Capi.java:113) ... 1 more

Caused by: java.lang.NullPointerException

at org.xvsm.transactions.TransactionManager.commitTransaction(TransactionManager.java:257)socket closed

at org.xvsm.internal.tasks.TransactionTask.run(TransactionTask.java:155) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619)

Attachments

BasicTest.java Download (2.7 KB) - added by michael 4 years ago.

Change History

comment:1 Changed 4 years ago by michael

  • Owner set to michael
  • Status changed from new to assigned

comment:2 follow-up: ↓ 3 Changed 4 years ago by michael

  • Status changed from assigned to closed
  • Resolution set to worksforme

Modified TransactionManager

Please review line 256ff. Works for me.

comment:3 in reply to: ↑ 2 Changed 4 years ago by goiss

  • Status changed from closed to reopened
  • Resolution worksforme deleted

Replying to michael:

Modified TransactionManager

Please review line 256ff. Works for me.

Aus dem Tuwis-Forum: Mit bescheidenem Erfolg... (wurde das ausgebessert, Anm. Hannu) Scheint nun ausschließlich der zuletzt erstellte Container zugreifbar zu sein. Wenn man im Beispiel capi.write(ref1,...) durch capi.write(ref2,...) ersetzt, geht es.

Außerdem: ohne System.exit scheinen die Programme sowieso kaum zu terminieren, dürften auch nach capi.shutdown immer noch Threads weiterlaufen.

public static void main(String[] args) { ICapi capi = null; try { capi = new Capi(); Transaction tx = capi.createTransaction(null, ICapi.INFINITE_TIMEOUT); ContainerRef ref1 = capi.createContainer( tx, null, "ref1", IContainer.INFINITE_SIZE); ContainerRef ref2 = capi.createContainer( tx, null, "ref2", IContainer.INFINITE_SIZE); capi.write(ref1, 0, tx, new AtomicEntry<String>("bla")); capi.commitTransaction(tx); } catch (XCoreException ex) { ex.printStackTrace(); } finally { if (capi != null) { try { capi.shutdown(null, true); } catch (XCoreException ex) { ex.printStackTrace(); } } } }

Changed 4 years ago by michael

comment:4 Changed 4 years ago by michael

  • Status changed from reopened to closed
  • Resolution set to worksforme

Attached BasicTest.java works without problems.

comment:5 Changed 2 years ago by sim

 decoration Changed 1 year ago by admin

 bathtub Changed 1 year ago by admin

 solar system Changed 1 year ago by admin

 stair parts Changed 1 year ago by admin

 solar supply Changed 1 year ago by admin

Note: See TracTickets for help on using tickets.