{
  "ticket": "U44 #81",
  "status": "passed",
  "startedAt": "2026-10-31T01:09:02.216490+08:00",
  "finishedAt": "2026-10-31T01:09:13.179619+08:00",
  "input": "python3 labs/spring-data-session/run.py",
  "exitCode": 0,
  "environment": {
    "os": "macOS-27.2-arm64-arm-64bit",
    "arch": "arm64",
    "python": "3.9.6",
    "runId": "0109026e7b",
    "mysqlDatabase": "study_u44_0109026e7b",
    "mongodbDatabase": "study_u44_0109026e7b",
    "dependencies": {
      "org.springframework.boot:spring-boot-starter-data-redis": "4.0.9",
      "org.springframework.boot:spring-boot-starter": "4.0.9",
      "org.springframework.boot:spring-boot-starter-logging": "4.0.9",
      "ch.qos.logback:logback-classic": "1.5.38",
      "ch.qos.logback:logback-core": "1.5.38",
      "org.apache.logging.log4j:log4j-to-slf4j": "2.25.5",
      "org.apache.logging.log4j:log4j-api": "2.25.5",
      "org.slf4j:jul-to-slf4j": "2.0.20",
      "org.springframework.boot:spring-boot-autoconfigure": "4.0.9",
      "jakarta.annotation:jakarta.annotation-api": "3.0.0",
      "org.yaml:snakeyaml": "2.5",
      "org.springframework.boot:spring-boot-data-redis": "4.0.9",
      "org.springframework.boot:spring-boot": "4.0.9",
      "org.springframework:spring-context": "7.0.10",
      "org.springframework.boot:spring-boot-data-commons": "4.0.9",
      "org.springframework.boot:spring-boot-persistence": "4.0.9",
      "org.springframework.data:spring-data-commons": "4.0.8",
      "org.springframework.boot:spring-boot-transaction": "4.0.9",
      "org.springframework:spring-tx": "7.0.10",
      "io.lettuce:lettuce-core": "6.8.2.RELEASE",
      "redis.clients.authentication:redis-authx-core": "0.1.1-beta2",
      "io.netty:netty-common": "4.2.19.Final",
      "io.netty:netty-transport": "4.2.19.Final",
      "org.springframework.data:spring-data-redis": "4.0.8",
      "org.springframework.data:spring-data-keyvalue": "4.0.8",
      "org.springframework:spring-oxm": "7.0.10",
      "org.springframework:spring-aop": "7.0.10",
      "org.springframework:spring-context-support": "7.0.10",
      "org.springframework.boot:spring-boot-netty": "4.0.9",
      "org.springframework.boot:spring-boot-starter-data-mongodb": "4.0.9",
      "org.springframework.boot:spring-boot-starter-mongodb": "4.0.9",
      "org.springframework.boot:spring-boot-mongodb": "4.0.9",
      "org.mongodb:mongodb-driver-sync": "5.6.5",
      "org.mongodb:bson": "5.6.5",
      "org.mongodb:mongodb-driver-core": "5.6.5",
      "org.mongodb:bson-record-codec": "5.6.5",
      "org.springframework.boot:spring-boot-data-mongodb": "4.0.9",
      "org.springframework.data:spring-data-mongodb": "5.0.8",
      "org.springframework:spring-beans": "7.0.10",
      "org.springframework:spring-expression": "7.0.10",
      "org.springframework.boot:spring-boot-starter-data-elasticsearch": "4.0.9",
      "org.springframework.boot:spring-boot-data-elasticsearch": "4.0.9",
      "org.springframework.data:spring-data-elasticsearch": "6.0.8",
      "co.elastic.clients:elasticsearch-java": "9.2.9",
      "com.google.code.findbugs:jsr305": "3.0.2",
      "jakarta.json:jakarta.json-api": "2.1.3",
      "org.eclipse.parsson:parsson": "1.1.7",
      "io.opentelemetry:opentelemetry-api": "1.55.0",
      "io.opentelemetry:opentelemetry-context": "1.55.0",
      "io.opentelemetry:opentelemetry-common": "1.55.0",
      "io.opentelemetry.semconv:opentelemetry-semconv": "1.37.0",
      "tools.jackson.core:jackson-core": "3.1.7",
      "com.fasterxml.jackson.core:jackson-core": "2.21.7",
      "com.fasterxml.jackson.core:jackson-databind": "2.21.7",
      "com.fasterxml.jackson.core:jackson-annotations": "2.21",
      "org.springframework.boot:spring-boot-elasticsearch": "4.0.9",
      "co.elastic.clients:elasticsearch-rest5-client": "9.2.9",
      "org.apache.httpcomponents.client5:httpclient5": "5.5.2",
      "org.apache.httpcomponents.core5:httpcore5": "5.3.6",
      "org.apache.httpcomponents.core5:httpcore5-h2": "5.3.6",
      "org.springframework.boot:spring-boot-starter-jackson": "4.0.9",
      "org.springframework.boot:spring-boot-jackson": "4.0.9",
      "tools.jackson.core:jackson-databind": "3.1.7",
      "org.springframework.boot:spring-boot-starter-data-jdbc": "4.0.9",
      "org.springframework.boot:spring-boot-starter-jdbc": "4.0.9",
      "com.zaxxer:HikariCP": "7.0.2",
      "org.springframework.boot:spring-boot-data-jdbc": "4.0.9",
      "org.springframework.data:spring-data-jdbc": "4.0.8",
      "org.springframework.data:spring-data-relational": "4.0.8",
      "org.springframework.boot:spring-boot-jdbc": "4.0.9",
      "org.springframework.boot:spring-boot-sql": "4.0.9",
      "org.springframework:spring-jdbc": "7.0.10",
      "org.springframework.boot:spring-boot-starter-data-r2dbc": "4.0.9",
      "org.springframework.boot:spring-boot-data-r2dbc": "4.0.9",
      "io.r2dbc:r2dbc-pool": "1.0.2.RELEASE",
      "io.projectreactor.addons:reactor-pool": "1.2.8",
      "org.springframework.data:spring-data-r2dbc": "4.0.8",
      "org.springframework.boot:spring-boot-r2dbc": "4.0.9",
      "org.springframework:spring-r2dbc": "7.0.10",
      "org.springframework.boot:spring-boot-reactor": "4.0.9",
      "org.springframework.boot:spring-boot-starter-session-data-redis": "4.0.9",
      "org.springframework.boot:spring-boot-session-data-redis": "4.0.9",
      "org.springframework.boot:spring-boot-session": "4.0.9",
      "org.springframework.session:spring-session-core": "4.0.5",
      "org.springframework.session:spring-session-data-redis": "4.0.5",
      "org.springframework.boot:spring-boot-starter-webmvc": "4.0.9",
      "org.springframework.boot:spring-boot-starter-tomcat": "4.0.9",
      "org.springframework.boot:spring-boot-starter-tomcat-runtime": "4.0.9",
      "org.springframework.boot:spring-boot-web-server": "4.0.9",
      "org.apache.tomcat.embed:tomcat-embed-core": "11.0.27",
      "org.apache.tomcat.embed:tomcat-embed-el": "11.0.27",
      "org.apache.tomcat.embed:tomcat-embed-websocket": "11.0.27",
      "org.springframework.boot:spring-boot-tomcat": "4.0.9",
      "org.springframework.boot:spring-boot-http-converter": "4.0.9",
      "org.springframework:spring-web": "7.0.10",
      "io.micrometer:micrometer-observation": "1.16.8",
      "io.micrometer:micrometer-commons": "1.16.8",
      "org.springframework.boot:spring-boot-webmvc": "4.0.9",
      "org.springframework.boot:spring-boot-servlet": "4.0.9",
      "org.springframework:spring-webmvc": "7.0.10",
      "com.mysql:mysql-connector-j": "9.7.0",
      "io.asyncer:r2dbc-mysql": "1.4.1",
      "io.projectreactor:reactor-core": "3.8.8",
      "org.reactivestreams:reactive-streams": "1.0.4",
      "io.projectreactor.netty:reactor-netty-core": "1.3.8",
      "io.netty:netty-handler": "4.2.19.Final",
      "io.netty:netty-resolver": "4.2.19.Final",
      "io.netty:netty-buffer": "4.2.19.Final",
      "io.netty:netty-transport-native-unix-common": "4.2.19.Final",
      "io.netty:netty-codec-base": "4.2.19.Final",
      "io.netty:netty-handler-proxy": "4.2.19.Final",
      "io.netty:netty-codec-socks": "4.2.19.Final",
      "io.netty:netty-codec-http": "4.2.19.Final",
      "io.netty:netty-codec-compression": "4.2.19.Final",
      "io.netty:netty-resolver-dns": "4.2.19.Final",
      "io.netty:netty-codec-dns": "4.2.19.Final",
      "io.netty:netty-resolver-dns-native-macos": "4.2.19.Final",
      "io.netty:netty-resolver-dns-classes-macos": "4.2.19.Final",
      "io.netty:netty-transport-native-epoll": "4.2.19.Final",
      "io.netty:netty-transport-classes-epoll": "4.2.19.Final",
      "io.r2dbc:r2dbc-spi": "1.0.0.RELEASE",
      "org.springframework.boot:spring-boot-starter-test": "4.0.9",
      "org.springframework.boot:spring-boot-test": "4.0.9",
      "org.springframework.boot:spring-boot-test-autoconfigure": "4.0.9",
      "com.jayway.jsonpath:json-path": "2.10.0",
      "org.slf4j:slf4j-api": "2.0.20",
      "jakarta.xml.bind:jakarta.xml.bind-api": "4.0.5",
      "jakarta.activation:jakarta.activation-api": "2.1.4",
      "net.minidev:json-smart": "2.6.0",
      "net.minidev:accessors-smart": "2.6.0",
      "org.ow2.asm:asm": "9.7.1",
      "org.assertj:assertj-core": "3.27.7",
      "net.bytebuddy:byte-buddy": "1.17.8",
      "org.awaitility:awaitility": "4.3.0",
      "org.hamcrest:hamcrest": "3.0",
      "org.junit.jupiter:junit-jupiter": "6.0.3",
      "org.junit.jupiter:junit-jupiter-api": "6.0.3",
      "org.opentest4j:opentest4j": "1.3.0",
      "org.junit.platform:junit-platform-commons": "6.0.3",
      "org.apiguardian:apiguardian-api": "1.1.2",
      "org.junit.jupiter:junit-jupiter-params": "6.0.3",
      "org.junit.jupiter:junit-jupiter-engine": "6.0.3",
      "org.junit.platform:junit-platform-engine": "6.0.3",
      "org.mockito:mockito-core": "5.20.0",
      "net.bytebuddy:byte-buddy-agent": "1.17.8",
      "org.objenesis:objenesis": "3.3",
      "org.mockito:mockito-junit-jupiter": "5.20.0",
      "org.skyscreamer:jsonassert": "1.5.3",
      "com.vaadin.external.google:android-json": "0.0.20131108.vaadin1",
      "org.springframework:spring-core": "7.0.10",
      "commons-logging:commons-logging": "1.3.6",
      "org.springframework:spring-test": "7.0.10",
      "org.xmlunit:xmlunit-core": "2.10.4",
      "io.projectreactor:reactor-test": "3.8.8",
      "org.jspecify:jspecify": "1.0.1"
    }
  },
  "expectedTestCount": 12,
  "reports": [
    {
      "name": "study.datasession.JdbcDataTest",
      "tests": "2",
      "failures": "0",
      "errors": "0",
      "skipped": "0"
    },
    {
      "name": "study.datasession.MongoDataTest",
      "tests": "2",
      "failures": "0",
      "errors": "0",
      "skipped": "0"
    },
    {
      "name": "study.datasession.R2dbcDataTest",
      "tests": "2",
      "failures": "0",
      "errors": "0",
      "skipped": "0"
    },
    {
      "name": "study.datasession.RedisDataTest",
      "tests": "3",
      "failures": "0",
      "errors": "0",
      "skipped": "0"
    },
    {
      "name": "study.datasession.SessionDataTest",
      "tests": "3",
      "failures": "0",
      "errors": "0",
      "skipped": "0"
    }
  ],
  "testCount": 12,
  "observed": [
    "U44 redisSerialization plainKeyLookup=false roundTripClass=List12 binaryKeyVisible=false",
    "U44 redisRepository hash=u44:cart:e31c03f9-8905-4df8-9924-8e7dcb3704cc ttlSeconds=60",
    "U44 redisString plain=true ttlApplied=true",
    "U44 sessionStored redis=true attrRoundTrip=true ttl=90s",
    "U44 sessionExpiry after1s=null",
    "U44 sessionConcurrent saved=8 finalCounter=6 lastWriteWins=true",
    "U44 r2dbcSharedDb reactiveSeesOwnWrite=true",
    "U44 r2dbcRepository id=2 count=1",
    "U44 mongoDerived size=2 count=2 audienceIndex=true",
    "U44 mongoDocument classField=true nativeCount=1",
    "U44 jdbcDerived byAuthor=1 prefix=1",
    "U44 jdbcNoSession immediateInsert=true silentChangeIgnored=true"
  ],
  "results": [
    {
      "name": "mvn-test",
      "command": [
        "mvn",
        "-B",
        "-ntp",
        "-o",
        "-f",
        "/Users/gaochao/Documents/面试/software-engineering-study/labs/spring-data-session/pom.xml",
        "test"
      ],
      "cwd": "/Users/gaochao/Documents/面试/software-engineering-study/labs/spring-data-session",
      "startedAt": "2026-10-31T01:09:03.023886+08:00",
      "finishedAt": "2026-10-31T01:09:09.568242+08:00",
      "exitCode": 0,
      "runnerExitCode": 0,
      "failure": null,
      "log": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u44/run-oo7_m6x4/mvn-test.log",
      "logSha256": "69b02aa0c16ad0003ac2fe0e334ef08cceae667d0ec5441ae72e746304b40a7d",
      "observed": [
        "U44 redisSerialization plainKeyLookup=false roundTripClass=List12 binaryKeyVisible=false",
        "U44 redisRepository hash=u44:cart:e31c03f9-8905-4df8-9924-8e7dcb3704cc ttlSeconds=60",
        "U44 redisString plain=true ttlApplied=true",
        "U44 sessionStored redis=true attrRoundTrip=true ttl=90s",
        "U44 sessionExpiry after1s=null",
        "U44 sessionConcurrent saved=8 finalCounter=6 lastWriteWins=true",
        "U44 r2dbcSharedDb reactiveSeesOwnWrite=true",
        "U44 r2dbcRepository id=2 count=1",
        "U44 mongoDerived size=2 count=2 audienceIndex=true",
        "U44 mongoDocument classField=true nativeCount=1",
        "U44 jdbcDerived byAuthor=1 prefix=1",
        "U44 jdbcNoSession immediateInsert=true silentChangeIgnored=true"
      ]
    },
    {
      "name": "es-compat-test",
      "command": [
        "mvn",
        "-B",
        "-ntp",
        "-o",
        "-f",
        "/Users/gaochao/Documents/面试/software-engineering-study/labs/spring-data-session/pom.xml",
        "test",
        "-Dtest=EsDataTest",
        "-Dsurefire.failIfNoSpecifiedTests=false"
      ],
      "cwd": "/Users/gaochao/Documents/面试/software-engineering-study/labs/spring-data-session",
      "startedAt": "2026-10-31T01:09:09.571820+08:00",
      "finishedAt": "2026-10-31T01:09:11.745685+08:00",
      "exitCode": 1,
      "runnerExitCode": 1,
      "failure": null,
      "log": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u44/run-oo7_m6x4/es-compat-test.log",
      "logSha256": "cb6e937748efe1ef860b601e5be65d51f97f469d3b0305d346a626b88d3c642a",
      "observed": []
    },
    {
      "name": "mvn-dependency",
      "command": [
        "mvn",
        "-B",
        "-ntp",
        "-o",
        "-f",
        "/Users/gaochao/Documents/面试/software-engineering-study/labs/spring-data-session/pom.xml",
        "dependency:list",
        "-DoutputFile=/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u44/run-oo7_m6x4/dependencies.txt"
      ],
      "cwd": "/Users/gaochao/Documents/面试/software-engineering-study/labs/spring-data-session",
      "startedAt": "2026-10-31T01:09:11.746544+08:00",
      "finishedAt": "2026-10-31T01:09:13.085708+08:00",
      "exitCode": 0,
      "runnerExitCode": 0,
      "failure": null,
      "log": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u44/run-oo7_m6x4/mvn-dependency.log",
      "logSha256": "90ce65d8858ea0bc446423bf986340e9bb902d99d5689523be28411619114385",
      "observed": []
    }
  ],
  "es": {
    "checked": true,
    "blocked": true,
    "signature": [
      "Expecting a response body, but none was sent",
      "status: 400",
      "TransportException"
    ],
    "log": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u44/run-oo7_m6x4/es-compat-test.log",
    "logSha256": "cb6e937748efe1ef860b601e5be65d51f97f469d3b0305d346a626b88d3c642a",
    "testCount": 0
  },
  "artifacts": {
    "pom.xml": "6130f1cbd15f2382b193b96f05533a44f6e3bebf9fe1e3edd481ad39f8b20ce8",
    "run.py": "0962f03f5b5fe2bba05671defa182a6f2f5e006cba75f81590459fe6120c9495",
    "README.md": "a57532a244768a4790956b9e72d209d698a14fd62a0d9973f98f3be6e164c785",
    "src/test/java/study/datasession/DataSessionApp.java": "c56e1832bdfa2817586a7ca07d9c3a279bad5fac1d8bf5863780d1df6de3c697",
    "src/test/java/study/datasession/Greeting.java": "4c74eaca0f7898142fe4dd2d3dd2248567d071a3f6e63235d80b9ab6dd7a3c3b",
    "src/test/java/study/datasession/GreetingRepository.java": "be57ce0bc0e087ada3daf24f40b50561d00d2cf02f5745ab81045ae30c750cf2",
    "src/test/java/study/datasession/JdbcDataTest.java": "a6acd4e44f38122863865cb8f961714b66367b73057fb841233c26d13502700c",
    "src/test/java/study/datasession/MongoDataTest.java": "3812891e54555634b339b157a63d959456d349f164f5c928813f5c821e7182cd",
    "src/test/java/study/datasession/R2dbcDataTest.java": "f62c806f7ddc416462a943d7305dd38dff5da43aecda76bf5b50633d1395284f",
    "src/test/java/study/datasession/R2dbcRepositoriesConfig.java": "9f83db2fbf0a84e7f168327e22823f79b15eee30bee09b4d44b3a2474c90e560",
    "src/test/java/study/datasession/RedisDataTest.java": "f3891cf6a20914e2483d65abc5b7af6fb390f5eebda741e6fe694f8923167a76",
    "src/test/java/study/datasession/RedisEntity.java": "b8c30cf7a3e6bd732fff71bda2cd2e756501d18be53b6bf48085afacb0f9d6cc",
    "src/test/java/study/datasession/RedisEntityRepository.java": "ddf13ed32ccf1a7a8c5f0ab0eb35f036f9597b78158052eef0a0c4324945f1db",
    "src/test/java/study/datasession/SessionDataTest.java": "a4b82ede7cce78ae8cd5d7c412c50350e23d41f66bdd169aa6aeede33c54d07f",
    "src/test/java/study/datasession/jdbc/Book.java": "25710b774939a146c7d4ce9e6ba711ac7217e2ecf5ffdca37f6ad9159d0cb479",
    "src/test/java/study/datasession/jdbc/BookRepository.java": "ab6da51ba46fd7ec8a413afeffba1e049c93661d01a2f484f335b67fac121048",
    "src/test/java/study/eslab/EsDataTest.java": "8bc0507794ab896ef4e282c3c2785c009ef6cead5cc031877ea47556c59ec708",
    "src/test/java/study/eslab/EsLabApp.java": "911ad3e0ea339ef11b62374cfebffdf330613c71f71eb4cb69bff07cb103f704",
    "src/test/java/study/eslab/MailIndex.java": "cbe4534511ce9fc263dd71e7d7426aeaebb46df0ebf72290bde136a615c56b94",
    "src/test/java/study/eslab/MailIndexRepository.java": "2a67751a2ac0767c2425d97042c482d803c6a4bc58a18695115669c671a7628f",
    "src/test/java/study/r2dbclab/Note.java": "93074ca25f19a3c21a0330f77ee0dcfbd58d18ffc0a600bf2e95107a77b4a7e1",
    "src/test/java/study/r2dbclab/NoteRepository.java": "f0ef06da66ec3b9e7516646177c93c72837cd80bcb0ebb48b2897fa3f3934c76",
    "src/test/resources/application-eslab.yml": "86075fe8ab90ae9858a3a40f5be8ff8b6c85c4c8de4fe1319ed5d53db5006f68",
    "src/test/resources/application-r2dbc.yml": "87642d1aad77c700ec8913c8f72f56e0f6029fa74bd64fb1e42baeb569787441",
    "src/test/resources/application.yml": "f90ffe0ebfa2c8604e148f795d64178cf880780541457a3865be221a77e5fe3b",
    "src/test/resources/schema.sql": "eca6b140c74ae6de15539d8a262a9f565b73c6b1f05886b5b886b5da22ed654a"
  },
  "logs": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u44/run-oo7_m6x4",
  "cleanup": {
    "databaseDropped": true,
    "labDatabasesRemaining": [],
    "mongodbDropped": true,
    "redisKeysRemaining": [],
    "mongodbNote": "库由测试 JVM 的 @AfterAll dropDatabase 清理，无需外部客户端"
  },
  "limits": [
    "Redis/Mongo/ES/MySQL 均为本机 DBngin 单实例；不是 Cluster/复制集/多节点",
    "ES 的 Spring Data 6.0.8 依赖 elasticsearch-java 9.x，本机服务端 8.19.23 跨线受阻，如实记录而不是通过",
    "Session 并发写是 8 线程同进程竞态，只观察 last-write-wins，不模拟网络分区",
    "repository 扫描包在混合应用里显式限定；未运行老版本全包扫描行为"
  ]
}
