Opened 11 years ago
Last modified 11 years ago
#21953 closed Bug
Memory leak in 1.6.1 in DB manager — at Initial Version
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.6 |
Severity: | Release blocker | Keywords: | memory leak DB manager |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Since upgrading from 1.4 to 1.6.1 my app is consuming memory rather rapidly.
I have this issue on both my live Ubuntu 64bit server (python 2.7.5+, django 1.6.1) and on my development Windows 7 32bit (python 2.7.3, django 1.6.1)
After some diagnosis I have created a minimal test app that replicates this issue which I can replicate using both SQLite and Postgresql (9.3, psycopyg2 2.5.2) either using the model manager or raw sql connection.
Here's my test model and test python app. The settings are plain standard with the addition of the 'app1' application:
(I know that the two different test functions do not return the same objects - this is just test code)
from django.db import models
class Customer(models.Model):
name = models.CharField(max_length=256,unique=True)
class Meta:
ordering = id
app_label = 'app1'
import os
import sys
SETTINGS = "testsqlite.settings"
THE_PATH = r'D:\dev\django\testsqlite'
os.environDJANGO_SETTINGS_MODULE = SETTINGS
sys.path.append(THE_PATH)
from django.db import connection
from django.core.exceptions import ObjectDoesNotExist
from models import Customer
def GetCustomerSQL(name):
cursor = connection.cursor()
sql = "SELECT id FROM app1_customer WHERE name = '%s'" % name
cursor.execute(sql)
customer = cursor.fetchone()
del cursor
return customer
def GetCustomer(name):
customer = None
try:
customer = Customer.objects.get(name=name)
except ObjectDoesNotExist:
pass
return customer
while 1:
#customer = GetCustomerSQL('Steve')
customer = GetCustomer('Steve')
del customer