|
55 | 55 | import com.google.spanner.v1.ListSessionsRequest; |
56 | 56 | import com.google.spanner.v1.ListSessionsResponse; |
57 | 57 | import com.google.spanner.v1.MultiplexedSessionPrecommitToken; |
| 58 | +import com.google.spanner.v1.Mutation; |
58 | 59 | import com.google.spanner.v1.PartialResultSet; |
59 | 60 | import com.google.spanner.v1.Partition; |
60 | 61 | import com.google.spanner.v1.PartitionOptions; |
@@ -645,14 +646,16 @@ private String generateSessionName(String database) { |
645 | 646 | return String.format("%s/sessions/%s", database, UUID.randomUUID().toString()); |
646 | 647 | } |
647 | 648 |
|
648 | | - private ByteString generateTransactionName(String session) { |
| 649 | + private ByteString generateTransactionName(String session, String mutationString) { |
649 | 650 | AtomicLong counter = transactionCounters.get(session); |
650 | 651 | if (counter == null) { |
651 | 652 | counter = new AtomicLong(); |
652 | 653 | transactionCounters.put(session, counter); |
653 | 654 | } |
654 | 655 | transactionToTrace.put( |
655 | | - session, String.format("%s", Arrays.toString(Thread.currentThread().getStackTrace()))); |
| 656 | + session, |
| 657 | + String.format( |
| 658 | + "%s %s", mutationString, Arrays.toString(Thread.currentThread().getStackTrace()))); |
656 | 659 | return ByteString.copyFromUtf8( |
657 | 660 | String.format("%s/transactions/%d", session, counter.incrementAndGet())); |
658 | 661 | } |
@@ -1909,9 +1912,34 @@ public void beginTransaction( |
1909 | 1912 | } |
1910 | 1913 | } |
1911 | 1914 |
|
| 1915 | + private String getMutationString(Mutation mutation) { |
| 1916 | + StringBuilder sb = new StringBuilder(); |
| 1917 | + try { |
| 1918 | + if (mutation.hasInsert()) { |
| 1919 | + for (ListValue listValue : mutation.getInsert().getValuesList()) { |
| 1920 | + sb.append(listValue.toString()); |
| 1921 | + } |
| 1922 | + } |
| 1923 | + if (mutation.hasUpdate()) { |
| 1924 | + for (ListValue listValue : mutation.getUpdate().getValuesList()) { |
| 1925 | + sb.append(listValue.toString()); |
| 1926 | + } |
| 1927 | + } |
| 1928 | + if (mutation.hasReplace()) { |
| 1929 | + for (ListValue listValue : mutation.getReplace().getValuesList()) { |
| 1930 | + sb.append(listValue.toString()); |
| 1931 | + } |
| 1932 | + } |
| 1933 | + } catch (Exception e) { |
| 1934 | + sb.append(e.getMessage()); |
| 1935 | + } |
| 1936 | + return sb.toString(); |
| 1937 | + } |
| 1938 | + |
1912 | 1939 | private Transaction beginTransaction( |
1913 | 1940 | Session session, TransactionOptions options, com.google.spanner.v1.Mutation mutationKey) { |
1914 | | - ByteString transactionId = generateTransactionName(session.getName()); |
| 1941 | + ByteString transactionId = |
| 1942 | + generateTransactionName(session.getName(), getMutationString(mutationKey)); |
1915 | 1943 | Transaction.Builder builder = Transaction.newBuilder().setId(transactionId); |
1916 | 1944 | if (options != null && options.getModeCase() == ModeCase.READ_ONLY) { |
1917 | 1945 | setReadTimestamp(options, builder); |
|
0 commit comments