Bug #2220
Empty Directories and Purging not behaving well
| Status: | Closed | Start: | 05/04/2009 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 0% |
||
| Category: | file | |||
| Target version: | 0.25.0 | |||
| Affected version: | 0.25.0 | Branch: | ||
| Keywords: | ||||
| Votes: | 0 |
Description
Using the kind of technique as documented here: http://reductivelabs.com/trac/puppet/wiki/FrequentlyAskedQuestions#i-want-to-manage-a-directory-and-purge-its-contents
I am seeing some regression with 0.25.0:
Manifest:
File{
owner => "root",
group => "root",
mode => "0644",
}
file{"/tmp/special.d/snippets/00_snippet":
content => "Hello World\n"
}
file{"/tmp/special.d":
ensure => directory,
}
file{"/tmp/special.d/snippets":
ensure => directory,
source => "puppet://puppet/modules/puppet/empty",
recurse => true,
purge => true,
force => true,
ignore => ".svn",
}
The first run works well, does what you’d expect:
info: Caching catalog for dev1.mydev.net
notice: //Node[dev1.mydev.net]/File[/tmp/special.d]/ensure: created
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets]/ensure: created
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/checksum: defined 'checksum' as '{md5}e59ff97941044f85df5297e1c302d260'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/content: defined 'content' as '{md5}e59ff97941044f85df5297e1c302d260'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/owner: defined 'owner' as 'root'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/group: defined 'group' as 'root'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/mode: defined 'mode' as '644'
notice: Finished catalog run in 0.25 seconds
Subsequent runs does this though:
info: Caching catalog for dev1.mydev.net
notice: //Node[dev1.mydev.net]/File[/tmp/special.d]/mode: mode changed '644' to '755'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets]/checksum: checksum changed '{mtime}Mon May 04 14:34:59 +0100 2009' to '{mtime}Mon May 04 14:39:18 +0100 2009'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets]/mode: mode changed '644' to '755'
notice: /File[/tmp/special.d/snippets/00_snippet]/ensure: removed
warning: Got an event from invalid vertex File[/tmp/special.d/snippets/00_snippet]
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/checksum: defined 'checksum' as '{md5}e59ff97941044f85df5297e1c302d260'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/content: defined 'content' as '{md5}e59ff97941044f85df5297e1c302d260'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/owner: defined 'owner' as 'root'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/group: defined 'group' as 'root'
notice: //Node[dev1.mydev.net]/File[/tmp/special.d/snippets/00_snippet]/mode: defined 'mode' as '644'
notice: Finished catalog run in 0.25 seconds
There are a few problems here:
Shouldn’t it be leaving the directory modes alone? 0.24.x did the right thing and changed the modes for directories as you’d expect and didn’t in future runs try to fiddle with them
It then removes the File[/tmp/special.d/snippets/00_snippet] resource and creates it again
This isn’t right and is a big regression from 0.24.x for anyone who use snippets to construct files etc.
History
Updated by James Turnbull over 1 year ago
- Category set to file
- Status changed from Unreviewed to Needs design decision
- Assignee set to Luke Kanies
- Target version set to 0.25.0
- Affected version changed from 0.24.7 to 0.25.0
Updated by Luke Kanies over 1 year ago
- Status changed from Needs design decision to Accepted
Updated by Brice Figureau over 1 year ago
- Assignee changed from Luke Kanies to Brice Figureau
I’m taking ownership of this issue. I think it is a caching issue in the File type, i.e. we cache the ‘stat’ too much and then we’re confused…
Updated by Brice Figureau over 1 year ago
- Status changed from Accepted to Ready for Checkin
- Assignee changed from Brice Figureau to James Turnbull
Luke somewhat approved the patch. I think you can merge it.
The patch is available in my github repository, branch tickets/master/2220: http://github.com/masterzen/puppet/tree/tickets/master/2220
Updated by James Turnbull over 1 year ago
- Status changed from Ready for Checkin to Closed
Pushed in commit:“d7be0333ae1fc03bb5b639e7ab8f5431b56d1071” in branch master.