[ 
https://issues.apache.org/jira/browse/FLUME-3357?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ralph Goers closed FLUME-3357.
------------------------------

> Inconsistent library versions notice.
> -------------------------------------
>
>                 Key: FLUME-3357
>                 URL: https://issues.apache.org/jira/browse/FLUME-3357
>             Project: Flume
>          Issue Type: Improvement
>            Reporter: Kaifeng Huang
>            Priority: Major
>             Fix For: 1.10.0
>
>         Attachments: apache flume.pdf
>
>
> Hi. I have implemented a tool to detect library version inconsistencies. Your 
> project have 1 inconsistent library.
> Take com.google.guava:guava for example, this library is declared as version 
> 11.0.2 in flume-ng-sinks/flume-ng-elasticsearch-sink, 18.0 in 
> flume-ng-sinks/flume-http-sink and etc... Such version inconsistencies may 
> cause unnecessary maintenance effort in the long run. For example, if two 
> modules become inter-dependent, library version conflict may happen. It has 
> already become a common issue and hinders development progress. Thus a 
> version harmonization is necessary.
> Provided we applied a version harmonization, I calculated the cost it may 
> have to harmonize to all upper versions including an up-to-date one. The cost 
> refers to POM config changes and API invocation changes. Take 
> com.google.guava:guava for example, if we harmonize all the library versions 
> into 28.2-jre. The concern is, how much should the project code adapt to the 
> newer library version. We list an effort table to quantify the harmonization 
> cost.
> The effort table is listed below. It shows the overall harmonization effort 
> by modules. The columns represents the number of library APIs and API 
> calls(NA,NAC), deleted APIs and API calls(NDA,NDAC) as well as modified API 
> and API calls(NMA,NMAC). Modified APIs refers to those APIs whose call graph 
> is not the same as previous version. Take the first row for example, if 
> upgrading the library into version 28.2-jre. Given that 82 APIs is used in 
> module flume-ng-core, 19 of them is deleted in a recommended version(which 
> will throw a NoMethodFoundError unless re-compiling the project), 32 of them 
> is regarded as modified which could break the former API contract.
> ||Index||Module||NA(NAC)||NDA(NDAC)||NMA(NMAC)||
> |1|flume-ng-core|82(299)|19(49)|32(95)|
> |2|flume-ng-sinks/flume-hdfs-sink|12(48)|2(14)|4(4)|
> |3|flume-ng-node|14(20)|6(10)|7(9)|
> |4|..|..|..|..|
> Also we provided another table to show the potential files that may be 
> affected due to library API change, which could help to spot the concerned 
> API usage and rerun the test cases. The table is listed below.
> ||Module||File||Type||API||
> |flume-ng-sinks/flume-ng-elasticsearch-sink|flume-ng-sinks/flume-ng-elasticsearch-sink/src/test/java/org/apache/flume/sink/elasticsearch/TimestampedEventTest.java|delete|com.google.common.collect.Maps.newHashMap()|
> |flume-ng-sinks/flume-ng-elasticsearch-sink|flume-ng-sinks/flume-ng-elasticsearch-sink/src/test/java/org/apache/flume/sink/elasticsearch/client/TestElasticSearchRestClient.java|modify|com.google.common.base.Splitter.split(java.lang.CharSequence)|
> |flume-ng-sinks/flume-ng-elasticsearch-sink|flume-ng-sinks/flume-ng-elasticsearch-sink/src/test/java/org/apache/flume/sink/elasticsearch/client/TestElasticSearchRestClient.java|modify|com.google.common.base.Splitter.on(java.lang.String)|
> |4|..|..|..|
> If you are interested, you can have a more complete and detailed report in 
> the attached PDF file.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to