Hi Andy,
On Tue, Mar 13, 2012 at 4:59 AM, Andy Seaborne <[email protected]> wrote:
> On 12/03/12 22:25, Paul Gearon wrote:
>> On Mon, Mar 12, 2012 at 3:00 PM, Andy Seaborne<[email protected]> wrote:
>>> On 12/03/12 16:55, Paul Gearon wrote:
>>>> Hi,
>>>
>>> Hi Paul,
>>>
>>> Thanks for the report.
>>>
>>> Could you say something about the data, e.g. how much, or, ideally, make
>>> a
>>> copy of the test data available so as similar a setup as yours can be
>>> created?
>>
>> I've attached the data mentioned in my previous email.
>
> I'm afraid the Apache lists don't support attachments. Could you forward
> the email to me please?
Forwarded now.
>> The tests
>> involve loading one-step.ttl into data:input, running the operations,
>> then dropping the graph. Then two-step.ttl is loaded into data:input
>> with the same URI, the operations tried again, and the graph dropped.
>> The same for the three-step.ttl. The errors described usually start
>> showing up in the third case.
>
>
> Is that a set of SPARQL Updates? Can you send them as well? The complete
> log would be useful as well because I mocked up something from your
> description in your initial email but everything worked just fine for me,
> even under excessive load.
I don't have all of the updates ordered with the queries. I can get
them, but some of the ordering is non-deterministic due to the
multithreaded nature of the process.
The specific updates are:
INSERT {GRAPH <data:output> {?x <http://example.com/ex#parentOf> ?z}}
WHERE {{{GRAPH <data:output> {?y <http://example.com/ex#parentOf> ?z}}
UNION {GRAPH <data:input> {?y <http://example.com/ex#parentOf> ?z}}} .
GRAPH <data:input> {?x <http://example.com/ex#spouseOf> ?y}}
INSERT {GRAPH <data:output> {?z <http://example.com/ex#parentOf> ?y}}
WHERE {{{GRAPH <data:output> {?z <http://example.com/ex#parentOf> ?x}}
UNION {GRAPH <data:input> {?z <http://example.com/ex#parentOf> ?x}}} .
GRAPH <data:input> {?x <http://example.com/ex#siblingOf> ?y}}
INSERT {GRAPH <data:output> {?x <http://example.com/ex#parentOf> ?z}}
WHERE {{{GRAPH <data:output> {?y <http://example.com/ex#parentOf> ?z}}
UNION {GRAPH <data:input> {?y <http://example.com/ex#parentOf> ?z}}} .
GRAPH <data:input> {?x <http://example.com/ex#spouseOf> ?y}}
INSERT {GRAPH <data:output> {?z <http://example.com/ex#parentOf> ?y}}
WHERE {{{GRAPH <data:output> {?z <http://example.com/ex#parentOf> ?x}}
UNION {GRAPH <data:input> {?z <http://example.com/ex#parentOf> ?x}}} .
GRAPH <data:input> {?x <http://example.com/ex#siblingOf> ?y}}
> All that means, is I haven't guessed the right sequence of operations and
> timings. Maybe it's something in a prior request breaking the transaction
> system only to show up later (the server is multithreaded so a bug can lead
> to one thread being damaged or lost, causing a problme later if it does not
> clear up).
While the tests are defined in a particular order, this test framework
appears to use a hash set, meaning that other tests may occur first
(depending on the configuration of the test file). I'll set up logging
on the whole process so that I get everything in sequence.
> You first email didn't mention updates with spouseOf, and the count query
> wasn't quite as you showed it, same effect, but I'm wondering if there is
> some detail that matters here.
I was really trying to show the type of the operations, rather than
the specifics, sorry. It looked to me like some kind of race on a
lock, so I was less concerned with the specifics of the
queries/operations. As I said, I'll try to log more thoroughly and
send you the results.
> I'm mystified by the COUNT GET request.
>
> The HTTP request for the COUNT query sent had %3F%CB%901 for a variable name
> which is ?:1 except the : is actually Unicode 02D0 (Modifier Letter
> Triangular Colon, length mark) if I decoded it correctly. "ː"
Sorry about that.
It's a generated variable name, which was specifically chosen to be
legal and unlikely to clash with any user-defined variables (not that
there is the possibility of conflict here). When it's printed to my
terminal it showed up as a ? character. Since ??1 and ??2 would have
appeared illegal, I decided to change it them to ?a1 and ?a2.
<snip/>
Paul