You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Anurag Sharma (JIRA)" <ji...@apache.org> on 2014/10/26 04:02:33 UTC

[jira] [Commented] (IVY-1388) *.lck files created by "artifact-lock" lock strategy are not cleaned up if ivy quits abruptly

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

Anurag Sharma commented on IVY-1388:
------------------------------------

I am also facing the same issue. Here is detailed when running in verbose mode(ant compile -verbose)

{code}
Overriding previous definition of property "ivy.version"
[ivy:retrieve] no resolved descriptor found: launching default resolve
Overriding previous definition of property "ivy.version"
[ivy:retrieve] using ivy parser to parse file:/C:/work/trunk/solr/example/ivy.xml
[ivy:retrieve] :: resolving dependencies :: org.apache.solr#example;working@dev-pc
[ivy:retrieve]  confs: [logging]
[ivy:retrieve]  validate = true
[ivy:retrieve]  refresh = false
[ivy:retrieve] resolving dependencies for configuration 'logging'
[ivy:retrieve] == resolving dependencies for org.apache.solr#example;working@dev-pc [logging]
[ivy:retrieve] == resolving dependencies org.apache.solr#example;working@dev-pc->log4j#log4j;1.2.17 [logging->master]
[ivy:retrieve] default: Checking cache for: dependency: log4j#log4j;1.2.17 {logging=[master]}
[ivy:retrieve] don't use cache for log4j#log4j;1.2.17: checkModified=true
[ivy:retrieve]          tried C:\Users\user1.dev-pc\.ivy2\local\log4j\log4j\1.2.17\ivys\ivy.xml
[ivy:retrieve]          tried C:\Users\user1.dev-pc\.ivy2\local\log4j\log4j\1.2.17\jars\log4j.jar
[ivy:retrieve]  local: no ivy file nor artifact found for log4j#log4j;1.2.17
[ivy:retrieve] main: Checking cache for: dependency: log4j#log4j;1.2.17 {logging=[master]}
[ivy:retrieve] main: module revision found in cache: log4j#log4j;1.2.17
[ivy:retrieve]  found log4j#log4j;1.2.17 in public
[ivy:retrieve] == resolving dependencies org.apache.solr#example;working@dev-pc->org.slf4j#slf4j-api;1.7.6 [logging->master]
[ivy:retrieve] default: Checking cache for: dependency: org.slf4j#slf4j-api;1.7.6 {logging=[master]}
[ivy:retrieve] don't use cache for org.slf4j#slf4j-api;1.7.6: checkModified=true
[ivy:retrieve] ERROR: impossible to acquire lock for org.slf4j#slf4j-api;1.7.6
[ivy:retrieve]          tried C:\Users\user1.dev-pc\.ivy2\local\org.slf4j\slf4j-api\1.7.6\ivys\ivy.xml
[ivy:retrieve]          tried C:\Users\user1.dev-pc\.ivy2\local\org.slf4j\slf4j-api\1.7.6\jars\slf4j-api.jar
[ivy:retrieve]  local: no ivy file nor artifact found for org.slf4j#slf4j-api;1.7.6
[ivy:retrieve] main: Checking cache for: dependency: org.slf4j#slf4j-api;1.7.6 {logging=[master]}
[ivy:retrieve] ERROR: impossible to acquire lock for org.slf4j#slf4j-api;1.7.6
[ivy:retrieve] ERROR: impossible to acquire lock for org.slf4j#slf4j-api;1.7.6
[ivy:retrieve]          tried C:\Users\user1.dev-pc\.ivy2\shared\org.slf4j\slf4j-api\1.7.6\ivys\ivy.xml
[ivy:retrieve]          tried C:\Users\user1.dev-pc\.ivy2\shared\org.slf4j\slf4j-api\1.7.6\jars\slf4j-api.jar
[ivy:retrieve]  shared: no ivy file nor artifact found for org.slf4j#slf4j-api;1.7.6
{code}

"ant clean" also doesn't make a difference.
Deleting the directory ".ivy\cache\org.slf4j\slf4j-api" resolves the issue.

> *.lck files created by "artifact-lock" lock strategy are not cleaned up if ivy quits abruptly
> ---------------------------------------------------------------------------------------------
>
>                 Key: IVY-1388
>                 URL: https://issues.apache.org/jira/browse/IVY-1388
>             Project: Ivy
>          Issue Type: Bug
>    Affects Versions: 2.2.0, 2.3.0-RC1, trunk
>            Reporter: Wei Chen
>            Assignee: Nicolas Lalevée
>             Fix For: 2.3.0
>
>         Attachments: FileBasedLockStrategy.java.patch, patch1.patch
>
>   Original Estimate: 0.5m
>  Remaining Estimate: 0.5m
>
> We have a few build processes running in parallel, all of which share the same ivy cache. In order not to run into any parallel downloading problems, we enabled artifact-lock lock strategy. An annoying problem with the artifact-lock strategy is that the *.lck files which are created as a lock are not cleaned up if the build exits abruptly. For example, while ivy is downloading a big jar, if you Ctrl-C to quit that build process. Those lock files will remain in the metadatas folder. The same happens too if ivy encounters some error and fails the build.
> Those uncleaned lock files will cause problem when you start the build again. The build process will hang while ivy waiting those "locks" to be released, which will never happen automatically. So eventually the build will fail with an ivy error "impossible to acquire lock for xxxyyyzzzz". What makes it worse is that ivy doesn't fail-fast on the default 2 miuntes lock timeout, it seems trying it a few times. In worst scenarios, we have seen the build hangs for 12 minutes and then timeout'd and failed.
> We believe this can be fixed by setting deleteOnExit() for the FileBasedLockStrategy.java class. We have implemented the fix and it works well.
> Patch is provided, could anyone quickly apply this one line change?



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