<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <blockquote
      cite="mid:6DCED03B-268F-4E22-B95B-0E1D6403C43F@redhat.com"
      type="cite">
      <pre wrap="">By the way, one last thing:

On Nov 7, 2011, at 1:14 PM, Sebastiano Peluso wrote:

</pre>
      <blockquote type="cite">
        <pre wrap="">Hi Galder,

thank you for the review. My answers are below inline.

Il 04/11/11 11:02, Galder Zamarre&ntilde;o ha scritto:
</pre>
        <blockquote type="cite">
          <pre wrap="">Hi all,

I had the chance to look at the TPCC radargun plug-in you've built (<a class="moz-txt-link-freetext" href="https://github.com/sebastianopeluso/radargun.git">https://github.com/sebastianopeluso/radargun.git</a>  - branch TPCC) and I had some comments to make:

1. Instead of using divisions for converting time units, it'd be better to use TimeUnit conversions to make the code more readable.
</pre>
        </blockquote>
        <pre wrap="">Ok. I will adopt TimeUnit.
</pre>
        <blockquote type="cite">
          <pre wrap="">2. To make the test run faster, it'd be interesting to transform Order...etc to use Infinispan Externalizers but that's not portable to other frameworks. So, implementing Externalizable could be a good middle ground.
</pre>
        </blockquote>
        <pre wrap="">Thank you for the suggestion. I will implement Externalizable interface 
for the TPC-C domain objects.

</pre>
        <blockquote type="cite">
          <pre wrap="">3. Is TpccPopulationStage executed in each slave? Or in single slave? Seems like it's only executed in one of the slaves? If so that's fine cos it'd replicate to all right?
</pre>
        </blockquote>
        <pre wrap="">This is partially true. Each slave populates a slice of the data 
container in a such a way that, for each pair of distinct slaves s1, s2, 
if s1 populates the slice c1 and s2 populates the slice c2, then the 
intersection between c1 and c2 is empty.
In this way we try to parallelize as much as possible cache loading, we 
don't perform population in a transactional context and if the cache is 
fully replicated then at the end of the population stage each node will 
store all loaded data.
</pre>
        <blockquote type="cite">
          <pre wrap="">4. Has this TPCC benchmark code been run with Infinispan 4?
</pre>
        </blockquote>
        <pre wrap="">I ran it also on top of Infinispan 5.
</pre>
      </blockquote>
      <pre wrap="">
What kind of results did you get?

Did you try the latest Infinispan 5.1 snapshot too?</pre>
    </blockquote>
    We tested only 5.0.0, at the time in which we were working on the
    Atomic Multicast based distribution scheme. At this link <a
      class="moz-txt-link-freetext"
      href="http://www.gsd.inesc-id.pt/%7Eromanop/files/papers/prdc2011.pdf">http://www.gsd.inesc-id.pt/~romanop/files/papers/prdc2011.pdf</a>&nbsp;
    the paper that reports the results. This has been accepted for
    publication at the IEEE 17th Pacific Rim International Symposium on
    Dependable Computing (PRDC&#8217;11), Pasadena, California, Dec. 2011. <br>
    <br>
    Note that the results published in that paper are based on a
    slightly modified version of the benchmark that we are contributing
    to RG, in which we "adapted" the benchmark to reduce contention.
    Specifically we commented out the line 121 of class <span class="n"
      style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
      margin-left: 0px; padding-top: 0px; padding-right: 0px;
      padding-bottom: 0px; padding-left: 0px; color: rgb(0, 0, 0);
      font-family: 'Bitstream Vera Sans Mono', Courier, monospace;
      font-size: 12px; font-style: normal; font-variant: normal;
      font-weight: normal; letter-spacing: normal; line-height: 16px;
      orphans: 2; text-align: -webkit-auto; text-indent: 0px;
      text-transform: none; white-space: pre; widows: 2; word-spacing:
      0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
      0px; background-color: rgb(255, 255, 255); "></span>
    org.radargun.tpcc.transaction.PaymentTransaction [1], which would
    otherwise force each transaction of type Payment (accessing the same
    warehouse) to conflict with each other. <br>
    <br>
    About adherence to the spec, which is something you had previously
    asked me. We do not claim that is compliant to the specification. We
    simply based this implementation on a previously existing open
    source implementation of the benchmark (<a
      class="moz-txt-link-freetext" href="http://jtpcc.sourceforge.net/">http://jtpcc.sourceforge.net/</a>),
    and stripped out SQL queries to work directly with ISPN's key/value
    data model. Also, we did not implement transaction Delivery and
    Stock-Level which were quite complex to implement without query
    support. In future, in fact, it would be interesting to extend them
    using the new ISPN query support. <br>
    <br>
    Given all the above premises, I think it is fair to claim that this
    benchmark generates a workload which resembles the one of the
    official TPC-C. <br>
    <br>
    About testing on 5.1: our cluster is currently being used
    intensively as several people in our team (me included!!) are
    working on a tight schedule to finalize works for a close deadline.
    So I cannot promise that we will be able to test it in the next week
    or soon, but towards the end of the month it should be possible! <br>
    <br>
    One last issue that just came to mind. Since we based our
    implementation on a pre-existing one, released using GPL, should we
    take any particular care in the header files (adding references,
    pointers)? I'm not an expert in these legal matters, I'd appreciate
    your comments on this! <br>
    <br>
    <br>
    Cheers, <br>
    <br>
    &nbsp;&nbsp;&nbsp; Sebastiano<br>
    <br>
    <br>
    [1]
    <a class="moz-txt-link-freetext"
href="https://github.com/sebastianopeluso/radargun/blob/tpcc/framework/src/main/java/org/radargun/tpcc/transaction/PaymentTransaction.java">https://github.com/sebastianopeluso/radargun/blob/tpcc/framework/src/main/java/org/radargun/tpcc/transaction/PaymentTransaction.java</a>
    <blockquote
      cite="mid:6DCED03B-268F-4E22-B95B-0E1D6403C43F@redhat.com"
      type="cite">
      <pre wrap="">

</pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">Overall looks good from a RadarGun integration point of view, but I'm not familiar with the specifics of TPCC, so someone else should comment on how well the code adheres to the spec.

I've noticed that RadarGun is not up to date with the latest 4.2 Infinispan version and does not have a plugin for Infinispan 5, so I'll update these two pieces.

I plan to only create one plugin for Infinispan 5, which will contain latest Infinispan 5.1 beta.

Cheers,
</pre>
        </blockquote>
        <pre wrap="">
Thank you again.

Cheers,

   Sebastiano

</pre>
        <br>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>