Features/ExecutionParallelYum

= Feature Name = Execution of Parallel yum. and locking should be shifted at the time of installing.

Summary
Any person can execute multiple instances of yum. Right now this is happening but locking need to taken place only when installation taken place. and it need to have way to download the files.

Owner

 * Name: Manish Runwal
 * email: m_runwal@yahoo.com

Current status

 * Targeted release: Fedora 13
 * Last updated: 2009-12-03
 * Percentage of completion: 0%

Detailed Description
Right now when any application is using yum then locking is taken place for using yum. But some time its non-sense(sorry using hard words) to have it locking. e.g. If I am downloading one application and parallelly I want to install another application where their is no common files. but still yum is locked so I can't even download the files. So I want to have locking need to shifted only at the time of installing any package.

So you might have question. lets say if "A" is instance which is downloading one application with having common rpm with "B" instance have it. while downloading it will ask either A or B whom ever taken first downloading, "Do you want to overwrite the downloading?" then it will be user's concern of managing the things. if certain amount of time person have not responded then installation will not be taken place. and whole package installation will be skipped.

Deadlock situation : If on A instance given permission to download then it will have to either locking of that perticular package for downloading for B instance. So on "B" they will given locking and same can't able to proceed installation of B package.

Doing this we can fully optimize yum features. and we can download and install many files. and locking will be taken place only at the time of installation.

Benefit to Fedora
Right now existing yum. let say it will take 50% amount of time to download particular package. and 10% time to check dependencies and 10% time for installation and 10% time for cleaning the older files. (Please note that percentages are assumptions). so actual so when one instances is installing the files. other yum instance will download the files. This will speed up installation process.

Scope
I am not sure. But it will be affected with yum, kpackegekit. and add-remove programs.

How To Test
Here we have different sets of test cases.

0. Start yum to install gedit
 * Normal Executation

1. At the same time yum to install juk/amarok.

2. It will check for dependencies. now here we don't find any collision rpm.

2. So yum will download gedit files. at the same time it will download juk/amarok files.

3. Now it will installed gedit. for juk installation it will get lock as yum is doing installation.

4. Installation lock will be free. and now juk will be installed.

5. Now cleaning process of gedit taken place. and the same time cleaning process of juk will take place.

I hope this will be easier to understand.

Let say any person is installing gedit and another instance any gnome-package 0. yum will parallel download both files.
 * Complex Execution

1. let say one file which yum is downloading other instance of yum is also downloading the same file.

2. So for first instance it will download the collision file. but for other instance he will given message on that terminal(I am expecting that we are doing this on terminal, once everything is properly same features will be used for gui), that "do you want to overwrite package ?" as existing package is downloading by other instance. if he said yes then first instance will not move for installation. while other will go for installation. if their is any deadlock situation then user will abort any instance by either breaking the process.(if its gui then hit cancel)

3. Lets say for another instance user said cancel then still it will download other files. so first instance will have all the files downloaded. and second instance will not download collision file and other files will be downloaded.

4. now first installation process will take place. and other instance will see the lock.

5. Now first process is complete lock will be released and other instances of yum will install the package.

6. Now cleaning of first package taken place without cleaning collision files.

7. Now other process's cleaning take place and removing that collision files as well.

8. And now yum's work is finished.

Little bit complicated to understand but this will be really beneficial for all people.

User Experience
They can download files of both packages on different terminal (might be different user who is accessing same machine).

Dependencies
I am not the fedora developer but sure fedora programmer surely write something about this.

Contingency Plan
Backup plan is that let yum to work as what its working now.

Documentation
This will be same as what I have described in How to test.

Release Notes
Not sure. But I am expecting on Fedora 13

Comments and Discussion

 * See Talk:Features/YourFeatureName