Fix deadlocks when reading/writing off-page duplicate tree
Resolves: #1349779
This commit is contained in:
		
							parent
							
								
									0f9eac24b2
								
							
						
					
					
						commit
						10b101d3ad
					
				
							
								
								
									
										14
									
								
								checkpoint-opd-deadlock.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								checkpoint-opd-deadlock.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					--- db-5.3.21/src/db/db_cam.c.opd_deadlock	2017-10-31 12:20:54.118979690 +0100
 | 
				
			||||||
 | 
					+++ db-5.3.21/src/db/db_cam.c	2017-10-31 12:21:06.828739341 +0100
 | 
				
			||||||
 | 
					@@ -868,6 +868,11 @@
 | 
				
			||||||
 | 
					 	    flags == DB_PREV || flags == DB_PREV_DUP)) {
 | 
				
			||||||
 | 
					 		if (tmp_rmw && (ret = dbc->am_writelock(dbc)) != 0)
 | 
				
			||||||
 | 
					 			goto err;
 | 
				
			||||||
 | 
					+        /* Latch the primary tree page here in order to not deadlock later. */
 | 
				
			||||||
 | 
					+		if (cp->page == NULL &&
 | 
				
			||||||
 | 
					+		    (ret = __memp_fget(mpf, &cp->pgno,
 | 
				
			||||||
 | 
					+			 dbc->thread_info, dbc->txn, 0, &cp->page)) != 0)
 | 
				
			||||||
 | 
					+			goto err;
 | 
				
			||||||
 | 
					 		if (F_ISSET(dbc, DBC_TRANSIENT))
 | 
				
			||||||
 | 
					 			opd = cp->opd;
 | 
				
			||||||
 | 
					 		else if ((ret = __dbc_idup(cp->opd, &opd, DB_POSITION)) != 0)
 | 
				
			||||||
							
								
								
									
										12
									
								
								libdb.spec
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								libdb.spec
									
									
									
									
									
								
							@ -4,7 +4,7 @@
 | 
				
			|||||||
Summary: The Berkeley DB database library for C
 | 
					Summary: The Berkeley DB database library for C
 | 
				
			||||||
Name: libdb
 | 
					Name: libdb
 | 
				
			||||||
Version: 5.3.28
 | 
					Version: 5.3.28
 | 
				
			||||||
Release: 28%{?dist}
 | 
					Release: 29%{?dist}
 | 
				
			||||||
Source0: http://download.oracle.com/berkeley-db/db-%{version}.tar.gz
 | 
					Source0: http://download.oracle.com/berkeley-db/db-%{version}.tar.gz
 | 
				
			||||||
Source1: http://download.oracle.com/berkeley-db/db.1.85.tar.gz
 | 
					Source1: http://download.oracle.com/berkeley-db/db.1.85.tar.gz
 | 
				
			||||||
# For mt19937db.c
 | 
					# For mt19937db.c
 | 
				
			||||||
@ -43,6 +43,8 @@ Patch32: db-5.3.28-rpm-lock-check.patch
 | 
				
			|||||||
# downstream patch to hotfix rhbz#1464033, sent upstream
 | 
					# downstream patch to hotfix rhbz#1464033, sent upstream
 | 
				
			||||||
Patch33: db-5.3.28-cwd-db_config.patch
 | 
					Patch33: db-5.3.28-cwd-db_config.patch
 | 
				
			||||||
Patch34: libdb-5.3.21-region-size-check.patch
 | 
					Patch34: libdb-5.3.21-region-size-check.patch
 | 
				
			||||||
 | 
					# Patch sent upstream
 | 
				
			||||||
 | 
					Patch35: checkpoint-opd-deadlock.patch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
URL: http://www.oracle.com/database/berkeley-db/
 | 
					URL: http://www.oracle.com/database/berkeley-db/
 | 
				
			||||||
License: BSD and LGPLv2 and Sleepycat
 | 
					License: BSD and LGPLv2 and Sleepycat
 | 
				
			||||||
@ -240,6 +242,7 @@ popd
 | 
				
			|||||||
%patch32 -p1
 | 
					%patch32 -p1
 | 
				
			||||||
%patch33 -p1
 | 
					%patch33 -p1
 | 
				
			||||||
%patch34 -p1
 | 
					%patch34 -p1
 | 
				
			||||||
 | 
					%patch35 -p1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cd dist
 | 
					cd dist
 | 
				
			||||||
./s_config
 | 
					./s_config
 | 
				
			||||||
@ -451,10 +454,13 @@ rm -rf ${RPM_BUILD_ROOT}
 | 
				
			|||||||
%{_libdir}/libdb_java.so
 | 
					%{_libdir}/libdb_java.so
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%changelog
 | 
					%changelog
 | 
				
			||||||
* Tue Oct 24 2017 Petr Kubat <pkubat@redhat.com> 5.3.21-28
 | 
					* Tue Oct 31 2017 Petr Kubat <pkubat@redhat.com> 5.3.28-29
 | 
				
			||||||
 | 
					- Fix deadlocks when reading/writing off-page duplicate tree (#1349779)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Tue Oct 24 2017 Petr Kubat <pkubat@redhat.com> 5.3.28-28
 | 
				
			||||||
- Run a number of quick subsystem checks on build
 | 
					- Run a number of quick subsystem checks on build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Thu Sep 07 2017 Petr Kubat <pkubat@redhat.com> 5.3.21-27
 | 
					* Thu Sep 07 2017 Petr Kubat <pkubat@redhat.com> 5.3.28-27
 | 
				
			||||||
- Fail properly when encountering removed or 0-byte regions (#1471011)
 | 
					- Fail properly when encountering removed or 0-byte regions (#1471011)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.28-26
 | 
					* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.28-26
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user