SuccessChanges

Summary

  1. Bug 1213 - RecursiveThreadGroupLockImpl01Unfairish.unlock() always (details)
  2. SingletonJunitCase: Allow explicit disabling singletonLock to allow (details)
  3. Bug 1213: Expose InterruptSource, SourcedInterruptedException and (details)
  4. Bug 1213 (related): Fix TaskBase, RunnableTask and FunctionTask (details)
  5. Bug 1213: Refine changes .. comments and API (details)
  6. Bug 1213: Use InterruptSource.Thread (details)
Commit db7ce1c9c271edf6dc08db9f920adc93df9b2bb0 by Sven Gothel
Bug 1213 - RecursiveThreadGroupLockImpl01Unfairish.unlock() always
interrupts original-owner, even if not waiting at unlock()
RecursiveThreadGroupLockImpl01Unfairish.unlock():
An interrupt() is always issued from group members on the original
owner.
This shall only happen, if the original owner is waiting within unlock()
for all group members to be unlocked.
This extra interrupt causes side-effects, see Bug 1211.
Only issue the interrupt to wake-up the original owner iff waiting
within unlock!
+++
RecursiveLockImpl01CompleteFair:
Issue 'Thread.interrupted()' to clear a slipped interrupt
call after while-loop.
The file was modifiedsrc/java/jogamp/common/util/locks/RecursiveThreadGroupLockImpl01Unfairish.java (diff)
The file was modifiedsrc/java/jogamp/common/util/locks/RecursiveLockImpl01CompleteFair.java (diff)
Commit b94d0c4e2ac4b29ffe6bb832d37b83c6d32497fe by Sven Gothel
SingletonJunitCase: Allow explicit disabling singletonLock to allow
manual test cases to run concurrently
The file was modifiedsrc/junit/com/jogamp/junit/util/SingletonJunitCase.java (diff)
Commit 47495cd2a228534578731346c8baf2b190bcd241 by Sven Gothel
Bug 1213: Expose InterruptSource, SourcedInterruptedException and
InterruptedRuntimeException
- InterruptSource interface declares methods to retrieve
the source of a Thread.interrupt() call.
- InterruptSource.Thread implements InterruptSource,
i.e. allows code running within such thread to learn about
the interrupt source (stack trace).
- SourcedInterruptedException is a InterruptedException specialization
which may include the source of the causing Thread.interrupt() call.
- InterruptedRuntimeException
An unchecked RuntimeException propagating an InterruptedException
where handling of the latter is not desired.
The causing InterruptedException may be of type
SourcedInterruptedException,
hence a detailed stack trace analysis might be possible.
The file was addedsrc/java/com/jogamp/common/util/InterruptSource.java
The file was modifiedsrc/java/com/jogamp/common/ExceptionUtils.java (diff)
The file was modifiedsrc/java/com/jogamp/common/JogampRuntimeException.java (diff)
The file was addedsrc/java/com/jogamp/common/util/SourcedInterruptedException.java
The file was addedsrc/java/com/jogamp/common/util/InterruptedRuntimeException.java
Commit 2b97ed6d238a0db1e2cf7bdf15349e90eaaa8dfc by Sven Gothel
Bug 1213 (related): Fix TaskBase, RunnableTask and FunctionTask
implementation and semantics
- TaskBase
- requires 'volatile boolean isExecuted' for atomic query of same
semantics
- fix isInQueue(): condition was reverse in regars to 'isExecuted'
- expose 'Thread getExecutionThread()' as learned within run() method.
- RunnableTask
- deprecate: 'static invoke(final boolean waitUntilDone, final Runnable
runnable)',
   since it's nonsense, use runnable.run() instead.
  - 'static RunnableTask invokeOnNewThread(..)'
   - uses InterruptSource.Thread
   - Persistent-Wait
   - Cancelable using InterruptedRuntimeException
- FunctionTask
- deprecate 'static <U,V> U invoke(final boolean waitUntilDone, final
Function<U,V> func, final V... args)',
   since it's nonsense, use func.eval(args) instead.
  - 'static FunctionTask<U,V> invokeOnNewThread(..)'
   - uses InterruptSource.Thread
   - Persistent-Wait
   - Cancelable using InterruptedRuntimeException
The file was modifiedsrc/java/com/jogamp/common/util/TaskBase.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/FunctionTask.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/RunnableTask.java (diff)
Commit 1c4e2d3ea379fe6578dfb84e10f22729b71b1ae5 by Sven Gothel
Bug 1213: Refine changes .. comments and API
- Use InterruptSource.Thread.create(..),
while reducing InterruptSource.Thread ctors to 3 variants.
- Use InterruptSource.Thread instead of java.lang.Thread where possible
- Use SourcedInterruptedException where possible
- SingletonInstanceServerSocket: start(), stop() and run()
- Persistent-Wait and Cancelable
- Add @since 2.3.2
The file was modifiedsrc/java/com/jogamp/common/util/TaskBase.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/locks/TestSingletonServerSocket01.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/FunctionTask.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/cache/TempFileCache.java (diff)
The file was modifiedsrc/java/jogamp/android/launcher/LauncherTempFileCache.java (diff)
The file was modifiedsrc/java/jogamp/common/util/locks/SingletonInstanceServerSocket.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/InterruptSource.java (diff)
The file was modifiedmake/scripts/runtest.sh (diff)
The file was modifiedsrc/java/com/jogamp/common/util/RunnableTask.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/locks/TestSingletonServerSocket00.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/SourcedInterruptedException.java (diff)
The file was modifiedsrc/java/jogamp/common/util/locks/RecursiveLockImpl01CompleteFair.java (diff)
Commit 3e40d97a9a7a60e746b3703d2c7d3f4884159a52 by Sven Gothel
Bug 1213: Use InterruptSource.Thread
The file was modifiedsrc/java/jogamp/android/launcher/MainLauncher.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/locks/TestRecursiveThreadGroupLock01.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/TestRunnableTask01.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/locks/TestSingletonServerSocket00.java (diff)
The file was modifiedsrc/java/jogamp/common/util/locks/SingletonInstanceFileLock.java (diff)
The file was modifiedsrc/java/jogamp/common/util/locks/SingletonInstanceServerSocket.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/locks/TestRecursiveLock01.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/IOUtil.java (diff)