Hi Sagara/Kasun,

This is a small concern that we have came across while testing BAM241.

We have used ESB 481 & AS 521, and faced above mentioned limitation in BAM
Agents in both of AS & ESB. It will be great if you can act on these in
future releases.

Added as improvements on following JIRAs.
ESB - https://wso2.org/jira/browse/ESBJAVA-3023
AS - https://wso2.org/jira/browse/WSAS-1675

Thanks,
Pandula



On Wed, Feb 26, 2014 at 12:30 PM, Anjana Fernando <[email protected]> wrote:

> Hi,
>
> These have to be fixed from the data agents, where if you make any changes
> to the stream definition, and try to save it, you will have to force the
> user to increment the version and save it, or probably automatically
> increment it and show it to the user. Basically allowing the user to use
> the same version where they are sending different events would be wrong.
> Worse case, probably, if the user insists, we should be able to delete the
> earlier stream definition for that version and re-create it.
>
> Cheers,
> Anjana.
>
>
> On Wed, Feb 26, 2014 at 9:45 AM, Pandula Kariyawasam <[email protected]>wrote:
>
>>
>> Hi All.
>>
>> This is a small concern that we have came across while testing BAM241.
>>
>> For all the Agents such as Data Publishers, it allows to save the
>> configuration with different versions. When we do so, it will create the
>> stream definition with relevant to that version.
>>
>> The problem occurs if we want to use a previous configuration with same
>> version number. Unless the user set exact configuration as previous
>> version, Agent won't send the messages to BAM after saving with same
>> previous version number.
>>
>>
>> Please consider the following scenario.
>>
>> - Consider a scenario that multiple users have access to the system.
>> - 1st user configure the Agent for the first time setting the version as
>> 1.0.0, with specifying some properties.
>> - 2nd user altering that Agent with adding and removing properties, and
>> save it as 1.0.1
>> - Now the 3rd user tries to role back to version 1.0.0, and he cannot
>> figure out the initial configuration of version 1.0.0.
>> - In a situation like this, if the 3rd user save it as 1.0.0 with
>> configurations which are different from initial 1.0.0 configuration, the
>> configuration will get saved properly. But when he trigger the app/service,
>> the data sending to BAM will fail with prompting below error [1].
>>
>>
>> All the Agents which use versioning such as Data Publishers, have this
>> limitation. Better if we can implement a mechanism to handle this, such as
>> adding a drop down to list/load the previous versions with configurations,
>> or etc.
>>
>> I have added this as an improvement under [2]
>> [2] https://wso2.org/jira/browse/BAM-1453
>>
>>
>> WDUT?
>>
>>
>>
>> [1]
>>
>> [2014-02-25 14:05:33,006] ERROR
>> {org.wso2.carbon.databridge.agent.thrift.AsyncDataPublisher} - Stream
>> definition already exist
>> org.wso2.carbon.databridge.commons.exception.DifferentStreamDefinitionAlreadyDefinedException:
>> Same stream id with different definition already defined before sending
>> this event definitions to TCP,10.100.5.9:7611,TCP,10.100.5.9:7711
>>     at
>> org.wso2.carbon.databridge.agent.thrift.internal.publisher.client.EventPublisher.defineStream(EventPublisher.java:237)
>>
>>     at
>> org.wso2.carbon.databridge.agent.thrift.DataPublisher.defineStream(DataPublisher.java:295)
>>
>>     at
>> org.wso2.carbon.databridge.agent.thrift.AsyncDataPublisher$DataPublishWorker.run(AsyncDataPublisher.java:690)
>>
>>     at java.lang.Thread.run(Thread.java:662)
>> Caused by:
>> org.wso2.carbon.databridge.commons.exception.DifferentStreamDefinitionAlreadyDefinedException:
>> Thrift Different Stream Definition Already Defined
>>     at
>> org.wso2.carbon.databridge.agent.thrift.internal.publisher.client.ThriftEventPublisher.defineStream(ThriftEventPublisher.java:112)
>>
>>     at
>> org.wso2.carbon.databridge.agent.thrift.internal.publisher.client.EventPublisher.defineStream(EventPublisher.java:222)
>>
>>     ... 3 more
>> Caused by:
>> ThriftDifferentStreamDefinitionAlreadyDefinedException(message:Similar
>> event stream for
>> StreamDefinition{
>>         streamId='bam_webapp_statistics:1.0.0',
>>         name='bam_webapp_statistics',
>>         version='1.0.0',
>>         nickName='WebappDataAgent',
>>         description='Publish webapp statistics events',
>>         tags=null,
>>         metaData=[Attribute{name='serverAddess', type=STRING},
>> Attribute{name='serverName', type=STRING}, Attribute{name='tenantId',
>> type=INT}, Attribute{name='webappOwnerTenant', type=STRING},
>> Attribute{name='userTenant', type=STRING}, Attribute{name='AAA',
>> type=STRING}],
>>         correlationData=null,
>>         payloadData=[Attribute{name='webappName', type=STRING},
>> Attribute{name='webappVersion', type=STRING}, Attribute{name='userId',
>> type=STRING}, Attribute{name='resourcePath', type=STRING},
>> Attribute{name='webappType', type=STRING},
>> Attribute{name='webappDisplayName', type=STRING},
>> Attribute{name='webappContext', type=STRING}, Attribute{name='sessionId',
>> type=STRING}, Attribute{name='httpMethod', type=STRING},
>> Attribute{name='contentType', type=STRING},
>> Attribute{name='responseContentType', type=STRING},
>> Attribute{name='remoteAddress', type=STRING}, Attribute{name='referer',
>> type=STRING}, Attribute{name='remoteUser', type=STRING},
>> Attribute{name='authType', type=STRING}, Attribute{name='userAgent',
>> type=STRING}, Attribute{name='browser', type=STRING},
>> Attribute{name='browserVersion', type=STRING},
>> Attribute{name='operatingSystem', type=STRING},
>> Attribute{name='operatingSystemVersion', type=STRING},
>> Attribute{name='searchEngine', type=STRING}, Attribute{name='country',
>> type=STRING}, Attribute{name='timestamp', type=LONG},
>> Attribute{name='responseHttpStatusCode', type=INT},
>> Attribute{name='responseTime', type=LONG}, Attribute{name='requestCount',
>> type=INT}, Attribute{name='responceCount', type=INT},
>> Attribute{name='faultCount', type=INT}, Attribute{name='requestSizeBytes',
>> type=LONG}, Attribute{name='responseSizeBytes', type=LONG}],
>> }
>>  with the same name and version already exist:
>> StreamDefinition{
>>         streamId='bam_webapp_statistics:1.0.0',
>>         name='bam_webapp_statistics',
>>         version='1.0.0',
>>         nickName='WebappDataAgent',
>>         description='Publish webapp statistics events',
>>         tags=null,
>>         metaData=[Attribute{name='serverAddess', type=STRING},
>> Attribute{name='serverName', type=STRING}, Attribute{name='tenantId',
>> type=INT}, Attribute{name='webappOwnerTenant', type=STRING},
>> Attribute{name='userTenant', type=STRING}],
>>         correlationData=null,
>>         payloadData=[Attribute{name='webappName', type=STRING},
>> Attribute{name='webappVersion', type=STRING}, Attribute{name='userId',
>> type=STRING}, Attribute{name='resourcePath', type=STRING},
>> Attribute{name='webappType', type=STRING},
>> Attribute{name='webappDisplayName', type=STRING},
>> Attribute{name='webappContext', type=STRING}, Attribute{name='sessionId',
>> type=STRING}, Attribute{name='httpMethod', type=STRING},
>> Attribute{name='contentType', type=STRING},
>> Attribute{name='responseContentType', type=STRING},
>> Attribute{name='remoteAddress', type=STRING}, Attribute{name='referer',
>> type=STRING}, Attribute{name='remoteUser', type=STRING},
>> Attribute{name='authType', type=STRING}, Attribute{name='userAgent',
>> type=STRING}, Attribute{name='browser', type=STRING},
>> Attribute{name='browserVersion', type=STRING},
>> Attribute{name='operatingSystem', type=STRING},
>> Attribute{name='operatingSystemVersion', type=STRING},
>> Attribute{name='searchEngine', type=STRING}, Attribute{name='country',
>> type=STRING}, Attribute{name='timestamp', type=LONG},
>> Attribute{name='responseHttpStatusCode', type=INT},
>> Attribute{name='responseTime', type=LONG}, Attribute{name='requestCount',
>> type=INT}, Attribute{name='responceCount', type=INT},
>> Attribute{name='faultCount', type=INT}, Attribute{name='requestSizeBytes',
>> type=LONG}, Attribute{name='responseSizeBytes', type=LONG}],
>> }
>> )
>>     at
>> org.wso2.carbon.databridge.commons.thrift.service.general.ThriftEventTransmissionService$defineStream_result.read(ThriftEventTransmissionService.java:1441)
>>
>>     at
>> org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
>>     at
>> org.wso2.carbon.databridge.commons.thrift.service.general.ThriftEventTransmissionService$Client.recv_defineStream(ThriftEventTransmissionService.java:80)
>>
>>     at
>> org.wso2.carbon.databridge.commons.thrift.service.general.ThriftEventTransmissionService$Client.defineStream(ThriftEventTransmissionService.java:66)
>>
>>     at
>> org.wso2.carbon.databridge.agent.thrift.internal.publisher.client.ThriftEventPublisher.defineStream(ThriftEventPublisher.java:109)
>>
>>     ... 4 more
>> [2014-02-25 14:05:51,833] ERROR
>> {org.wso2.carbon.databridge.agent.thrift.AsyncDataPublisher} - Stream
>> definition already exist
>> org.wso2.carbon.databridge.commons.exception.DifferentStreamDefinitionAlreadyDefinedException:
>> Same stream id with different definition already defined before sending
>> this event definitions to TCP,10.100.5.9:7611,TCP,10.100.5.9:7711
>>     at
>> org.wso2.carbon.databridge.agent.thrift.internal.publisher.client.EventPublisher.defineStream(EventPublisher.java:237)
>>
>>     at
>> org.wso2.carbon.databridge.agent.thrift.DataPublisher.defineStream(DataPublisher.java:295)
>>
>>     at
>> org.wso2.carbon.databridge.agent.thrift.AsyncDataPublisher$DataPublishWorker.run(AsyncDataPublisher.java:690)
>>
>>     at
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
>>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>>     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>>
>>     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>>
>>     at java.lang.Thread.run(Thread.java:662)
>> Caused by:
>> org.wso2.carbon.databridge.commons.exception.DifferentStreamDefinitionAlreadyDefinedException:
>> Thrift Different Stream Definition Already Defined
>>     at
>> org.wso2.carbon.databridge.agent.thrift.internal.publisher.client.ThriftEventPublisher.defineStream(ThriftEventPublisher.java:112)
>>
>>     at
>> org.wso2.carbon.databridge.agent.thrift.internal.publisher.client.EventPublisher.defineStream(EventPublisher.java:222)
>>
>>     ... 8 more
>> Caused by:
>> ThriftDifferentStreamDefinitionAlreadyDefinedException(message:Similar
>> event stream for
>> StreamDefinition{
>>         streamId='bam_webapp_statistics:1.0.0',
>>         name='bam_webapp_statistics',
>>         version='1.0.0',
>>         nickName='WebappDataAgent',
>>         description='Publish webapp statistics events',
>>         tags=null,
>>         metaData=[Attribute{name='serverAddess', type=STRING},
>> Attribute{name='serverName', type=STRING}, Attribute{name='tenantId',
>> type=INT}, Attribute{name='webappOwnerTenant', type=STRING},
>> Attribute{name='userTenant', type=STRING}, Attribute{name='AAA',
>> type=STRING}],
>>         correlationData=null,
>>         payloadData=[Attribute{name='webappName', type=STRING},
>> Attribute{name='webappVersion', type=STRING}, Attribute{name='userId',
>> type=STRING}, Attribute{name='resourcePath', type=STRING},
>> Attribute{name='webappType', type=STRING},
>> Attribute{name='webappDisplayName', type=STRING},
>> Attribute{name='webappContext', type=STRING}, Attribute{name='sessionId',
>> type=STRING}, Attribute{name='httpMethod', type=STRING},
>> Attribute{name='contentType', type=STRING},
>> Attribute{name='responseContentType', type=STRING},
>> Attribute{name='remoteAddress', type=STRING}, Attribute{name='referer',
>> type=STRING}, Attribute{name='remoteUser', type=STRING},
>> Attribute{name='authType', type=STRING}, Attribute{name='userAgent',
>> type=STRING}, Attribute{name='browser', type=STRING},
>> Attribute{name='browserVersion', type=STRING},
>> Attribute{name='operatingSystem', type=STRING},
>> Attribute{name='operatingSystemVersion', type=STRING},
>> Attribute{name='searchEngine', type=STRING}, Attribute{name='country',
>> type=STRING}, Attribute{name='timestamp', type=LONG},
>> Attribute{name='responseHttpStatusCode', type=INT},
>> Attribute{name='responseTime', type=LONG}, Attribute{name='requestCount',
>> type=INT}, Attribute{name='responceCount', type=INT},
>> Attribute{name='faultCount', type=INT}, Attribute{name='requestSizeBytes',
>> type=LONG}, Attribute{name='responseSizeBytes', type=LONG}],
>> }
>>  with the same name and version already exist:
>> StreamDefinition{
>>         streamId='bam_webapp_statistics:1.0.0',
>>         name='bam_webapp_statistics',
>>         version='1.0.0',
>>         nickName='WebappDataAgent',
>>         description='Publish webapp statistics events',
>>         tags=null,
>>         metaData=[Attribute{name='serverAddess', type=STRING},
>> Attribute{name='serverName', type=STRING}, Attribute{name='tenantId',
>> type=INT}, Attribute{name='webappOwnerTenant', type=STRING},
>> Attribute{name='userTenant', type=STRING}],
>>         correlationData=null,
>>         payloadData=[Attribute{name='webappName', type=STRING},
>> Attribute{name='webappVersion', type=STRING}, Attribute{name='userId',
>> type=STRING}, Attribute{name='resourcePath', type=STRING},
>> Attribute{name='webappType', type=STRING},
>> Attribute{name='webappDisplayName', type=STRING},
>> Attribute{name='webappContext', type=STRING}, Attribute{name='sessionId',
>> type=STRING}, Attribute{name='httpMethod', type=STRING},
>> Attribute{name='contentType', type=STRING},
>> Attribute{name='responseContentType', type=STRING},
>> Attribute{name='remoteAddress', type=STRING}, Attribute{name='referer',
>> type=STRING}, Attribute{name='remoteUser', type=STRING},
>> Attribute{name='authType', type=STRING}, Attribute{name='userAgent',
>> type=STRING}, Attribute{name='browser', type=STRING},
>> Attribute{name='browserVersion', type=STRING},
>> Attribute{name='operatingSystem', type=STRING},
>> Attribute{name='operatingSystemVersion', type=STRING},
>> Attribute{name='searchEngine', type=STRING}, Attribute{name='country',
>> type=STRING}, Attribute{name='timestamp', type=LONG},
>> Attribute{name='responseHttpStatusCode', type=INT},
>> Attribute{name='responseTime', type=LONG}, Attribute{name='requestCount',
>> type=INT}, Attribute{name='responceCount', type=INT},
>> Attribute{name='faultCount', type=INT}, Attribute{name='requestSizeBytes',
>> type=LONG}, Attribute{name='responseSizeBytes', type=LONG}],
>> }
>> )
>>     at
>> org.wso2.carbon.databridge.commons.thrift.service.general.ThriftEventTransmissionService$defineStream_result.read(ThriftEventTransmissionService.java:1441)
>>
>>     at
>> org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
>>     at
>> org.wso2.carbon.databridge.commons.thrift.service.general.ThriftEventTransmissionService$Client.recv_defineStream(ThriftEventTransmissionService.java:80)
>>
>>     at
>> org.wso2.carbon.databridge.commons.thrift.service.general.ThriftEventTransmissionService$Client.defineStream(ThriftEventTransmissionService.java:66)
>>
>>     at
>> org.wso2.carbon.databridge.agent.thrift.internal.publisher.client.ThriftEventPublisher.defineStream(ThriftEventPublisher.java:109)
>>
>>     ... 9 more
>>
>>
>>
>>
>> Thanks,
>> Pandula
>>
>> --
>>
>> *Pandula Kariyawasam K.B.*
>> *Senior Software Engineer - QA*
>> Mobile: +94772314510
>>
>> <http://www.wso2.com>
>>
>
>
>
> --
> *Anjana Fernando*
> Technical Lead
> WSO2 Inc. | http://wso2.com
> lean . enterprise . middleware
>



-- 

*Pandula Kariyawasam K.B.*
*Senior Software Engineer - QA*
Mobile: +94772314510

<http://www.wso2.com>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to