diff --git a/cp.txt b/cp.txt index 50c0e939d..29986dc3e 100644 --- a/cp.txt +++ b/cp.txt @@ -1 +1 @@ -C:\Users\buddy\.m2\repository\com\intellij\annotations\12.0\annotations-12.0.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-core\2.19.71\chronicle-core-2.19.71.jar;C:\Users\buddy\.m2\repository\org\jetbrains\annotations\19.0.0\annotations-19.0.0.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-values\2.19.42\chronicle-values-2.19.42.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-bytes\2.19.70\chronicle-bytes-2.19.70.jar;C:\Users\buddy\.m2\repository\com\squareup\javapoet\1.12.1\javapoet-1.12.1.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-threads\2.19.70\chronicle-threads-2.19.70.jar;C:\Users\buddy\.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-wire\2.19.70\chronicle-wire-2.19.70.jar;C:\Users\buddy\.m2\repository\net\openhft\compiler\2.3.6\compiler-2.3.6.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-algorithms\2.19.42\chronicle-algorithms-2.19.42.jar;C:\Users\buddy\.m2\repository\net\java\dev\jna\jna\5.5.0\jna-5.5.0.jar;C:\Users\buddy\.m2\repository\net\java\dev\jna\jna-platform\5.5.0\jna-platform-5.5.0.jar;C:\Users\buddy\.m2\repository\com\thoughtworks\xstream\xstream\1.4.12\xstream-1.4.12.jar;C:\Users\buddy\.m2\repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;C:\Users\buddy\.m2\repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar;C:\Users\buddy\.m2\repository\org\codehaus\jettison\jettison\1.4.1\jettison-1.4.1.jar;C:\Users\buddy\.m2\repository\org\ops4j\pax\url\pax-url-aether\2.6.2\pax-url-aether-2.6.2.jar;C:\Users\buddy\.m2\repository\org\ops4j\pax\url\pax-url-aether-support\2.6.2\pax-url-aether-support-2.6.2.jar;C:\Users\buddy\.m2\repository\org\apache\maven\resolver\maven-resolver-impl\1.3.1\maven-resolver-impl-1.3.1.jar;C:\Users\buddy\.m2\repository\org\apache\maven\resolver\maven-resolver-api\1.3.1\maven-resolver-api-1.3.1.jar;C:\Users\buddy\.m2\repository\org\apache\maven\resolver\maven-resolver-spi\1.3.1\maven-resolver-spi-1.3.1.jar;C:\Users\buddy\.m2\repository\org\apache\maven\resolver\maven-resolver-util\1.3.1\maven-resolver-util-1.3.1.jar;C:\Users\buddy\.m2\repository\org\slf4j\jcl-over-slf4j\1.6.6\jcl-over-slf4j-1.6.6.jar;C:\Users\buddy\.m2\repository\net\openhft\jlbh\1.19.30\jlbh-1.19.30.jar;C:\Users\buddy\.m2\repository\junit\junit\4.13\junit-4.13.jar;C:\Users\buddy\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\buddy\.m2\repository\org\slf4j\slf4j-simple\1.7.30\slf4j-simple-1.7.30.jar;C:\Users\buddy\.m2\repository\org\mockito\mockito-core\3.3.3\mockito-core-3.3.3.jar;C:\Users\buddy\.m2\repository\net\bytebuddy\byte-buddy\1.10.5\byte-buddy-1.10.5.jar;C:\Users\buddy\.m2\repository\net\bytebuddy\byte-buddy-agent\1.10.5\byte-buddy-agent-1.10.5.jar;C:\Users\buddy\.m2\repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-module-junit4\2.0.7\powermock-module-junit4-2.0.7.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-module-junit4-common\2.0.7\powermock-module-junit4-common-2.0.7.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-reflect\2.0.7\powermock-reflect-2.0.7.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-core\2.0.7\powermock-core-2.0.7.jar;C:\Users\buddy\.m2\repository\org\javassist\javassist\3.27.0-GA\javassist-3.27.0-GA.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-api-mockito\1.7.4\powermock-api-mockito-1.7.4.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-api-mockito-common\1.7.4\powermock-api-mockito-common-1.7.4.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-api-support\1.7.4\powermock-api-support-1.7.4.jar;C:\Users\buddy\.m2\repository\net\openhft\affinity\3.2.3\affinity-3.2.3.jar;C:\Users\buddy\.m2\repository\com\google\guava\guava-testlib\19.0\guava-testlib-19.0.jar;C:\Users\buddy\.m2\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar;C:\Users\buddy\.m2\repository\com\google\errorprone\error_prone_annotations\2.0.2\error_prone_annotations-2.0.2.jar;C:\Users\buddy\.m2\repository\com\google\guava\guava\19.0\guava-19.0.jar;C:\Users\buddy\.m2\repository\net\openhft\zero-allocation-hashing\0.8\zero-allocation-hashing-0.8.jar;C:\Users\buddy\.m2\repository\com\samskivert\samskivert\1.9\samskivert-1.9.jar;C:\Users\buddy\.m2\repository\org\apache\commons\commons-lang3\3.10\commons-lang3-3.10.jar;C:\Users\buddy\.m2\repository\io\hawt\hawtio-embedded\2.7.1\hawtio-embedded-2.7.1.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-webapp\9.4.6.v20170531\jetty-webapp-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-xml\9.4.6.v20170531\jetty-xml-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-util\9.4.6.v20170531\jetty-util-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-servlet\9.4.6.v20170531\jetty-servlet-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-security\9.4.6.v20170531\jetty-security-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-server\9.4.6.v20170531\jetty-server-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-http\9.4.6.v20170531\jetty-http-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-io\9.4.6.v20170531\jetty-io-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;C:\Users\buddy\.m2\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;C:\Users\buddy\.m2\repository\net\openhft\stage-compiler\1.11\stage-compiler-1.11.jar;C:\Users\buddy\.m2\repository\net\openhft\spoon-core\4.4.1\spoon-core-4.4.1.jar;C:\Users\buddy\.m2\repository\org\eclipse\jdt\core\compiler\ecj\4.4.2\ecj-4.4.2.jar;C:\Users\buddy\.m2\repository\com\martiansoftware\jsap\2.1\jsap-2.1.jar;C:\Users\buddy\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;C:\Users\buddy\.m2\repository\commons-io\commons-io\1.3.2\commons-io-1.3.2.jar;C:\Users\buddy\.m2\repository\it\unimi\dsi\fastutil\7.0.6\fastutil-7.0.6.jar;C:\Users\buddy\.m2\repository\org\junit\jupiter\junit-jupiter\5.7.0-M1\junit-jupiter-5.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.7.0-M1\junit-jupiter-api-5.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;C:\Users\buddy\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\buddy\.m2\repository\org\junit\platform\junit-platform-commons\1.7.0-M1\junit-platform-commons-1.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.7.0-M1\junit-jupiter-params-5.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.7.0-M1\junit-jupiter-engine-5.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\junit\platform\junit-platform-engine\1.7.0-M1\junit-platform-engine-1.7.0-M1.jar;C:\Java\jre\..\lib\tools.jar \ No newline at end of file +C:\Users\buddy\.m2\repository\com\intellij\annotations\12.0\annotations-12.0.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-core\2.19.71\chronicle-core-2.19.71.jar;C:\Users\buddy\.m2\repository\org\jetbrains\annotations\19.0.0\annotations-19.0.0.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-values\2.19.42\chronicle-values-2.19.42.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-bytes\2.19.71\chronicle-bytes-2.19.71.jar;C:\Users\buddy\.m2\repository\com\squareup\javapoet\1.12.1\javapoet-1.12.1.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-threads\2.19.70\chronicle-threads-2.19.70.jar;C:\Users\buddy\.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-wire\2.19.71\chronicle-wire-2.19.71.jar;C:\Users\buddy\.m2\repository\net\openhft\compiler\2.3.6\compiler-2.3.6.jar;C:\Users\buddy\.m2\repository\net\openhft\chronicle-algorithms\2.19.42\chronicle-algorithms-2.19.42.jar;C:\Users\buddy\.m2\repository\net\java\dev\jna\jna\5.5.0\jna-5.5.0.jar;C:\Users\buddy\.m2\repository\net\java\dev\jna\jna-platform\5.5.0\jna-platform-5.5.0.jar;C:\Users\buddy\.m2\repository\com\thoughtworks\xstream\xstream\1.4.12\xstream-1.4.12.jar;C:\Users\buddy\.m2\repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;C:\Users\buddy\.m2\repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar;C:\Users\buddy\.m2\repository\org\codehaus\jettison\jettison\1.4.1\jettison-1.4.1.jar;C:\Users\buddy\.m2\repository\org\ops4j\pax\url\pax-url-aether\2.6.2\pax-url-aether-2.6.2.jar;C:\Users\buddy\.m2\repository\org\ops4j\pax\url\pax-url-aether-support\2.6.2\pax-url-aether-support-2.6.2.jar;C:\Users\buddy\.m2\repository\org\apache\maven\resolver\maven-resolver-impl\1.3.1\maven-resolver-impl-1.3.1.jar;C:\Users\buddy\.m2\repository\org\apache\maven\resolver\maven-resolver-api\1.3.1\maven-resolver-api-1.3.1.jar;C:\Users\buddy\.m2\repository\org\apache\maven\resolver\maven-resolver-spi\1.3.1\maven-resolver-spi-1.3.1.jar;C:\Users\buddy\.m2\repository\org\apache\maven\resolver\maven-resolver-util\1.3.1\maven-resolver-util-1.3.1.jar;C:\Users\buddy\.m2\repository\org\slf4j\jcl-over-slf4j\1.6.6\jcl-over-slf4j-1.6.6.jar;C:\Users\buddy\.m2\repository\net\openhft\jlbh\1.19.30\jlbh-1.19.30.jar;C:\Users\buddy\.m2\repository\junit\junit\4.13\junit-4.13.jar;C:\Users\buddy\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\buddy\.m2\repository\org\slf4j\slf4j-simple\1.7.30\slf4j-simple-1.7.30.jar;C:\Users\buddy\.m2\repository\org\mockito\mockito-core\3.3.3\mockito-core-3.3.3.jar;C:\Users\buddy\.m2\repository\net\bytebuddy\byte-buddy\1.10.5\byte-buddy-1.10.5.jar;C:\Users\buddy\.m2\repository\net\bytebuddy\byte-buddy-agent\1.10.5\byte-buddy-agent-1.10.5.jar;C:\Users\buddy\.m2\repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-module-junit4\2.0.7\powermock-module-junit4-2.0.7.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-module-junit4-common\2.0.7\powermock-module-junit4-common-2.0.7.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-reflect\2.0.7\powermock-reflect-2.0.7.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-core\2.0.7\powermock-core-2.0.7.jar;C:\Users\buddy\.m2\repository\org\javassist\javassist\3.27.0-GA\javassist-3.27.0-GA.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-api-mockito\1.7.4\powermock-api-mockito-1.7.4.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-api-mockito-common\1.7.4\powermock-api-mockito-common-1.7.4.jar;C:\Users\buddy\.m2\repository\org\powermock\powermock-api-support\1.7.4\powermock-api-support-1.7.4.jar;C:\Users\buddy\.m2\repository\net\openhft\affinity\3.2.3\affinity-3.2.3.jar;C:\Users\buddy\.m2\repository\com\google\guava\guava-testlib\19.0\guava-testlib-19.0.jar;C:\Users\buddy\.m2\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar;C:\Users\buddy\.m2\repository\com\google\errorprone\error_prone_annotations\2.0.2\error_prone_annotations-2.0.2.jar;C:\Users\buddy\.m2\repository\com\google\guava\guava\19.0\guava-19.0.jar;C:\Users\buddy\.m2\repository\net\openhft\zero-allocation-hashing\0.8\zero-allocation-hashing-0.8.jar;C:\Users\buddy\.m2\repository\com\samskivert\samskivert\1.9\samskivert-1.9.jar;C:\Users\buddy\.m2\repository\org\apache\commons\commons-lang3\3.10\commons-lang3-3.10.jar;C:\Users\buddy\.m2\repository\io\hawt\hawtio-embedded\2.7.1\hawtio-embedded-2.7.1.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-webapp\9.4.6.v20170531\jetty-webapp-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-xml\9.4.6.v20170531\jetty-xml-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-util\9.4.6.v20170531\jetty-util-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-servlet\9.4.6.v20170531\jetty-servlet-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-security\9.4.6.v20170531\jetty-security-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-server\9.4.6.v20170531\jetty-server-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-http\9.4.6.v20170531\jetty-http-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\eclipse\jetty\jetty-io\9.4.6.v20170531\jetty-io-9.4.6.v20170531.jar;C:\Users\buddy\.m2\repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;C:\Users\buddy\.m2\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;C:\Users\buddy\.m2\repository\net\openhft\stage-compiler\1.11\stage-compiler-1.11.jar;C:\Users\buddy\.m2\repository\net\openhft\spoon-core\4.4.1\spoon-core-4.4.1.jar;C:\Users\buddy\.m2\repository\org\eclipse\jdt\core\compiler\ecj\4.4.2\ecj-4.4.2.jar;C:\Users\buddy\.m2\repository\com\martiansoftware\jsap\2.1\jsap-2.1.jar;C:\Users\buddy\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;C:\Users\buddy\.m2\repository\commons-io\commons-io\1.3.2\commons-io-1.3.2.jar;C:\Users\buddy\.m2\repository\it\unimi\dsi\fastutil\7.0.6\fastutil-7.0.6.jar;C:\Users\buddy\.m2\repository\org\junit\jupiter\junit-jupiter\5.7.0-M1\junit-jupiter-5.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.7.0-M1\junit-jupiter-api-5.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;C:\Users\buddy\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\buddy\.m2\repository\org\junit\platform\junit-platform-commons\1.7.0-M1\junit-platform-commons-1.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.7.0-M1\junit-jupiter-params-5.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.7.0-M1\junit-jupiter-engine-5.7.0-M1.jar;C:\Users\buddy\.m2\repository\org\junit\platform\junit-platform-engine\1.7.0-M1\junit-platform-engine-1.7.0-M1.jar;C:\Java\jre\..\lib\tools.jar \ No newline at end of file diff --git a/cp2.txt b/cp2.txt index f68c0920f..cdfbca5db 100644 --- a/cp2.txt +++ b/cp2.txt @@ -1 +1 @@ -/C//Users/buddy/.m2/repository/com/intellij/annotations/12.0/annotations-12.0.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-core/2.19.71/chronicle-core-2.19.71.jar:/C//Users/buddy/.m2/repository/org/jetbrains/annotations/19.0.0/annotations-19.0.0.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-values/2.19.42/chronicle-values-2.19.42.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-bytes/2.19.70/chronicle-bytes-2.19.70.jar:/C//Users/buddy/.m2/repository/com/squareup/javapoet/1.12.1/javapoet-1.12.1.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-threads/2.19.70/chronicle-threads-2.19.70.jar:/C//Users/buddy/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-wire/2.19.70/chronicle-wire-2.19.70.jar:/C//Users/buddy/.m2/repository/net/openhft/compiler/2.3.6/compiler-2.3.6.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-algorithms/2.19.42/chronicle-algorithms-2.19.42.jar:/C//Users/buddy/.m2/repository/net/java/dev/jna/jna/5.5.0/jna-5.5.0.jar:/C//Users/buddy/.m2/repository/net/java/dev/jna/jna-platform/5.5.0/jna-platform-5.5.0.jar:/C//Users/buddy/.m2/repository/com/thoughtworks/xstream/xstream/1.4.12/xstream-1.4.12.jar:/C//Users/buddy/.m2/repository/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar:/C//Users/buddy/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar:/C//Users/buddy/.m2/repository/org/codehaus/jettison/jettison/1.4.1/jettison-1.4.1.jar:/C//Users/buddy/.m2/repository/org/ops4j/pax/url/pax-url-aether/2.6.2/pax-url-aether-2.6.2.jar:/C//Users/buddy/.m2/repository/org/ops4j/pax/url/pax-url-aether-support/2.6.2/pax-url-aether-support-2.6.2.jar:/C//Users/buddy/.m2/repository/org/apache/maven/resolver/maven-resolver-impl/1.3.1/maven-resolver-impl-1.3.1.jar:/C//Users/buddy/.m2/repository/org/apache/maven/resolver/maven-resolver-api/1.3.1/maven-resolver-api-1.3.1.jar:/C//Users/buddy/.m2/repository/org/apache/maven/resolver/maven-resolver-spi/1.3.1/maven-resolver-spi-1.3.1.jar:/C//Users/buddy/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.3.1/maven-resolver-util-1.3.1.jar:/C//Users/buddy/.m2/repository/org/slf4j/jcl-over-slf4j/1.6.6/jcl-over-slf4j-1.6.6.jar:/C//Users/buddy/.m2/repository/net/openhft/jlbh/1.19.30/jlbh-1.19.30.jar:/C//Users/buddy/.m2/repository/junit/junit/4.13/junit-4.13.jar:/C//Users/buddy/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:/C//Users/buddy/.m2/repository/org/slf4j/slf4j-simple/1.7.30/slf4j-simple-1.7.30.jar:/C//Users/buddy/.m2/repository/org/mockito/mockito-core/3.3.3/mockito-core-3.3.3.jar:/C//Users/buddy/.m2/repository/net/bytebuddy/byte-buddy/1.10.5/byte-buddy-1.10.5.jar:/C//Users/buddy/.m2/repository/net/bytebuddy/byte-buddy-agent/1.10.5/byte-buddy-agent-1.10.5.jar:/C//Users/buddy/.m2/repository/org/objenesis/objenesis/2.6/objenesis-2.6.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-module-junit4/2.0.7/powermock-module-junit4-2.0.7.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-module-junit4-common/2.0.7/powermock-module-junit4-common-2.0.7.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-reflect/2.0.7/powermock-reflect-2.0.7.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-core/2.0.7/powermock-core-2.0.7.jar:/C//Users/buddy/.m2/repository/org/javassist/javassist/3.27.0-GA/javassist-3.27.0-GA.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-api-mockito/1.7.4/powermock-api-mockito-1.7.4.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-api-mockito-common/1.7.4/powermock-api-mockito-common-1.7.4.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-api-support/1.7.4/powermock-api-support-1.7.4.jar:/C//Users/buddy/.m2/repository/net/openhft/affinity/3.2.3/affinity-3.2.3.jar:/C//Users/buddy/.m2/repository/com/google/guava/guava-testlib/19.0/guava-testlib-19.0.jar:/C//Users/buddy/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar:/C//Users/buddy/.m2/repository/com/google/errorprone/error_prone_annotations/2.0.2/error_prone_annotations-2.0.2.jar:/C//Users/buddy/.m2/repository/com/google/guava/guava/19.0/guava-19.0.jar:/C//Users/buddy/.m2/repository/net/openhft/zero-allocation-hashing/0.8/zero-allocation-hashing-0.8.jar:/C//Users/buddy/.m2/repository/com/samskivert/samskivert/1.9/samskivert-1.9.jar:/C//Users/buddy/.m2/repository/org/apache/commons/commons-lang3/3.10/commons-lang3-3.10.jar:/C//Users/buddy/.m2/repository/io/hawt/hawtio-embedded/2.7.1/hawtio-embedded-2.7.1.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-webapp/9.4.6.v20170531/jetty-webapp-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-xml/9.4.6.v20170531/jetty-xml-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-util/9.4.6.v20170531/jetty-util-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-servlet/9.4.6.v20170531/jetty-servlet-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-security/9.4.6.v20170531/jetty-security-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-server/9.4.6.v20170531/jetty-server-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-http/9.4.6.v20170531/jetty-http-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-io/9.4.6.v20170531/jetty-io-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar:/C//Users/buddy/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/C//Users/buddy/.m2/repository/net/openhft/stage-compiler/1.11/stage-compiler-1.11.jar:/C//Users/buddy/.m2/repository/net/openhft/spoon-core/4.4.1/spoon-core-4.4.1.jar:/C//Users/buddy/.m2/repository/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.jar:/C//Users/buddy/.m2/repository/com/martiansoftware/jsap/2.1/jsap-2.1.jar:/C//Users/buddy/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/C//Users/buddy/.m2/repository/commons-io/commons-io/1.3.2/commons-io-1.3.2.jar:/C//Users/buddy/.m2/repository/it/unimi/dsi/fastutil/7.0.6/fastutil-7.0.6.jar:/C//Users/buddy/.m2/repository/org/junit/jupiter/junit-jupiter/5.7.0-M1/junit-jupiter-5.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.7.0-M1/junit-jupiter-api-5.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/C//Users/buddy/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/C//Users/buddy/.m2/repository/org/junit/platform/junit-platform-commons/1.7.0-M1/junit-platform-commons-1.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.7.0-M1/junit-jupiter-params-5.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.7.0-M1/junit-jupiter-engine-5.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/junit/platform/junit-platform-engine/1.7.0-M1/junit-platform-engine-1.7.0-M1.jar:/C//Java/jre/../lib/tools.jar \ No newline at end of file +/C//Users/buddy/.m2/repository/com/intellij/annotations/12.0/annotations-12.0.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-core/2.19.71/chronicle-core-2.19.71.jar:/C//Users/buddy/.m2/repository/org/jetbrains/annotations/19.0.0/annotations-19.0.0.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-values/2.19.42/chronicle-values-2.19.42.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-bytes/2.19.71/chronicle-bytes-2.19.71.jar:/C//Users/buddy/.m2/repository/com/squareup/javapoet/1.12.1/javapoet-1.12.1.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-threads/2.19.70/chronicle-threads-2.19.70.jar:/C//Users/buddy/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-wire/2.19.71/chronicle-wire-2.19.71.jar:/C//Users/buddy/.m2/repository/net/openhft/compiler/2.3.6/compiler-2.3.6.jar:/C//Users/buddy/.m2/repository/net/openhft/chronicle-algorithms/2.19.42/chronicle-algorithms-2.19.42.jar:/C//Users/buddy/.m2/repository/net/java/dev/jna/jna/5.5.0/jna-5.5.0.jar:/C//Users/buddy/.m2/repository/net/java/dev/jna/jna-platform/5.5.0/jna-platform-5.5.0.jar:/C//Users/buddy/.m2/repository/com/thoughtworks/xstream/xstream/1.4.12/xstream-1.4.12.jar:/C//Users/buddy/.m2/repository/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar:/C//Users/buddy/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar:/C//Users/buddy/.m2/repository/org/codehaus/jettison/jettison/1.4.1/jettison-1.4.1.jar:/C//Users/buddy/.m2/repository/org/ops4j/pax/url/pax-url-aether/2.6.2/pax-url-aether-2.6.2.jar:/C//Users/buddy/.m2/repository/org/ops4j/pax/url/pax-url-aether-support/2.6.2/pax-url-aether-support-2.6.2.jar:/C//Users/buddy/.m2/repository/org/apache/maven/resolver/maven-resolver-impl/1.3.1/maven-resolver-impl-1.3.1.jar:/C//Users/buddy/.m2/repository/org/apache/maven/resolver/maven-resolver-api/1.3.1/maven-resolver-api-1.3.1.jar:/C//Users/buddy/.m2/repository/org/apache/maven/resolver/maven-resolver-spi/1.3.1/maven-resolver-spi-1.3.1.jar:/C//Users/buddy/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.3.1/maven-resolver-util-1.3.1.jar:/C//Users/buddy/.m2/repository/org/slf4j/jcl-over-slf4j/1.6.6/jcl-over-slf4j-1.6.6.jar:/C//Users/buddy/.m2/repository/net/openhft/jlbh/1.19.30/jlbh-1.19.30.jar:/C//Users/buddy/.m2/repository/junit/junit/4.13/junit-4.13.jar:/C//Users/buddy/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:/C//Users/buddy/.m2/repository/org/slf4j/slf4j-simple/1.7.30/slf4j-simple-1.7.30.jar:/C//Users/buddy/.m2/repository/org/mockito/mockito-core/3.3.3/mockito-core-3.3.3.jar:/C//Users/buddy/.m2/repository/net/bytebuddy/byte-buddy/1.10.5/byte-buddy-1.10.5.jar:/C//Users/buddy/.m2/repository/net/bytebuddy/byte-buddy-agent/1.10.5/byte-buddy-agent-1.10.5.jar:/C//Users/buddy/.m2/repository/org/objenesis/objenesis/2.6/objenesis-2.6.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-module-junit4/2.0.7/powermock-module-junit4-2.0.7.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-module-junit4-common/2.0.7/powermock-module-junit4-common-2.0.7.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-reflect/2.0.7/powermock-reflect-2.0.7.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-core/2.0.7/powermock-core-2.0.7.jar:/C//Users/buddy/.m2/repository/org/javassist/javassist/3.27.0-GA/javassist-3.27.0-GA.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-api-mockito/1.7.4/powermock-api-mockito-1.7.4.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-api-mockito-common/1.7.4/powermock-api-mockito-common-1.7.4.jar:/C//Users/buddy/.m2/repository/org/powermock/powermock-api-support/1.7.4/powermock-api-support-1.7.4.jar:/C//Users/buddy/.m2/repository/net/openhft/affinity/3.2.3/affinity-3.2.3.jar:/C//Users/buddy/.m2/repository/com/google/guava/guava-testlib/19.0/guava-testlib-19.0.jar:/C//Users/buddy/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar:/C//Users/buddy/.m2/repository/com/google/errorprone/error_prone_annotations/2.0.2/error_prone_annotations-2.0.2.jar:/C//Users/buddy/.m2/repository/com/google/guava/guava/19.0/guava-19.0.jar:/C//Users/buddy/.m2/repository/net/openhft/zero-allocation-hashing/0.8/zero-allocation-hashing-0.8.jar:/C//Users/buddy/.m2/repository/com/samskivert/samskivert/1.9/samskivert-1.9.jar:/C//Users/buddy/.m2/repository/org/apache/commons/commons-lang3/3.10/commons-lang3-3.10.jar:/C//Users/buddy/.m2/repository/io/hawt/hawtio-embedded/2.7.1/hawtio-embedded-2.7.1.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-webapp/9.4.6.v20170531/jetty-webapp-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-xml/9.4.6.v20170531/jetty-xml-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-util/9.4.6.v20170531/jetty-util-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-servlet/9.4.6.v20170531/jetty-servlet-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-security/9.4.6.v20170531/jetty-security-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-server/9.4.6.v20170531/jetty-server-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-http/9.4.6.v20170531/jetty-http-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/eclipse/jetty/jetty-io/9.4.6.v20170531/jetty-io-9.4.6.v20170531.jar:/C//Users/buddy/.m2/repository/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar:/C//Users/buddy/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/C//Users/buddy/.m2/repository/net/openhft/stage-compiler/1.11/stage-compiler-1.11.jar:/C//Users/buddy/.m2/repository/net/openhft/spoon-core/4.4.1/spoon-core-4.4.1.jar:/C//Users/buddy/.m2/repository/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.jar:/C//Users/buddy/.m2/repository/com/martiansoftware/jsap/2.1/jsap-2.1.jar:/C//Users/buddy/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/C//Users/buddy/.m2/repository/commons-io/commons-io/1.3.2/commons-io-1.3.2.jar:/C//Users/buddy/.m2/repository/it/unimi/dsi/fastutil/7.0.6/fastutil-7.0.6.jar:/C//Users/buddy/.m2/repository/org/junit/jupiter/junit-jupiter/5.7.0-M1/junit-jupiter-5.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.7.0-M1/junit-jupiter-api-5.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/C//Users/buddy/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/C//Users/buddy/.m2/repository/org/junit/platform/junit-platform-commons/1.7.0-M1/junit-platform-commons-1.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.7.0-M1/junit-jupiter-params-5.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.7.0-M1/junit-jupiter-engine-5.7.0-M1.jar:/C//Users/buddy/.m2/repository/org/junit/platform/junit-platform-engine/1.7.0-M1/junit-platform-engine-1.7.0-M1.jar:/C//Java/jre/../lib/tools.jar \ No newline at end of file diff --git a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/ChronicleStampedLock.java b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/ChronicleStampedLock.java index 8598d3faf..d96cdb45e 100644 --- a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/ChronicleStampedLock.java +++ b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/ChronicleStampedLock.java @@ -9,10 +9,13 @@ import java.io.IOException; import java.util.concurrent.locks.StampedLock; import static net.openhft.chronicle.values.Values.newNativeReference; + /** * ben.cotton@rutgers.edu *

* A totally hacked impl, awaiting OpenHFT's official ChronicleStampedLock API + *

+ * A usable impl will more properly belong in the Chronicle-Algorithms repo */ public class ChronicleStampedLock extends StampedLock { @@ -21,18 +24,22 @@ public class ChronicleStampedLock extends StampedLock { newNativeReference(ChronicleStampedLockVOInterface.class); ChronicleStampedLockVOInterface lastWriterT = newNativeReference(ChronicleStampedLockVOInterface.class); - + ChronicleStampedLockVOInterface readerCount = + newNativeReference(ChronicleStampedLockVOInterface.class); ChronicleStampedLock(String chronicelStampedLockLocality) { try { - chm = DirtyReadTolerance.offHeapLock(chronicelStampedLockLocality); + chm = offHeapLock(chronicelStampedLockLocality); chm.acquireUsing("Stamp ", offHeapLock); chm.acquireUsing("LastWriterTime ", lastWriterT); + chm.acquireUsing("ReaderCount ", readerCount); System.out.println( " ,@t=" + System.currentTimeMillis() + " ChronicleStampedLock constructed" + "," ); + readerCount.setEntryLockState(0L); + chm.put("ReadederCount ", readerCount); } catch (IOException e) { e.printStackTrace(); } @@ -91,10 +98,30 @@ public class ChronicleStampedLock extends StampedLock { offHeapLock = chm.get("Stamp "); lastWriterT = chm.get("LastWriterTime "); - do { - l = offHeapLock.getEntryLockState(); - } while (l != 0L); + readerCount = chm.get("ReaderCount "); + do { + System.out.println( + " ,@t=" + System.currentTimeMillis() + + " ChronicleStampedLock tryWriterLock() WAITING " + + " on offHeapLock.unlock(" + + offHeapLock.getEntryLockState() + + ") ," + ); + offHeapLock = chm.get("Stamp "); + l = offHeapLock.getEntryLockState(); + readerCount = chm.get("ReaderCount "); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } while (l != 0L || readerCount.getEntryLockState() > 0); + System.out.println( + " ,@t=" + System.currentTimeMillis() + + " ChronicleStampedLock tryWriterLock() RESUMING " + + " ," + ); long t = System.currentTimeMillis(); offHeapLock.setEntryLockState(-t); //negative ==> Writer holds StampedLock lastWriterT.setEntryLockState(t); @@ -109,6 +136,84 @@ public class ChronicleStampedLock extends StampedLock { return (offHeapLock.getEntryLockState()); } + @Override + public long tryReadLock() { + long l = 0; + + offHeapLock = chm.get("Stamp "); + lastWriterT = chm.get("LastWriterTime "); + readerCount = chm.get("ReaderCount "); + + do { + System.out.println( + " ,@t=" + System.currentTimeMillis() + + " ChronicleStampedLock tryReadLock() WAITING on Writer.unlock(" + + offHeapLock.getEntryLockState() + + ") ," + ); + l = (offHeapLock = chm.get("Stamp ")).getEntryLockState(); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } while (l < 0L); + System.out.println( + " ,@t=" + System.currentTimeMillis() + + " ChronicleStampedLock tryReadLock() RESUMING ," + ); + + readerCount.addAtomicReaderCount( 1); + + long t = System.currentTimeMillis(); + offHeapLock.setEntryLockState(t); //negative ==> Writer holds StampedLock + + chm.put("Stamp ", offHeapLock); + chm.put("ReaderCount ", readerCount); + + System.out.println( + " ,@t=" + t + + " ChronicleStampedLock tryReadLock() returned stamp=" + + offHeapLock.getEntryLockState() + + " readerCount=["+readerCount.getReaderCount()+"]"+ + "," + ); + return (offHeapLock.getEntryLockState()); + } + + @Override + public void unlockRead(long stamp) { + offHeapLock = chm.get("Stamp "); + readerCount = chm.get("ReaderCount "); + System.out.println( + " ,@t=" + System.currentTimeMillis() + + " ChronicleStampedLock unlockRead(" + stamp + ") unlocking.."+ + "ReaderCount="+readerCount.getReaderCount()+ + "," + ); + + readerCount.addAtomicReaderCount(-1); + if (readerCount.getReaderCount() == 0) { + offHeapLock.setEntryLockState(0L); + } + System.out.println( + " ,@t=" + System.currentTimeMillis() + + "ReaderCount="+readerCount.getReaderCount()+ + "," + ); + chm.put("Stamp ", offHeapLock); + chm.put("ReaderCount ", readerCount); + System.out.println( + " ,@t=" + System.currentTimeMillis() + + " ChronicleStampedLock unlockRead(" + + stamp + + ") unlocked. set to Zero. ReaderCount=" + + readerCount.getReaderCount() + + "," + ); + } + + @Override public void unlockWrite(long stamp) { System.out.println( @@ -129,7 +234,7 @@ public class ChronicleStampedLock extends StampedLock { static ChronicleMap offHeapLock(String operand) throws IOException { - // ensure thread ids are globally unique. + AffinitySupport.setThreadId(); return ChronicleMapBuilder.of(String.class, ChronicleStampedLockVOInterface.class) .entries(16) @@ -137,10 +242,7 @@ public class ChronicleStampedLock extends StampedLock { .createPersistedTo( new File( operand - // "C:\\Users\\buddy\\dev\\shm\\OPERAND_CHRONICLE_MAP" ) ); - //.create(); } - } diff --git a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/ChronicleStampedLockVOInterface.java b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/ChronicleStampedLockVOInterface.java index 88c86641e..29edae142 100644 --- a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/ChronicleStampedLockVOInterface.java +++ b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/ChronicleStampedLockVOInterface.java @@ -27,5 +27,12 @@ interface ChronicleStampedLockVOInterface { void setEntryLockState(long entryLockState); + @Group(1) + long getReaderCount(); + + void setReaderCount(long rc); /* time in millis */ + + long addAtomicReaderCount(long toAdd); + } diff --git a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadIntolerant.java b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadIntolerant.java new file mode 100644 index 000000000..fb9fa1393 --- /dev/null +++ b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadIntolerant.java @@ -0,0 +1,101 @@ +package net.openhft.chronicle.map.fromdocs.acid.revelations; + +import net.openhft.chronicle.map.ChronicleMap; +import net.openhft.chronicle.map.fromdocs.BondVOInterface; + +import java.util.concurrent.locks.StampedLock; + +import static net.openhft.chronicle.values.Values.newNativeReference; + +public class DirtyReadIntolerant { + public static void main(String args[]) { + try { + String isoLevel = args[0]; + long sleepMock = Long.parseLong(args[1]); + long holdTime = Long.parseLong(args[2]); + /** + * ben.cotton@rutgers.edu START + */ + ChronicleMap chm = + DirtyReadTolerance.offHeap( + args[3] + + "OPERAND_CHRONICLE_MAP" + ); + Double coupon = 0.00; + BondVOInterface bond = newNativeReference(BondVOInterface.class); + //BondVOInterface cslMock = newNativeReference(BondVOInterface.class); //mock'd + long stamp = 0; + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant ENTERING offHeapLock.tryReadLock()" + ); + StampedLock offHeapLock = + new ChronicleStampedLock( + args[3] + + "OPERAND_ChronicleStampedLock" + ); + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant sleeping " + sleepMock + " seconds" + ); + Thread.sleep(sleepMock * 1_000); + while ((stamp = offHeapLock.tryReadLock()) < 0) { + ; + } + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant ENTERED offHeapLock.tryReadLock() " + + " stamp=[" + + stamp + + "]" + ); + try { + chm.acquireUsing("369604101", bond); + //chm.acquireUsing("Offender ", cslMock); //mock'd + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant calling chm.get('369604101').getCoupon()" + ); + bond = (BondVOInterface) chm.get("369604101"); + coupon = bond.getCoupon(); + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant coupon=[" + coupon + "] read." + ); + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant sleeping " + holdTime + " seconds" + ); + + Thread.sleep(holdTime * 1_000); + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant awakening" + ); + + } finally { + offHeapLock.unlockRead(stamp); + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant offHeapLock.unlockRead(" + + stamp + ") completed." + ); + + } + /** + * ben.cotton@rutgers.edu END + */ + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant got() coupon=" + + coupon + " " + ); + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadIntolerant COMMITTED" + ); + } catch (Exception throwables) { + throwables.printStackTrace(); + } + } +} diff --git a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadOffender.java b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadOffender.java index 99279c37e..b423875f7 100644 --- a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadOffender.java +++ b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadOffender.java @@ -1,7 +1,7 @@ package net.openhft.chronicle.map.fromdocs.acid.revelations; import net.openhft.chronicle.map.ChronicleMap; -import net.openhft.chronicle.map.fromdocs.BondVOInterface; +import net.openhft.chronicle.map.fromdocs.BondVOInterface;; import java.util.Scanner; import java.util.concurrent.locks.StampedLock; @@ -16,10 +16,11 @@ public class DirtyReadOffender { try { String isoLevel = args[0]; long sleepT = Long.parseLong(args[1]); + long holdTime = Long.parseLong(args[2]); ChronicleMap chm = DirtyReadTolerance.offHeap( - args[2] + args[3] + "OPERAND_CHRONICLE_MAP" ); System.out.println( @@ -27,7 +28,7 @@ public class DirtyReadOffender { " DirtyReadOffender established chm " ); StampedLock offHeapLock = new ChronicleStampedLock( - args[2] + args[3] + "OPERAND_ChronicleStampedLock" ); BondVOInterface bond = newNativeReference(BondVOInterface.class); @@ -55,7 +56,6 @@ public class DirtyReadOffender { " @t=" + System.currentTimeMillis() + " DirtyReadOffender ACQUIRING offHeapLock.writeLock();" ); - while ((stamp = offHeapLock.tryWriteLock()) == 0) { ; } @@ -81,6 +81,11 @@ public class DirtyReadOffender { "] written. " ); } finally { + System.out.println( + " @t=" + System.currentTimeMillis() + + " DirtyReadOffender sleeping " + holdTime + " seconds " + ); + Thread.sleep(holdTime * 1_000); offHeapLock.unlockWrite(stamp); System.out.println( " @t=" + System.currentTimeMillis() + @@ -103,5 +108,4 @@ public class DirtyReadOffender { ); } } - -} +} \ No newline at end of file diff --git a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadTolerance.java b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadTolerance.java index e21ba3a97..0c9ebb077 100644 --- a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadTolerance.java +++ b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadTolerance.java @@ -24,8 +24,6 @@ public class DirtyReadTolerance { + "OPERAND_CHRONICLE_MAP" ); System.out.println(",Established chm,"); - - } static ChronicleMap offHeap(String operand) throws IOException { @@ -43,19 +41,5 @@ public class DirtyReadTolerance { //.create(); } - static ChronicleMap offHeapLock(String operand) - throws IOException { - // ensure thread ids are globally unique. - AffinitySupport.setThreadId(); - return ChronicleMapBuilder.of(String.class, ChronicleStampedLockVOInterface.class) - .entries(16) - .averageKeySize("123456789".length()) - .createPersistedTo( - new File( - operand - // "C:\\Users\\buddy\\dev\\shm\\OPERAND_CHRONICLE_MAP" - ) - ); - //.create(); - } + } \ No newline at end of file diff --git a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadVictim.java b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadVictim.java index c0f3bef64..fb853dac2 100644 --- a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadVictim.java +++ b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/DirtyReadVictim.java @@ -14,12 +14,13 @@ public class DirtyReadVictim { try { String isoLevel = args[0]; long sleepMock = Long.parseLong(args[1]); + long holdTime = Long.parseLong(args[2]); /** * ben.cotton@rutgers.edu START */ ChronicleMap chm = DirtyReadTolerance.offHeap( - args[2] + args[3] + "OPERAND_CHRONICLE_MAP" ); Double coupon = 0.00; @@ -32,9 +33,15 @@ public class DirtyReadVictim { ); StampedLock offHeapLock = new ChronicleStampedLock( - args[2] + args[3] + "OPERAND_ChronicleStampedLock" ); + System.out.println( + " ,,@t=" + System.currentTimeMillis() + + " DirtyReadVictim sleeping " + sleepMock + " seconds" + ); + + Thread.sleep(sleepMock * 1_000); while ((stamp = offHeapLock.tryOptimisticRead()) < 0) { ; } @@ -60,10 +67,10 @@ public class DirtyReadVictim { ); System.out.println( " ,,@t=" + System.currentTimeMillis() + - " DirtyReadVictim sleeping " + sleepMock + " seconds" + " DirtyReadVictim sleeping " + holdTime + " seconds" ); - Thread.sleep(sleepMock * 1_000); + Thread.sleep(holdTime * 1_000); System.out.println( " ,,@t=" + System.currentTimeMillis() + " DirtyReadVictim awakening" diff --git a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/Weyuker,Elaine=1994=ComputableAlgebras.pdf b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/Weyuker,Elaine=1994=ComputableAlgebras.pdf deleted file mode 100644 index d05d298b9..000000000 Binary files a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/Weyuker,Elaine=1994=ComputableAlgebras.pdf and /dev/null differ diff --git a/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/clrs=Algorithms.pdf b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/clrs=Algorithms.pdf new file mode 100644 index 000000000..74f9efdd7 Binary files /dev/null and b/src/test/java/net/openhft/chronicle/map/fromdocs/acid/revelations/clrs=Algorithms.pdf differ