View | Details | Raw Unified | Return to bug 202822 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/rse/internal/subsystems/shells/dstore/DStoreServiceCommandShell.java (+109 lines)
Lines 13-24 Link Here
13
 * 
13
 * 
14
 * Contributors:
14
 * Contributors:
15
 * {Name} (company) - description of contribution.
15
 * {Name} (company) - description of contribution.
16
 *  David McKnight  (IBM)  - [202822] cleanup output datalements after use
16
 *******************************************************************************/
17
 *******************************************************************************/
17
18
18
package org.eclipse.rse.internal.subsystems.shells.dstore;
19
package org.eclipse.rse.internal.subsystems.shells.dstore;
19
20
20
import org.eclipse.core.runtime.NullProgressMonitor;
21
import org.eclipse.core.runtime.NullProgressMonitor;
21
import org.eclipse.dstore.core.model.DataElement;
22
import org.eclipse.dstore.core.model.DataElement;
23
import org.eclipse.dstore.core.model.DataStore;
24
import org.eclipse.dstore.extra.DomainEvent;
25
import org.eclipse.dstore.extra.IDomainListener;
22
import org.eclipse.rse.internal.services.dstore.shells.DStoreHostOutput;
26
import org.eclipse.rse.internal.services.dstore.shells.DStoreHostOutput;
23
import org.eclipse.rse.internal.services.dstore.shells.DStoreHostShell;
27
import org.eclipse.rse.internal.services.dstore.shells.DStoreHostShell;
24
import org.eclipse.rse.internal.services.dstore.shells.DStoreShellOutputReader;
28
import org.eclipse.rse.internal.services.dstore.shells.DStoreShellOutputReader;
Lines 32-41 Link Here
32
import org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteCmdSubSystem;
36
import org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteCmdSubSystem;
33
import org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteOutput;
37
import org.eclipse.rse.subsystems.shells.core.subsystems.IRemoteOutput;
34
import org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem.ServiceCommandShell;
38
import org.eclipse.rse.subsystems.shells.core.subsystems.servicesubsystem.ServiceCommandShell;
39
import org.eclipse.swt.widgets.Shell;
35
40
36
public class DStoreServiceCommandShell extends ServiceCommandShell
41
public class DStoreServiceCommandShell extends ServiceCommandShell
37
{
42
{
43
	private class CleanUpSpirited extends Thread implements IDomainListener
44
	{
45
		private DataElement _status;
46
		private DataStore _ds;
47
		private String _name;
48
		private boolean _done = false;
49
		
50
		public CleanUpSpirited(DataElement status, String name)
51
		{
52
			_status = status;
53
			_ds = status.getDataStore();
54
			_ds.getDomainNotifier().addDomainListener(this);
55
			_name = name;
56
		}
57
		
58
		public void domainChanged(DomainEvent e) 
59
		{
60
			deleteElements();
61
		}
62
		
63
		public void run()
64
		{			
65
			while (!_done)
66
			{
67
				try
68
				{
69
					Thread.sleep(10000);
70
				}
71
				catch (Exception e)
72
				{					
73
				}
74
				deleteElements();
75
			}
76
		}
77
		
78
		private void deleteElements()
79
		{
80
			if (_status.getNestedSize() > 0)
81
			{
82
				//synchronized (_status)
83
				{
84
					int ssize = _status.getNestedSize();
85
				if (_status.get(ssize - 1).isSpirit())
86
				{
87
					System.out.println("deleting for "+ _name);
88
					// delete
89
					_ds.deleteObjects(_status);
90
					_ds.refresh(_status);			
91
					
92
					_ds.getDomainNotifier().removeDomainListener(this);
93
					_done = true;
94
				}
95
				}
96
			}		
97
		}
38
98
99
		public Shell getShell() {
100
			// TODO Auto-generated method stub
101
			return null;
102
		}
103
104
		public boolean listeningTo(DomainEvent e) {
105
			if (e.getParent() == _status)
106
				return true;
107
			return false;
108
		}
109
		
110
	}
111
	
39
	public DStoreServiceCommandShell(IRemoteCmdSubSystem cmdSS, IHostShell hostShell)
112
	public DStoreServiceCommandShell(IRemoteCmdSubSystem cmdSS, IHostShell hostShell)
40
	{
113
	{
41
		super(cmdSS, hostShell);
114
		super(cmdSS, hostShell);
Lines 158-161 Link Here
158
		return activeShell;
231
		return activeShell;
159
	}
232
	}
160
	
233
	
234
	public void removeOutput()
235
	{			
236
		DStoreHostShell shell = (DStoreHostShell)getHostShell();
237
		DataElement status = shell.getStatus();
238
		DataStore ds = status.getDataStore();
239
240
		int ssize = status.getNestedSize();
241
		if (status.get(ssize - 1).isSpirit() || !ds.isDoSpirit()) 
242
		{
243
			// objects can be deleted directly at this point since there will be no more updates from the server
244
			ds.deleteObjects(status);
245
			ds.refresh(status);
246
		}
247
		else
248
		{
249
			// cleanup later
250
			// objects need to be deleted later since the server will still be sending spirited update
251
			// if we don't defer this, then the deleted elements would get recreated when the spirits are updated
252
			CleanUpSpirited cleanUp = new CleanUpSpirited(status, getId());					
253
			cleanUp.start();
254
		}
255
256
		
257
		// cleanup on host should be taking care of that
258
		// ds.setObject(_commandElement);	
259
		
260
		synchronized(_output)
261
		{
262
			_output.clear();			
263
		}
264
		
265
	//	noDE = ds.getHashMap().size();
266
	//	System.out.println("DataElements:"+noDE);
267
		//ds.printTree("2>", ds.getLogRoot());
268
	}
269
	
161
}
270
}
(-)src/org/eclipse/rse/internal/services/dstore/files/DStoreFileService.java (-4 / +1 lines)
Lines 200-210 Link Here
200
			String hostEncoding, IProgressMonitor monitor)
200
			String hostEncoding, IProgressMonitor monitor)
201
	{
201
	{
202
		BufferedInputStream bufInputStream = null;
202
		BufferedInputStream bufInputStream = null;
203
204
	
205
		boolean isCancelled = false;
206
207
	
203
	
204
		boolean isCancelled = false;	
208
	
205
	
209
		try
206
		try
210
		{	
207
		{	
(-)miners/org/eclipse/rse/internal/dstore/universal/miners/command/CommandMinerThread.java (-28 / +39 lines)
Lines 13-18 Link Here
13
 * 
13
 * 
14
 * Contributors:
14
 * Contributors:
15
 * {Name} (company) - description of contribution.
15
 * {Name} (company) - description of contribution.
16
 *  David McKnight  (IBM)  - [202822] updating cleanup
16
 *******************************************************************************/
17
 *******************************************************************************/
17
18
18
package org.eclipse.rse.internal.dstore.universal.miners.command;
19
package org.eclipse.rse.internal.dstore.universal.miners.command;
Lines 833-873 Link Here
833
	    }
834
	    }
834
	}
835
	}
835
	
836
	
837
838
	
836
	public void cleanupThread()
839
	public void cleanupThread()
837
	{
840
	{
838
		// disconnecting all
839
		_dataStore.disconnectObjects(_status);
840
		
841
		
841
842
		_isDone = true;
842
		// clean up the associated environment
843
		try
843
		List projectEnvReference = _subject.getAssociated("inhabits"); //$NON-NLS-1$
844
845
		if (projectEnvReference != null)
846
		{
844
		{
847
			DataElement env = (DataElement)projectEnvReference.get(0);
845
848
			DataElement envParent = env.getParent();			
849
			_dataStore.deleteObject(envParent, env);
850
			_dataStore.refresh(envParent);
851
		}
852
		_dataStore.disconnectObject(_subject); //bug 70420
853
		
854
		
846
		
855
		refreshStatus();
847
856
	    /*
848
	    /*
857
		if (_isShell)
849
		if (_isShell)
858
		{
850
		{
859
			sendInput("#exit");
851
			sendInput("#exit");
860
		}*/
852
		}*/
861
		
853
862
		_isDone = true;
863
		try
864
		{
865
			_status.setAttribute(DE.A_NAME, "done"); //$NON-NLS-1$
866
			_dataStore.refresh(_status, true);
867
			_stdOutputHandler.finish();
868
			_stdErrorHandler.finish();
869
			_stdInput.close();
870
			_stdError.close();
871
			if (_theProcess != null)
854
			if (_theProcess != null)
872
			{
855
			{
873
				int exitcode;
856
				int exitcode;
Lines 880-886 Link Here
880
					else
863
					else
881
					{
864
					{
882
						exitcode = _theProcess.exitValue();
865
						exitcode = _theProcess.exitValue();
883
						createObject("prompt", "> Shell Completed (exit code = " + exitcode + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
866
						createObject("prompt", "> Shell Completed (exit code = " + exitcode + ")");
884
					}
867
					}
885
				}
868
				}
886
				catch (IllegalThreadStateException e)
869
				catch (IllegalThreadStateException e)
Lines 890-902 Link Here
890
				}
873
				}
891
				_theProcess = null;
874
				_theProcess = null;
892
			}
875
			}
876
			
877
878
			_stdOutputHandler.finish();
879
			_stdErrorHandler.finish();
880
			_stdInput.close();
881
			_stdError.close();
882
			
883
			_status.setAttribute(DE.A_NAME, "done");
884
			_dataStore.refresh(_status);
885
	
886
			System.out.println("cleaupThread");
887
		
888
		// disconnecting all
889
	
890
		_dataStore.disconnectObjects(_status);
891
		
892
893
		// clean up the associated environment
894
		List projectEnvReference = _subject.getAssociated("inhabits");
895
896
		if (projectEnvReference != null)
897
		{
898
			DataElement env = (DataElement)projectEnvReference.get(0);
899
			DataElement envParent = env.getParent();			
900
			_dataStore.deleteObject(envParent, env);
901
			_dataStore.refresh(envParent);
902
		}
903
		_dataStore.disconnectObject(_subject); //bug 70420
893
		}
904
		}
894
		catch (IOException e)
905
		catch (IOException e)
895
		{
906
		{
896
			e.printStackTrace();
907
			e.printStackTrace();
897
		}
908
		}				
898
	}
909
	}
899
910
	
900
	public void interpretLine(String line, boolean stdError)
911
	public void interpretLine(String line, boolean stdError)
901
	{
912
	{
902
		// for prompting
913
		// for prompting
(-)miners/org/eclipse/rse/dstore/universal/miners/CommandMiner.java (-4 / +5 lines)
Lines 13-18 Link Here
13
 * 
13
 * 
14
 * Contributors:
14
 * Contributors:
15
 * David McKnight  (IBM)  - [191599] use specified encoding for shell
15
 * David McKnight  (IBM)  - [191599] use specified encoding for shell
16
 * David McKnight  (IBM)  - [202822] canceled output should be created before thread cleanup
16
 *******************************************************************************/
17
 *******************************************************************************/
17
18
18
package org.eclipse.rse.dstore.universal.miners;
19
package org.eclipse.rse.dstore.universal.miners;
Lines 265-271 Link Here
265
	{
266
	{
266
		CommandMinerThread theThread = (CommandMinerThread) _threads.get(status.getAttribute(DE.A_ID));
267
		CommandMinerThread theThread = (CommandMinerThread) _threads.get(status.getAttribute(DE.A_ID));
267
		if (theThread != null)
268
		if (theThread != null)
268
		{		    
269
		{	
270
			_dataStore.createObject(status, "stdout", "Command Cancelled by User Request"); //$NON-NLS-1$ //$NON-NLS-2$
271
269
			theThread.stopThread();
272
			theThread.stopThread();
270
			theThread.sendExit();
273
			theThread.sendExit();
271
			
274
			
Lines 274-287 Link Here
274
			while (!done)
277
			while (!done)
275
				if ((!theThread.isAlive()) || (stopIn < System.currentTimeMillis()))
278
				if ((!theThread.isAlive()) || (stopIn < System.currentTimeMillis()))
276
					done = true;
279
					done = true;
277
			_dataStore.createObject(status, "stdout", "Command Cancelled by User Request"); //$NON-NLS-1$ //$NON-NLS-2$
278
			_dataStore.refresh(status);
279
		}
280
		}
280
	}
281
	}
281
282
282
	public String getVersion()
283
	public String getVersion()
283
	{
284
	{
284
		return "6.4.0"; //$NON-NLS-1$
285
		return "8.0.0"; //$NON-NLS-1$
285
	}
286
	}
286
287
287
}
288
}
(-)src/org/eclipse/dstore/internal/core/util/DataElementRemover.java (-14 / +20 lines)
Lines 13-24 Link Here
13
 * 
13
 * 
14
 * Contributors:
14
 * Contributors:
15
 * {Name} (company) - description of contribution.
15
 * {Name} (company) - description of contribution.
16
 *  David McKnight  (IBM)  - [202822] don't need to remove children from map here
16
 *******************************************************************************/
17
 *******************************************************************************/
17
18
18
package org.eclipse.dstore.internal.core.util;
19
package org.eclipse.dstore.internal.core.util;
19
20
21
import java.util.ArrayList;
20
import java.util.LinkedList;
22
import java.util.LinkedList;
21
import java.util.List;
22
23
23
import org.eclipse.dstore.core.model.DataElement;
24
import org.eclipse.dstore.core.model.DataElement;
24
import org.eclipse.dstore.core.model.DataStore;
25
import org.eclipse.dstore.core.model.DataStore;
Lines 39-46 Link Here
39
	// that are older than _expiryTime milliseconds are removed.
40
	// that are older than _expiryTime milliseconds are removed.
40
	public static final int DEFAULT_EXPIRY_TIME = 600; // in seconds
41
	public static final int DEFAULT_EXPIRY_TIME = 600; // in seconds
41
	public static final int DEFAULT_INTERVAL_TIME = 60; // in seconds
42
	public static final int DEFAULT_INTERVAL_TIME = 60; // in seconds
42
	private int _intervalTime = DEFAULT_INTERVAL_TIME * 100;
43
	private int _intervalTime = DEFAULT_INTERVAL_TIME * 10;
43
	private int _expiryTime = DEFAULT_EXPIRY_TIME * 100;
44
	private int _expiryTime = DEFAULT_EXPIRY_TIME * 10;
44
	public static final String EXPIRY_TIME_PROPERTY_NAME = "SPIRIT_EXPIRY_TIME"; //$NON-NLS-1$
45
	public static final String EXPIRY_TIME_PROPERTY_NAME = "SPIRIT_EXPIRY_TIME"; //$NON-NLS-1$
45
	public static final String INTERVAL_TIME_PROPERTY_NAME = "SPIRIT_INTERVAL_TIME"; //$NON-NLS-1$
46
	public static final String INTERVAL_TIME_PROPERTY_NAME = "SPIRIT_INTERVAL_TIME"; //$NON-NLS-1$
46
	
47
	
Lines 96-104 Link Here
96
	}
97
	}
97
98
98
	public synchronized void addToQueueForRemoval(DataElement element)
99
	public synchronized void addToQueueForRemoval(DataElement element)
99
	{
100
	{		
101
		System.out.println("dis:"+element.getName());
100
		synchronized (_queue) 
102
		synchronized (_queue) 
101
		{
103
		{
104
			
102
			if (_dataStore.isDoSpirit() && _dataStore == element.getDataStore())
105
			if (_dataStore.isDoSpirit() && _dataStore == element.getDataStore())
103
			{
106
			{
104
				QueueItem item = new QueueItem(element, System.currentTimeMillis());
107
				QueueItem item = new QueueItem(element, System.currentTimeMillis());
Lines 116-121 Link Here
116
	{
119
	{
117
		synchronized (_queue)
120
		synchronized (_queue)
118
		{
121
		{
122
			
123
			System.out.println("spiriting");
119
			_dataStore.memLog("           "); //$NON-NLS-1$
124
			_dataStore.memLog("           "); //$NON-NLS-1$
120
			int disconnected = 0;
125
			int disconnected = 0;
121
			if (!_dataStore.isDoSpirit())
126
			if (!_dataStore.isDoSpirit())
Lines 136-148 Link Here
136
			
141
			
137
			_dataStore.memLog("Size of queue: " + _queue.size()); //$NON-NLS-1$
142
			_dataStore.memLog("Size of queue: " + _queue.size()); //$NON-NLS-1$
138
			
143
			
144
			ArrayList toRefresh = new ArrayList();
139
			while (_queue.size() > 0 && System.currentTimeMillis() - ((QueueItem) _queue.getFirst()).timeStamp > _expiryTime)
145
			while (_queue.size() > 0 && System.currentTimeMillis() - ((QueueItem) _queue.getFirst()).timeStamp > _expiryTime)
140
			{
146
			{
141
				DataElement toBeDisconnected = ((QueueItem) _queue.removeFirst()).dataElement;
147
				DataElement toBeDisconnected = ((QueueItem) _queue.removeFirst()).dataElement;
142
				if (!toBeDisconnected.isSpirit()) 
148
				if (!toBeDisconnected.isSpirit()) 
143
				{
149
				{
144
					toBeDisconnected.setSpirit(true);
150
					toBeDisconnected.setSpirit(true);
145
					_dataStore.refresh(toBeDisconnected);
151
					toBeDisconnected.setUpdated(false);
152
					DataElement parent = toBeDisconnected.getParent();
153
					if (!toRefresh.contains(parent))
154
					{
155
						toRefresh.add(toBeDisconnected.getParent());
156
					}
157
						//_dataStore.refresh(toBeDisconnected);
146
					disconnected++;
158
					disconnected++;
147
					numDisconnected++;
159
					numDisconnected++;
148
				}
160
				}
Lines 152-157 Link Here
152
				}
164
				}
153
				unmap(toBeDisconnected);
165
				unmap(toBeDisconnected);
154
			}
166
			}
167
	
168
			_dataStore.refresh(toRefresh);
169
			
155
			_dataStore.memLog("Disconnected " + disconnected + " DataElements."); //$NON-NLS-1$ //$NON-NLS-2$
170
			_dataStore.memLog("Disconnected " + disconnected + " DataElements."); //$NON-NLS-1$ //$NON-NLS-2$
156
			_dataStore.memLog("Elements created so far: " + numCreated); //$NON-NLS-1$
171
			_dataStore.memLog("Elements created so far: " + numCreated); //$NON-NLS-1$
157
			_dataStore.memLog("Elements disconnected so far: " + numDisconnected); //$NON-NLS-1$
172
			_dataStore.memLog("Elements disconnected so far: " + numDisconnected); //$NON-NLS-1$
Lines 162-176 Link Here
162
	
177
	
163
	private void unmap(DataElement element)
178
	private void unmap(DataElement element)
164
	{	 
179
	{	 
165
		List children = element.getNestedData();
166
		if (children != null)
167
		{
168
			for (int i = 0; i < children.size(); i++)
169
			{
170
				DataElement child = (DataElement)children.get(i);
171
				unmap(child);
172
			}
173
		}
174
		_dataStore.getHashMap().remove(element.getId());
180
		_dataStore.getHashMap().remove(element.getId());
175
	}
181
	}
176
	
182
	
(-)src/org/eclipse/dstore/core/model/DataElement.java (-1 / +1 lines)
Lines 1657-1663 Link Here
1657
			_isUpdated = false;
1657
			_isUpdated = false;
1658
			_isExpanded = true;
1658
			_isExpanded = true;
1659
			_buffer = null;
1659
			_buffer = null;
1660
			//_nestedData = null;
1660
			//_nestedData = null; // commented out this null setting so that the children of this element can be properly deleted
1661
		}
1661
		}
1662
	}
1662
	}
1663
	
1663
	
(-)src/org/eclipse/dstore/core/model/DataStore.java (-6 / +12 lines)
Lines 14-19 Link Here
14
 * Contributors:
14
 * Contributors:
15
 * Michael Berger (IBM) - 146326 fixed erroneously disconnected dstore elements.
15
 * Michael Berger (IBM) - 146326 fixed erroneously disconnected dstore elements.
16
 * Michael Berger (IBM) - 145799 added refresh() method with depth parameter.
16
 * Michael Berger (IBM) - 145799 added refresh() method with depth parameter.
17
 * David McKnight (IBM) - 202822 findDeleted should not be synchronized
17
 *******************************************************************************/
18
 *******************************************************************************/
18
19
19
package org.eclipse.dstore.core.model;
20
package org.eclipse.dstore.core.model;
Lines 1657-1663 Link Here
1657
	 */
1658
	 */
1658
	public void disconnectObjects(DataElement from)
1659
	public void disconnectObjects(DataElement from)
1659
	{
1660
	{
1660
		if (!isDoSpirit()) return;
1661
		if (!isDoSpirit())
1662
			{
1663
			System.out.println("not doing spirit");
1664
			return;
1665
			}
1661
		if (from != null)
1666
		if (from != null)
1662
		{
1667
		{
1663
			for (int i = from.getNestedSize() - 1; i >= 0; i--)
1668
			for (int i = from.getNestedSize() - 1; i >= 0; i--)
Lines 2629-2635 Link Here
2629
	 * @param root where to search from 
2634
	 * @param root where to search from 
2630
	 * @return a list of elements
2635
	 * @return a list of elements
2631
	 */
2636
	 */
2632
	public synchronized List findDeleted(DataElement root)
2637
	public List findDeleted(DataElement root)
2633
	{
2638
	{
2634
		return findDeleted(root, 10);
2639
		return findDeleted(root, 10);
2635
	}
2640
	}
Lines 2641-2650 Link Here
2641
	 * @param type the descriptor representing the type of the objects to search for 
2646
	 * @param type the descriptor representing the type of the objects to search for 
2642
	 * @return a list of elements
2647
	 * @return a list of elements
2643
	 */
2648
	 */
2644
	public synchronized List findDeleted(DataElement root, int depth)
2649
	public List findDeleted(DataElement root, int depth)
2645
	{
2650
	{
2646
		ArrayList results = new ArrayList();
2651
		ArrayList results = new ArrayList();
2647
		synchronized (root)
2652
//		synchronized (root)
2653
		// synchronized can cause hang here..but may not be necessary anyway since
2654
		// we're not adding or removing anything here
2648
		{
2655
		{
2649
			if (root != null && root.getDataStore() == this)
2656
			if (root != null && root.getDataStore() == this)
2650
			{
2657
			{
Lines 3756-3763 Link Here
3756
			for (int i = 0; i < toDelete.getNestedSize(); i++)
3763
			for (int i = 0; i < toDelete.getNestedSize(); i++)
3757
			{
3764
			{
3758
				DataElement subDelete = toDelete.get(i);
3765
				DataElement subDelete = toDelete.get(i);
3759
				if (subDelete != null && subDelete.getDataStore() == this/* && !subDelete.isDeleted()*/) // on server, spirited are considered deleted
3766
				if (subDelete != null && subDelete.getDataStore() == this && !subDelete.isDeleted()) 				{
3760
				{
3761
					deleteObjectHelper(toDelete, subDelete, depth);
3767
					deleteObjectHelper(toDelete, subDelete, depth);
3762
				}
3768
				}
3763
			}
3769
			}
(-)src/org/eclipse/dstore/core/model/UpdateHandler.java (-5 / +9 lines)
Lines 13-18 Link Here
13
 * 
13
 * 
14
 * Contributors:
14
 * Contributors:
15
 * {Name} (company) - description of contribution.
15
 * {Name} (company) - description of contribution.
16
 * David McKnight   (IBM)   [202822] should not be synchronizing on clean method
16
 *******************************************************************************/
17
 *******************************************************************************/
17
18
18
package org.eclipse.dstore.core.model;
19
package org.eclipse.dstore.core.model;
Lines 67-73 Link Here
67
		clean(object, 2);
68
		clean(object, 2);
68
	}
69
	}
69
70
70
	protected synchronized void clean(DataElement object, int depth)
71
	protected void clean(DataElement object, int depth)
71
	{
72
	{
72
		if ((depth > 0) && (object != null) && object.getNestedSize() > 0)
73
		if ((depth > 0) && (object != null) && object.getNestedSize() > 0)
73
		{
74
		{
Lines 78-84 Link Here
78
				DataElement child = (DataElement) deletedList.get(i);
79
				DataElement child = (DataElement) deletedList.get(i);
79
				if (child != null && child.isDeleted())
80
				if (child != null && child.isDeleted())
80
				{
81
				{
81
					clean(child, depth - 1);
82
					DataElement parent = child.getParent();
82
					DataElement parent = child.getParent();
83
					DataElementRemover.addToRemovedCount();
83
					DataElementRemover.addToRemovedCount();
84
					
84
					
Lines 91-105 Link Here
91
					
91
					
92
					if (parent != null)
92
					if (parent != null)
93
					{
93
					{
94
						parent.removeNestedData(child);
94
						synchronized (parent)
95
						{
96
							parent.removeNestedData(child);
97
						}
95
					}
98
					}
96
				  _dataStore.addToRecycled(child);
99
				//  _dataStore.addToRecycled(child);
97
				}
100
				}
98
			}
101
			}
99
102
100
			deletedList.clear();
103
			deletedList.clear();
101
		}
104
		}
102
		
105
		// delete objects under temproot
106
		_dataStore.getTempRoot().removeNestedData();
103
		
107
		
104
	}
108
	}
105
109
(-)src/org/eclipse/rse/connectorservice/dstore/DStoreConnectorService.java (-1 / +19 lines)
Lines 15-20 Link Here
15
 * Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType 
15
 * Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType 
16
 * Martin Oberhuber (Wind River) - [186640] Add IRSESystemType.testProperty()
16
 * Martin Oberhuber (Wind River) - [186640] Add IRSESystemType.testProperty()
17
 * Martin Oberhuber (Wind River) - [186128][refactoring] Move IProgressMonitor last in public base classes 
17
 * Martin Oberhuber (Wind River) - [186128][refactoring] Move IProgressMonitor last in public base classes 
18
 * David McKnight   (IBM)        - [202822] need to enable spiriting on the server side
18
 ********************************************************************************/
19
 ********************************************************************************/
19
20
20
package org.eclipse.rse.connectorservice.dstore;
21
package org.eclipse.rse.connectorservice.dstore;
Lines 85-90 Link Here
85
 */
86
 */
86
public class DStoreConnectorService extends StandardConnectorService implements IDataStoreProvider
87
public class DStoreConnectorService extends StandardConnectorService implements IDataStoreProvider
87
{
88
{
89
	private class StartSpiritThread extends Thread
90
	{
91
		private DataStore _dataStore;
92
		public StartSpiritThread(DataStore dataStore)
93
		{
94
			_dataStore = dataStore;
95
		}
96
		
97
		public void run()
98
		{
99
			if (_dataStore.isDoSpirit()) _dataStore.queryServerSpiritState();
100
		}
101
	}
102
	
88
	private ClientConnection clientConnection = null;
103
	private ClientConnection clientConnection = null;
89
	private ConnectionStatusListener _connectionStatusListener = null;
104
	private ConnectionStatusListener _connectionStatusListener = null;
90
	private IServerLauncher starter = null;
105
	private IServerLauncher starter = null;
Lines 834-840 Link Here
834
				dataStore.showTicket(null);
849
				dataStore.showTicket(null);
835
			}
850
			}
836
			
851
			
837
	        if (dataStore.isDoSpirit()) dataStore.queryServerSpiritState();
852
	      //  if (dataStore.isDoSpirit()) dataStore.queryServerSpiritState();
853
			StartSpiritThread thread = new StartSpiritThread(dataStore);
854
			thread.start();
838
855
839
			// Fire comm event to signal state changed
856
			// Fire comm event to signal state changed
840
			fireCommunicationsEvent(CommunicationsEvent.AFTER_CONNECT);
857
			fireCommunicationsEvent(CommunicationsEvent.AFTER_CONNECT);
Lines 869-874 Link Here
869
				boolean cacheRemoteClasses = store.getBoolean(IUniversalDStoreConstants.RESID_PREF_CACHE_REMOTE_CLASSES);
886
				boolean cacheRemoteClasses = store.getBoolean(IUniversalDStoreConstants.RESID_PREF_CACHE_REMOTE_CLASSES);
870
				
887
				
871
				dataStore.setPreference(RemoteClassLoader.CACHING_PREFERENCE, cacheRemoteClasses ? "true" : "false"); //$NON-NLS-1$  //$NON-NLS-2$
888
				dataStore.setPreference(RemoteClassLoader.CACHING_PREFERENCE, cacheRemoteClasses ? "true" : "false"); //$NON-NLS-1$  //$NON-NLS-2$
889
				
872
			}
890
			}
873
			else
891
			else
874
			{						
892
			{						

Return to bug 202822