Skip to content

Commit 7528577

Browse files
committed
Version 1.5.2
1 parent 478fb77 commit 7528577

File tree

7 files changed

+32
-28
lines changed

7 files changed

+32
-28
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 1.5.2
2+
3+
- JVM: Fixed `d/collect-garbage`
4+
- JVM: Return nil instead of throwing from `d/restore` if there is no db
5+
16
# 1.5.1
27

38
- CLJS: Fixed shadow-cljs warning

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ The intention with DataScript is to be a basic building block in client-side app
1818
## Latest version [![Build Status](https://travis-ci.org/tonsky/datascript.svg?branch=master)](https://travis-ci.org/tonsky/datascript)
1919

2020
```clj
21-
[datascript "1.5.1"]
21+
[datascript "1.5.2"]
2222
```
2323

2424
Important! If you are using shadow-cljs, add
@@ -176,7 +176,7 @@ For more examples, see [our acceptance test suite](test/datascript/test/).
176176
DataScript can be used from any JS engine without additional dependencies:
177177

178178
```html
179-
<script src="https://github.com/tonsky/datascript/releases/download/1.5.1/datascript-1.5.1.min.js"></script>
179+
<script src="https://github.com/tonsky/datascript/releases/download/1.5.2/datascript-1.5.2.min.js"></script>
180180
```
181181

182182
or as a CommonJS module ([npm page](https://www.npmjs.org/package/datascript)):

project.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(def version "1.5.1")
1+
(def version "1.5.2")
22

33
(defproject datascript (str version (System/getenv "DATASCRIPT_CLASSIFIER"))
44
:description "An implementation of Datomic in-memory database and Datalog query engine in ClojureScript"

release-js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "datascript",
3-
"version": "1.5.1",
3+
"version": "1.5.2",
44
"description": "Immutable in-memory triplestore with Datalog queries",
55
"homepage": "https://github.com/tonsky/datascript",
66
"author": "Nikita Prokopov (https://github.com/tonsky)",

release-js/wrapper.prefix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Datascript v1.5.1
2+
* Datascript v1.5.2
33
*
44
* Copyright 2014-2021 Nikita Prokopov
55
*

src/datascript/storage.clj

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -126,21 +126,21 @@
126126

127127
(defn restore-impl [storage opts]
128128
(locking storage
129-
(let [root (-restore storage root-addr)
130-
tail (-restore storage tail-addr)
131-
{:keys [schema eavt aevt avet max-eid max-tx max-addr]} root
132-
_ (vswap! *max-addr max max-addr)
133-
opts (merge root opts)
134-
adapter (make-storage-adapter storage opts)
135-
db (db/restore-db
136-
{:schema schema
137-
:eavt (set/restore-by db/cmp-datoms-eavt eavt adapter opts)
138-
:aevt (set/restore-by db/cmp-datoms-aevt aevt adapter opts)
139-
:avet (set/restore-by db/cmp-datoms-avet avet adapter opts)
140-
:max-eid max-eid
141-
:max-tx max-tx})]
142-
(remember-db db)
143-
[db (mapv #(mapv (fn [[e a v tx]] (db/datom e a v tx)) %) tail)])))
129+
(when-some [root (-restore storage root-addr)]
130+
(let [tail (-restore storage tail-addr)
131+
{:keys [schema eavt aevt avet max-eid max-tx max-addr]} root
132+
_ (vswap! *max-addr max max-addr)
133+
opts (merge root opts)
134+
adapter (make-storage-adapter storage opts)
135+
db (db/restore-db
136+
{:schema schema
137+
:eavt (set/restore-by db/cmp-datoms-eavt eavt adapter opts)
138+
:aevt (set/restore-by db/cmp-datoms-aevt aevt adapter opts)
139+
:avet (set/restore-by db/cmp-datoms-avet avet adapter opts)
140+
:max-eid max-eid
141+
:max-tx max-tx})]
142+
(remember-db db)
143+
[db (mapv #(mapv (fn [[e a v tx]] (db/datom e a v tx)) %) tail)]))))
144144

145145
(defn db-with-tail [db tail]
146146
(reduce
@@ -162,14 +162,14 @@
162162
(.walkAddresses ^PersistentSortedSet (:aevt db) visit-fn)
163163
(.walkAddresses ^PersistentSortedSet (:avet db) visit-fn)))
164164

165-
(defn ^HashSet addresses [dbs]
166-
(let [set (HashSet.)
167-
visit-fn #(.add set %)]
168-
(.add set root-addr)
169-
(.add set tail-addr)
165+
(defn addresses [dbs]
166+
(let [*set (volatile! (transient #{}))
167+
visit-fn #(vswap! *set conj! %)]
168+
(visit-fn root-addr)
169+
(visit-fn tail-addr)
170170
(doseq [db dbs]
171171
(addresses-impl db visit-fn))
172-
set))
172+
(persistent! @*set)))
173173

174174
(defn- read-stored-dbs [storage']
175175
(let [iter ^Iterator (.iterator stored-dbs)]
@@ -198,7 +198,7 @@
198198
(restore storage')) ;; make sure we won’t gc currently stored db
199199
used (addresses dbs)
200200
all (-list-addresses storage')
201-
unused (into [] (remove #(.contains used %)) all)]
201+
unused (into [] (remove used) all)]
202202
(util/log "GC: found" (count dbs) "alive db refs," (count used) "used addrs," (count all) "total addrs," (count unused) "unused")
203203
(-delete storage' unused))))
204204

test/datascript/test/storage.clj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@
197197
(is (= (:avet db) (:avet db')))))))))))
198198

199199
(deftest test-gc
200-
(Thread/sleep 10000)
201200
(let [storage (make-storage)]
202201
(let [db (large-db {:storage storage})]
203202
(d/store db)

0 commit comments

Comments
 (0)