Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error updating an edge value (delete/set) in same request #1216

Closed
cesardevera opened this issue Jul 19, 2017 · 4 comments
Closed

error updating an edge value (delete/set) in same request #1216

cesardevera opened this issue Jul 19, 2017 · 4 comments
Assignees
Labels
kind/bug Something is broken.

Comments

@cesardevera
Copy link

cesardevera commented Jul 19, 2017

hi,

I'm trying to update an edge value by deleting it and the setting it with a new value, in the same request, using the Go client.

it seems that the delete is not working.

here is my test code:
teste2.go.txt

@pawanrawal pawanrawal self-assigned this Jul 20, 2017
@pawanrawal
Copy link
Contributor

pawanrawal commented Jul 20, 2017

@cesardevera Thanks for the detailed code example which helped reproduce and understand the issue immediately. It would work if you did

e = usrnode.Edge("profile")
e.SetValueString("admin")
req.Delete(e)

That is you have to give the current value of the edge. Infact req.Delete(e) gives an error, which you should check. Though, it should be possible to delete the edge without knowing the value, like S P *. Right now you can do that through a raw mutation.

	req.SetQuery(fmt.Sprintf(`mutation {
		delete {
			<%s> <profile> * .
		}
	}`, usrnode))

	resp, err = dgraphClient.Run(context.Background(), &req)
	req.SetQuery(fmt.Sprintf(`mutation {
		set {
			<%s> <profile> "root" .
		}
	}`, usrnode))

I will add helper functions to the client for doing S P * and S * * deletion.

@cesardevera
Copy link
Author

hum... I understood what you said, but I tried the changes and they still didn't work,

could it be a version issue? I'm using:

./dgraph --config config.yaml

Dgraph version   : v0.8.0
Commit SHA-1     : 5e6d0192
Commit timestamp : 2017-07-18 21:52:22 +1000
Branch           : HEAD

I modified my test file in two versions: on that uses mutations and the other that sets the string value, and in both, I separated the delete request from the new set request.

anyway, the output is the same:

dgraph % go run teste2-setValueString.go 
Query1: [{UID:8002 Email:[email protected] Profile:admin}]

error is <nil>
Query2: [{UID:8002 Email:[email protected] Profile:admin} {UID:8002 Email:[email protected] Profile:root}]

8002
8002

dgraph % go run teste2-mutation.go      
Query1: [{UID:9002 Email:[email protected] Profile:admin}]

error is <nil>
Query2: [{UID:9002 Email:[email protected] Profile:admin} {UID:9002 Email:[email protected] Profile:root}]

9002
9002

I attached my tests too.

teste2-mutation.go.txt
teste2-setValueString.go.txt

@pawanrawal
Copy link
Contributor

pawanrawal commented Jul 21, 2017

This is a bug with the Unmarshal function. It is related to passing the same var r Res to Unmarshal multiple times. It just keeps on appending to r.Root. So even though the server second-time returns only one user with Profile as root (can be verified by doing request through http), Unmarshal appends it to the already existing user value with Profile admin.

This is different from how json.Unmarshal behaves, hence I would consider it as a bug and will submit a fix. In the meantime, if you were to clear the Res object as shown in the file on line 113 you won't see this issue.

main.go.txt

@pawanrawal pawanrawal added the kind/bug Something is broken. label Jul 21, 2017
@cesardevera
Copy link
Author

solved! thanks :D

@manishrjain manishrjain added the kind/bug Something is broken. label Mar 22, 2018
jarifibrahim pushed a commit that referenced this issue Mar 16, 2020
Important changes
```
 - Changes to overlap check in compaction.
 - Remove 'this entry should've been caught' log.
 - Changes to write stalling on levels 0 and 1.
 - Compression is disabled by default in Badger.
 - Bloom filter caching in a separate ristretto cache.
 - Compression/Encryption in background.
 - Disable cache by default in badger.
```

The following new changes are being added from badger
`git log ab4352b00a17...91c31ebe8c22`

```
91c31eb Disable cache by default (#1257)
eaf64c0 Add separate cache for bloom filters (#1260)
1bcbefc Add BypassDirLock option (#1243)
c6c1e5e Add support for watching nil prefix in subscribe API (#1246)
b13b927 Compress/Encrypt Blocks in the background (#1227)
bdb2b13 fix changelog for v2.0.2 (#1244)
8dbc982 Add Dkron to README (#1241)
3d95b94 Remove coveralls from Travis Build(#1219)
5b4c0a6 Fix ValueThreshold for in-memory mode (#1235)
617ed7c Initialize vlog before starting compactions in db.Open (#1226)
e908818 Update CHANGELOG for Badger 2.0.2 release. (#1230)
bce069c Fix int overflow for 32bit (#1216)
e029e93 Remove ExampleDB_Subscribe Test (#1214)
8734e3a Add missing package to README for badger.NewEntry (#1223)
78d405a Replace t.Fatal with require.NoError in tests (#1213)
c51748e Fix flaky TestPageBufferReader2 test (#1210)
eee1602 Change else-if statements to idiomatic switch statements. (#1207)
3e25d77 Rework concurrency semantics of valueLog.maxFid (#1184) (#1187)
4676ca9 Add support for caching bloomfilters (#1204)
c3333a5 Disable compression and set ZSTD Compression Level to 1 (#1191)
0acb3f6 Fix L0/L1 stall test (#1201)
7e5a956 Support disabling the cache completely. (#1183) (#1185)
82381ac Update ristretto to version  8f368f2 (#1195)
3747be5 Improve write stalling on level 0 and 1
5870b7b Run all tests on CI (#1189)
01a00cb Add Jaegar to list of projects (#1192)
9d6512b Use fastRand instead of locked-rand in skiplist (#1173)
2698bfc Avoid sync in inmemory mode (#1190)
2a90c66 Remove the 'this entry should've caught' log from value.go (#1170)
0a06173 Fix checkOverlap in compaction (#1166)
0f2e629 Fix windows build (#1177)
03af216 Fix commit sha for WithInMemory in CHANGELOG. (#1172)
23a73cd Update CHANGELOG for v2.0.1 release. (#1181)
465f28a Cast sz to uint32 to fix compilation on 32 bit (#1175)
ea01d38 Rename option builder from WithInmemory to WithInMemory. (#1169)
df99253 Remove ErrGCInMemoryMode in CHANGELOG. (#1171)
8dfdd6d Adding changes for 2.0.1 so far (#1168)
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Something is broken.
Development

Successfully merging a pull request may close this issue.

3 participants