[ 
https://issues.apache.org/jira/browse/MNG-5977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15149466#comment-15149466
 ] 

Michael Osipov edited comment on MNG-5977 at 2/16/16 10:48 PM:
---------------------------------------------------------------

Salut Hervé,

I have made some progress on the issue and have produced two versions available 
from: http://home.apache.org/~michaelo/MNG-5977/

1. {{apache-maven-3.4.0-MNG-5977-SNAPSHOT-bin.tar.gz}}: Nicely prints the 
progress. No race conditions, no syncs where necessary. I have already cleanup 
superfluous padding and {{CRs}}. All looks fine.
2. {{apache-maven-3.4.0-MNG-5977-w-filename-SNAPSHOT-bin.tar.gz}}: Extends the 
previous implementation by adding the filename to the progress meter. Very nice 
to read the progress now. The downside is that all methods writing to 
{{PrintStream}} require synchronization otherwise the race conditions will 
garble the output on long progress lines. (This can be improved by using a 
{{ReentrantLock}} around {{lastLength}} and {{out}} access only.) There is one 
glitch I do not understand and don't know how to fix it yet. Under high 
concurrency, the progress is written but not overwritten by the next progress 
output or an upcoming "Downloaded:" line. The output written by {{tee}} is 
fine. This fails in {{cmd}} and Git bash. This may be a race condition within 
the Aether threads (unlikely hopefully) or a flaw in Windows or some important 
flush I forgot. Anyway, I would appreciate if you could take a look at my 
patches, maybe you will spot the issue. The second patch requires the first one 
first to be applied.

In any case, I'd like to prepend the progress meter with something like "In 
Progress: " or "In Transfer: ". Makes is better readable.
Tested under Windows 10 only, Linux and FreeBSD is pending.


was (Author: michael-o):
Salut Hervé,

I have made some progress on the issue and have produced two versions available 
from: http://home.apache.org/~michaelo/MNG-5977/

1. {{apache-maven-3.4.0-MNG-5977-SNAPSHOT-bin.tar.gz}}: Nicely prints the 
progress. No race conditions, no syncs where necessary. I have already cleanup 
superfluous padding and {{CR}}s. All looks fine.
2. {{apache-maven-3.4.0-MNG-5977-w-filename-SNAPSHOT-bin.tar.gz}}: Extends the 
previous implementation by adding the filename to the progress meter. Very nice 
to see the progress. The downside is that all methods writing to 
{{PrintStream}} require synchronization otherwise the race conditions will 
garble the output. This can be improved by using a {{ReentrantLock}} around 
{{lastLength}} and {{out}} access only. There is one glitch I do not understand 
and don't know how to fix it yet. Under high concurrency, the progress is 
written but not overwritten but the next progress output or an upcoming 
"Downloaded:" line. The output written by {{tee}} is fine. This fails in 
{{cmd}} and Git bash. This may be a race condition within the Aether threads 
(unlikely hopefully) or a flaw in Windows or some important flush I forgot. 
Anyway, I would appreciate if you could take a look at my patches, maybe you 
will spot the issue. The second patch requires the first one first to be 
applied.

In any case, I'd like to prepend the progress meter with something like "In 
Progress: " or "In Transfer: ". Makes is better readable.
Tested under Windows 10 only, Linux and FreeBSD is pending.

> Improve output readability of our MavenTransferListener implementations
> -----------------------------------------------------------------------
>
>                 Key: MNG-5977
>                 URL: https://issues.apache.org/jira/browse/MNG-5977
>             Project: Maven
>          Issue Type: Improvement
>          Components: Command Line, Embedding
>    Affects Versions: 3.3.9
>            Reporter: Michael Osipov
>            Assignee: Michael Osipov
>             Fix For: 3.4.0
>
>         Attachments: MNG-5977-w-filename.patch, MNG-5977.patch, current.zip, 
> improved.zip, improved.zip
>
>
> The current output of Downloading/Downladed/Uploading/Uploaded transfer 
> notification has some flaws:
> 1. It does not scale numbers between 1 and 1000 with appropriate units
> 2. It uses incorrect size and time units
> 3. When Aether downloads in parallel (which applies for non-POM files) the 
> progress interleaves and you do not know to which resource a progress belongs.
> Let's use MPIR {{DependenciesRenderer}}'s 
> [{{FileDecimalFormat}}|https://github.com/apache/maven-plugins/blob/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java#L1583]
>  for it.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to