synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hiranya Jayathilaka <hiranya...@gmail.com>
Subject Re: Generating Names for Anon. Endpoints
Date Tue, 04 May 2010 12:27:12 GMT
Hi Indika

On Tue, May 4, 2010 at 5:22 PM, indika kumara <indika.kuma@gmail.com> wrote:

> I too agree with supun ...
>
> The usability may depend on the answer for 'Why does a user like in-lined
> configurations? '.  That is why I really needed a good answer from real
> users...
>
> The correctness is come first and the most important quality attribute than
> other quality attributes.
>

What makes you think the current approach for endpoints is 'incorrect'? If
it is not correct then that indeed is a problem we should get fixed.

Thanks,
Hiranya


> Irrespective of the criticality of the operation that depends on the name
> of the endpoint, the operation should be worked correctly. At least, if any
> operation that needs the name of the endpoint is enabled, then we should
> validate the uniqueness of the endpoint name.
>
> Thanks
> Indika
>
> On Tue, May 4, 2010 at 12:06 PM, Supun Kamburugamuva <supun06@gmail.com>
>  wrote:
>
>>
>>
>> On Sun, May 2, 2010 at 5:44 PM, Ruwan Linton <ruwan.linton@gmail.com>
>>  wrote:
>>
>>>
>>>
>>> On Sun, May 2, 2010 at 11:24 AM, Hiranya Jayathilaka <
>>> hiranya911@gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On Sat, May 1, 2010 at 11:23 PM, Supun Kamburugamuva <supun06@gmail.com
>>>> > wrote:
>>>>
>>>>>
>>>>>
>>>>> On Fri, Apr 30, 2010 at 10:08 AM, Hiranya Jayathilaka <
>>>>> hiranya911@gmail.com> wrote:
>>>>>
>>>>>> Hi Supun,
>>>>>>
>>>>>> On Fri, Apr 30, 2010 at 9:02 PM, Supun Kamburugamuva <
>>>>>> supun06@gmail.com> wrote:
>>>>>>
>>>>>>> Sorry I'm bit late to the conversation. I think the proper solution
>>>>>>> would be to force the user to have a name for each and every
endpoint.
>>>>>>
>>>>>>
>>>>>> I think we should be a little more flexible here. Most users will
>>>>>> appreciate the ability to define in-line endpoints anonymously. It's
a
>>>>>> usability thing.
>>>>>>
>>>>>>
>>>>> Here I'm not suggesting to remove the support for anonymous endpoints.
>>>>> My suggestion was to force a name to every endpoint regardless of weather
>>>>> they are defined in-line or separately.
>>>>>
>>>>
>>>> Supun, this is exactly what I think we shouldn't be doing. If we are
>>>> forcing the user to define names for each and every endpoint, then we are
>>>> actually getting rid of the support for anonymous endpoints.
>>>>
>>>
>>> +1
>>>
>>> We should try our best to keep the simple case as simple. Anonymous
>>> endpoints are very usable from the users point of view, and at least 70-80%
>>> of the users are not enabling clustering, if we are to enforce a name for
>>> every endpoint regardless whether it is inlined or not, we are making the
>>> simple case hard from the user point of view.
>>>
>>> My belief is doing the correct thing is important than the usability at
>> least when the usability degradation is minimal. I think that is the exact
>> reason why we are trying to make the synapse language schema compliant now.
>>
>> Also forcing a name for an inline endpoint is not that user un-friendly.
>> To define an endpoint user has to do many things. So I think just including
>> the name attribute is not a big user un-friendly thing compared to all the
>> things user has to do already.
>>
>> My concerns about name generation are not only with clustering. Lets say
>> an anonymous endpoint got suspended or received a time-out error. How can
>> the user know which endpoint got suspended or received the error?
>>
>> Also lets say user wants to do JMX monitoring. How can he distinguish the
>> different endpoints?
>>
>> I think synapse language should always force the production best practices
>> and I think having a meaningful name to an endpoint is a production best
>> practice that every deployment should do.
>>
>> Thanks,
>> Supun..
>>
>>
>>> Thanks,
>>> Ruwan
>>>
>>>
>>>>
>>>> Thanks,
>>>> Hiranya
>>>>
>>>>
>>>>>
>>>>> Even now user can do this. But system doesn't enforce this, and we have
>>>>> to generate a name. So my suggestion was to make the name attribute of
>>>>> the endpoint mandatory.
>>>>>
>>>>> Thanks,
>>>>> Supun..
>>>>>
>>>>>
>>>>>
>>>>>> This is a best practice in a production deployment. The name helps
to
>>>>>>> understand endpoint behavior. For example when an endpoint is
suspended user
>>>>>>> cannot identify it easily if it doesn't have a name.
>>>>>>
>>>>>>
>>>>>> +1... But it should only be a best practice. If the user does not
want
>>>>>> to bother with endpoint management stuff then forcing him to set
names for
>>>>>> each and every endpoint is not necessary (Needless to say, a large
config
>>>>>> would have dozens and dozens of endpoints - so it's not an easy job
either).
>>>>>> Also other than these management capabilities, names of the in-line
>>>>>> endpoints don't have any other usage either. You cannot refer to
them from
>>>>>> other sequences etc using the specified name.
>>>>>>
>>>>>> If the problem is with clustering scenarios, they will work just
fine,
>>>>>> since we are generating names for unnamed, in-line endpoints.
>>>>>>
>>>>>> Thanks,
>>>>>> Hiranya
>>>>>>
>>>>>>
>>>>>>> So it is good if we can enforce this at the synapse level.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Supun...
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Apr 27, 2010 at 2:44 PM, Ruwan Linton <
>>>>>>> ruwan.linton@gmail.com> wrote:
>>>>>>>
>>>>>>>> +1
>>>>>>>>
>>>>>>>> Ruwan
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Apr 27, 2010 at 10:55 AM, Hiranya Jayathilaka <
>>>>>>>> hiranya911@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Here's a little progress update. I have realized that
it is
>>>>>>>>> difficult to generate descriptive and context sensitive
names for endpoints
>>>>>>>>> on the fly. Reason is given an endpoint we cannot determine
it's parent. We
>>>>>>>>> can do that for proxy services, but for sequences it
is almost impossible.
>>>>>>>>> Therefore we will have to stick to the UUIDs at least
for the moment.
>>>>>>>>>
>>>>>>>>> However I was able to get the concept of endpoint anonymity
>>>>>>>>> implemented without changing the top level Endpoint interface.
All the
>>>>>>>>> endpoint serializers work with the AbstractEndpoint level,
so I added the
>>>>>>>>> necessary methods there. If the user hasn't explicitly
specified a name for
>>>>>>>>> an endpoint it is considered anonymous. The system will
generate names for
>>>>>>>>> such endpoints but they will not be displayed in the
serialization.
>>>>>>>>>
>>>>>>>>> I have raised SYNAPSE-627 to keep track of this.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Hiranya
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Apr 26, 2010 at 5:34 PM, Ruwan Linton <
>>>>>>>>> ruwan.linton@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> +1
>>>>>>>>>>
>>>>>>>>>> Ruwan
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Apr 26, 2010 at 5:28 PM, Hiranya Jayathilaka
<
>>>>>>>>>> hiranya911@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Apr 26, 2010 at 5:04 PM, Ruwan Linton
<
>>>>>>>>>>> ruwan.linton@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hiranya,
>>>>>>>>>>>>
>>>>>>>>>>>> Lets introduce an internal flag to the endpoint
so that the
>>>>>>>>>>>> builder and the serializer pair sets and
checks respectively to make the
>>>>>>>>>>>> generated name transparent from the users
configuration.
>>>>>>>>>>>>
>>>>>>>>>>>> To address the issue of having different,
UUID's on different
>>>>>>>>>>>> server start sessions, we could compute the
endpoint name by looking at the
>>>>>>>>>>>> parent sequence name, for example like "main_ep_1"
and so forth.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> That makes sense. Shall we add following two
methods to the
>>>>>>>>>>> Endpoint interface then?
>>>>>>>>>>>
>>>>>>>>>>> public boolean isAnonymous();
>>>>>>>>>>> public void setAnonymous();
>>>>>>>>>>>
>>>>>>>>>>> Anonymous endpoints will also get a generated
name but that will
>>>>>>>>>>> not be shown to the user in the serialization.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Hiranya
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Ruwan
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Apr 26, 2010 at 4:52 PM, Hiranya
Jayathilaka <
>>>>>>>>>>>> hiranya911@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Devs,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Currently Synapse generates names for
anonymous endpoints. For
>>>>>>>>>>>>> an example take the following sequence:
>>>>>>>>>>>>>
>>>>>>>>>>>>> <sequence name="foo">
>>>>>>>>>>>>>     <send>
>>>>>>>>>>>>>        <endpoint>
>>>>>>>>>>>>>            <address uri="some address"/>
>>>>>>>>>>>>>        </endpoint>
>>>>>>>>>>>>>     </send>
>>>>>>>>>>>>> </sequence>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Synapse will generate a UUID and set
that as the name of the
>>>>>>>>>>>>> endpoint. This is required since all
endpoints must have names in clustered
>>>>>>>>>>>>> deployments. However generating names
causes the serialization to be
>>>>>>>>>>>>> different from the original input XML.
As a result we currently have a bunch
>>>>>>>>>>>>> of test failures in the trunk. Any idea
how to resolve this problem?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Hiranya Jayathilaka
>>>>>>>>>>>>> Software Engineer;
>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.org
>>>>>>>>>>>>> E-mail: hiranya@wso2.com;  Mobile: +94
77 633 3491
>>>>>>>>>>>>> Blog: http://techfeast-hiranya.blogspot.com
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Ruwan Linton
>>>>>>>>>>>> Technical Lead & Product Manager; WSO2
ESB; http://wso2.org/esb
>>>>>>>>>>>>
>>>>>>>>>>>> WSO2 Inc.; http://wso2.org
>>>>>>>>>>>> email: ruwan@wso2.com; cell: +94 77 341 3097
>>>>>>>>>>>> blog: http://ruwansblog.blogspot.com
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Hiranya Jayathilaka
>>>>>>>>>>> Software Engineer;
>>>>>>>>>>> WSO2 Inc.;  http://wso2.org
>>>>>>>>>>> E-mail: hiranya@wso2.com;  Mobile: +94 77 633
3491
>>>>>>>>>>> Blog: http://techfeast-hiranya.blogspot.com
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Ruwan Linton
>>>>>>>>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
>>>>>>>>>> WSO2 Inc.; http://wso2.org
>>>>>>>>>> email: ruwan@wso2.com; cell: +94 77 341 3097
>>>>>>>>>> blog: http://ruwansblog.blogspot.com
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Hiranya Jayathilaka
>>>>>>>>> Software Engineer;
>>>>>>>>> WSO2 Inc.;  http://wso2.org
>>>>>>>>> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
>>>>>>>>> Blog: http://techfeast-hiranya.blogspot.com
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Ruwan Linton
>>>>>>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
>>>>>>>> WSO2 Inc.; http://wso2.org
>>>>>>>> email: ruwan@wso2.com; cell: +94 77 341 3097
>>>>>>>> blog: http://ruwansblog.blogspot.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Software Engineer, WSO2 Inc
>>>>>>> http://wso2.org
>>>>>>> supunk.blogspot.com
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Hiranya Jayathilaka
>>>>>> Software Engineer;
>>>>>> WSO2 Inc.;  http://wso2.org
>>>>>> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
>>>>>> Blog: http://techfeast-hiranya.blogspot.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Software Engineer, WSO2 Inc
>>>>> http://wso2.org
>>>>> supunk.blogspot.com
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Hiranya Jayathilaka
>>>> Software Engineer;
>>>> WSO2 Inc.;  http://wso2.org
>>>> E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
>>>> Blog: http://techfeast-hiranya.blogspot.com
>>>>
>>>
>>>
>>>
>>> --
>>> Ruwan Linton
>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
>>> WSO2 Inc.; http://wso2.org
>>> email: ruwan@wso2.com; cell: +94 77 341 3097
>>> blog: http://ruwansblog.blogspot.com
>>>
>>
>>
>>
>> --
>> Software Engineer, WSO2 Inc
>> http://wso2.org
>> supunk.blogspot.com
>>
>>
>>
>


-- 
Hiranya Jayathilaka
Software Engineer;
WSO2 Inc.;  http://wso2.org
E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com

On Tue, May 4, 2010 at 5:53 PM, Hiranya Jayathilaka <hiranya911@gmail.com>wrote:

> Sending as a separate mail since my responses to the previous thread are
> getting bounced off :(
>
> Hi Indika,
>
> On Mon, May 3, 2010 at 8:10 PM, indika kumara <indika.kuma@gmail.com>
>  wrote:
>
>> As the synapse configuration is the API for end-users to program their
>> solutions using synapse, the usability for the end user is important.
>>
>> Why does a user like  in-lined configurations?
>>
>
> I feel that sequences/proxies with in-line endpoints are more readable and
> easier to understand. If the endpoint was defined separately then we have to
> scroll around quite a bit to get to the endpoint definition from the
> sequence/proxy definition. For an example:
>
> <sequence name="foo">
>     <log level="full"/>
>     <send>
>         <endpoint>
>              <address uri="http://some.address"/>
>         </endpoint>
>     </send>
> </sequence>
>
> <sequence name="bar">
>     <log level="full"/>
>     <send>
>         <endpoint key="my.endpoint"/>
>     </send>
> </sequence>
>
> As you can see sequence 'foo' is self contained and easier to understand
> from one glimpse compared to 'bar'. Sequence 'bar' configuration does not
> really tell us anything since the endpoint itself may have quite a bit of
> logic in it. It could be a load balance endpoint, a secure endpoint and so
> on...
>
>  Is it really difficult to give a meaningful yet unique name?
>>
>
> If you have dozens of sequences and proxies, yes. And most of the time the
> user does not really gain anything from specifying names for all endpoints
> either.
>
> Or ..because there is no reuse for an endpoint configuration as currently
>> the endpoints are stateful and most endpoint configurations are static.
>> ?
>>
>
> That could be one reason too.
>
> Thanks,
> Hiranya
>



-- 
Hiranya Jayathilaka
Software Engineer;
WSO2 Inc.;  http://wso2.org
E-mail: hiranya@wso2.com;  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com

Mime
View raw message