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>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to