@@ -121,6 +121,10 @@ public void validate() {
121121 public void disconnect () {
122122 logger .info ("PrimeraAdapter:disconnect(): closing session" );
123123 try {
124+ //Delete session safely without triggering refreshSession
125+ if (key != null && _client != null ) {
126+ logout ();
127+ }
124128 _client .close ();
125129 } catch (IOException e ) {
126130 logger .warn ("PrimeraAdapter:refreshSession(): Error closing client connection" , e );
@@ -130,6 +134,40 @@ public void disconnect() {
130134 }
131135 return ;
132136 }
137+ /**
138+ * Delete session directly without going through refreshSession to avoid infinite recursion
139+ */
140+ private void logout () {
141+ CloseableHttpResponse response = null ;
142+ try {
143+ logger .debug ("PrimeraAdapter:logout(): Delete session directly" );
144+ HttpDelete request = new HttpDelete (url + "/credentials/" + key );
145+ request .addHeader ("Content-Type" , "application/json" );
146+ request .addHeader ("Accept" , "application/json" );
147+ request .addHeader ("X-HP3PAR-WSAPI-SessionKey" , key );
148+
149+ response = (CloseableHttpResponse ) _client .execute (request );
150+ final int statusCode = response .getStatusLine ().getStatusCode ();
151+
152+ if (statusCode == 200 || statusCode == 404 ) {
153+ logger .debug ("PrimeraAdapter:logout(): Session deleted successfully or was already expired" );
154+ } else if (statusCode == 401 || statusCode == 403 ) {
155+ logger .warn ("PrimeraAdapter:logout(): Session already invalid or expired during deletion" );
156+ } else {
157+ logger .warn ("PrimeraAdapter:logout(): Unexpected response when deleting session: {}" , statusCode );
158+ }
159+ } catch (IOException e ) {
160+ logger .warn ("PrimeraAdapter:logout(): Error deleting session: {}" , e .getMessage ());
161+ } finally {
162+ if (response != null ) {
163+ try {
164+ response .close ();
165+ } catch (IOException e ) {
166+ logger .debug ("PrimeraAdapter:logout(): Error closing response from session deletion" , e );
167+ }
168+ }
169+ }
170+ }
133171
134172 @ Override
135173 public ProviderVolume create (ProviderAdapterContext context , ProviderAdapterDataObject dataIn ,
0 commit comments