Skip to content
Success

Console Output

Skipping 3,639 KB.. Full Log
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Person, PersonGroup, PersonGroupMember, SyncNode, Site, ScopedGrant, PersonAuth2
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Person, PersonGroup, PersonGroupMember, SyncNode, Site, ScopedGrant, PersonAuth2
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: SyncNode
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: SyncNode
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Site
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Site
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1  - start readOnly=false
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1  - start readOnly=false
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1 : creating SQLite change triggers 
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1 : creating SQLite change triggers 
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [NodeEventJdbcImplListenerSqlite - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] creating SQLite triggers
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [NodeEventJdbcImplListenerSqlite - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] creating SQLite triggers
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "INSERT INTO Person (personUid, username, firstNames, lastName, emailAddr, phoneNum, gender, active, dateOfBirth, personAddress, personOrgId, personGroupUid, personLct, personCountry, personType, personMasterChangeSeqNum, personLocalChangeSeqNum, personLastChangedBy, admin, personNotes, fatherName, fatherNumber, motherName, motherNum) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "INSERT INTO Person (personUid, username, firstNames, lastName, emailAddr, phoneNum, gender, active, dateOfBirth, personAddress, personOrgId, personGroupUid, personLct, personCountry, personType, personMasterChangeSeqNum, personLocalChangeSeqNum, personLastChangedBy, admin, personNotes, fatherName, fatherNumber, motherName, motherNum) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "INSERT OR REPLACE INTO SystemPermission (spUid, spToPersonUid, spToGroupUid, spPermissionsFlag, spLastModified, spIsDeleted) VALUES(?, ?, ?, ?, ?, ?)"
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "INSERT OR REPLACE INTO SystemPermission (spUid, spToPersonUid, spToGroupUid, spPermissionsFlag, spLastModified, spIsDeleted) VALUES(?, ?, ?, ?, ?, ?)"
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINE: [DEBUG] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1 : SQLite Change Tracker: Changed tables=[Person, SystemPermission]
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINE: [DEBUG] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1 : SQLite Change Tracker: Changed tables=[Person, SystemPermission]
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [NodeEventJdbcImplListenerSqlite - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] found 0 new events = 
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [NodeEventJdbcImplListenerSqlite - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] found 0 new events = 
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1  committed changes
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1  committed changes
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Person, SystemPermission
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1 : end transaction #1
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Person, SystemPermission
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #1 : end transaction #1
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #2  - start readOnly=true
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #2  - start readOnly=true
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "SELECT authSalt FROM Site LIMIT 1"
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "SELECT authSalt FROM Site LIMIT 1"
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #2 : end transaction #2
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #2 : end transaction #2
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3  - start readOnly=false
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3  - start readOnly=false
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3 : creating SQLite change triggers 
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3 : creating SQLite change triggers 
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [NodeEventJdbcImplListenerSqlite - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] creating SQLite triggers
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [NodeEventJdbcImplListenerSqlite - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] creating SQLite triggers
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "INSERT OR REPLACE INTO PersonAuth2 (pauthUid, pauthMechanism, pauthAuth, pauthLcsn, pauthPcsn, pauthLcb, pauthLct) VALUES(?, ?, ?, ?, ?, ?, ?)"
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "INSERT OR REPLACE INTO PersonAuth2 (pauthUid, pauthMechanism, pauthAuth, pauthLcsn, pauthPcsn, pauthLcb, pauthLct) VALUES(?, ?, ?, ?, ?, ?, ?)"
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINE: [DEBUG] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3 : SQLite Change Tracker: Changed tables=[PersonAuth2]
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINE: [DEBUG] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3 : SQLite Change Tracker: Changed tables=[PersonAuth2]
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [NodeEventJdbcImplListenerSqlite - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] found 0 new events = 
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [NodeEventJdbcImplListenerSqlite - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] found 0 new events = 
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3  committed changes
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3  committed changes
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: PersonAuth2
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: PersonAuth2
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3 : end transaction #3
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #3 : end transaction #3
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #4  - start readOnly=true
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #4  - start readOnly=true
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "
        SELECT PersonAuth2.*
          FROM PersonAuth2
         WHERE PersonAuth2.pauthUid = ? 
    "
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "
        SELECT PersonAuth2.*
          FROM PersonAuth2
         WHERE PersonAuth2.pauthUid = ? 
    "
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #4 : end transaction #4
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #4 : end transaction #4
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: RequestedEntry
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: RequestedEntry
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Person, SyncNode, Site, PersonAuth2, SystemPermission
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Person, SyncNode, Site, PersonAuth2, SystemPermission
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: SyncNode
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: SyncNode
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Site
Nov 01, 2024 5:38:33 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Site
> Task :app-ktor-server:test
> Task :app-ktor-server:check
> Task :app-ktor-server:build
> Task :sharedse:allTests
> Task :sharedse:check
> Task :sharedse:build
> Task :app-android:packageBenchmarkRelease
> Task :app-android:createBenchmarkReleaseApkListingFileRedirect
> Task :app-android:assembleBenchmarkRelease
> Task :app-android:assemble
> Task :app-android:build
> Task :app-android:signReleaseBundle
> Task :app-android:produceReleaseBundleIdeListingFile
> Task :app-android:createReleaseBundleListingFileRedirect
> Task :app-android:bundleRelease
> Task :app-android:shrinkBundleBenchmarkReleaseResources
> Task :app-android:signBenchmarkReleaseBundle
> Task :app-android:produceBenchmarkReleaseBundleIdeListingFile
> Task :app-android:createBenchmarkReleaseBundleListingFileRedirect
> Task :app-android:bundleBenchmarkRelease
> Task :app-android:bundle

> Task :core:compileTestKotlinJvm
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/account/AuthManagerTest.kt:44:18 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/cachestoragepath/GetStoragePathForUrlUseCaseCommonJvmTest.kt:39:13 Variable 'getStoragePathUseCase' is never used
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/domain/blob/saveandmanifest/SaveLocalUriAndManifestUploadIntegrationTest.kt:210:80 Parameter 'prev' is never used, could be renamed to _
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/domain/blob/upload/BlobUploadServerUseCaseTest.kt:113:51 Parameter 'invocation' is never used, could be renamed to _
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/domain/blob/upload/BlobUploadServerUseCaseTest.kt:161:51 Parameter 'invocation' is never used, could be renamed to _
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/domain/clazzenrolment/pendingenrolment/RequestEnrolmentUseCaseJvmTest.kt:32:40 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/impl/UstadAccountManagerTest.kt:269:18 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/impl/UstadAccountManagerTest.kt:309:13 Variable 'savedAccount' is never used
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/impl/UstadAccountManagerTest.kt:311:18 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/impl/UstadAccountManagerTest.kt:320:18 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/impl/UstadAccountManagerTest.kt:437:18 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/impl/UstadAccountManagerTest.kt:445:18 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/impl/UstadAccountManagerTest.kt:552:16 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/schedule/TestClazzLogCreator.kt:133:13 Variable 'longWeekendHoliday' is never used
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/schedule/TestClazzLogCreator.kt:140:25 Variable 'testClazzSchedule' is never used
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/schedule/TestClazzLogCreator.kt:165:25 Variable 'testClazzSchedule' is never used
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/schedule/TestClazzLogCreator.kt:199:25 Variable 'testClazzSchedule' is never used
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/schedule/TestClazzLogCreator.kt:224:25 Variable 'testClazzSchedule' is never used
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/test/clientservertest/ClientServerIntegrationTest.kt:69:5 Parameter 'baseTmpDir' is never used
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/test/clientservertest/ClientServerIntegrationTest.kt:170:37 Parameter 'call' is never used, could be renamed to _
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/test/clientservertest/ClientServerIntegrationTest.kt:179:47 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/test/viewmodeltest/ViewModelTestBuilder.kt:279:33 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/util/test/MainDispatcherRule.kt:17:31 This declaration needs opt-in. Its usage should be marked with '@kotlinx.coroutines.ExperimentalCoroutinesApi' or '@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)'
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/util/test/MainDispatcherRule.kt:18:21 This declaration needs opt-in. Its usage should be marked with '@kotlinx.coroutines.ExperimentalCoroutinesApi' or '@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)'
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/util/test/MainDispatcherRule.kt:22:21 This declaration needs opt-in. Its usage should be marked with '@kotlinx.coroutines.ExperimentalCoroutinesApi' or '@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)'
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/viewmodel/clazz/list/ClazzListViewModelTest.kt:66:24 'grantScopedPermission(Person, Long, Int, Long): ScopedGrantResult' is deprecated. This has been replaced with SystemPermission and CoursePermission
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/viewmodel/clazzlog/edit/ClazzLogEditAttendanceViewModelTest.kt:69:50 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/viewmodel/parentalconsentmanagement/ParentalConsentManagementViewModelTest.kt:60:40 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/viewmodel/person/PersonIntegrationTest.kt:29:40 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead
w: file:///home/jenkins/.jenkins/workspace/Release-Edubridge-Afghanistan/core/src/jvmTest/kotlin/com/ustadmobile/core/viewmodel/person/detail/PersonDetailViewModelTest.kt:187:20 'insertPersonAndGroup(T, Int = ...): T' is deprecated. Should use AddNewPersonUseCase instead

> Task :core:jvmTestClasses
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvmTest$TestUploadException
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvmTest.stubToThrowException$lambda$11$lambda$10(BlobUploadClientUseCaseJvmTest.kt:209)
	at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:42)
	at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
	at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
	at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:34)
	at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:82)
	at org.mockito.internal.creation.bytebuddy.MockMethodAdvice.handle(MockMethodAdvice.java:134)
	at com.ustadmobile.core.domain.upload.ChunkedUploadClientUseCaseKtorImpl.invoke(ChunkedUploadClientUseCaseKtorImpl.kt:107)
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvm$asyncUploadItemsFromChannelProcessor$2$1.invokeSuspend(BlobUploadClientUseCaseJvm.kt:120)
	at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42)
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvm$invoke$2.invokeSuspend(BlobUploadClientUseCaseJvm.kt:244)
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvm$invoke$4.invokeSuspend(BlobUploadClientUseCaseJvm.kt:272)
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvm.invoke(BlobUploadClientUseCaseJvm.kt:269)
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvmTest$givenTransferJobInDatabase_whenErrorOccurs_thenAttemptCountIncrementAndExceptionThrown$1.invokeSuspend(BlobUploadClientUseCaseJvmTest.kt:384)
Caused by: com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvmTest$TestUploadException
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvmTest.stubToThrowException$lambda$11$lambda$10(BlobUploadClientUseCaseJvmTest.kt:209)
	at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:42)
	at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
	at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
	at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:34)
	at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:82)
	at org.mockito.internal.creation.bytebuddy.MockMethodAdvice.handle(MockMethodAdvice.java:134)
	at com.ustadmobile.core.domain.upload.ChunkedUploadClientUseCaseKtorImpl.invoke(ChunkedUploadClientUseCaseKtorImpl.kt:107)
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvm$asyncUploadItemsFromChannelProcessor$2$1.invokeSuspend(BlobUploadClientUseCaseJvm.kt:120)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:277)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:95)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:69)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at com.ustadmobile.core.domain.blob.upload.BlobUploadClientUseCaseJvmTest.givenTransferJobInDatabase_whenErrorOccurs_thenAttemptCountIncrementAndExceptionThrown(BlobUploadClientUseCaseJvmTest.kt:356)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52)
	at jdk.internal.reflect.GeneratedMethodAccessor65.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
===SQLITE===
add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_PersonPicture_Ins_personPictureUri
                        AFTER INSERT ON PersonPicture
                        FOR EACH ROW WHEN NEW.personPictureUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(50, NEW.personPictureUid, NEW.personPictureUri, 0, 1, 1);
                        END
                    """)

add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_PersonPicture_Ins_personPictureThumbnailUri
                        AFTER INSERT ON PersonPicture
                        FOR EACH ROW WHEN NEW.personPictureThumbnailUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(50, NEW.personPictureUid, NEW.personPictureThumbnailUri, 0, 1, 1);
                        END
                    """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_PersonPicture_Upd_personPictureUri_New
                    AFTER UPDATE ON PersonPicture
                    FOR EACH ROW WHEN NEW.personPictureUri != OLD.personPictureUri AND NEW.personPictureUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(50, NEW.personPictureUid, NEW.personPictureUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_PersonPicture_Upd_personPictureUri_Old
AFTER UPDATE ON PersonPicture
FOR EACH ROW WHEN NEW.personPictureUri != OLD.personPictureUri AND OLD.personPictureUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 50
       AND cljEntityUid = OLD.personPictureUid
       AND cljUrl = OLD.personPictureUri;
END        """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_PersonPicture_Upd_personPictureThumbnailUri_New
                    AFTER UPDATE ON PersonPicture
                    FOR EACH ROW WHEN NEW.personPictureThumbnailUri != OLD.personPictureThumbnailUri AND NEW.personPictureThumbnailUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(50, NEW.personPictureUid, NEW.personPictureThumbnailUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_PersonPicture_Upd_personPictureThumbnailUri_Old
AFTER UPDATE ON PersonPicture
FOR EACH ROW WHEN NEW.personPictureThumbnailUri != OLD.personPictureThumbnailUri AND OLD.personPictureThumbnailUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 50
       AND cljEntityUid = OLD.personPictureUid
       AND cljUrl = OLD.personPictureThumbnailUri;
END        """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_PersonPicture_Del_personPictureUri
AFTER DELETE ON PersonPicture
FOR EACH ROW WHEN OLD.personPictureUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 50
       AND cljEntityUid = OLD.personPictureUid
       AND cljUrl = OLD.personPictureUri;
END       """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_PersonPicture_Del_personPictureThumbnailUri
AFTER DELETE ON PersonPicture
FOR EACH ROW WHEN OLD.personPictureThumbnailUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 50
       AND cljEntityUid = OLD.personPictureUid
       AND cljUrl = OLD.personPictureThumbnailUri;
END       """)

add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_CoursePicture_Ins_coursePictureUri
                        AFTER INSERT ON CoursePicture
                        FOR EACH ROW WHEN NEW.coursePictureUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(125, NEW.coursePictureUid, NEW.coursePictureUri, 0, 1, 1);
                        END
                    """)

add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_CoursePicture_Ins_coursePictureThumbnailUri
                        AFTER INSERT ON CoursePicture
                        FOR EACH ROW WHEN NEW.coursePictureThumbnailUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(125, NEW.coursePictureUid, NEW.coursePictureThumbnailUri, 0, 1, 1);
                        END
                    """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_CoursePicture_Upd_coursePictureUri_New
                    AFTER UPDATE ON CoursePicture
                    FOR EACH ROW WHEN NEW.coursePictureUri != OLD.coursePictureUri AND NEW.coursePictureUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(125, NEW.coursePictureUid, NEW.coursePictureUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CoursePicture_Upd_coursePictureUri_Old
AFTER UPDATE ON CoursePicture
FOR EACH ROW WHEN NEW.coursePictureUri != OLD.coursePictureUri AND OLD.coursePictureUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 125
       AND cljEntityUid = OLD.coursePictureUid
       AND cljUrl = OLD.coursePictureUri;
END        """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_CoursePicture_Upd_coursePictureThumbnailUri_New
                    AFTER UPDATE ON CoursePicture
                    FOR EACH ROW WHEN NEW.coursePictureThumbnailUri != OLD.coursePictureThumbnailUri AND NEW.coursePictureThumbnailUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(125, NEW.coursePictureUid, NEW.coursePictureThumbnailUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CoursePicture_Upd_coursePictureThumbnailUri_Old
AFTER UPDATE ON CoursePicture
FOR EACH ROW WHEN NEW.coursePictureThumbnailUri != OLD.coursePictureThumbnailUri AND OLD.coursePictureThumbnailUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 125
       AND cljEntityUid = OLD.coursePictureUid
       AND cljUrl = OLD.coursePictureThumbnailUri;
END        """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CoursePicture_Del_coursePictureUri
AFTER DELETE ON CoursePicture
FOR EACH ROW WHEN OLD.coursePictureUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 125
       AND cljEntityUid = OLD.coursePictureUid
       AND cljUrl = OLD.coursePictureUri;
END       """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CoursePicture_Del_coursePictureThumbnailUri
AFTER DELETE ON CoursePicture
FOR EACH ROW WHEN OLD.coursePictureThumbnailUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 125
       AND cljEntityUid = OLD.coursePictureUid
       AND cljUrl = OLD.coursePictureThumbnailUri;
END       """)

add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_CourseAssignmentSubmissionFile_Ins_casaUri
                        AFTER INSERT ON CourseAssignmentSubmissionFile
                        FOR EACH ROW WHEN NEW.casaUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(90, NEW.casaUid, NEW.casaUri, 0, 1, 1);
                        END
                    """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_CourseAssignmentSubmissionFile_Upd_casaUri_New
                    AFTER UPDATE ON CourseAssignmentSubmissionFile
                    FOR EACH ROW WHEN NEW.casaUri != OLD.casaUri AND NEW.casaUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(90, NEW.casaUid, NEW.casaUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CourseAssignmentSubmissionFile_Upd_casaUri_Old
AFTER UPDATE ON CourseAssignmentSubmissionFile
FOR EACH ROW WHEN NEW.casaUri != OLD.casaUri AND OLD.casaUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 90
       AND cljEntityUid = OLD.casaUid
       AND cljUrl = OLD.casaUri;
END        """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CourseAssignmentSubmissionFile_Del_casaUri
AFTER DELETE ON CourseAssignmentSubmissionFile
FOR EACH ROW WHEN OLD.casaUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 90
       AND cljEntityUid = OLD.casaUid
       AND cljUrl = OLD.casaUri;
END       """)

add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_CourseBlockPicture_Ins_cbpPictureUri
                        AFTER INSERT ON CourseBlockPicture
                        FOR EACH ROW WHEN NEW.cbpPictureUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(6677, NEW.cbpUid, NEW.cbpPictureUri, 0, 1, 1);
                        END
                    """)

add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_CourseBlockPicture_Ins_cbpThumbnailUri
                        AFTER INSERT ON CourseBlockPicture
                        FOR EACH ROW WHEN NEW.cbpThumbnailUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(6677, NEW.cbpUid, NEW.cbpThumbnailUri, 0, 1, 1);
                        END
                    """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_CourseBlockPicture_Upd_cbpPictureUri_New
                    AFTER UPDATE ON CourseBlockPicture
                    FOR EACH ROW WHEN NEW.cbpPictureUri != OLD.cbpPictureUri AND NEW.cbpPictureUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(6677, NEW.cbpUid, NEW.cbpPictureUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CourseBlockPicture_Upd_cbpPictureUri_Old
AFTER UPDATE ON CourseBlockPicture
FOR EACH ROW WHEN NEW.cbpPictureUri != OLD.cbpPictureUri AND OLD.cbpPictureUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 6677
       AND cljEntityUid = OLD.cbpUid
       AND cljUrl = OLD.cbpPictureUri;
END        """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_CourseBlockPicture_Upd_cbpThumbnailUri_New
                    AFTER UPDATE ON CourseBlockPicture
                    FOR EACH ROW WHEN NEW.cbpThumbnailUri != OLD.cbpThumbnailUri AND NEW.cbpThumbnailUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(6677, NEW.cbpUid, NEW.cbpThumbnailUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CourseBlockPicture_Upd_cbpThumbnailUri_Old
AFTER UPDATE ON CourseBlockPicture
FOR EACH ROW WHEN NEW.cbpThumbnailUri != OLD.cbpThumbnailUri AND OLD.cbpThumbnailUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 6677
       AND cljEntityUid = OLD.cbpUid
       AND cljUrl = OLD.cbpThumbnailUri;
END        """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CourseBlockPicture_Del_cbpPictureUri
AFTER DELETE ON CourseBlockPicture
FOR EACH ROW WHEN OLD.cbpPictureUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 6677
       AND cljEntityUid = OLD.cbpUid
       AND cljUrl = OLD.cbpPictureUri;
END       """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_CourseBlockPicture_Del_cbpThumbnailUri
AFTER DELETE ON CourseBlockPicture
FOR EACH ROW WHEN OLD.cbpThumbnailUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 6677
       AND cljEntityUid = OLD.cbpUid
       AND cljUrl = OLD.cbpThumbnailUri;
END       """)

add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_ContentEntryPicture2_Ins_cepPictureUri
                        AFTER INSERT ON ContentEntryPicture2
                        FOR EACH ROW WHEN NEW.cepPictureUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(6678, NEW.cepUid, NEW.cepPictureUri, 0, 1, 1);
                        END
                    """)

add("""
                        CREATE TRIGGER IF NOT EXISTS Retain_ContentEntryPicture2_Ins_cepThumbnailUri
                        AFTER INSERT ON ContentEntryPicture2
                        FOR EACH ROW WHEN NEW.cepThumbnailUri IS NOT NULL
                        BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(6678, NEW.cepUid, NEW.cepThumbnailUri, 0, 1, 1);
                        END
                    """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_ContentEntryPicture2_Upd_cepPictureUri_New
                    AFTER UPDATE ON ContentEntryPicture2
                    FOR EACH ROW WHEN NEW.cepPictureUri != OLD.cepPictureUri AND NEW.cepPictureUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(6678, NEW.cepUid, NEW.cepPictureUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_ContentEntryPicture2_Upd_cepPictureUri_Old
AFTER UPDATE ON ContentEntryPicture2
FOR EACH ROW WHEN NEW.cepPictureUri != OLD.cepPictureUri AND OLD.cepPictureUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 6678
       AND cljEntityUid = OLD.cepUid
       AND cljUrl = OLD.cepPictureUri;
END        """)

add("""
                    CREATE TRIGGER IF NOT EXISTS Retain_ContentEntryPicture2_Upd_cepThumbnailUri_New
                    AFTER UPDATE ON ContentEntryPicture2
                    FOR EACH ROW WHEN NEW.cepThumbnailUri != OLD.cepThumbnailUri AND NEW.cepThumbnailUri IS NOT NULL
                    BEGIN
                        INSERT OR REPLACE INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                        VALUES(6678, NEW.cepUid, NEW.cepThumbnailUri, 0, 1, 1);
                    END   
                """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_ContentEntryPicture2_Upd_cepThumbnailUri_Old
AFTER UPDATE ON ContentEntryPicture2
FOR EACH ROW WHEN NEW.cepThumbnailUri != OLD.cepThumbnailUri AND OLD.cepThumbnailUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 6678
       AND cljEntityUid = OLD.cepUid
       AND cljUrl = OLD.cepThumbnailUri;
END        """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_ContentEntryPicture2_Del_cepPictureUri
AFTER DELETE ON ContentEntryPicture2
FOR EACH ROW WHEN OLD.cepPictureUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 6678
       AND cljEntityUid = OLD.cepUid
       AND cljUrl = OLD.cepPictureUri;
END       """)

add("""CREATE TRIGGER IF NOT EXISTS Retain_ContentEntryPicture2_Del_cepThumbnailUri
AFTER DELETE ON ContentEntryPicture2
FOR EACH ROW WHEN OLD.cepThumbnailUri IS NOT NULL
BEGIN
    UPDATE CacheLockJoin 
       SET cljStatus = 3
     WHERE cljTableId = 6678
       AND cljEntityUid = OLD.cepUid
       AND cljUrl = OLD.cepThumbnailUri;
END       """)

===POSTGRES===
add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_50_personPictureUri() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(50, NEW.personPictureUid, NEW.personPictureUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_50_personPictureUri() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 50
                               AND cljEntityUid = OLD.personPictureUid
                               AND cljUrl = OLD.personPictureUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_50_personPictureUri_ins_t
                            AFTER INSERT ON PersonPicture
                            FOR EACH ROW
                            WHEN (NEW.personPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_50_personPictureUri();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_50_personPictureUri_upd_t
                            AFTER UPDATE ON PersonPicture
                            FOR EACH ROW
                            WHEN (NEW.personPictureUri IS DISTINCT FROM OLD.personPictureUri AND OLD.personPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_50_personPictureUri();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_50_personPictureUri_upd_t
                            AFTER UPDATE ON PersonPicture
                            FOR EACH ROW
                            WHEN (NEW.personPictureUri IS DISTINCT FROM OLD.personPictureUri AND NEW.personPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_50_personPictureUri();
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_50_personPictureThumbnailUr() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(50, NEW.personPictureUid, NEW.personPictureThumbnailUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_50_personPictureThumbnailUr() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 50
                               AND cljEntityUid = OLD.personPictureUid
                               AND cljUrl = OLD.personPictureThumbnailUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_50_personPictureThumbnailUr_ins_t
                            AFTER INSERT ON PersonPicture
                            FOR EACH ROW
                            WHEN (NEW.personPictureThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_50_personPictureThumbnailUr();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_50_personPictureThumbnailUr_upd_t
                            AFTER UPDATE ON PersonPicture
                            FOR EACH ROW
                            WHEN (NEW.personPictureThumbnailUri IS DISTINCT FROM OLD.personPictureThumbnailUri AND OLD.personPictureThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_50_personPictureThumbnailUr();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_50_personPictureThumbnailUr_upd_t
                            AFTER UPDATE ON PersonPicture
                            FOR EACH ROW
                            WHEN (NEW.personPictureThumbnailUri IS DISTINCT FROM OLD.personPictureThumbnailUri AND NEW.personPictureThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_50_personPictureThumbnailUr();
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_125_coursePictureUri() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(125, NEW.coursePictureUid, NEW.coursePictureUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_125_coursePictureUri() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 125
                               AND cljEntityUid = OLD.coursePictureUid
                               AND cljUrl = OLD.coursePictureUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_125_coursePictureUri_ins_t
                            AFTER INSERT ON CoursePicture
                            FOR EACH ROW
                            WHEN (NEW.coursePictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_125_coursePictureUri();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_125_coursePictureUri_upd_t
                            AFTER UPDATE ON CoursePicture
                            FOR EACH ROW
                            WHEN (NEW.coursePictureUri IS DISTINCT FROM OLD.coursePictureUri AND OLD.coursePictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_125_coursePictureUri();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_125_coursePictureUri_upd_t
                            AFTER UPDATE ON CoursePicture
                            FOR EACH ROW
                            WHEN (NEW.coursePictureUri IS DISTINCT FROM OLD.coursePictureUri AND NEW.coursePictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_125_coursePictureUri();
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_125_coursePictureThumbnailUr() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(125, NEW.coursePictureUid, NEW.coursePictureThumbnailUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_125_coursePictureThumbnailUr() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 125
                               AND cljEntityUid = OLD.coursePictureUid
                               AND cljUrl = OLD.coursePictureThumbnailUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_125_coursePictureThumbnailUr_ins_t
                            AFTER INSERT ON CoursePicture
                            FOR EACH ROW
                            WHEN (NEW.coursePictureThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_125_coursePictureThumbnailUr();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_125_coursePictureThumbnailUr_upd_t
                            AFTER UPDATE ON CoursePicture
                            FOR EACH ROW
                            WHEN (NEW.coursePictureThumbnailUri IS DISTINCT FROM OLD.coursePictureThumbnailUri AND OLD.coursePictureThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_125_coursePictureThumbnailUr();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_125_coursePictureThumbnailUr_upd_t
                            AFTER UPDATE ON CoursePicture
                            FOR EACH ROW
                            WHEN (NEW.coursePictureThumbnailUri IS DISTINCT FROM OLD.coursePictureThumbnailUri AND NEW.coursePictureThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_125_coursePictureThumbnailUr();
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_90_casaUri() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(90, NEW.casaUid, NEW.casaUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_90_casaUri() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 90
                               AND cljEntityUid = OLD.casaUid
                               AND cljUrl = OLD.casaUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_90_casaUri_ins_t
                            AFTER INSERT ON CourseAssignmentSubmissionFile
                            FOR EACH ROW
                            WHEN (NEW.casaUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_90_casaUri();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_90_casaUri_upd_t
                            AFTER UPDATE ON CourseAssignmentSubmissionFile
                            FOR EACH ROW
                            WHEN (NEW.casaUri IS DISTINCT FROM OLD.casaUri AND OLD.casaUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_90_casaUri();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_90_casaUri_upd_t
                            AFTER UPDATE ON CourseAssignmentSubmissionFile
                            FOR EACH ROW
                            WHEN (NEW.casaUri IS DISTINCT FROM OLD.casaUri AND NEW.casaUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_90_casaUri();
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_6677_cbpPictureUri() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(6677, NEW.cbpUid, NEW.cbpPictureUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_6677_cbpPictureUri() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 6677
                               AND cljEntityUid = OLD.cbpUid
                               AND cljUrl = OLD.cbpPictureUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_6677_cbpPictureUri_ins_t
                            AFTER INSERT ON CourseBlockPicture
                            FOR EACH ROW
                            WHEN (NEW.cbpPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_6677_cbpPictureUri();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_6677_cbpPictureUri_upd_t
                            AFTER UPDATE ON CourseBlockPicture
                            FOR EACH ROW
                            WHEN (NEW.cbpPictureUri IS DISTINCT FROM OLD.cbpPictureUri AND OLD.cbpPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_6677_cbpPictureUri();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_6677_cbpPictureUri_upd_t
                            AFTER UPDATE ON CourseBlockPicture
                            FOR EACH ROW
                            WHEN (NEW.cbpPictureUri IS DISTINCT FROM OLD.cbpPictureUri AND NEW.cbpPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_6677_cbpPictureUri();
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_6677_cbpThumbnailUri() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(6677, NEW.cbpUid, NEW.cbpThumbnailUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_6677_cbpThumbnailUri() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 6677
                               AND cljEntityUid = OLD.cbpUid
                               AND cljUrl = OLD.cbpThumbnailUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_6677_cbpThumbnailUri_ins_t
                            AFTER INSERT ON CourseBlockPicture
                            FOR EACH ROW
                            WHEN (NEW.cbpThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_6677_cbpThumbnailUri();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_6677_cbpThumbnailUri_upd_t
                            AFTER UPDATE ON CourseBlockPicture
                            FOR EACH ROW
                            WHEN (NEW.cbpThumbnailUri IS DISTINCT FROM OLD.cbpThumbnailUri AND OLD.cbpThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_6677_cbpThumbnailUri();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_6677_cbpThumbnailUri_upd_t
                            AFTER UPDATE ON CourseBlockPicture
                            FOR EACH ROW
                            WHEN (NEW.cbpThumbnailUri IS DISTINCT FROM OLD.cbpThumbnailUri AND NEW.cbpThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_6677_cbpThumbnailUri();
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_6678_cepPictureUri() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(6678, NEW.cepUid, NEW.cepPictureUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_6678_cepPictureUri() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 6678
                               AND cljEntityUid = OLD.cepUid
                               AND cljUrl = OLD.cepPictureUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_6678_cepPictureUri_ins_t
                            AFTER INSERT ON ContentEntryPicture2
                            FOR EACH ROW
                            WHEN (NEW.cepPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_6678_cepPictureUri();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_6678_cepPictureUri_upd_t
                            AFTER UPDATE ON ContentEntryPicture2
                            FOR EACH ROW
                            WHEN (NEW.cepPictureUri IS DISTINCT FROM OLD.cepPictureUri AND OLD.cepPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_6678_cepPictureUri();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_6678_cepPictureUri_upd_t
                            AFTER UPDATE ON ContentEntryPicture2
                            FOR EACH ROW
                            WHEN (NEW.cepPictureUri IS DISTINCT FROM OLD.cepPictureUri AND NEW.cepPictureUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_6678_cepPictureUri();
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_c_clj_6678_cepThumbnailUri() RETURNS TRIGGER AS $$
                            BEGIN
                            INSERT INTO CacheLockJoin(cljTableId, cljEntityUid, cljUrl, cljLockId, cljStatus, cljType)
                            VALUES(6678, NEW.cepUid, NEW.cepThumbnailUri, 0, 1, 1);
                            RETURN NEW;
                            END $$ LANGUAGE plpgsql
                        """)

add("""
                            CREATE OR REPLACE FUNCTION retain_d_clj_6678_cepThumbnailUri() RETURNS TRIGGER AS $$
                            BEGIN
                            UPDATE CacheLockJoin 
                               SET cljStatus = 3
                             WHERE cljTableId = 6678
                               AND cljEntityUid = OLD.cepUid
                               AND cljUrl = OLD.cepThumbnailUri;
                            RETURN OLD;
                            END $$ LANGUAGE plpgsql   
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_6678_cepThumbnailUri_ins_t
                            AFTER INSERT ON ContentEntryPicture2
                            FOR EACH ROW
                            WHEN (NEW.cepThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_6678_cepThumbnailUri();
                        """)

add("""
                            CREATE TRIGGER retain_c_clj_6678_cepThumbnailUri_upd_t
                            AFTER UPDATE ON ContentEntryPicture2
                            FOR EACH ROW
                            WHEN (NEW.cepThumbnailUri IS DISTINCT FROM OLD.cepThumbnailUri AND OLD.cepThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_c_clj_6678_cepThumbnailUri();
                        """)

add("""
                            CREATE TRIGGER retain_d_clj_6678_cepThumbnailUri_upd_t
                            AFTER UPDATE ON ContentEntryPicture2
                            FOR EACH ROW
                            WHEN (NEW.cepThumbnailUri IS DISTINCT FROM OLD.cepThumbnailUri AND NEW.cepThumbnailUri IS NOT NULL)
                            EXECUTE FUNCTION retain_d_clj_6678_cepThumbnailUri();
                        """)

[00007f8d3e7ab0c0] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
[00007f8d3e7ab0c0] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
[00007f8d3ebe0560] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
[00007f8d3ebe0560] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
> Task :core:jvmTest

com.ustadmobile.core.domain.interop.HttpApiException: State content too large: 262145 exceeds limit of 262144
	at com.ustadmobile.core.domain.xapi.state.StoreXapiStateUseCase.invoke(StoreXapiStateUseCase.kt:132)
	at com.ustadmobile.core.domain.xapi.state.XapiStateUseCaseIntegrationTest$givenTextBodyTooLarge_whenStored_thenShouldThrowException$1.invokeSuspend(XapiStateUseCaseIntegrationTest.kt:289)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:277)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:95)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:69)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at com.ustadmobile.core.domain.xapi.state.XapiStateUseCaseIntegrationTest.givenTextBodyTooLarge_whenStored_thenShouldThrowException(XapiStateUseCaseIntegrationTest.kt:280)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52)
	at jdk.internal.reflect.GeneratedMethodAccessor65.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
a96086d5c2cb52a9
Delaying...
process.waitForAsync
canceling result
Canceled
Exception in thread "UI Thread @coroutine#2969" java.lang.IllegalStateException: com.ustadmobile.door.room.RoomDatabaseJdbcImplHelper@5f548445 is closed!
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.assertNotClosed(RoomDatabaseJdbcImplHelperCommon.kt:96)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:103)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useConnectionAsync$2$2.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt:237)
	at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useConnectionAsync$2.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt:235)
	at com.ustadmobile.door.ext.DoorDatabaseExtJvmJsKt.prepareAndUseStatementAsync(DoorDatabaseExtJvmJs.kt:24)
	at com.ustadmobile.core.db.dao.EnrolmentRequestDao_JdbcImpl$findRequestsForUserAsFlow$1.invokeSuspend(EnrolmentRequestDao_JdbcImpl.kt:156)
	at com.ustadmobile.door.flow.DoorFlowKt$doorFlow$1$1.invokeSuspend(DoorFlow.kt:40)
	at com.ustadmobile.core.viewmodel.clazz.list.ClazzListViewModel$4$1.invokeSuspend(ClazzListViewModel.kt:150)
	at com.ustadmobile.core.util.ext.MutableStateExtKt$whenSubscribed$3.invokeSuspend(MutableStateExt.kt:13)
	at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invokeSuspend(Merge.kt:213)
	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invokeSuspend(Merge.kt:30)
	at kotlinx.coroutines.flow.internal.ChannelFlow$collectToFun$1.invokeSuspend(ChannelFlow.kt:56)
	at com.ustadmobile.core.viewmodel.clazz.list.ClazzListViewModel$4.invokeSuspend(ClazzListViewModel.kt:146)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(2969), "coroutine#2969":StandaloneCoroutine{Cancelling}@1f63116d, Dispatchers.Main]
Caused by: java.lang.IllegalStateException: com.ustadmobile.door.room.RoomDatabaseJdbcImplHelper@5f548445 is closed!
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.assertNotClosed(RoomDatabaseJdbcImplHelperCommon.kt:96)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:103)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useConnectionAsync$2$2.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt:237)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)

Invalidated PagingSource com.ustadmobile.core.db.dao.CommentsDao_JdbcImpl$findCourseCommentsByAssignmentUid$1@497de90e
Invalidated PagingSource com.ustadmobile.core.db.dao.CommentsDao_JdbcImpl$findCourseCommentsByAssignmentUid$1@7eeef300
Invalidated PagingSource com.ustadmobile.core.db.dao.CommentsDao_JdbcImpl$findPrivateCommentsForUserByAssignmentUid$1@4248c8c7
Invalidated PagingSource com.ustadmobile.core.db.dao.CommentsDao_JdbcImpl$findPrivateCommentsForUserByAssignmentUid$1@5b61995cException in thread "UI Thread @coroutine#4421" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:230)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(4421), "coroutine#4421":StandaloneCoroutine{Cancelling}@33939a7, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#4450" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(4450), "coroutine#4450":StandaloneCoroutine{Cancelling}@5de7cd49, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#4484" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(4484), "coroutine#4484":StandaloneCoroutine{Cancelling}@10a3c53e, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#4542" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(4542), "coroutine#4542":StandaloneCoroutine{Cancelling}@2ab4247b, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#5169" java.lang.IllegalStateException: com.ustadmobile.door.room.RoomDatabaseJdbcImplHelper@5f6bfbdc is closed!
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.assertNotClosed(RoomDatabaseJdbcImplHelperCommon.kt:96)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:103)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useConnectionAsync$2$2.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt:237)
	at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useConnectionAsync$2.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt:235)
	at com.ustadmobile.door.ext.DoorDatabaseExtJvmJsKt.prepareAndUseStatementAsync(DoorDatabaseExtJvmJs.kt:24)
	at com.ustadmobile.core.db.dao.OfflineItemDao_JdbcImpl$findByContentEntryUid$1.invokeSuspend(OfflineItemDao_JdbcImpl.kt:64)
	at com.ustadmobile.door.flow.DoorFlowKt$doorFlow$1$1.invokeSuspend(DoorFlow.kt:40)
	at com.ustadmobile.core.viewmodel.contententry.detailoverviewtab.ContentEntryDetailOverviewViewModel$2$1$7.invokeSuspend(ContentEntryDetailOverviewViewModel.kt:235)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5160), "coroutine#5160":StandaloneCoroutine{Cancelling}@66fd07d3, Dispatchers.Main]
Caused by: java.lang.IllegalStateException: com.ustadmobile.door.room.RoomDatabaseJdbcImplHelper@5f6bfbdc is closed!
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.assertNotClosed(RoomDatabaseJdbcImplHelperCommon.kt:96)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:103)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useConnectionAsync$2$2.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt:237)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
Exception in thread "UI Thread @coroutine#5224" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:230)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5224), "coroutine#5224":StandaloneCoroutine{Cancelling}@53e0453e, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#5241" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:230)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5241), "coroutine#5241":StandaloneCoroutine{Cancelling}@7c4f8583, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#5602" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:230)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5602), "coroutine#5602":StandaloneCoroutine{Cancelling}@6d4ae88c, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#5619" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5619), "coroutine#5619":StandaloneCoroutine{Cancelling}@71da195, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#5638" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5638), "coroutine#5638":StandaloneCoroutine{Cancelling}@44c7274f, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#5677" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5677), "coroutine#5677":StandaloneCoroutine{Cancelling}@3131c0fd, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#5694" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5694), "coroutine#5694":StandaloneCoroutine{Cancelling}@673570c1, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#5711" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:230)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(5711), "coroutine#5711":StandaloneCoroutine{Cancelling}@3d2faafa, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6152" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:230)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6152), "coroutine#6152":StandaloneCoroutine{Cancelling}@477f4a33, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6271" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6271), "coroutine#6271":StandaloneCoroutine{Cancelling}@6ac87cc0, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6295" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6295), "coroutine#6295":StandaloneCoroutine{Cancelling}@1e33232c, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6322" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6322), "coroutine#6322":StandaloneCoroutine{Cancelling}@302d4df6, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6358" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:230)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6358), "coroutine#6358":StandaloneCoroutine{Cancelling}@24a7134c, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6374" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6374), "coroutine#6374":StandaloneCoroutine{Cancelling}@2cef1b27, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6391" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6391), "coroutine#6391":StandaloneCoroutine{Cancelling}@3a0fe823, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6407" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6407), "coroutine#6407":StandaloneCoroutine{Cancelling}@30b9c022, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6427" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6427), "coroutine#6427":StandaloneCoroutine{Cancelling}@5a5a4b2f, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6445" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:230)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6445), "coroutine#6445":StandaloneCoroutine{Cancelling}@74d93fd6, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6463" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6463), "coroutine#6463":StandaloneCoroutine{Cancelling}@73ba1889, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6482" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6482), "coroutine#6482":StandaloneCoroutine{Cancelling}@19808ca, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6500" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6500), "coroutine#6500":StandaloneCoroutine{Cancelling}@796f899e, Dispatchers.Main]
Exception in thread "UI Thread @coroutine#6526" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.setAutoCommit(boolean)" because "connection" is null
	at com.zaxxer.hikari.pool.PoolBase.resetConnectionState(PoolBase.java:206)
	at com.zaxxer.hikari.pool.PoolEntry.resetConnectionState(PoolEntry.java:108)
	at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:236)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:197)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon.access$useNewConnectionAsyncInternal(RoomDatabaseJdbcImplHelperCommon.kt:21)
	at com.ustadmobile.door.room.RoomDatabaseJdbcImplHelperCommon$useNewConnectionAsyncInternal$1.invokeSuspend(RoomDatabaseJdbcImplHelperCommon.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(6526), "coroutine#6526":StandaloneCoroutine{Cancelling}@64d767ae, Dispatchers.Main]

> Task :core:allTests
> Task :core:check
> Task :core:build

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 18m 36s
1548 actionable tasks: 1513 executed, 35 up-to-date
Build step 'Invoke Gradle script' changed build result to SUCCESS
[Release-Edubridge-Afghanistan] $ /bin/sh -xe /tmp/jenkins12506465320524461542.sh
+ conveyor make site
  0.00 secs │        │ Including config from Gradle
  3.12 secs │  done  │ Including config from Gradle
  4.05 secs │   0.0% │   0 /  70 │ Building
  4.13 secs │        │           │ 1. Base Configured Inputs for Windows Intel: Preparing to copy file tree
  4.14 secs │   0.0% │   0 / 209 │ 1. Base Configured Inputs for Windows Intel: Copying 209 file(s)
  4.16 secs │        │           │ 3. Base Configured Inputs for Linux Intel: Preparing to copy file tree
  4.17 secs │   0.0% │   0 / 209 │ 3. Base Configured Inputs for Linux Intel: Copying 209 file(s)
  4.19 secs │ 100.0% │ 209 / 209 │ 1. Base Configured Inputs for Windows Intel: Copying 209 file(s)
  4.19 secs │        │           │ 1. Base Configured Inputs for Windows Intel: Copying directory permissions
  4.19 secs │  done  │           │ 1. Base Configured Inputs for Windows Intel: Copying directory permissions
  4.19 secs │        │           │ 1. Base Configured Inputs for Windows Intel: Preparing to copy file tree
  4.21 secs │   0.0% │   0 / 546 │ 1. Base Configured Inputs for Windows Intel: Copying 546 file(s)
  4.21 secs │        │           │ 0. Base Configured Inputs for macOS Intel: Preparing to copy file tree
  4.22 secs │   0.0% │   0 / 209 │ 0. Base Configured Inputs for macOS Intel: Copying 209 file(s)
  4.24 secs │ 100.0% │ 209 / 209 │ 3. Base Configured Inputs for Linux Intel: Copying 209 file(s)
  4.24 secs │        │           │ 3. Base Configured Inputs for Linux Intel: Copying directory permissions
  4.24 secs │  done  │           │ 3. Base Configured Inputs for Linux Intel: Copying directory permissions
  4.24 secs │        │           │ 3. Base Configured Inputs for Linux Intel: Preparing to copy file tree
  4.25 secs │   0.0% │   0 / 546 │ 3. Base Configured Inputs for Linux Intel: Copying 546 file(s)
  4.27 secs │        │           │ 2. Base Configured Inputs for macOS ARM: Preparing to copy file tree
  4.27 secs │   0.0% │   0 / 209 │ 2. Base Configured Inputs for macOS ARM: Copying 209 file(s)
  4.29 secs │ 100.0% │ 546 / 546 │ 1. Base Configured Inputs for Windows Intel: Copying 546 file(s)
  4.29 secs │   0.0% │   0 / 126 │ 1. Base Configured Inputs for Windows Intel: Copying directory permissions
  4.30 secs │ 100.0% │ 126 / 126 │ 1. Base Configured Inputs for Windows Intel: Copying directory permissions
  4.31 secs │ 100.0% │ 209 / 209 │ 0. Base Configured Inputs for macOS Intel: Copying 209 file(s)
  4.31 secs │        │           │ 0. Base Configured Inputs for macOS Intel: Copying directory permissions
  4.31 secs │  done  │           │ 0. Base Configured Inputs for macOS Intel: Copying directory permissions
  4.31 secs │        │           │ 0. Base Configured Inputs for macOS Intel: Preparing to copy file tree
  4.32 secs │        │           │ 1. Base Configured Inputs for Windows Intel: Preparing to copy file tree
  4.32 secs │   0.0% │   0 / 546 │ 0. Base Configured Inputs for macOS Intel: Copying 546 file(s)
  4.32 secs │ 100.0% │ 209 / 209 │ 2. Base Configured Inputs for macOS ARM: Copying 209 file(s)
  4.32 secs │        │           │ 2. Base Configured Inputs for macOS ARM: Copying directory permissions
  4.32 secs │  done  │           │ 2. Base Configured Inputs for macOS ARM: Copying directory permissions
  4.32 secs │        │           │ 2. Base Configured Inputs for macOS ARM: Preparing to copy file tree
  4.32 secs │   0.0% │   0 /  64 │ 1. Base Configured Inputs for Windows Intel: Copying 64 file(s)
  4.33 secs │   0.0% │   0 / 546 │ 2. Base Configured Inputs for macOS ARM: Copying 546 file(s)
  4.36 secs │ 100.0% │ 546 / 546 │ 3. Base Configured Inputs for Linux Intel: Copying 546 file(s)
  4.36 secs │   0.0% │   0 / 126 │ 3. Base Configured Inputs for Linux Intel: Copying directory permissions
  4.36 secs │ 100.0% │ 126 / 126 │ 3. Base Configured Inputs for Linux Intel: Copying directory permissions
  4.40 secs │ 100.0% │ 546 / 546 │ 2. Base Configured Inputs for macOS ARM: Copying 546 file(s)
  4.40 secs │   0.0% │   0 / 126 │ 2. Base Configured Inputs for macOS ARM: Copying directory permissions
  4.41 secs │ 100.0% │ 126 / 126 │ 2. Base Configured Inputs for macOS ARM: Copying directory permissions
  4.41 secs │ 100.0% │ 546 / 546 │ 0. Base Configured Inputs for macOS Intel: Copying 546 file(s)
  4.41 secs │   0.0% │   0 / 126 │ 0. Base Configured Inputs for macOS Intel: Copying directory permissions
  4.42 secs │ 100.0% │ 126 / 126 │ 0. Base Configured Inputs for macOS Intel: Copying directory permissions
  4.44 secs │ 100.0% │  64 /  64 │ 1. Base Configured Inputs for Windows Intel: Copying 64 file(s)
  4.44 secs │   0.0% │   0 /   7 │ 1. Base Configured Inputs for Windows Intel: Copying directory permissions
  4.44 secs │ 100.0% │   7 /   7 │ 1. Base Configured Inputs for Windows Intel: Copying directory permissions
  6.49 secs │   0.0% │   0 / 207 │ 3. Processed Jars for Windows Intel: Repacking JARs
Warning: lwjgl-3.3.1-natives-linux-aeba195b5e56e5033b41bddf95541d1.jar doesn't
seem to contain artifacts for windows.amd64
Warning:
lwjgl-tinyfd-3.3.1-natives-linux-arm64-4ea416793260fb7140f9f47e8b3662.jar
doesn't seem to contain artifacts for windows.amd64
Warning: lwjgl-3.3.1-natives-linux-arm32-84b140bcc73c2e606e915460bb2736.jar
doesn't seem to contain artifacts for windows.amd64
Warning:
lwjgl-tinyfd-3.3.1-natives-linux-arm32-f9a8e549fff9564787a9d860c6175183.jar
doesn't seem to contain artifacts for windows.amd64
Warning: lwjgl-tinyfd-3.3.1-natives-linux-d5f7f67aa151641b66b4928b7f1ebdba.jar
doesn't seem to contain artifacts for windows.amd64
Warning: lwjgl-3.3.1-natives-linux-arm64-9998baa1e723ad9cd8cae402e3398d9.jar
doesn't seem to contain artifacts for windows.amd64
  7.15 secs │ 100.0% │ 207 / 207 │ 3. Processed Jars for Windows Intel: Repacking JARs
  7.16 secs │   0.0% │   0 / 207 │ 3. Processed Jars for Windows Intel: Scanning JARs
  7.20 secs │   0.0% │   0 / 208 │ 0. Processed Jars for Linux Intel: Repacking JARs
  7.71 secs │   0.0% │   0 / 207 │ 1. Processed Jars for macOS Intel: Repacking JARs
  7.72 secs │ 100.0% │ 208 / 208 │ 0. Processed Jars for Linux Intel: Repacking JARs
  7.72 secs │   0.0% │   0 / 208 │ 0. Processed Jars for Linux Intel: Scanning JARs
Warning:
lwjgl-tinyfd-3.3.1-natives-linux-arm64-4ea416793260fb7140f9f47e8b3662.jar
doesn't seem to contain artifacts for mac.amd64
Warning: lwjgl-3.3.1-natives-linux-arm32-84b140bcc73c2e606e915460bb2736.jar
doesn't seem to contain artifacts for mac.amd64
Warning: lwjgl-tinyfd-3.3.1-natives-linux-d5f7f67aa151641b66b4928b7f1ebdba.jar
doesn't seem to contain artifacts for mac.amd64
Warning: lwjgl-3.3.1-natives-linux-aeba195b5e56e5033b41bddf95541d1.jar doesn't
seem to contain artifacts for mac.amd64
Warning:
lwjgl-tinyfd-3.3.1-natives-linux-arm32-f9a8e549fff9564787a9d860c6175183.jar
doesn't seem to contain artifacts for mac.amd64
  7.81 secs │   0.0% │   0 / 207 │ 2. Processed Jars for macOS ARM: Repacking JARs
Warning: lwjgl-3.3.1-natives-linux-arm64-9998baa1e723ad9cd8cae402e3398d9.jar
doesn't seem to contain artifacts for mac.amd64
Warning: lwjgl-3.3.1-natives-linux-aeba195b5e56e5033b41bddf95541d1.jar doesn't
seem to contain artifacts for mac.aarch64
Warning: lwjgl-3.3.1-natives-linux-arm32-84b140bcc73c2e606e915460bb2736.jar
doesn't seem to contain artifacts for mac.aarch64
Warning: lwjgl-tinyfd-3.3.1-natives-linux-d5f7f67aa151641b66b4928b7f1ebdba.jar
doesn't seem to contain artifacts for mac.aarch64
Warning:
lwjgl-tinyfd-3.3.1-natives-linux-arm32-f9a8e549fff9564787a9d860c6175183.jar
doesn't seem to contain artifacts for mac.aarch64
Warning:
lwjgl-tinyfd-3.3.1-natives-linux-arm64-4ea416793260fb7140f9f47e8b3662.jar
doesn't seem to contain artifacts for mac.aarch64
Warning: lwjgl-3.3.1-natives-linux-arm64-9998baa1e723ad9cd8cae402e3398d9.jar
doesn't seem to contain artifacts for mac.aarch64
  8.18 secs │ 100.0% │ 207 / 207 │ 1. Processed Jars for macOS Intel: Repacking JARs
  8.18 secs │   0.0% │   0 / 207 │ 1. Processed Jars for macOS Intel: Scanning JARs
  8.33 secs │ 100.0% │ 207 / 207 │ 2. Processed Jars for macOS ARM: Repacking JARs
  8.33 secs │   0.0% │   0 / 207 │ 2. Processed Jars for macOS ARM: Scanning JARs
  8.86 secs │ 100.0% │ 207 / 207 │ 1. Processed Jars for macOS Intel: Scanning JARs
  8.86 secs │ 100.0% │ 207 / 207 │ 2. Processed Jars for macOS ARM: Scanning JARs
  8.86 secs │ 100.0% │ 207 / 207 │ 3. Processed Jars for Windows Intel: Scanning JARs
  8.86 secs │ 100.0% │ 208 / 208 │ 0. Processed Jars for Linux Intel: Scanning JARs
  8.86 secs │   0.0% │   0 / 207 │ 1. Processed Jars for macOS Intel: Scanning with jdeps
  8.87 secs │   0.0% │   0 / 208 │ 0. Processed Jars for Linux Intel: Scanning with jdeps
  8.87 secs │   0.0% │   0 / 207 │ 3. Processed Jars for Windows Intel: Scanning with jdeps
  8.87 secs │   0.0% │   0 / 207 │ 2. Processed Jars for macOS ARM: Scanning with jdeps
 21.28 secs │ 100.0% │ 207 / 207 │ 2. Processed Jars for macOS ARM: Scanning with jdeps
 21.29 secs │ 100.0% │ 207 / 207 │ 3. Processed Jars for Windows Intel: Scanning with jdeps
 21.51 secs │ 100.0% │ 207 / 207 │ 1. Processed Jars for macOS Intel: Scanning with jdeps
 21.51 secs │ 100.0% │ 208 / 208 │ 0. Processed Jars for Linux Intel: Scanning with jdeps
 21.54 secs │        │           │ 2. Mac App for ARM: Preparing to copy file tree
 21.55 secs │   0.0% │   0 / 753 │ 2. Mac App for ARM: Copying 753 file(s)
 21.56 secs │        │           │ 3. Windows App for Intel: Preparing to copy file tree
 21.56 secs │   0.0% │   0 / 816 │ 3. Windows App for Intel: Copying 816 file(s)
 21.61 secs │ 100.0% │ 753 / 753 │ 2. Mac App for ARM: Copying 753 file(s)
 21.61 secs │   0.0% │   0 / 126 │ 2. Mac App for ARM: Copying directory permissions
 21.61 secs │ 100.0% │ 126 / 126 │ 2. Mac App for ARM: Copying directory permissions
 21.61 secs │        │           │ 2. Mac App for ARM: Preparing to copy file tree
 21.63 secs │   0.0% │   0 / 153 │ 2. Mac App for ARM: Copying 153 file(s)
 21.66 secs │ 100.0% │ 816 / 816 │ 3. Windows App for Intel: Copying 816 file(s)
 21.66 secs │   0.0% │   0 / 132 │ 3. Windows App for Intel: Copying directory permissions
 21.66 secs │ 100.0% │ 132 / 132 │ 3. Windows App for Intel: Copying directory permissions
 21.66 secs │        │           │ 3. Windows App for Intel: Preparing to copy file tree
 21.67 secs │   0.0% │   0 / 192 │ 3. Windows App for Intel: Copying 192 file(s)
 21.71 secs │ 100.0% │ 153 / 153 │ 2. Mac App for ARM: Copying 153 file(s)
 21.71 secs │   0.0% │   0 /  29 │ 2. Mac App for ARM: Copying directory permissions
 21.71 secs │ 100.0% │  29 /  29 │ 2. Mac App for ARM: Copying directory permissions
 21.73 secs │ 100.0% │ 192 / 192 │ 3. Windows App for Intel: Copying 192 file(s)
 21.74 secs │   0.0% │   0 /  27 │ 3. Windows App for Intel: Copying directory permissions
 21.74 secs │ 100.0% │  27 /  27 │ 3. Windows App for Intel: Copying directory permissions
 22.02 secs │        │           │ 0. Linux App for Intel: Preparing to copy file tree
 22.02 secs │        │           │ 1. Mac App for Intel: Preparing to copy file tree
 22.03 secs │   0.0% │   0 / 754 │ 0. Linux App for Intel: Copying 754 file(s)
 22.03 secs │   0.0% │   0 / 753 │ 1. Mac App for Intel: Copying 753 file(s)
 22.03 secs │        │           │ 3. Windows App for Intel: Preparing to copy file tree
 22.03 secs │        │           │ 3. Windows App for Intel: Copying 1 file(s)
 22.03 secs │  done  │           │ 3. Windows App for Intel: Copying 1 file(s)
 22.03 secs │        │           │ 3. Windows App for Intel: Copying directory permissions
 22.03 secs │  done  │           │ 3. Windows App for Intel: Copying directory permissions
 22.05 secs │   0.0% │   0 / 103 │ 3. Windows App for Intel: Signing
 22.08 secs │ 100.0% │ 754 / 754 │ 0. Linux App for Intel: Copying 754 file(s)
 22.08 secs │   0.0% │   0 / 126 │ 0. Linux App for Intel: Copying directory permissions
 22.08 secs │ 100.0% │ 126 / 126 │ 0. Linux App for Intel: Copying directory permissions
 22.08 secs │        │           │ 0. Linux App for Intel: Preparing to copy file tree
 22.09 secs │   0.0% │   0 / 144 │ 0. Linux App for Intel: Copying 144 file(s)
 22.10 secs │        │           │ 2. Mac App for ARM: Preparing to copy file tree
 22.11 secs │ 100.0% │ 753 / 753 │ 1. Mac App for Intel: Copying 753 file(s)
 22.11 secs │   0.0% │   0 / 183 │ 2. Mac App for ARM: Copying 183 file(s)
 22.11 secs │   0.0% │   0 / 126 │ 1. Mac App for Intel: Copying directory permissions
 22.11 secs │ 100.0% │ 126 / 126 │ 1. Mac App for Intel: Copying directory permissions
 22.11 secs │        │           │ 1. Mac App for Intel: Preparing to copy file tree
 22.12 secs │ 100.0% │ 183 / 183 │ 2. Mac App for ARM: Copying 183 file(s)
 22.12 secs │   0.0% │   0 /  57 │ 2. Mac App for ARM: Copying directory permissions
 22.12 secs │ 100.0% │  57 /  57 │ 2. Mac App for ARM: Copying directory permissions
 22.12 secs │        │           │ 2. Mac App for ARM: Scanning app to calculate min required OS version
 22.13 secs │   0.0% │   0 / 153 │ 1. Mac App for Intel: Copying 153 file(s)
 22.18 secs │ 100.0% │ 144 / 144 │ 0. Linux App for Intel: Copying 144 file(s)
 22.18 secs │   0.0% │   0 /  27 │ 0. Linux App for Intel: Copying directory permissions
 22.19 secs │ 100.0% │  27 /  27 │ 0. Linux App for Intel: Copying directory permissions
 22.21 secs │ 100.0% │ 153 / 153 │ 1. Mac App for Intel: Copying 153 file(s)
 22.21 secs │   0.0% │   0 /  29 │ 1. Mac App for Intel: Copying directory permissions
 22.21 secs │ 100.0% │  29 /  29 │ 1. Mac App for Intel: Copying directory permissions
 22.27 secs │  done  │           │ 2. Mac App for ARM: Scanning app to calculate min required OS version
 22.33 secs │   0.0% │   0 /  40 │ 2. Mac App for ARM: Saving permissions for app bundle Nayestane
 22.33 secs │ 100.0% │  40 /  40 │ 2. Mac App for ARM: Saving permissions for app bundle Nayestane
 22.33 secs │        │           │ 2. Mac App for ARM: Signing app bundle Nayestane
 22.58 secs │        │           │ 1. Mac App for Intel: Preparing to copy file tree
 22.58 secs │   0.0% │   0 / 183 │ 1. Mac App for Intel: Copying 183 file(s)
 22.59 secs │ 100.0% │ 183 / 183 │ 1. Mac App for Intel: Copying 183 file(s)
 22.59 secs │   0.0% │   0 /  57 │ 1. Mac App for Intel: Copying directory permissions
 22.60 secs │ 100.0% │  57 /  57 │ 1. Mac App for Intel: Copying directory permissions
 22.60 secs │        │           │ 1. Mac App for Intel: Scanning app to calculate min required OS version
 22.67 secs │  done  │           │ 1. Mac App for Intel: Scanning app to calculate min required OS version
 22.73 secs │   0.0% │   0 /  40 │ 1. Mac App for Intel: Saving permissions for app bundle Nayestane
 22.74 secs │ 100.0% │  40 /  40 │ 1. Mac App for Intel: Saving permissions for app bundle Nayestane
 22.74 secs │        │           │ 1. Mac App for Intel: Signing app bundle Nayestane
 23.78 secs │   0.0% │   0 /  33 │ 0. Debian Package for Intel: Reading ELF library dependencies
 23.79 secs │ 100.0% │  33 /  33 │ 0. Debian Package for Intel: Reading ELF library dependencies
 25.49 secs │ 100.0% │ 39.01 MB / 39.01 MB │ 0. Debian Package for Intel: Scanning Debian package index
 25.52 secs │        │                     │ 0. Debian Package for Intel: Preparing to copy file tree
 25.52 secs │        │                     │ 0. Debian Package for Intel: Copying 1 file(s)
 25.52 secs │  done  │                     │ 0. Debian Package for Intel: Copying 1 file(s)
 25.52 secs │        │                     │ 0. Debian Package for Intel: Copying directory permissions
 25.52 secs │  done  │                     │ 0. Debian Package for Intel: Copying directory permissions
 25.55 secs │        │                     │ 0. Debian Package for Intel: Creating control.tar.xz
 25.56 secs │   0.0% │   0.00 MB / 0.00 MB │ 0. Debian Package for Intel: Creating control.tar.xz
 25.58 secs │ 100.0% │   0.00 MB / 0.00 MB │ 0. Debian Package for Intel: Creating control.tar.xz
 25.59 secs │        │                     │ 0. Debian Package for Intel: Creating data.tar.xz
 25.61 secs │   0.0% │   0.00 MB / 186.12 MB │ 0. Debian Package for Intel: Creating data.tar.xz
 34.54 secs │  done  │                       │ 2. Mac App for ARM: Signing app bundle Nayestane
 34.54 secs │   0.0% │               0 /  40 │ 2. Mac App for ARM: Restoring permissions for app bundle Nayestane
 34.55 secs │ 100.0% │              40 /  40 │ 2. Mac App for ARM: Restoring permissions for app bundle Nayestane
 34.72 secs │  done  │                       │ 1. Mac App for Intel: Signing app bundle Nayestane
 34.72 secs │   0.0% │               0 /  40 │ 1. Mac App for Intel: Restoring permissions for app bundle Nayestane
 34.73 secs │ 100.0% │              40 /  40 │ 1. Mac App for Intel: Restoring permissions for app bundle Nayestane
 34.89 secs │        │                       │ 2. Linux Tarball for Intel: Creating nayestane-0.4.137-linux-amd64.tar.gz
 34.91 secs │   0.0% │   0.00 MB / 186.12 MB │ 2. Linux Tarball for Intel: Creating nayestane-0.4.137-linux-amd64.tar.gz
 35.15 secs │        │                       │ 1. Unnotarized Mac Zip for ARM: Preparing to zip file tree
 35.16 secs │  done  │                       │ 1. Unnotarized Mac Zip for ARM: Preparing to zip file tree
 35.16 secs │   0.0% │              0 / 1102 │ 1. Unnotarized Mac Zip for ARM: Zip: Compressing files
 35.24 secs │ 100.0% │           1102 / 1102 │ 1. Unnotarized Mac Zip for ARM: Zip: Compressing files
 35.24 secs │        │                       │ 1. Unnotarized Mac Zip for ARM: Zip: Combining files
 37.49 secs │  done  │                       │ 1. Unnotarized Mac Zip for ARM: Zip: Combining files
 37.53 secs │        │                       │ 1. Unnotarized Mac Zip for Intel: Preparing to zip file tree
 37.55 secs │  done  │                       │ 1. Unnotarized Mac Zip for Intel: Preparing to zip file tree
 37.55 secs │   0.0% │              0 / 1102 │ 1. Unnotarized Mac Zip for Intel: Zip: Compressing files
 37.60 secs │ 100.0% │           1102 / 1102 │ 1. Unnotarized Mac Zip for Intel: Zip: Compressing files
 37.60 secs │        │                       │ 1. Unnotarized Mac Zip for Intel: Zip: Combining files
 38.31 secs │ 100.0% │             103 / 103 │ 3. Windows App for Intel: Signing
 39.19 secs │ 100.0% │   87.47 MB / 87.47 MB │ 3. Mac Updates for ARM: Signing nayestane-0.4.137-mac-aarch64.zip
 39.56 secs │        │                       │ 3. Windows Zip for Intel: Preparing to zip file tree
 39.56 secs │  done  │                       │ 3. Windows Zip for Intel: Preparing to zip file tree
 39.56 secs │   0.0% │              0 / 1011 │ 3. Windows Zip for Intel: Zip: Compressing files
 39.66 secs │ 100.0% │           1011 / 1011 │ 3. Windows Zip for Intel: Zip: Compressing files
 39.66 secs │        │                       │ 3. Windows Zip for Intel: Zip: Combining files
 40.57 secs │  done  │                       │ 1. Unnotarized Mac Zip for Intel: Zip: Combining files
 41.51 secs │ 100.0% │   89.23 MB / 89.23 MB │ 1. Mac Updates for Intel: Signing nayestane-0.4.137-mac-amd64.zip
 42.25 secs │   0.0% │               0 / 871 │ 1. Windows MSIX for Intel: Zipping
 42.71 secs │  done  │                       │ 3. Windows Zip for Intel: Zip: Combining files
 57.02 secs │ 100.0% │ 119.55 MB / 119.55 MB │ 1. Windows MSIX for Intel: Hashing
 57.02 secs │        │                       │ 1. Windows MSIX for Intel: Signing
 57.21 secs │  done  │                       │ 1. Windows MSIX for Intel: Signing
 57.21 secs │ 100.0% │             871 / 871 │ 1. Windows MSIX for Intel: Zipping
 57.49 secs │        │                       │ 2. App Installer for Intel: Preparing to copy file tree
 57.49 secs │   0.0% │               0 /   2 │ 2. App Installer for Intel: Copying 2 file(s)
 57.62 secs │ 100.0% │               2 /   2 │ 2. App Installer for Intel: Copying 2 file(s)
 57.62 secs │        │                       │ 2. App Installer for Intel: Copying directory permissions
 57.62 secs │  done  │                       │ 2. App Installer for Intel: Copying directory permissions
113.51 secs │        │                       │ 0. Debian Package for Intel: Completing DEB
113.62 secs │  done  │                       │ 0. Debian Package for Intel: Completing DEB
114.03 secs │ 100.0% │   77.12 MB / 77.12 MB │ 1. Apt Repository: Hashing nayestane_0.4.137_amd64.deb
114.04 secs │ 100.0% │     0.00 MB / 0.00 MB │ 1. Apt Repository: Hashing Packages
114.04 secs │ 100.0% │     0.00 MB / 0.00 MB │ 1. Apt Repository: Hashing Packages.xz
114.04 secs │ 100.0% │     0.00 MB / 0.00 MB │ 1. Apt Repository: Hashing Packages
114.04 secs │ 100.0% │     0.00 MB / 0.00 MB │ 1. Apt Repository: Hashing Packages.xz
114.04 secs │ 100.0% │     0.00 MB / 0.00 MB │ 1. Apt Repository: Hashing Packages
114.04 secs │ 100.0% │     0.00 MB / 0.00 MB │ 1. Apt Repository: Hashing Packages.xz
114.04 secs │ 100.0% │     0.00 MB / 0.00 MB │ 1. Apt Repository: Hashing Packages
114.04 secs │ 100.0% │     0.00 MB / 0.00 MB │ 1. Apt Repository: Hashing Packages.xz
114.21 secs │        │                       │ 3. Site: Preparing to copy file tree
114.21 secs │   0.0% │               0 /   5 │ 3. Site: Copying 5 file(s)
114.34 secs │ 100.0% │               5 /   5 │ 3. Site: Copying 5 file(s)
114.34 secs │        │                       │ 3. Site: Copying directory permissions
114.34 secs │  done  │                       │ 3. Site: Copying directory permissions
114.34 secs │        │                       │ 3. Site: Preparing to copy file tree
114.34 secs │   0.0% │               0 /   7 │ 3. Site: Copying 7 file(s)
114.41 secs │ 100.0% │               7 /   7 │ 3. Site: Copying 7 file(s)
114.41 secs │   0.0% │               0 /   2 │ 3. Site: Copying directory permissions
114.41 secs │ 100.0% │               2 /   2 │ 3. Site: Copying directory permissions
114.63 secs │        │                       │ 3. Site: Preparing to copy file tree
114.63 secs │   0.0% │               0 /   2 │ 3. Site: Copying 2 file(s)
114.63 secs │ 100.0% │               2 /   2 │ 3. Site: Copying 2 file(s)
114.63 secs │        │                       │ 3. Site: Copying directory permissions
114.63 secs │  done  │                       │ 3. Site: Copying directory permissions
114.63 secs │        │                       │ 3. Site: Preparing to copy file tree
114.63 secs │   0.0% │               0 /   3 │ 3. Site: Copying 3 file(s)
114.72 secs │ 100.0% │               3 /   3 │ 3. Site: Copying 3 file(s)
114.72 secs │        │                       │ 3. Site: Copying directory permissions
114.72 secs │  done  │                       │ 3. Site: Copying directory permissions
114.72 secs │        │                       │ 3. Site: Preparing to copy file tree
114.72 secs │   0.0% │               0 /   3 │ 3. Site: Copying 3 file(s)
114.80 secs │ 100.0% │               3 /   3 │ 3. Site: Copying 3 file(s)
114.80 secs │        │                       │ 3. Site: Copying directory permissions
114.80 secs │  done  │                       │ 3. Site: Copying directory permissions
115.54 secs │ 100.0% │              70 /  70 │ Building
+ mkdir -p /var/www/html/conveyor/Release-Edubridge-Afghanistan
+ cp -r output/appcast-aarch64.rss output/appcast-amd64.rss output/debian output/download.html output/icon.svg output/install.ps1 output/launch.mac output/metadata.properties output/nayestane-0.4.137-linux-amd64.tar.gz output/nayestane-0.4.137-mac-aarch64.zip output/nayestane-0.4.137-mac-amd64.zip output/nayestane-0.4.137-windows-amd64.zip output/nayestane-0.4.137.x64.msix output/nayestane.appinstaller output/nayestane.crt output/nayestane.exe /var/www/html/conveyor/Release-Edubridge-Afghanistan
Archiving artifacts
Finished: SUCCESS