[kepler-dev] Type error with NondeterministicMerge under Kepler

Norbert Podhorszki pnorbert at cs.ucdavis.edu
Wed Aug 8 15:31:51 PDT 2007


Hi Stephen,

Thanks for the explanation. I missed to look at the RecordDisassembler.
However, I believe, that actor declares exactly what has to declared. 
So it's the nondet.merge actor which overgeneralizes things.

Because of the difficulty of tracking down a type problem in a workflow 
with many actors (actually thousands, in several levels of composites) I 
wished many times to be able to turn off the type checking in Kepler. But 
it always turned out finally that the error was real and saved me from a 
nervous breakdown later. So we do not want to ignore the type checking...

Cheers
Norbert


On Wed, 8 Aug 2007, Stephen Neuendorffer wrote:

> The problem has to
> do with the fact that RecordDisassembler is one of the few actors
> that has a real type requirement:
>
>        RecordType declaredType = new RecordType(labels, types);
>
>        input.setTypeAtMost(declaredType);
>
> The input has to be a record (with certain fields),
> *and the actor requires that the type system be able to prove this*.
> Note that most actors don't actually have input constraints (which
> should
> always be setTypeAtMost()) and just assert their output types (which
> should always be setTypeAtLeast() or maybe setTypeEquals()).
>
> I also really don't understand at all why the NonDeterministicMerge
> actor
> in Kepler has the types forced to be general.  This won't work
> with any actor that has real type requirements.  If kepler really
> wants to ignore the type system, it is going to have to turn off
> type inference entirely, in which case having 'general' as the
> declared types will be extranneous anyway...
>
> Steve


More information about the Kepler-dev mailing list