summary refs log tree commit diff stats
path: root/cache.go
diff options
context:
space:
mode:
authorBen Morrison <ben@gbmor.dev>2019-05-27 19:01:04 -0400
committerBen Morrison <ben@gbmor.dev>2019-05-27 19:01:04 -0400
commitd6d0c18cad6426a0562d19b2b0c66a7c2bb4e2c5 (patch)
tree0157890c7bf462db415ad0ed59828576496b2685 /cache.go
parent6f9383517d8dbee557d2b52113e20e08207b533e (diff)
downloadgetwtxt-d6d0c18cad6426a0562d19b2b0c66a7c2bb4e2c5.tar.gz
fixed race condition
Diffstat (limited to 'cache.go')
-rw-r--r--cache.go14
1 files changed, 12 insertions, 2 deletions
diff --git a/cache.go b/cache.go
index 4cb1855..e0fedb1 100644
--- a/cache.go
+++ b/cache.go
@@ -14,11 +14,19 @@ import (
 )
 
 func checkCacheTime() bool {
-	return time.Since(confObj.LastCache) > confObj.CacheInterval
+	confObj.Mu.RLock()
+	answer := time.Since(confObj.LastCache) > confObj.CacheInterval
+	confObj.Mu.RUnlock()
+
+	return answer
 }
 
 func checkDBtime() bool {
-	return time.Since(confObj.LastPush) > confObj.DBInterval
+	confObj.Mu.RLock()
+	answer := time.Since(confObj.LastPush) > confObj.DBInterval
+	confObj.Mu.RUnlock()
+
+	return answer
 }
 
 // Launched by init as a coroutine to watch
@@ -38,6 +46,7 @@ func cacheAndPush() {
 
 func refreshCache() {
 
+	twtxtCache.Mu.RLock()
 	for k := range twtxtCache.Users {
 		err := twtxtCache.UpdateUser(k)
 		if err != nil {
@@ -45,6 +54,7 @@ func refreshCache() {
 			continue
 		}
 	}
+	twtxtCache.Mu.RUnlock()
 
 	remoteRegistries.Mu.RLock()
 	for _, v := range remoteRegistries.List {
='/akkartik/mu/commit/090register-names.subx?h=main&id=f7360e493ac7e4d3fc27a1823db0ba62ef271433'>f7360e49 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
       
                                                      
                       
                  
              
                   
        
                                                                                        







                                                 

                                                                             























































































                                                
== data
Registers:  # (addr stream {(handle array byte), int})
  # a table is a stream
  0xc0/imm32/write
  0/imm32/read
  0xc0/imm32/length
  # data
  # it is perfectly ok to use fake alloc-ids -- as long as you never try to reclaim them
  0x11/imm32/alloc-id $Register-eax/imm32 0/imm32
  0x11/imm32/alloc-id $Register-ecx/imm32 1/imm32
  0x11/imm32/alloc-id $Register-edx/imm32 2/imm32
  0x11/imm32/alloc-id $Register-ebx/imm32 3/imm32
  0x11/imm32/alloc-id $Register-esp/imm32 4/imm32
  0x11/imm32/alloc-id $Register-ebp/imm32 5/imm32
  0x11/imm32/alloc-id $Register-esi/imm32 6/imm32
  0x11/imm32/alloc-id $Register-edi/imm32 7/imm32
  # for 8-byte registers
  # we don't actually check if these are used when they should be; be careful
  0x11/imm32/alloc-id $Register-al/imm32 0/imm32
  0x11/imm32/alloc-id $Register-cl/imm32 1/imm32
  0x11/imm32/alloc-id $Register-dl/imm32 2/imm32
  0x11/imm32/alloc-id $Register-bl/imm32 3/imm32
  0x11/imm32/alloc-id $Register-ah/imm32 4/imm32
  0x11/imm32/alloc-id $Register-ch/imm32 5/imm32
  0x11/imm32/alloc-id $Register-dh/imm32 6/imm32
  0x11/imm32/alloc-id $Register-bh/imm32 7/imm32

$Register-eax:
  0x11/imm32/alloc-id
  3/imm32/size
  0x65/e 0x61/a 0x78/x

$Register-ecx:
  0x11/imm32/alloc-id
  3/imm32/size
  0x65/e 0x63/c 0x78/x

$Register-edx:
  0x11/imm32/alloc-id
  3/imm32/size
  0x65/e 0x64/d 0x78/x

$Register-ebx:
  0x11/imm32/alloc-id
  3/imm32/size
  0x65/e 0x62/b 0x78/x

$Register-esp:
  0x11/imm32/alloc-id
  3/imm32/size
  0x65/e 0x73/s 0x70/p

$Register-ebp:
  0x11/imm32/alloc-id
  3/imm32/size
  0x65/e 0x62/b 0x70/p

$Register-esi:
  0x11/imm32/alloc-id
  3/imm32/size
  0x65/e 0x73/s 0x69/i

$Register-edi:
  0x11/imm32/alloc-id
  3/imm32/size
  0x65/e 0x64/d 0x69/i

$Register-al:
  0x11/imm32/alloc-id
  2/imm32/size
  0x61/a 0x6c/l

$Register-cl:
  0x11/imm32/alloc-id
  2/imm32/size
  0x63/c 0x6c/l

$Register-dl:
  0x11/imm32/alloc-id
  2/imm32/size
  0x64/d 0x6c/l

$Register-bl:
  0x11/imm32/alloc-id
  2/imm32/size
  0x62/b 0x6c/l

$Register-ah:
  0x11/imm32/alloc-id
  2/imm32/size
  0x61/a 0x68/h

$Register-ch:
  0x11/imm32/alloc-id
  2/imm32/size
  0x63/c 0x68/h

$Register-dh:
  0x11/imm32/alloc-id
  2/imm32/size
  0x64/d 0x68/h

$Register-bh:
  0x11/imm32/alloc-id
  2/imm32/size
  0x62/b 0x68/h