java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
| 7 +++
java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java
| 4 +-
java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
| 19 +++++-----
java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
| 7 ++-
4 files changed, 23 insertions(+), 14 deletions(-)
New commits:
commit a096cbcb43f7cdce2853eb607b54824bbd98b10e
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Fri Jan 15 15:09:58 2010 -0500
506279 - speeding up channel.software.addPackages call by about 75 percent
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
index 51ed570..e3e2330 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
@@ -17,6 +17,13 @@ DELETE
</query>
</write-mode>
+<write-mode name="add_channel_packages">
+ <query params="cid">
+ INSERT INTO rhnChannelPackage (channel_id, package_id)
+ select :cid, P.id from rhnPackage P where P.id in (%s)
+ </query>
+</write-mode>
+
<write-mode name="add_org_channel_setting">
<query params="org_id, cid, label">
INSERT
diff --git
a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java
b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java
index 5cab24d..ef2483b 100644
---
a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java
+++
b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java
@@ -76,6 +76,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.Timer;
/**
* ChannelSoftwareHandler
@@ -1031,7 +1032,7 @@ public class ChannelSoftwareHandler extends BaseHandler {
// Try to add the list of packages to the channel. Catch any exceptions and
// convert to FaultExceptions
try {
- ChannelEditor.getInstance().addPackages(loggedInUser, channel, packageIds);
+ ChannelEditor.getInstance().addPackages(loggedInUser, channel, packageIds);
}
catch (PermissionException e) {
throw new PermissionCheckFailureException();
@@ -1052,7 +1053,6 @@ public class ChannelSoftwareHandler extends BaseHandler {
/* Bugzilla # 177673 */
scheduleErrataCacheUpdate(loggedInUser.getOrg(), channel, 3600000);
-
//if we made it this far, the operation was a success!
return 1;
}
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
b/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
index 651ee8a..714f7c2 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
@@ -114,19 +114,20 @@ public class ChannelEditor {
List<Long> existingPids = ChannelFactory.getPackageIds(channel.getId());
- //Loop through packages and add to channel.
+ List list = new ArrayList();
for (Iterator itr = packageIds.iterator(); itr.hasNext();) {
Long pid = convertObjectToLong(itr.next());
- List list = new ArrayList();
- list.add(pid);
- if (add && !existingPids.contains(pid)) {
- ChannelManager.addPackages(channel, list, user);
- }
- else if (!add) {
- ChannelManager.removePackages(channel, list, user);
+ if (!existingPids.contains(pid)) {
+ list.add(pid);
}
}
-
+ if (add) {
+ ChannelManager.addPackages(channel, list, user);
+ }
+ else if (!add) {
+ ChannelManager.removePackages(channel, list, user);
+ }
+
// Mark the affected channel to have it smetadata evaluated, where necessary
// (RHEL5+, mostly)
ChannelManager.queueChannelChange(channel.getLabel(),
"java::changePackages", null);
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
index 48ab715..2324626 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
@@ -2633,11 +2633,12 @@ public class ChannelManager extends BaseManager {
Map params = new HashMap();
params.put("cid", chan.getId());
- WriteMode m = ModeFactory.getWriteMode("Channel_queries",
"add_channel_package");
- for (Long pid : packageIds) {
+ WriteMode m = ModeFactory.getWriteMode("Channel_queries",
"add_channel_packages");
+ m.executeUpdate(params, packageIds);
+ /* for (Long pid : packageIds) {
params.put("pid", pid);
m.executeUpdate(params);
- }
+ }*/
HibernateFactory.getSession().refresh(chan);
Show replies by date