summaryrefslogtreecommitdiff
path: root/system/db/content.go
diff options
context:
space:
mode:
authorSteve Manuel <nilslice@gmail.com>2017-01-12 12:28:05 -0800
committerSteve Manuel <nilslice@gmail.com>2017-01-12 12:28:05 -0800
commit4ced69bd3c4c0e2e0c59b2890fe1647875680727 (patch)
tree9f8d2da9316f0225cebcc556ce54f39f6ed7dc75 /system/db/content.go
parent254f96227ebe9dcc1a3765b8ebe898dc7fb588d4 (diff)
move expensive work outside store.Update in Sort
Diffstat (limited to 'system/db/content.go')
-rw-r--r--system/db/content.go25
1 files changed, 18 insertions, 7 deletions
diff --git a/system/db/content.go b/system/db/content.go
index 5ddf0a7..cec29fd 100644
--- a/system/db/content.go
+++ b/system/db/content.go
@@ -432,29 +432,40 @@ func SortContent(namespace string) {
// sort posts
sort.Sort(posts)
+ // marshal posts to json
+ var bb [][]byte
+ for i := range posts {
+ j, err := json.Marshal(posts[i])
+ if err != nil {
+ // log error and kill sort so __sorted is not in invalid state
+ log.Println("Error marshal post to json in SortContent:", err)
+ return
+ }
+
+ bb = append(bb, j)
+ }
+
// store in <namespace>_sorted bucket, first delete existing
err := store.Update(func(tx *bolt.Tx) error {
bname := []byte(namespace + "__sorted")
err := tx.DeleteBucket(bname)
if err != nil || err != bolt.ErrBucketNotFound {
+ fmt.Println("Error in DeleteBucket")
return err
}
b, err := tx.CreateBucketIfNotExists(bname)
if err != nil {
+ fmt.Println("Error in CreateBucketIfNotExists")
return err
}
// encode to json and store as 'i:post.Time()':post
- for i := range posts {
- j, err := json.Marshal(posts[i])
- if err != nil {
- return err
- }
-
+ for i := range bb {
cid := fmt.Sprintf("%d:%d", i, posts[i].Time())
- err = b.Put([]byte(cid), j)
+ err = b.Put([]byte(cid), bb[i])
if err != nil {
+ fmt.Println("Error in Put")
return err
}
}