You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/11/17 16:23:04 UTC
[4/5] incubator-brooklyn git commit: clean up ServerResource export
persistence folder
clean up ServerResource export persistence folder
previously made lots of messy web-persistence-XXX folders under ~/.brooklyn;
now there is a single `tmp` in there
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/5a5773e5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/5a5773e5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/5a5773e5
Branch: refs/heads/master
Commit: 5a5773e5bb2d94a2e78fd59e33eb12025fc70849
Parents: 3573990
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Nov 17 13:54:35 2014 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Nov 17 13:57:27 2014 +0000
----------------------------------------------------------------------
.../brooklyn/rest/resources/ServerResource.java | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5a5773e5/usage/rest-server/src/main/java/brooklyn/rest/resources/ServerResource.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/main/java/brooklyn/rest/resources/ServerResource.java b/usage/rest-server/src/main/java/brooklyn/rest/resources/ServerResource.java
index 2a4a8c5..04424d4 100644
--- a/usage/rest-server/src/main/java/brooklyn/rest/resources/ServerResource.java
+++ b/usage/rest-server/src/main/java/brooklyn/rest/resources/ServerResource.java
@@ -19,6 +19,7 @@
package brooklyn.rest.resources;
import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -61,6 +62,7 @@ import brooklyn.util.ResourceUtils;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.file.ArchiveBuilder;
import brooklyn.util.flags.TypeCoercions;
+import brooklyn.util.os.Os;
import brooklyn.util.text.Identifiers;
import brooklyn.util.text.Strings;
import brooklyn.util.time.CountdownTimer;
@@ -303,20 +305,32 @@ public class ServerResource extends AbstractBrooklynRestResource implements Serv
if (!Entitlements.isEntitled(mgmt().getEntitlementManager(), Entitlements.SEE_ALL_SERVER_INFO, null))
throw WebResourceUtils.unauthorized("User '%s' is not authorized for this operation", Entitlements.getEntitlementContext().user());
+ File dir = null;
try {
String label = mgmt().getManagementNodeId()+"-"+Time.makeDateSimpleStampString();
PersistenceObjectStore targetStore = BrooklynPersistenceUtils.newPersistenceObjectStore(mgmt(), null,
- "web-persistence-"+label+"-"+Identifiers.makeRandomId(4));
+ "tmp/web-persistence-"+label+"-"+Identifiers.makeRandomId(4));
+ dir = ((FileBasedObjectStore)targetStore).getBaseDir();
+ // only register the parent dir because that will prevent leaks for the random ID
+ Os.deleteOnExitEmptyParentsUpTo(dir.getParentFile(), dir.getParentFile());
BrooklynPersistenceUtils.writeMemento(mgmt(), targetStore, preferredOrigin);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ArchiveBuilder.zip().addDirContentsAt( ((FileBasedObjectStore)targetStore).getBaseDir(), ((FileBasedObjectStore)targetStore).getBaseDir().getName() ).stream(baos);
+ Os.deleteRecursively(dir);
String filename = "brooklyn-state-"+label+".zip";
return Response.ok(baos.toByteArray(), MediaType.APPLICATION_OCTET_STREAM_TYPE)
.header("Content-Disposition","attachment; filename = "+filename)
.build();
} catch (Exception e) {
log.warn("Unable to serve persistence data (rethrowing): "+e, e);
+ if (dir!=null) {
+ try {
+ Os.deleteRecursively(dir);
+ } catch (Exception e2) {
+ log.warn("Ignoring error deleting '"+dir+"' after another error, throwing original error ("+e+"); ignored error deleting is: "+e2);
+ }
+ }
throw Exceptions.propagate(e);
}
}