Commit 948934b7 authored by Steffen Gieseler's avatar Steffen Gieseler
Browse files

Version 1.2.0: Memory-Leak korrigiert




git-svn-id: svn://ntoserver/Datenverteiler/VRZ3/trunk/de.bsvrz.kex.lmstic3@66642 40c0be50-5d29-0410-901d-fb59edb5cafc
parent ce7526bc
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -30,6 +30,12 @@ zusätzliche Bibliotheken bzw. Softwareeinheiten erforderlich:
Versionsgeschichte
==================

Version 1.2.0
==================

- Memory-Leak korrigiert


Version 1.1.0
==================

+2 −2
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
	<modelVersion>4.0.0</modelVersion>
	<groupId>de.bsvrz.kex</groupId>
	<artifactId>de.bsvrz.kex.lmstic3</artifactId>
	<version>1.1.0-SNAPSHOT</version>
	<version>1.2.0-SNAPSHOT</version>

	<name>Segment KEx, SWE LMS-TIC3</name>
	<url>http://www.bitctrl.de</url>
@@ -25,7 +25,7 @@
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>8</java.version>
		<project.status>BETA</project.status>
		<project.standDatum>2017-06-21</project.standDatum>
		<project.standDatum>2017-07-04</project.standDatum>
	</properties>

	<repositories>
+15 −32
Original line number Diff line number Diff line
@@ -267,29 +267,6 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
		}
	}

	/**
	 * Listener f&uuml;r &Auml;nderungen der Menge der RDS-Meldungen des
	 * Landesmeldestelle.
	 */
	class MengeListener implements MutableSetChangeListener {

		@Override
		public void update(final MutableSet set, final SystemObject[] addedObjects,
				final SystemObject[] removedObjects) {
			LMSTIC3LogTools.log(debug, LmsMsg.FineMengenAenderung);

			for (final SystemObject so : addedObjects) {
				LMSTIC3LogTools.log(debug, LmsMsg.InfoMeldungNeu, so.getPid());
				hinzufuegenMeldung(so);
			}

			for (final SystemObject so : removedObjects) {
				LMSTIC3LogTools.log(debug, LmsMsg.InfoMeldungEntfernt, so.getPid());
				entfernenMeldung(so);
			}
		}
	}

	/**
	 * Attributgruppe der Kommunikationsparameter.
	 */
@@ -433,7 +410,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
				try {
					tmcMeldung.abmeldenDavEmpfang(dav);
				} catch (final TIC3Exception e) {
					debug.error("abmeldenDavEmpfang: " + e.getMessage());
					debug.error("abmeldenDavEmpfang '" + so.getPid() + "': " + e.getMessage());
				}
				meldungenTMC.remove(so.getPid());
			}
@@ -445,7 +422,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
				try {
					externeMeldung.abmeldenDavEmpfang(dav);
				} catch (final TIC3Exception e) {
					debug.error("abmeldenDavEmpfang: " + e.getMessage());
					debug.error("abmeldenDavEmpfang '" + so.getPid() + "': " + e.getMessage());
				}
				meldungenTIC3.remove(so.getPid());
			}
@@ -748,11 +725,13 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
				for (final SystemObject so : removedObjects) {
					mliste.remove(so);
					output.append(so.getPid() + " ");
					if (so.isValid()) {
						try {
							debug.info("Meldung '" + so.getPid() + "' wird invalidiert");
							so.invalidate();
						} catch (final ConfigurationChangeException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
							debug.warning("Invalidierung '" + so.getPid() + "' fehlgeschlagen: " + e.getMessage());
						}
					}
				}

@@ -786,7 +765,8 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
			}

			debug.info(name + " am Objekt '" + lms + "' werden gelöscht!");
			meldungsmenge.addChangeListener(new MeldungListenerSync(myLock, new ArrayList<>(loeschen)));
			final MeldungListenerSync meldungListener = new MeldungListenerSync(myLock, new ArrayList<>(loeschen));
			meldungsmenge.addChangeListener(meldungListener);
			meldungsmenge.remove(loeschen.toArray(new SystemObject[loeschen.size()]));
			if (loeschen.size() != 0) {
				final List<SystemObject> mi = new ArrayList<>(loeschen);
@@ -806,6 +786,7 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface
			} else {
				debug.info("keine Meldungen aus der Menge '" + menge + "' zu löschen");
			}
			meldungsmenge.removeChangeListener(meldungListener);

			// Meldungen, die nicht in der Menge enthalten sind:
			final List<SystemObject> robjekte = dav.getDataModel().getType(typ).getElements();
@@ -820,7 +801,9 @@ public class Meldungserzeugung extends Thread implements ClientReceiverInterface

					if (del) {
						debug.info("Meldung '" + so + "' wird gelöscht!");
						if (so.isValid()) {
							so.invalidate();
						}
						i++;
					}
				}