Index: src/io/trove/trove-dbpf/dbpf-mgmt.c
===================================================================
--- src/io/trove/trove-dbpf/dbpf-mgmt.c	(revision 13666)
+++ src/io/trove/trove-dbpf/dbpf-mgmt.c	(revision 13667)
@@ -1858,9 +1858,11 @@
     coll_p->c_low_watermark = 1;
     coll_p->meta_sync_enabled = 1; /* MUST be 1 !*/
 
-
     dbpf_collection_register(coll_p);
     *out_coll_id_p = coll_p->coll_id;
+
+    clear_stranded_bstreams(coll_p->coll_id);
+
     return 1;
 }
 
Index: src/io/trove/trove-dbpf/dbpf-open-cache.c
===================================================================
--- src/io/trove/trove-dbpf/dbpf-open-cache.c	(revision 13666)
+++ src/io/trove/trove-dbpf/dbpf-open-cache.c	(revision 13667)
@@ -22,6 +22,7 @@
 #include <limits.h>
 #include <string.h>
 #include <db.h>
+#include <dirent.h>
 
 #include "trove.h"
 #include "trove-internal.h"
@@ -630,6 +631,67 @@
     DBPF_CLOSE(fd);
 }
 
+void clear_stranded_bstreams(TROVE_coll_id coll_id)
+{
+    char path_name[PATH_MAX];
+    DIR *current_dir = NULL;
+    struct dirent *current_dirent = NULL;
+    struct stat file_info;
+    struct file_struct *tmp_item;
+
+    DBPF_GET_STRANDED_BSTREAM_DIRNAME(path_name, PATH_MAX,
+                                      my_storage_p->name, coll_id);
+
+    /* remove stranded bstreams directory */
+    current_dir = opendir(path_name);
+    if(current_dir)
+    {
+        while((current_dirent = readdir(current_dir)))
+        {
+            if((strcmp(current_dirent->d_name, ".") == 0) ||
+               (strcmp(current_dirent->d_name, "..") == 0))
+            {
+                continue;
+            }
+            tmp_item = (struct file_struct *) malloc(sizeof(struct file_struct));
+            if(!tmp_item)
+            {
+                gossip_err("Unable to allocate memory for file_struct [%d].\n", errno);
+                return;
+            }
+            tmp_item->pathname = malloc(PATH_MAX);
+            if(!tmp_item->pathname)
+            {
+                gossip_err("Unable to allocate memory for pathname[%d].\n", errno);
+                free(tmp_item);
+                return;
+            }
+            snprintf(tmp_item->pathname, PATH_MAX, "%s/%s", path_name,
+                     current_dirent->d_name);
+            if(stat(tmp_item->pathname, &file_info) < 0)
+            {
+                gossip_err("error doing stat on bstream entry\n");
+                continue;
+            }
+            assert(S_ISREG(file_info.st_mode));
+            /* Add to the queue */
+
+            pthread_mutex_lock(&dbpf_unlink_context.mutex);
+            qlist_add_tail(&tmp_item->list_link, &dbpf_unlink_context.global_list);
+            pthread_cond_signal(&dbpf_unlink_context.data_available);
+            pthread_mutex_unlock(&dbpf_unlink_context.mutex);
+            gossip_debug(GOSSIP_DBPF_OPEN_CACHE_DEBUG,
+              "Added [%s] to the queue.\n", tmp_item->pathname);
+        }
+        closedir(current_dir);
+    }
+    else
+    {   
+        gossip_err("Unable to open standed bstream directory [path_name] to "
+          "peform initialization stranded bstream cleanup");
+    }
+}
+
 /*
  * Local variables:
  *  c-indent-level: 4
Index: src/io/trove/trove-dbpf/dbpf-open-cache.h
===================================================================
--- src/io/trove/trove-dbpf/dbpf-open-cache.h	(revision 13666)
+++ src/io/trove/trove-dbpf/dbpf-open-cache.h	(revision 13667)
@@ -44,6 +44,8 @@
     TROVE_coll_id coll_id,
     TROVE_handle handle);
 
+void clear_stranded_bstreams(TROVE_coll_id coll_id);
+    
 #endif /* __DBPF_OPEN_CACHE_H__ */
 
 /*
