Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
2252ce6a
Commit
2252ce6a
authored
Aug 24, 2016
by
John Eskew
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Ignore IntegrityErrors upon set_many update save().
parent
d5c48e55
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
2 deletions
+17
-2
lms/djangoapps/courseware/user_state_client.py
+17
-2
No files found.
lms/djangoapps/courseware/user_state_client.py
View file @
2252ce6a
...
...
@@ -6,7 +6,7 @@ data in a Django ORM model.
import
itertools
from
operator
import
attrgetter
from
time
import
time
import
logging
try
:
import
simplejson
as
json
except
ImportError
:
...
...
@@ -14,10 +14,14 @@ except ImportError:
import
dogstats_wrapper
as
dog_stats_api
from
django.contrib.auth.models
import
User
from
django.db
import
transaction
from
django.db.utils
import
IntegrityError
from
xblock.fields
import
Scope
from
courseware.models
import
StudentModule
,
BaseStudentModuleHistory
from
edx_user_state_client.interface
import
XBlockUserStateClient
,
XBlockUserState
log
=
logging
.
getLogger
(
__name__
)
class
DjangoXBlockUserStateClient
(
XBlockUserStateClient
):
"""
...
...
@@ -222,8 +226,19 @@ class DjangoXBlockUserStateClient(XBlockUserStateClient):
current_state
.
update
(
state
)
num_fields_after
=
len
(
current_state
)
student_module
.
state
=
json
.
dumps
(
current_state
)
# We just read this object, so we know that we can do an update
try
:
with
transaction
.
atomic
():
# Updating the object - force_update guarantees no INSERT will occur.
student_module
.
save
(
force_update
=
True
)
except
IntegrityError
:
# The UPDATE above failed. Log information - but ignore the error.
# See https://openedx.atlassian.net/browse/TNL-5365
log
.
warning
(
"set_many: IntegrityError for student {} - course_id {} - usage key {}"
.
format
(
user
,
usage_key
.
course_key
,
usage_key
))
log
.
warning
(
"set_many: All {} block keys: {}"
.
format
(
len
(
block_keys_to_state
),
block_keys_to_state
.
keys
()
))
# The rest of this method exists only to submit DataDog events.
# Remove it once we're no longer interested in the data.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment